Mercurial > hg > graal-compiler
changeset 21450:9c88f3f5caa0
SPARCLIRGenerator: create new variables for I2F and L2D converting.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Thu, 21 May 2015 14:56:00 +0200 |
parents | 006d8ddb7ef9 |
children | 24dd9af9ac26 |
files | graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/ConstantStackMoveTest.java graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/StackStoreTest.java graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java |
diffstat | 1 files changed, 8 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Thu May 21 13:28:41 2015 +0200 +++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Thu May 21 14:56:00 2015 +0200 @@ -852,9 +852,10 @@ case F2D: return emitConvert2Op(LIRKind.derive(inputVal).changeType(Kind.Double), F2D, input); case I2F: { - AllocatableValue convertedFloatReg = newVariable(LIRKind.derive(input).changeType(Kind.Float)); - moveBetweenFpGp(convertedFloatReg, input); - append(new Unary2Op(I2F, convertedFloatReg, convertedFloatReg)); + AllocatableValue intEncodedFloatReg = newVariable(LIRKind.derive(input).changeType(Kind.Float)); + moveBetweenFpGp(intEncodedFloatReg, input); + AllocatableValue convertedFloatReg = newVariable(intEncodedFloatReg.getLIRKind()); + append(new Unary2Op(I2F, convertedFloatReg, intEncodedFloatReg)); return convertedFloatReg; } case I2D: { @@ -867,9 +868,10 @@ return convertedDoubleReg; } case L2D: { - AllocatableValue convertedDoubleReg = newVariable(LIRKind.derive(input).changeType(Kind.Double)); - moveBetweenFpGp(convertedDoubleReg, input); - append(new Unary2Op(L2D, convertedDoubleReg, convertedDoubleReg)); + AllocatableValue longEncodedDoubleReg = newVariable(LIRKind.derive(input).changeType(Kind.Double)); + moveBetweenFpGp(longEncodedDoubleReg, input); + AllocatableValue convertedDoubleReg = newVariable(longEncodedDoubleReg.getLIRKind()); + append(new Unary2Op(L2D, convertedDoubleReg, longEncodedDoubleReg)); return convertedDoubleReg; } case D2I: {