changeset 16528:98686250ed46

[SPARC] Fixing structure of fpops to avoid javac/findbugs complaints
author Stefan Anzinger <stefan.anzinger@gmail.com>
date Tue, 15 Jul 2014 20:11:21 -0700
parents 22ae26714321
children 2dd966b157e8 29ac953be681
files graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java
diffstat 3 files changed, 66 insertions(+), 51 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java	Tue Jul 15 19:42:36 2014 -0700
+++ b/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java	Tue Jul 15 20:11:21 2014 -0700
@@ -589,15 +589,31 @@
     }
 
     public static class Fmt3n {
-
-        public Fmt3n(SPARCAssembler masm, int op, int op3, int opf, int rs2, int rd) {
+        private int op;
+        private int op3;
+        private int opf;
+        private int rs2;
+        private int rd;
+
+        public Fmt3n(int op, int op3, int opf, int rs2, int rd) {
+            this.op = op;
+            this.op3 = op3;
+            this.opf = opf;
+            this.rs2 = rs2;
+            this.rd = rd;
+        }
+
+        public void emit(SPARCAssembler masm) {
+            verify();
+            masm.emitInt(op << 30 | rd << 25 | op3 << 19 | opf << 5 | rs2);
+        }
+
+        public void verify() {
             assert op == 2 || op == 3;
             assert op3 >= 0 && op3 < 0x40;
             assert opf >= 0 && opf < 0x200;
             assert rs2 >= 0 && rs2 < 0x20;
             assert rd >= 0 && rd < 0x20;
-
-            masm.emitInt(op << 30 | rd << 25 | op3 << 19 | opf << 5 | rs2);
         }
     }
 
@@ -2220,22 +2236,22 @@
 
     public static class Cmask8 extends Fmt3n {
 
-        public Cmask8(SPARCAssembler asm, Register src2) {
-            super(asm, Ops.ArithOp.getValue(), Op3s.Impdep1.getValue(), Opfs.Cmask8.getValue(), src2.encoding(), 0);
+        public Cmask8(Register src2) {
+            super(Ops.ArithOp.getValue(), Op3s.Impdep1.getValue(), Opfs.Cmask8.getValue(), src2.encoding(), 0);
         }
     }
 
     public static class Cmask16 extends Fmt3n {
 
-        public Cmask16(SPARCAssembler asm, Register src2) {
-            super(asm, Ops.ArithOp.getValue(), Op3s.Impdep1.getValue(), Opfs.Cmask16.getValue(), src2.encoding(), 0);
+        public Cmask16(Register src2) {
+            super(Ops.ArithOp.getValue(), Op3s.Impdep1.getValue(), Opfs.Cmask16.getValue(), src2.encoding(), 0);
         }
     }
 
     public static class Cmask32 extends Fmt3n {
 
-        public Cmask32(SPARCAssembler asm, Register src2) {
-            super(asm, Ops.ArithOp.getValue(), Op3s.Impdep1.getValue(), Opfs.Cmask32.getValue(), src2.encoding(), 0);
+        public Cmask32(Register src2) {
+            super(Ops.ArithOp.getValue(), Op3s.Impdep1.getValue(), Opfs.Cmask32.getValue(), src2.encoding(), 0);
         }
     }
 
@@ -2870,15 +2886,15 @@
 
     public static class Fnegs extends Fmt3n {
 
-        public Fnegs(SPARCAssembler masm, Register src2, Register dst) {
-            super(masm, Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fnegs.getValue(), src2.encoding(), dst.encoding());
+        public Fnegs(Register src2, Register dst) {
+            super(Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fnegs.getValue(), src2.encoding(), dst.encoding());
         }
     }
 
     public static class Fnegd extends Fmt3n {
 
-        public Fnegd(SPARCAssembler masm, Register src2, Register dst) {
-            super(masm, Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fnegd.getValue(), src2.encoding(), dst.encoding());
+        public Fnegd(Register src2, Register dst) {
+            super(Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fnegd.getValue(), src2.encoding(), dst.encoding());
         }
     }
 
@@ -2952,29 +2968,29 @@
 
     public static class Fstoi extends Fmt3n {
 
-        public Fstoi(SPARCAssembler masm, Register src2, Register dst) {
-            super(masm, Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fstoi.getValue(), src2.encoding(), dst.encoding());
+        public Fstoi(Register src2, Register dst) {
+            super(Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fstoi.getValue(), src2.encoding(), dst.encoding());
         }
     }
 
     public static class Fstox extends Fmt3n {
 
-        public Fstox(SPARCAssembler masm, Register src2, Register dst) {
-            super(masm, Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fstox.getValue(), src2.encoding(), dst.encoding());
+        public Fstox(Register src2, Register dst) {
+            super(Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fstox.getValue(), src2.encoding(), dst.encoding());
         }
     }
 
     public static class Fdtox extends Fmt3n {
 
-        public Fdtox(SPARCAssembler masm, Register src2, Register dst) {
-            super(masm, Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fdtox.getValue(), src2.encoding(), dst.encoding());
+        public Fdtox(Register src2, Register dst) {
+            super(Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fdtox.getValue(), src2.encoding(), dst.encoding());
         }
     }
 
     public static class Fstod extends Fmt3n {
 
-        public Fstod(SPARCAssembler masm, Register src2, Register dst) {
-            super(masm, Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fstod.getValue(), src2.encoding(), dst.encoding());
+        public Fstod(Register src2, Register dst) {
+            super(Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fstod.getValue(), src2.encoding(), dst.encoding());
         }
     }
 
@@ -2983,29 +2999,29 @@
      */
     public static class Fdtoi extends Fmt3n {
 
-        public Fdtoi(SPARCAssembler masm, Register src2, Register dst) {
-            super(masm, Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fdtoi.getValue(), src2.encoding(), dst.encoding());
+        public Fdtoi(Register src2, Register dst) {
+            super(Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fdtoi.getValue(), src2.encoding(), dst.encoding());
         }
     }
 
     public static class Fitos extends Fmt3n {
 
-        public Fitos(SPARCAssembler masm, Register src2, Register dst) {
-            super(masm, Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fitos.getValue(), src2.encoding(), dst.encoding());
+        public Fitos(Register src2, Register dst) {
+            super(Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fitos.getValue(), src2.encoding(), dst.encoding());
         }
     }
 
     public static class Fitod extends Fmt3n {
 
-        public Fitod(SPARCAssembler masm, Register src2, Register dst) {
-            super(masm, Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fitod.getValue(), src2.encoding(), dst.encoding());
+        public Fitod(Register src2, Register dst) {
+            super(Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fitod.getValue(), src2.encoding(), dst.encoding());
         }
     }
 
     public static class Fxtod extends Fmt3n {
 
-        public Fxtod(SPARCAssembler masm, Register src2, Register dst) {
-            super(masm, Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fxtod.getValue(), src2.encoding(), dst.encoding());
+        public Fxtod(Register src2, Register dst) {
+            super(Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fxtod.getValue(), src2.encoding(), dst.encoding());
         }
     }
 
@@ -3196,17 +3212,17 @@
 
     public static class Fzeros extends Fmt3n {
 
-        public Fzeros(SPARCAssembler asm, Register dst) {
+        public Fzeros(Register dst) {
             /* VIS1 only */
-            super(asm, Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fzeros.getValue(), 0, dst.encoding());
+            super(Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fzeros.getValue(), 0, dst.encoding());
         }
     }
 
     public static class Fzerod extends Fmt3n {
 
-        public Fzerod(SPARCAssembler asm, Register dst) {
+        public Fzerod(Register dst) {
             /* VIS1 only */
-            super(asm, Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fzerod.getValue(), 0, dst.encoding());
+            super(Ops.ArithOp.getValue(), Op3s.Fpop1.getValue(), Opfs.Fzerod.getValue(), 0, dst.encoding());
         }
     }
 
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java	Tue Jul 15 19:42:36 2014 -0700
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java	Tue Jul 15 20:11:21 2014 -0700
@@ -602,7 +602,6 @@
         }
     }
 
-    @SuppressWarnings("unused")
     public static void emit(CompilationResultBuilder crb, SPARCAssembler masm, SPARCArithmetic opcode, Value dst, Value src, LIRFrameState info) {
         int exceptionOffset = -1;
         if (isRegister(src)) {
@@ -625,9 +624,9 @@
                 case L2D:
                     if (src.getPlatformKind() == Kind.Long) {
                         new Movxtod(asLongReg(src), asDoubleReg(dst)).emit(masm);
-                        new Fxtod(masm, asDoubleReg(dst), asDoubleReg(dst));
+                        new Fxtod(asDoubleReg(dst), asDoubleReg(dst)).emit(masm);
                     } else if (src.getPlatformKind() == Kind.Double) {
-                        new Fxtod(masm, asDoubleReg(src), asDoubleReg(dst));
+                        new Fxtod(asDoubleReg(src), asDoubleReg(dst)).emit(masm);
                     } else {
                         throw GraalInternalError.shouldNotReachHere("cannot handle source register " + src.getPlatformKind());
                     }
@@ -657,49 +656,49 @@
                 case I2F:
                     if (src.getPlatformKind() == Kind.Int) {
                         new Movwtos(asIntReg(src), asFloatReg(dst)).emit(masm);
-                        new Fitos(masm, asFloatReg(dst), asFloatReg(dst));
+                        new Fitos(asFloatReg(dst), asFloatReg(dst)).emit(masm);
                     } else if (src.getPlatformKind() == Kind.Float) {
-                        new Fitos(masm, asFloatReg(src), asFloatReg(dst));
+                        new Fitos(asFloatReg(src), asFloatReg(dst)).emit(masm);
                     } else {
                         throw GraalInternalError.shouldNotReachHere("cannot handle source register " + src.getPlatformKind());
                     }
                     break;
                 case F2D:
-                    new Fstod(masm, asFloatReg(src), asDoubleReg(dst));
+                    new Fstod(asFloatReg(src), asDoubleReg(dst)).emit(masm);
                     break;
                 case F2L:
                     new Fcmp(CC.Fcc0, Opfs.Fcmps, asFloatReg(dst), asFloatReg(dst)).emit(masm);
                     new Fbe(false, 4).emit(masm);
-                    new Fstox(masm, asFloatReg(src), asFloatReg(dst));
-                    new Fitos(masm, asFloatReg(dst), asFloatReg(dst));
+                    new Fstox(asFloatReg(src), asFloatReg(dst)).emit(masm);
+                    new Fitos(asFloatReg(dst), asFloatReg(dst)).emit(masm);
                     new Fsubs(asFloatReg(dst), asFloatReg(dst), asFloatReg(dst)).emit(masm);
                     break;
                 case F2I:
                     new Fcmp(CC.Fcc0, Opfs.Fcmps, asFloatReg(dst), asFloatReg(dst)).emit(masm);
                     new Fbo(false, 4).emit(masm);
-                    new Fstoi(masm, asFloatReg(src), asFloatReg(dst));
-                    new Fitos(masm, asFloatReg(dst), asFloatReg(dst));
+                    new Fstoi(asFloatReg(src), asFloatReg(dst)).emit(masm);
+                    new Fitos(asFloatReg(dst), asFloatReg(dst)).emit(masm);
                     new Fsubs(asFloatReg(dst), asFloatReg(dst), asFloatReg(dst)).emit(masm);
                     break;
                 case D2L:
                     new Fcmp(CC.Fcc0, Opfs.Fcmpd, asDoubleReg(dst), asDoubleReg(dst)).emit(masm);
                     new Fbo(false, 4).emit(masm);
-                    new Fdtox(masm, asDoubleReg(src), asDoubleReg(dst));
-                    new Fxtod(masm, asDoubleReg(dst), asDoubleReg(dst));
+                    new Fdtox(asDoubleReg(src), asDoubleReg(dst)).emit(masm);
+                    new Fxtod(asDoubleReg(dst), asDoubleReg(dst)).emit(masm);
                     new Fsubd(asDoubleReg(dst), asDoubleReg(dst), asDoubleReg(dst)).emit(masm);
                     break;
                 case D2I:
                     new Fcmp(CC.Fcc0, Opfs.Fcmpd, asDoubleReg(dst), asDoubleReg(dst)).emit(masm);
                     new Fbo(false, 4).emit(masm);
-                    new Fdtoi(masm, asDoubleReg(src), asDoubleReg(dst));
-                    new Fitod(masm, asDoubleReg(dst), asDoubleReg(dst));
+                    new Fdtoi(asDoubleReg(src), asDoubleReg(dst)).emit(masm);
+                    new Fitod(asDoubleReg(dst), asDoubleReg(dst)).emit(masm);
                     new Fsubd(asDoubleReg(dst), asDoubleReg(dst), asDoubleReg(dst)).emit(masm);
                     break;
                 case FNEG:
-                    new Fnegs(masm, asFloatReg(src), asFloatReg(dst));
+                    new Fnegs(asFloatReg(src), asFloatReg(dst)).emit(masm);
                     break;
                 case DNEG:
-                    new Fnegd(masm, asDoubleReg(src), asDoubleReg(dst));
+                    new Fnegd(asDoubleReg(src), asDoubleReg(dst)).emit(masm);
                     break;
                 default:
                     throw GraalInternalError.shouldNotReachHere("missing: " + opcode);
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java	Tue Jul 15 19:42:36 2014 -0700
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java	Tue Jul 15 20:11:21 2014 -0700
@@ -422,7 +422,7 @@
                         new Fmovs(src, dst).emit(masm);
                         break;
                     case Double:
-                        new Fstod(masm, src, dst);
+                        new Fstod(src, dst).emit(masm);
                         break;
                     default:
                         throw GraalInternalError.shouldNotReachHere();