# HG changeset patch # User Stefan Anzinger # Date 1447168101 -3600 # Node ID 5914ee946cf795444c27afd0e68b8d91046213d3 # Parent d710cf41f9a07058ed2a7af938cd8865ef6436dc [SPARC] Move of 32 bits between fp and gp registers via StackSlot as the latency is shorter diff -r d710cf41f9a0 -r 5914ee946cf7 graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCArithmeticLIRGenerator.java --- 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));