# HG changeset patch # User Stefan Anzinger # Date 1407514971 25200 # Node ID 949347518b664f27e2b1bfe7d393b96a63d3a102 # Parent 5c8a0b322d151a3128bf507a77de0ea10b3212b8 [SPARC] new vis3 instruction umulxhi diff -r 5c8a0b322d15 -r 949347518b66 graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java --- a/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java Fri Aug 08 09:14:53 2014 -0700 +++ b/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java Fri Aug 08 09:22:51 2014 -0700 @@ -77,6 +77,7 @@ final int inst = masm.getInt(pos); Op2s op2 = Op2s.byValue((inst&OP2_MASK) >> OP2_SHIFT); switch(op2) { + case Br: case Fb: return Fmt00b.read(masm, op2, pos); case Sethi: @@ -213,6 +214,10 @@ private static final int DISP22_MASK = 0b00000000001111111111111111111111; // @formatter:on + public Fmt00b(boolean annul, ConditionFlag cond, Op2s op2, Label label) { + this(annul ? 1 : 0, cond.getValue(), op2.getValue(), 0, label); + } + public Fmt00b(boolean annul, FCond cond, Op2s op2, Label label) { this(annul ? 1 : 0, cond.getValue(), op2.getValue(), 0, label); } @@ -1432,7 +1437,8 @@ Movstouw(0x111, "movstouw"), Movstosw(0x113, "movstosw"), Movxtod(0x118, "movxtod"), - Movwtos(0x119, "movwtos"), + Movwtos(0b1_0001_1001, "movwtos"), + UMulxhi(0b0_0001_0110, "umulxhi"), // end VIS3 // start CAMMELLIA @@ -1682,6 +1688,18 @@ public String getOperator() { return operator; } + + public ConditionFlag negate() { + switch (this) { + case CarrySet: + return CarryClear; + case CarryClear: + return CarrySet; + default: + GraalInternalError.unimplemented(); + } + return null; + } } public enum RCondition { @@ -1978,6 +1996,13 @@ } } + public static class Umulxhi extends Fmt3p { + public Umulxhi(Register src1, Register src2, Register dst) { + /* VIS3 only */ + super(Ops.ArithOp, Op3s.Impdep1, Opfs.UMulxhi, src1, src2, dst); + } + } + public static class Movxtod extends Fmt3p { public Movxtod(Register src, Register dst) { /* VIS3 only */