Author: Matti Picus <[email protected]>
Branch: release-2.3.x
Changeset: r71096:99d54aa2a1e4
Date: 2014-04-30 20:01 +0300
http://bitbucket.org/pypy/pypy/changeset/99d54aa2a1e4/
Log: merge default into branch
diff --git a/pypy/tool/release/force-builds.py
b/pypy/tool/release/force-builds.py
--- a/pypy/tool/release/force-builds.py
+++ b/pypy/tool/release/force-builds.py
@@ -41,10 +41,9 @@
import pwd
return pwd.getpwuid(os.getuid())[0]
-def main():
+def main(branch, server):
#XXX: handle release tags
#XXX: handle validity checks
- branch = sys.argv[1]
lock = defer.DeferredLock()
requests = []
def ebList(err):
@@ -54,10 +53,11 @@
for builder in BUILDERS:
print 'Forcing', builder, '...'
- url = "http://buildbot.pypy.org/builders/" + builder + "/force"
+ url = "http://" + server + "/builders/" + builder + "/force"
args = [
('username', get_user()),
('revision', ''),
+ ('forcescheduler', 'Force Scheduler'),
('submit', 'Force Build'),
('branch', branch),
('comments', "Forced by command line script")]
@@ -73,4 +73,11 @@
if __name__ == '__main__':
log.startLogging(sys.stdout)
- main()
+ import optparse
+ parser = optparse.OptionParser()
+ parser.add_option("-b", "--branch", help="branch to build", default='')
+ parser.add_option("-s", "--server", help="buildbot server",
default="buildbot.pypy.org")
+ (options, args) = parser.parse_args()
+ if not options.branch:
+ parser.error("branch option required")
+ main(options.branch, options.server)
diff --git a/rpython/jit/backend/test/runner_test.py
b/rpython/jit/backend/test/runner_test.py
--- a/rpython/jit/backend/test/runner_test.py
+++ b/rpython/jit/backend/test/runner_test.py
@@ -4347,3 +4347,10 @@
'void')
assert foo[0] == 1789201
lltype.free(foo, flavor='raw')
+
+ def test_cast_float_to_singlefloat(self):
+ if not self.cpu.supports_singlefloats:
+ py.test.skip("requires singlefloats")
+ res = self.execute_operation(rop.CAST_FLOAT_TO_SINGLEFLOAT,
+ [BoxFloat(12.5)], 'int')
+ assert res.getint() == struct.unpack("I", struct.pack("f", 12.5))[0]
diff --git a/rpython/jit/backend/x86/assembler.py
b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -1173,13 +1173,13 @@
self.mc.CVTSD2SS(loctmp, loc0)
assert isinstance(resloc, RegLoc)
assert isinstance(loctmp, RegLoc)
- self.mc.MOVD_rx(resloc.value, loctmp.value)
+ self.mc.MOVD32_rx(resloc.value, loctmp.value)
def genop_cast_singlefloat_to_float(self, op, arglocs, resloc):
loc0, = arglocs
assert isinstance(resloc, RegLoc)
assert isinstance(loc0, RegLoc)
- self.mc.MOVD_xr(resloc.value, loc0.value)
+ self.mc.MOVD32_xr(resloc.value, loc0.value)
self.mc.CVTSS2SD_xx(resloc.value, resloc.value)
def genop_convert_float_bytes_to_longlong(self, op, arglocs, resloc):
@@ -1187,7 +1187,7 @@
if longlong.is_64_bit:
assert isinstance(resloc, RegLoc)
assert isinstance(loc0, RegLoc)
- self.mc.MOVD(resloc, loc0)
+ self.mc.MOVDQ(resloc, loc0)
else:
self.mov(loc0, resloc)
@@ -1196,7 +1196,7 @@
if longlong.is_64_bit:
assert isinstance(resloc, RegLoc)
assert isinstance(loc0, RegLoc)
- self.mc.MOVD(resloc, loc0)
+ self.mc.MOVDQ(resloc, loc0)
else:
self.mov(loc0, resloc)
@@ -1262,7 +1262,7 @@
loc = arglocs[0]
assert isinstance(resloc, RegLoc)
if isinstance(loc, RegLoc):
- self.mc.MOVD_rx(resloc.value, loc.value)
+ self.mc.MOVD32_rx(resloc.value, loc.value)
elif isinstance(loc, FrameLoc):
self.mc.MOV_rb(resloc.value, loc.value)
else:
@@ -1277,16 +1277,16 @@
assert isinstance(loc1, RegLoc)
assert isinstance(loc2, RegLoc)
assert isinstance(resloc, RegLoc)
- self.mc.MOVD_xr(loc2.value, loc1.value)
+ self.mc.MOVD32_xr(loc2.value, loc1.value)
self.mc.PSRAD_xi(loc2.value, 31) # -> 0 or -1
- self.mc.MOVD_xr(resloc.value, loc1.value)
+ self.mc.MOVD32_xr(resloc.value, loc1.value)
self.mc.PUNPCKLDQ_xx(resloc.value, loc2.value)
def genop_llong_from_uint(self, op, arglocs, resloc):
loc1, = arglocs
assert isinstance(resloc, RegLoc)
assert isinstance(loc1, RegLoc)
- self.mc.MOVD_xr(resloc.value, loc1.value)
+ self.mc.MOVD32_xr(resloc.value, loc1.value)
def genop_llong_eq(self, op, arglocs, resloc):
loc1, loc2, locxtmp = arglocs
@@ -1571,8 +1571,8 @@
self.mc.OR_rr(edx.value, eax.value)
else:
loc1, = arglocs
- self.mc.MOVD_xr(loc1.value, edx.value)
- self.mc.MOVD_xr(resloc.value, eax.value)
+ self.mc.MOVD32_xr(loc1.value, edx.value)
+ self.mc.MOVD32_xr(resloc.value, eax.value)
self.mc.PUNPCKLDQ_xx(resloc.value, loc1.value)
def genop_guard_guard_true(self, ign_1, guard_op, guard_token, locs,
ign_2):
diff --git a/rpython/jit/backend/x86/callbuilder.py
b/rpython/jit/backend/x86/callbuilder.py
--- a/rpython/jit/backend/x86/callbuilder.py
+++ b/rpython/jit/backend/x86/callbuilder.py
@@ -242,8 +242,8 @@
if self.tmpresloc is None:
if self.restype == 'L': # long long
# move eax/edx -> xmm0
- self.mc.MOVD_xr(resloc.value^1, edx.value)
- self.mc.MOVD_xr(resloc.value, eax.value)
+ self.mc.MOVD32_xr(resloc.value^1, edx.value)
+ self.mc.MOVD32_xr(resloc.value, eax.value)
self.mc.PUNPCKLDQ_xx(resloc.value, resloc.value^1)
else:
# float: we have to go via the stack
@@ -435,7 +435,7 @@
if isinstance(src, ImmedLoc):
self.mc.MOV(X86_64_SCRATCH_REG, src)
src = X86_64_SCRATCH_REG
- self.mc.MOVD(dst, src)
+ self.mc.MOVD32(dst, src)
# Finally remap the arguments in the main regs
remap_frame_layout(self.asm, src_locs, dst_locs, X86_64_SCRATCH_REG)
@@ -447,7 +447,7 @@
if self.restype == 'S' and self.tmpresloc is None:
# singlefloat return: use MOVD to load the target register
# from the lower 32 bits of XMM0
- self.mc.MOVD(self.resloc, xmm0)
+ self.mc.MOVD32(self.resloc, xmm0)
else:
CallBuilderX86.load_result(self)
@@ -469,7 +469,7 @@
if self.restype == 'S':
# singlefloat return: use MOVD to store the lower 32 bits
# of XMM0 into the tmpresloc (register or [ESP])
- self.mc.MOVD(self.tmpresloc, xmm0)
+ self.mc.MOVD32(self.tmpresloc, xmm0)
else:
assert self.restype == INT
self.mc.MOV(self.tmpresloc, eax)
diff --git a/rpython/jit/backend/x86/regloc.py
b/rpython/jit/backend/x86/regloc.py
--- a/rpython/jit/backend/x86/regloc.py
+++ b/rpython/jit/backend/x86/regloc.py
@@ -662,7 +662,8 @@
PXOR = _binaryop('PXOR')
PCMPEQD = _binaryop('PCMPEQD')
- MOVD = _binaryop('MOVD')
+ MOVDQ = _binaryop('MOVDQ')
+ MOVD32 = _binaryop('MOVD32')
CALL = _relative_unaryop('CALL')
JMP = _relative_unaryop('JMP')
diff --git a/rpython/jit/backend/x86/rx86.py b/rpython/jit/backend/x86/rx86.py
--- a/rpython/jit/backend/x86/rx86.py
+++ b/rpython/jit/backend/x86/rx86.py
@@ -617,12 +617,17 @@
CVTSS2SD_xb = xmminsn('\xF3', rex_nw, '\x0F\x5A',
register(1, 8), stack_bp(2))
- # These work on machine sized registers, so MOVD is actually MOVQ
- # when running on 64 bits. Note a bug in the Intel documentation:
+ # These work on machine sized registers, so "MOVDQ" is MOVD when running
+ # on 32 bits and MOVQ when running on 64 bits. "MOVD32" is always 32-bit.
+ # Note a bug in the Intel documentation:
# http://lists.gnu.org/archive/html/bug-binutils/2007-07/msg00095.html
- MOVD_rx = xmminsn('\x66', rex_w, '\x0F\x7E', register(2, 8), register(1),
'\xC0')
- MOVD_xr = xmminsn('\x66', rex_w, '\x0F\x6E', register(1, 8), register(2),
'\xC0')
- MOVD_xb = xmminsn('\x66', rex_w, '\x0F\x6E', register(1, 8), stack_bp(2))
+ MOVDQ_rx = xmminsn('\x66', rex_w, '\x0F\x7E', register(2, 8), register(1),
'\xC0')
+ MOVDQ_xr = xmminsn('\x66', rex_w, '\x0F\x6E', register(1, 8), register(2),
'\xC0')
+ MOVDQ_xb = xmminsn('\x66', rex_w, '\x0F\x6E', register(1, 8), stack_bp(2))
+
+ MOVD32_rx = xmminsn('\x66', rex_nw, '\x0F\x7E', register(2, 8),
register(1), '\xC0')
+ MOVD32_xr = xmminsn('\x66', rex_nw, '\x0F\x6E', register(1, 8),
register(2), '\xC0')
+ MOVD32_xb = xmminsn('\x66', rex_nw, '\x0F\x6E', register(1, 8),
stack_bp(2))
PSRAD_xi = xmminsn('\x66', rex_nw, '\x0F\x72', register(1), '\xE0',
immediate(2, 'b'))
diff --git a/rpython/jit/backend/x86/test/test_rx86_32_auto_encoding.py
b/rpython/jit/backend/x86/test/test_rx86_32_auto_encoding.py
--- a/rpython/jit/backend/x86/test/test_rx86_32_auto_encoding.py
+++ b/rpython/jit/backend/x86/test/test_rx86_32_auto_encoding.py
@@ -183,8 +183,11 @@
g = open(inputname, 'w')
g.write('\x09.string "%s"\n' % BEGIN_TAG)
#
- if instrname == 'MOVD' and self.WORD == 8:
- instrname = 'MOVQ'
+ if instrname == 'MOVDQ':
+ if self.WORD == 8:
+ instrname = 'MOVQ'
+ else:
+ instrname = 'MOVD'
if argmodes == 'xb':
py.test.skip('"as" uses an undocumented alternate encoding??')
#
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit