[pypy-svn] r36178 - pypy/dist/pypy/jit/codegen/llvm
ericvrp at codespeak.net
ericvrp at codespeak.net
Sat Jan 6 17:43:33 CET 2007
Author: ericvrp
Date: Sat Jan 6 17:43:31 2007
New Revision: 36178
Modified:
pypy/dist/pypy/jit/codegen/llvm/rgenop.py
Log:
Remaining changes to keep jit/codegen/llvm llvm 2.x compatible.
(signed/unsigned -> signless integers)
Modified: pypy/dist/pypy/jit/codegen/llvm/rgenop.py
==============================================================================
--- pypy/dist/pypy/jit/codegen/llvm/rgenop.py (original)
+++ pypy/dist/pypy/jit/codegen/llvm/rgenop.py Sat Jan 6 17:43:31 2007
@@ -8,7 +8,7 @@
from pypy.jit.codegen.i386.rgenop import gc_malloc_fnaddr
from pypy.jit.codegen.llvm.conftest import option
from pypy.jit.codegen.llvm.compatibility import icmp, scmp, ucmp, fcmp, inttoptr,\
- trunc, zext, bitcast, shr_prefix
+ trunc, zext, bitcast, shr_prefix, define, i8, i16, i32
LINENO = option.lineno
@@ -89,7 +89,7 @@
def __init__(self, type):
self.n = count.n_vars
self.type = type
- self.signed = type is 'int' or type is 'float'
+ self.signed = type is i32 or type is 'float'
count.n_vars += 1
def operand(self):
@@ -130,7 +130,7 @@
class CharConst(GenericConst):
- type = 'ubyte'
+ type = i8
signed = False
def __init__(self, value):
@@ -142,7 +142,7 @@
class UniCharConst(GenericConst):
- type = 'int'
+ type = i32
signed = True
def __init__(self, value):
@@ -150,7 +150,7 @@
class IntConst(GenericConst):
- type = 'int'
+ type = i32
signed = True
def __init__(self, value):
@@ -165,7 +165,7 @@
class UIntConst(GenericConst):
- type = 'uint'
+ type = i32 #'uint'
signed = False
def __init__(self, value):
@@ -181,7 +181,7 @@
class AddrConst(GenConst):
- type = 'int*'
+ type = i32 + '*'
signed = False
def __init__(self, addr):
@@ -277,7 +277,8 @@
def writecode(self, lines):
argtypes, restype = self.sigtoken
- lines.append('%s %%%s(%s){' % (
+ lines.append('%s %s %%%s(%s){' % (
+ define,
restype,
self.name,
','.join([v.operand() for v in self.inputargs])))
@@ -385,21 +386,21 @@
def op_int_xor(self, gv_x, gv_y): return self._rgenop2_generic('xor' , gv_x, gv_y)
def op_int_lshift(self, gv_x, gv_y):
- gv_y_ubyte = Var('ubyte')
- self.asm.append(' %s=%s %s to ubyte' % (
- gv_y_ubyte.operand2(), trunc, gv_y.operand()))
+ gv_y_i8 = Var(i8)
+ self.asm.append(' %s=%s %s to %s' % (
+ gv_y_i8.operand2(), trunc, gv_y.operand(), i8))
gv_result = Var(gv_x.type)
self.asm.append(' %s=shl %s,%s' % (
- gv_result.operand2(), gv_x.operand(), gv_y_ubyte.operand()))
+ gv_result.operand2(), gv_x.operand(), gv_y_i8.operand()))
return gv_result
def op_int_rshift(self, gv_x, gv_y):
- gv_y_ubyte = Var('ubyte')
- self.asm.append(' %s=%s %s to ubyte' % (
- gv_y_ubyte.operand2(), trunc, gv_y.operand()))
+ gv_y_i8 = Var(i8)
+ self.asm.append(' %s=%s %s to %s' % (
+ gv_y_i8.operand2(), trunc, gv_y.operand(), i8))
gv_result = Var(gv_x.type)
self.asm.append(' %s=%sshr %s,%s' % (
- gv_result.operand2(), shr_prefix[gv_x.signed], gv_x.operand(), gv_y_ubyte.operand()))
+ gv_result.operand2(), shr_prefix[gv_x.signed], gv_x.operand(), gv_y_i8.operand()))
return gv_result
op_uint_add = op_float_add = op_int_add
@@ -537,17 +538,17 @@
return gv_result
def _cast_to_bool(self, gv_x): return self._cast_to(gv_x, 'bool')
- def _cast_to_char(self, gv_x): return self._cast_to(gv_x, 'ubyte')
- def _cast_to_unichar(self, gv_x): return self._cast_to(gv_x, 'int')
- def _cast_to_int(self, gv_x): return self._cast_to(gv_x, 'int')
- def _cast_to_uint(self, gv_x): return self._cast_to(gv_x, 'uint')
+ def _cast_to_char(self, gv_x): return self._cast_to(gv_x, i8)
+ def _cast_to_unichar(self, gv_x): return self._cast_to(gv_x, i32)
+ def _cast_to_int(self, gv_x): return self._cast_to(gv_x, i32)
+ def _cast_to_uint(self, gv_x): return self._cast_to(gv_x, i32) #'uint')
def _cast_to_float(self, gv_x): return self._cast_to(gv_x, 'float')
def _trunc_to_bool(self, gv_x): return self._trunc_to(gv_x, 'bool')
- def _trunc_to_char(self, gv_x): return self._trunc_to(gv_x, 'ubyte')
- def _trunc_to_unichar(self, gv_x): return self._trunc_to(gv_x, 'int')
- def _trunc_to_int(self, gv_x): return self._trunc_to(gv_x, 'int')
- def _trunc_to_uint(self, gv_x): return self._trunc_to(gv_x, 'uint')
+ def _trunc_to_char(self, gv_x): return self._trunc_to(gv_x, i8)
+ def _trunc_to_unichar(self, gv_x): return self._trunc_to(gv_x, i32)
+ def _trunc_to_int(self, gv_x): return self._trunc_to(gv_x, i32)
+ def _trunc_to_uint(self, gv_x): return self._trunc_to(gv_x, i32) #'uint')
def _trunc_to_float(self, gv_x): return self._trunc_to(gv_x, 'float')
op_cast_char_to_bool = _trunc_to_bool
@@ -661,20 +662,20 @@
log('%s Builder.genop_getfield (%d,%d) %s' % (
self.block.label, offset, fieldsize, gv_ptr.operand()))
if fieldsize == WORD:
- t = 'int'
+ t = i32
else:
if fieldsize == 1:
- t = 'ubyte'
+ t = i8
else:
if fieldsize != 2:
logger.dump('assert fails on: fieldsize != [124]')
self.rgenop._dump_partial_lines()
assert fieldsize == 2
- t = 'short'
+ t = i16
gv_ptr_var = self._as_var(gv_ptr)
gv_p = Var(t + '*')
- self.asm.append(' %s=getelementptr %s,int %s' % (
- gv_p.operand2(), gv_ptr_var.operand(), offset / fieldsize))
+ self.asm.append(' %s=getelementptr %s,%s %s' % (
+ gv_p.operand2(), gv_ptr_var.operand(), i32, offset / fieldsize))
gv_result = Var(t)
self.asm.append(' %s=load %s' % (
gv_result.operand2(), gv_p.operand()))
@@ -684,17 +685,17 @@
log('%s Builder.genop_setfield (%d,%d) %s=%s' % (
self.block.label, offset, fieldsize, gv_ptr.operand(), gv_value.operand()))
#if fieldsize == WORD:
- # gv_result = Var('int')
+ # gv_result = Var(i32)
#else:
# if fieldsize == 1:
- # gv_result = Var('ubyte')
+ # gv_result = Var(i8)
# else:
# assert fieldsize == 2
- # gv_result = Var('short')
+ # gv_result = Var(i16)
gv_ptr_var = self._as_var(gv_ptr)
gv_p = Var(gv_value.type+'*')
- self.asm.append(' %s=getelementptr %s,int %s' % (
- gv_p.operand2(), gv_ptr_var.operand(), offset / fieldsize))
+ self.asm.append(' %s=getelementptr %s,%s %s' % (
+ gv_p.operand2(), gv_ptr_var.operand(), i32, offset / fieldsize))
self.asm.append(' store %s,%s' % (
gv_value.operand(), gv_p.operand()))
@@ -739,11 +740,11 @@
'''
#XXX TODO
array_length_offset, array_items_offset, itemsize = arraytoken
- gv_result = Var('int')
+ gv_result = Var(i32)
log('%s Builder.genop_getarraysubstruct %s,%s,%s' % (
self.block.label, arraytoken, gv_ptr, gv_index))
- self.asm.append(' %s=int 0 ;%s Builder.genop_getarraysubstruct %s,%s,%s' % (
- gv_result.operand2(), self.block.label, arraytoken, gv_ptr, gv_index))
+ self.asm.append(' %s=%s 0 ;%s Builder.genop_getarraysubstruct %s,%s,%s' % (
+ gv_result.operand2(), gv_result.type, self.block.label, arraytoken, gv_ptr, gv_index))
return gv_result
def genop_getarraysize(self, arraytoken, gv_ptr):
@@ -754,19 +755,19 @@
'''
#XXX TODO
array_length_offset, array_items_offset, itemsize = arraytoken
- gv_result = Var('int')
+ gv_result = Var(i32)
log('%s Builder.genop_getarraysize %s,%s' % (
self.block.label, arraytoken, gv_ptr))
- self.asm.append(' %s=int 0 ;%s Builder.genop_getarraysize %s,%s' % (
- gv_result.operand2(), self.block.label, arraytoken, gv_ptr))
+ self.asm.append(' %s=%s 0 ;%s Builder.genop_getarraysize %s,%s' % (
+ gv_result.operand2(), gv_result.type, self.block.label, arraytoken, gv_ptr))
return gv_result
def _as_var(self, gv):
if gv.is_const:
gv_var = Var(gv.type)
#XXX provide correct cast here
- self.asm.append(' %s=%s int %s to %s' % (
- gv_var.operand2(), inttoptr, gv.operand2(), gv_var.type))
+ self.asm.append(' %s=%s %s %s to %s' % (
+ gv_var.operand2(), inttoptr, i32, gv.operand2(), gv_var.type))
return gv_var
return gv
@@ -780,7 +781,7 @@
except TypeError:
offset = 4 #XXX (get inspired by ppc backend)
gv_i = Var(gv_index.type)
- self.asm.append(' %s=add %s,%d' % (
+ self.asm.append(' %s=add %s,%d ;;;;' % (
gv_i.operand2(), gv_index.operand(), offset)) #/itemsize correct?
gv_ptr_var = self._as_var(gv_ptr)
@@ -793,23 +794,27 @@
def genop_malloc_fixedsize(self, size):
log('%s Builder.genop_malloc_fixedsize %s' % (
self.block.label, str(size)))
- gv_result = Var('ubyte*') #XXX or opaque* ???
- gv_gc_malloc_fnaddr = Var('%s (int)*' % gv_result.type)
+ t = i8 + '*' #XXX or opaque* ?
+ gv_gc_malloc_fnaddr = Var('%s (%s)*' % (t, i32))
+ gv_result = Var(t)
#XXX or use addGlobalFunctionMapping in libllvmjit.restart()
- self.asm.append(' %s=%s int %d to %s ;gc_malloc_fnaddr' % (
- gv_gc_malloc_fnaddr.operand2(), inttoptr, gc_malloc_fnaddr(), gv_gc_malloc_fnaddr.type))
- self.asm.append(' %s=call %s(int %d)' % (
- gv_result.operand2(), gv_gc_malloc_fnaddr.operand(), size))
+ self.asm.append(' %s=%s %s %d to %s ;gc_malloc_fnaddr' % (
+ gv_gc_malloc_fnaddr.operand2(), inttoptr, i32,
+ gc_malloc_fnaddr(), gv_gc_malloc_fnaddr.type))
+ self.asm.append(' %s=call %s(%s %d)' % (
+ gv_result.operand2(), gv_gc_malloc_fnaddr.operand(), i32, size))
return gv_result
def genop_malloc_varsize(self, varsizealloctoken, gv_size):
log('%s Builder.genop_malloc_varsize %s,%s' % (
self.block.label, varsizealloctoken, gv_size.operand()))
- gv_result = Var('ubyte*') #XXX or opaque* ???
- gv_gc_malloc_fnaddr = Var('%s (int)*' % gv_result.type)
+ t = i8 + '*' #XXX or opaque* ?
+ gv_gc_malloc_fnaddr = Var('%s (%s)*' % (t, i32))
+ gv_result = Var(t)
#XXX or use addGlobalFunctionMapping in libllvmjit.restart()
- self.asm.append(' %s=%s int %d to %s ;gc_malloc_fnaddr' % (
- gv_gc_malloc_fnaddr.operand2(), inttoptr, gc_malloc_fnaddr(), gv_gc_malloc_fnaddr.type))
+ self.asm.append(' %s=%s %s %d to %s ;gc_malloc_fnaddr (varsize)' % (
+ gv_gc_malloc_fnaddr.operand2(), inttoptr, i32,
+ gc_malloc_fnaddr(), gv_gc_malloc_fnaddr.type))
self.asm.append(' %s=call %s(%s)' % (
gv_result.operand2(), gv_gc_malloc_fnaddr.operand(), gv_size.operand()))
#XXX TODO set length field
@@ -957,19 +962,19 @@
# turn the type T into the llvm approximation that we'll use here
# XXX incomplete
if isinstance(T, lltype.Ptr):
- return 'int*'
+ return i32 + '*' #or opaque* ?
elif T is llmemory.Address:
- return 'int*'
+ return i32 + '*' #or apaque* ?
if T is lltype.Bool:
return 'bool'
elif T is lltype.Char:
- return 'ubyte'
+ return i8
elif T is lltype.Unsigned:
- return 'uint'
+ return i32 #'uint'
elif T is lltype.Float:
return 'float'
else:
- return 'int' #Signed/UniChar/Void
+ return i32 #Signed/UniChar/Void
@staticmethod
@specialize.memo()
More information about the Pypy-commit
mailing list