changeset 16927:949347518b66

[SPARC] new vis3 instruction umulxhi
author Stefan Anzinger <stefan.anzinger@gmail.com>
date Fri, 08 Aug 2014 09:22:51 -0700
parents 5c8a0b322d15
children 3461ae3a4b06
files graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java
diffstat 1 files changed, 26 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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 */