graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java	Fri Nov 14 23:17:58 2014
--- new/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java	Fri Nov 14 23:17:58 2014

*** 1002,1011 **** --- 1002,1031 ---- append(new AMD64BitManipulationOp(LBSR, result, asAllocatable(value))); } return result; } + public Value emitCountLeadingZeros(Value value) { + Variable result = newVariable(LIRKind.derive(value).changeType(Kind.Int)); + if (value.getKind().getStackKind() == Kind.Int) { + append(new AMD64BitManipulationOp(ILZCNT, result, asAllocatable(value))); + } else { + append(new AMD64BitManipulationOp(LLZCNT, result, asAllocatable(value))); + } + return result; + } + + public Value emitCountTrailingZeros(Value value) { + Variable result = newVariable(LIRKind.derive(value).changeType(Kind.Int)); + if (value.getKind().getStackKind() == Kind.Int) { + append(new AMD64BitManipulationOp(ITZCNT, result, asAllocatable(value))); + } else { + append(new AMD64BitManipulationOp(LTZCNT, result, asAllocatable(value))); + } + return result; + } + @Override public Value emitMathAbs(Value input) { Variable result = newVariable(LIRKind.derive(input)); switch (input.getKind()) { case Float:

graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File