changeset 22963:5914ee946cf7

[SPARC] Move of 32 bits between fp and gp registers via StackSlot as the latency is shorter
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Tue, 10 Nov 2015 16:08:21 +0100
parents d710cf41f9a0
children 4a0c4d0e75fa
files graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCArithmeticLIRGenerator.java
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCArithmeticLIRGenerator.java	Tue Nov 10 11:47:54 2015 +0100
+++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCArithmeticLIRGenerator.java	Tue Nov 10 16:08:21 2015 +0100
@@ -592,7 +592,9 @@
 
     private void moveBetweenFpGp(AllocatableValue dst, AllocatableValue src) {
         AllocatableValue tempSlot;
-        if (getLIRGen().getArchitecture().getFeatures().contains(CPUFeature.VIS3)) {
+        PlatformKind dstKind = dst.getPlatformKind();
+        PlatformKind srcKind = src.getPlatformKind();
+        if (getLIRGen().getArchitecture().getFeatures().contains(CPUFeature.VIS3) && !(srcKind == WORD && dstKind == SINGLE) && !(srcKind == SINGLE && dstKind == WORD)) {
             tempSlot = AllocatableValue.ILLEGAL;
         } else {
             tempSlot = getTempSlot(LIRKind.value(XWORD));