use of jdk.vm.ci.amd64.AMD64.rax in project graal by oracle.
the class AMD64ArithmeticLIRGenerator method emitDiv.
@Override
public Value emitDiv(Value a, Value b, LIRFrameState state) {
TargetDescription target = getLIRGen().target();
boolean isAvx = ((AMD64) target.arch).getFeatures().contains(CPUFeature.AVX);
LIRKind resultKind = LIRKind.combine(a, b);
switch((AMD64Kind) a.getPlatformKind()) {
case DWORD:
AMD64MulDivOp op = emitIDIV(DWORD, a, b, state);
return getLIRGen().emitMove(op.getQuotient());
case QWORD:
AMD64MulDivOp lop = emitIDIV(QWORD, a, b, state);
return getLIRGen().emitMove(lop.getQuotient());
case SINGLE:
if (isAvx) {
return emitBinary(resultKind, AVXOp.DIV, SS, false, a, b);
} else {
return emitBinary(resultKind, SSEOp.DIV, SS, false, a, b);
}
case DOUBLE:
if (isAvx) {
return emitBinary(resultKind, AVXOp.DIV, SD, false, a, b);
} else {
return emitBinary(resultKind, SSEOp.DIV, SD, false, a, b);
}
default:
throw GraalError.shouldNotReachHere();
}
}
use of jdk.vm.ci.amd64.AMD64.rax in project graal by oracle.
the class AMD64ArrayCompareToOp method supportsAVX512VLBW.
private static boolean supportsAVX512VLBW(TargetDescription target) {
AMD64 arch = (AMD64) target.arch;
EnumSet<CPUFeature> features = arch.getFeatures();
return features.contains(CPUFeature.AVX512BW) && features.contains(CPUFeature.AVX512VL);
}
use of jdk.vm.ci.amd64.AMD64.rax in project graal by oracle.
the class BitOpNodesTest method testBitCountIntEmpty.
@Test
public void testBitCountIntEmpty() {
Architecture arch = getBackend().getTarget().arch;
boolean isAmd64WithPopCount = arch instanceof AMD64 && ((AMD64) arch).getFeatures().contains(AMD64.CPUFeature.POPCNT);
boolean isSparc = arch instanceof SPARC;
Assume.assumeTrue("Only works on hardware with popcnt at the moment", isAmd64WithPopCount || isSparc);
ValueNode result = parseAndInline("bitCountIntEmptySnippet");
Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 0, 24), result.stamp(NodeView.DEFAULT));
}
use of jdk.vm.ci.amd64.AMD64.rax in project graal by oracle.
the class BitOpNodesTest method testBitCountInt.
@Test
public void testBitCountInt() {
Architecture arch = getBackend().getTarget().arch;
boolean isAmd64WithPopCount = arch instanceof AMD64 && ((AMD64) arch).getFeatures().contains(AMD64.CPUFeature.POPCNT);
boolean isSparc = arch instanceof SPARC;
Assume.assumeTrue("Only works on hardware with popcnt at the moment", isAmd64WithPopCount || isSparc);
ValueNode result = parseAndInline("bitCountIntSnippet");
Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 8, 24), result.stamp(NodeView.DEFAULT));
}
use of jdk.vm.ci.amd64.AMD64.rax in project graal by oracle.
the class BitOpNodesTest method testBitCountLongEmpty.
@Test
public void testBitCountLongEmpty() {
Architecture arch = getBackend().getTarget().arch;
boolean isAmd64WithPopCount = arch instanceof AMD64 && ((AMD64) arch).getFeatures().contains(AMD64.CPUFeature.POPCNT);
boolean isSparc = arch instanceof SPARC;
Assume.assumeTrue("Only works on hardware with popcnt at the moment", isAmd64WithPopCount || isSparc);
ValueNode result = parseAndInline("bitCountLongEmptySnippet");
Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 0, 40), result.stamp(NodeView.DEFAULT));
}
Aggregations