Skip to content

Commit

Permalink
64bit opt prototype-opt building.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ian Rogers committed Sep 15, 2009
1 parent dce4731 commit 4015a0a
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 3 deletions.
44 changes: 44 additions & 0 deletions rvm/src-generated/opt-burs/ia32/IA32-IntLoad-32.rules
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#####
# INT_LOAD
# A few more cases than for other load operators to handle pointer arithmetic introduced by use of magic
#####
r: INT_LOAD(riv, riv)
15
EMIT_INSTRUCTION
EMIT(MIR_Move.mutate(P(p), IA32_MOV, Load.getResult(P(p)), MO_L(P(p), DW)));

r: INT_LOAD(riv, address1scaledreg)
15
EMIT_INSTRUCTION
augmentAddress(Load.getAddress(P(p))); \\
EMIT(MIR_Move.mutate(P(p), IA32_MOV, Load.getResult(P(p)), \\
consumeAddress(DW, Load.getLocation(P(p)), Load.getGuard(P(p)))));

r: INT_LOAD(address1scaledreg, riv)
15
EMIT_INSTRUCTION
augmentAddress(Load.getOffset(P(p))); \\
EMIT(MIR_Move.mutate(P(p), IA32_MOV, Load.getResult(P(p)), \\
consumeAddress(DW, Load.getLocation(P(p)), Load.getGuard(P(p)))));

r: INT_LOAD(address1scaledreg, address1reg)
15
EMIT_INSTRUCTION
combineAddresses(); \\
EMIT(MIR_Move.mutate(P(p), IA32_MOV, Load.getResult(P(p)), \\
consumeAddress(DW, Load.getLocation(P(p)), Load.getGuard(P(p)))));

r: INT_LOAD(address1reg, address1scaledreg)
15
EMIT_INSTRUCTION
combineAddresses(); \\
EMIT(MIR_Move.mutate(P(p), IA32_MOV, Load.getResult(P(p)), \\
consumeAddress(DW, Load.getLocation(P(p)), Load.getGuard(P(p)))));

r: INT_LOAD(address, INT_CONSTANT)
15
EMIT_INSTRUCTION
augmentAddress(Load.getOffset(P(p))); \\
EMIT(MIR_Move.mutate(P(p), IA32_MOV, Load.getResult(P(p)), \\
consumeAddress(DW, Load.getLocation(P(p)), Load.getGuard(P(p)))));

44 changes: 44 additions & 0 deletions rvm/src-generated/opt-burs/ia32/IA32-IntLoad-64.rules
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#####
# INT_LOAD
# A few more cases than for other load operators to handle pointer arithmetic introduced by use of magic
#####
r: INT_LOAD(rlv, riv)
15
EMIT_INSTRUCTION
EMIT(MIR_Move.mutate(P(p), IA32_MOV, Load.getResult(P(p)), MO_L(P(p), DW)));

r: INT_LOAD(rlv, address1scaledreg)
15
EMIT_INSTRUCTION
augmentAddress(Load.getAddress(P(p))); \\
EMIT(MIR_Move.mutate(P(p), IA32_MOV, Load.getResult(P(p)), \\
consumeAddress(DW, Load.getLocation(P(p)), Load.getGuard(P(p)))));

r: INT_LOAD(address1scaledreg, riv)
15
EMIT_INSTRUCTION
augmentAddress(Load.getOffset(P(p))); \\
EMIT(MIR_Move.mutate(P(p), IA32_MOV, Load.getResult(P(p)), \\
consumeAddress(DW, Load.getLocation(P(p)), Load.getGuard(P(p)))));

r: INT_LOAD(address1scaledreg, address1reg)
15
EMIT_INSTRUCTION
combineAddresses(); \\
EMIT(MIR_Move.mutate(P(p), IA32_MOV, Load.getResult(P(p)), \\
consumeAddress(DW, Load.getLocation(P(p)), Load.getGuard(P(p)))));

r: INT_LOAD(address1reg, address1scaledreg)
15
EMIT_INSTRUCTION
combineAddresses(); \\
EMIT(MIR_Move.mutate(P(p), IA32_MOV, Load.getResult(P(p)), \\
consumeAddress(DW, Load.getLocation(P(p)), Load.getGuard(P(p)))));

r: INT_LOAD(address, INT_CONSTANT)
15
EMIT_INSTRUCTION
augmentAddress(Load.getOffset(P(p))); \\
EMIT(MIR_Move.mutate(P(p), IA32_MOV, Load.getResult(P(p)), \\
consumeAddress(DW, Load.getLocation(P(p)), Load.getGuard(P(p)))));

5 changes: 3 additions & 2 deletions rvm/src-generated/opt-burs/ia32/IA32-LongAdd-64.rules
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ r: LONG_ADD(r, rlv)
11
EMIT_INSTRUCTION
if (Binary.getVal2(P(p)).isLongConstant()) { \\
OptimizingCompilerException.TODO(); \\
// pushAddress(R(Binary.getVal1(P(p))), null, B_S, Offset.fromLong(VR(p))); \\
pushAddress(R(Binary.getVal1(P(p))), null, B_S, Offset.fromLong(VR(p))); \\
} else if (Binary.getVal2(P(p)).isIntConstant()) { \\
pushAddress(R(Binary.getVal1(P(p))), null, B_S, Offset.fromIntSignExtend(VR(p))); \\
} else { \\
pushAddress(R(Binary.getVal1(P(p))), R(Binary.getVal2(P(p))), B_S, Offset.zero()); \\
} \\
Expand Down
2 changes: 1 addition & 1 deletion rvm/src-generated/opt-burs/ia32/IA32.rules
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ NOFLAGS
// No code emitted

# the non-terminal rlv is either an r or an lv
rlv: r
rlv: riv
0
NOFLAGS
// No code emitted
Expand Down

0 comments on commit 4015a0a

Please sign in to comment.