changeset 22622:111882d99400

[SPARC] canStoreValue as switch statement; new type V64_SINGLE
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Mon, 28 Sep 2015 17:09:29 +0200
parents fcaab0ed7782
children bec9cd4e731a
files jvmci/jdk.internal.jvmci.sparc/src/jdk/internal/jvmci/sparc/SPARC.java jvmci/jdk.internal.jvmci.sparc/src/jdk/internal/jvmci/sparc/SPARCKind.java
diffstat 2 files changed, 25 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/jvmci/jdk.internal.jvmci.sparc/src/jdk/internal/jvmci/sparc/SPARC.java	Mon Sep 28 16:38:43 2015 +0200
+++ b/jvmci/jdk.internal.jvmci.sparc/src/jdk/internal/jvmci/sparc/SPARC.java	Mon Sep 28 17:09:29 2015 +0200
@@ -253,6 +253,8 @@
      */
     public static final int REGISTER_SAFE_AREA_SIZE = 128;
 
+    public static final int BLOCK_ZERO_LENGTH = 64;
+
     public final Set<CPUFeature> features;
 
     public SPARC(Set<CPUFeature> features) {
@@ -262,14 +264,26 @@
 
     @Override
     public boolean canStoreValue(RegisterCategory category, PlatformKind kind) {
-        if (category.equals(CPU)) {
-            return ((SPARCKind) kind).isInteger();
-        } else if (category.equals(FPUs) && kind == SPARCKind.SINGLE) {
-            return true;
-        } else if (category.equals(FPUd) && kind == SPARCKind.DOUBLE) {
-            return true;
+        SPARCKind sparcKind = (SPARCKind) kind;
+        switch (sparcKind) {
+            case BYTE:
+            case HWORD:
+            case WORD:
+            case DWORD:
+                return SPARC.CPU.equals(category);
+            case SINGLE:
+            case V32_BYTE:
+            case V32_HWORD:
+                return SPARC.FPUs.equals(category);
+            case DOUBLE:
+            case V64_BYTE:
+            case V64_HWORD:
+            case V64_WORD:
+            case V64_SINGLE:
+                return SPARC.FPUd.equals(category);
+            default:
+                return false;
         }
-        return false;
     }
 
     @Override
--- a/jvmci/jdk.internal.jvmci.sparc/src/jdk/internal/jvmci/sparc/SPARCKind.java	Mon Sep 28 16:38:43 2015 +0200
+++ b/jvmci/jdk.internal.jvmci.sparc/src/jdk/internal/jvmci/sparc/SPARCKind.java	Mon Sep 28 17:09:29 2015 +0200
@@ -37,7 +37,8 @@
 
     V64_BYTE(8, BYTE),
     V64_HWORD(8, HWORD),
-    V64_WORD(8, WORD);
+    V64_WORD(8, WORD),
+    V64_SINGLE(8, SINGLE);
 
     private final int size;
     private final int vectorLength;
@@ -99,6 +100,8 @@
         switch (this) {
             case BYTE:
                 return 'b';
+            case HWORD:
+                return 'h';
             case WORD:
                 return 'w';
             case DWORD: