Mercurial > hg > graal-jvmci-8
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: