changeset 17104:b0146ab5b55f

[SPARC] Can now configure different prefetch modes
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Fri, 12 Sep 2014 12:55:49 -0700
parents 69d8f4e45ee2
children 0a21f24f9a65
files graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCPrefetchOp.java
diffstat 2 files changed, 17 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java	Fri Sep 12 12:54:06 2014 -0700
+++ b/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java	Fri Sep 12 12:55:49 2014 -0700
@@ -3297,6 +3297,13 @@
         }
     }
 
+    public static class Fsqrts extends Fmt3p {
+
+        public Fsqrts(Register src2, Register dst) {
+            super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fsqrts, SPARC.r0, src2, dst);
+        }
+    }
+
     public static class Fsrc1d extends Fmt3p {
 
         public Fsrc1d(Register src1, Register dst) {
@@ -3755,11 +3762,16 @@
     public static class Prefetch extends Fmt11 {
 
         public enum Fcn {
-            SeveralReads(0),
+            SeveralWritesAndPossiblyReads(2),
+            SeveralReadsWeak(0),
             OneRead(1),
-            SeveralWritesAndPossiblyReads(2),
             OneWrite(3),
-            Page(4);
+            Page(4),
+            NearestUnifiedCache(17),
+            SeveralReadsStrong(20),
+            OneReadStrong(21),
+            SeveralWritesAndPossiblyReadsStrong(22),
+            OneWriteStrong(23);
 
             private final int value;
 
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCPrefetchOp.java	Fri Sep 12 12:54:06 2014 -0700
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCPrefetchOp.java	Fri Sep 12 12:55:49 2014 -0700
@@ -42,7 +42,7 @@
 
     @Override
     public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
-        assert instr == 0 : "only supported value is 0";
-        new Prefetch(address.toAddress(), Prefetch.Fcn.SeveralWritesAndPossiblyReads).emit(masm);
+        assert instr >= 0 && instr < Prefetch.Fcn.values().length : instr;
+        new Prefetch(address.toAddress(), Prefetch.Fcn.values()[instr]).emit(masm);
     }
 }