# HG changeset patch # User Roland Schatz # Date 1415354337 -3600 # Node ID 9734f97bddfe7d9308c3ea4025a7ca1972dbc93a # Parent 1b1569d182f9d2b188cd07610acd1358a87d665c Intrinsify Math.abs(float). diff -r 1b1569d182f9 -r 9734f97bddfe graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java --- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Fri Nov 07 10:58:50 2014 +0100 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Fri Nov 07 10:58:57 2014 +0100 @@ -1006,7 +1006,16 @@ @Override public Value emitMathAbs(Value input) { Variable result = newVariable(LIRKind.derive(input)); - append(new BinaryRegConst(DAND, result, asAllocatable(input), JavaConstant.forDouble(Double.longBitsToDouble(0x7FFFFFFFFFFFFFFFL)))); + switch (input.getKind()) { + case Float: + append(new BinaryRegConst(FAND, result, asAllocatable(input), JavaConstant.forFloat(Float.intBitsToFloat(0x7FFFFFFF)))); + break; + case Double: + append(new BinaryRegConst(DAND, result, asAllocatable(input), JavaConstant.forDouble(Double.longBitsToDouble(0x7FFFFFFFFFFFFFFFL)))); + break; + default: + throw GraalInternalError.shouldNotReachHere(); + } return result; } diff -r 1b1569d182f9 -r 9734f97bddfe graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/MathSubstitutionsX86.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/MathSubstitutionsX86.java Fri Nov 07 10:58:50 2014 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/MathSubstitutionsX86.java Fri Nov 07 10:58:57 2014 +0100 @@ -40,6 +40,11 @@ private static final double PI_4 = Math.PI / 4; @MethodSubstitution + public static float abs(float x) { + return AbsNode.abs(x); + } + + @MethodSubstitution public static double abs(double x) { return AbsNode.abs(x); }