Search in sources :

Example 6 with AMD64.rbx

use of jdk.vm.ci.amd64.AMD64.rbx in project graal by oracle.

the class StableArrayReadFoldingTest method testKillWithDifferentTypeUnaligned.

@Test
public void testKillWithDifferentTypeUnaligned() {
    Assume.assumeTrue("Only test unaligned access on AMD64", getTarget().arch instanceof AMD64);
    ResolvedJavaMethod method = getResolvedJavaMethod("killWithDifferentTypeUnaligned");
    testAgainstExpected(method, new Result(true, null), null);
}
Also used : AMD64(jdk.vm.ci.amd64.AMD64) ResolvedJavaMethod(jdk.vm.ci.meta.ResolvedJavaMethod) Test(org.junit.Test)

Example 7 with AMD64.rbx

use of jdk.vm.ci.amd64.AMD64.rbx in project graal by oracle.

the class StableArrayReadFoldingTest method testKillWithSameTypeUnaligned.

@Test
public void testKillWithSameTypeUnaligned() {
    Assume.assumeTrue("Only test unaligned access on AMD64", getTarget().arch instanceof AMD64);
    ResolvedJavaMethod method = getResolvedJavaMethod("killWithSameTypeUnaligned");
    testAgainstExpected(method, new Result(true, null), null);
}
Also used : AMD64(jdk.vm.ci.amd64.AMD64) ResolvedJavaMethod(jdk.vm.ci.meta.ResolvedJavaMethod) Test(org.junit.Test)

Example 8 with AMD64.rbx

use of jdk.vm.ci.amd64.AMD64.rbx in project graal by oracle.

the class NativeImageGenerator method createTarget.

public static TargetDescription createTarget(Platform platform) {
    if (includedIn(platform, Platform.AMD64.class)) {
        Architecture architecture;
        if (NativeImageOptions.NativeArchitecture.getValue()) {
            architecture = GraalAccess.getOriginalTarget().arch;
        } else {
            EnumSet<AMD64.CPUFeature> features = EnumSet.noneOf(AMD64.CPUFeature.class);
            // SSE and SSE2 are added by defaults as they are required by Graal
            features.add(AMD64.CPUFeature.SSE);
            features.add(AMD64.CPUFeature.SSE2);
            features.addAll(parseCSVtoEnum(AMD64.CPUFeature.class, NativeImageOptions.CPUFeatures.getValue()));
            architecture = new AMD64(features, SubstrateTargetDescription.allFlags());
        }
        assert architecture instanceof AMD64 : "SVM supports only AMD64 architectures.";
        return new SubstrateTargetDescription(architecture, true, 16, 0, false);
    } else {
        throw UserError.abort("Architecture specified by platform is not supported: " + platform.getClass().getTypeName());
    }
}
Also used : AMD64(jdk.vm.ci.amd64.AMD64) Platform(org.graalvm.nativeimage.Platform) Architecture(jdk.vm.ci.code.Architecture) SubstrateTargetDescription(com.oracle.svm.core.graal.meta.SubstrateTargetDescription)

Example 9 with AMD64.rbx

use of jdk.vm.ci.amd64.AMD64.rbx in project graal by oracle.

the class BitOpNodesTest method testBitCountLong.

@Test
public void testBitCountLong() {
    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("bitCountLongSnippet");
    Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 8, 40), result.stamp(NodeView.DEFAULT));
}
Also used : AMD64(jdk.vm.ci.amd64.AMD64) SPARC(jdk.vm.ci.sparc.SPARC) Architecture(jdk.vm.ci.code.Architecture) ValueNode(org.graalvm.compiler.nodes.ValueNode) Test(org.junit.Test) GraalCompilerTest(org.graalvm.compiler.core.test.GraalCompilerTest)

Example 10 with AMD64.rbx

use of jdk.vm.ci.amd64.AMD64.rbx in project graal by oracle.

the class AMD64CPUFeatureAccess method verifyHostSupportsArchitecture.

public static void verifyHostSupportsArchitecture(Architecture imageArchitecture) {
    AMD64 architecture = (AMD64) imageArchitecture;
    EnumSet<AMD64.CPUFeature> features = determineHostCPUFeatures();
    if (!features.containsAll(architecture.getFeatures())) {
        List<AMD64.CPUFeature> missingFeatures = new ArrayList<>();
        for (AMD64.CPUFeature feature : architecture.getFeatures()) {
            if (!features.contains(feature)) {
                missingFeatures.add(feature);
            }
        }
        throw VMError.shouldNotReachHere("Current target does not support the following CPU features that are required by the image: " + missingFeatures);
    }
}
Also used : AMD64(jdk.vm.ci.amd64.AMD64) ArrayList(java.util.ArrayList)

Aggregations

AMD64 (jdk.vm.ci.amd64.AMD64)13 AMD64Kind (jdk.vm.ci.amd64.AMD64Kind)11 TargetDescription (jdk.vm.ci.code.TargetDescription)9 Test (org.junit.Test)6 Architecture (jdk.vm.ci.code.Architecture)5 LIRKind (org.graalvm.compiler.core.common.LIRKind)5 SPARC (jdk.vm.ci.sparc.SPARC)4 GraalCompilerTest (org.graalvm.compiler.core.test.GraalCompilerTest)4 ValueNode (org.graalvm.compiler.nodes.ValueNode)4 RegisterValue (jdk.vm.ci.code.RegisterValue)3 Variable (org.graalvm.compiler.lir.Variable)3 CompareAndSwapOp (org.graalvm.compiler.lir.amd64.AMD64Move.CompareAndSwapOp)3 AllocatableValue (jdk.vm.ci.meta.AllocatableValue)2 ResolvedJavaMethod (jdk.vm.ci.meta.ResolvedJavaMethod)2 AMD64AddressValue (org.graalvm.compiler.lir.amd64.AMD64AddressValue)2 Before (org.junit.Before)2 SubstrateTargetDescription (com.oracle.svm.core.graal.meta.SubstrateTargetDescription)1 ArrayList (java.util.ArrayList)1 CPUFeature (jdk.vm.ci.amd64.AMD64.CPUFeature)1 AMD64.rax (jdk.vm.ci.amd64.AMD64.rax)1