# HG changeset patch # User twisti # Date 1443605359 -7200 # Node ID 5d6bb2cb3b9de813a5e18dfebab033c2d61e7fdb # Parent c7ce66399b04d43d734f460f291d3e5bb5d0c64f Add new flags to jdk.internal.jvmci.amd64.AMD64.CPUFeature diff -r c7ce66399b04 -r 5d6bb2cb3b9d jvmci/jdk.internal.jvmci.amd64/src/jdk/internal/jvmci/amd64/AMD64.java --- a/jvmci/jdk.internal.jvmci.amd64/src/jdk/internal/jvmci/amd64/AMD64.java Wed Sep 30 11:41:40 2015 +0200 +++ b/jvmci/jdk.internal.jvmci.amd64/src/jdk/internal/jvmci/amd64/AMD64.java Wed Sep 30 11:29:19 2015 +0200 @@ -119,24 +119,42 @@ // @formatter:on /** - * Basic set of CPU features mirroring what is returned from the cpuid instruction. + * Basic set of CPU features mirroring what is returned from the cpuid instruction. See: + * {@code VM_Version::cpuFeatureFlags}. */ public static enum CPUFeature { + CX8, + CMOV, + FXSR, + HT, + MMX, + AMD_3DNOW_PREFETCH, SSE, SSE2, SSE3, - SSE4a, + SSSE3, + SSE4A, SSE4_1, SSE4_2, - SSSE3, POPCNT, LZCNT, + TSC, + TSCINV, AVX, AVX2, + AES, ERMS, - AMD_3DNOW_PREFETCH, - AES, - BMI1 + CLMUL, + BMI1, + BMI2, + RTM, + ADX, + AVX512F, + AVX512DQ, + AVX512PF, + AVX512ER, + AVX512CD, + AVX512BW } private final EnumSet features; diff -r c7ce66399b04 -r 5d6bb2cb3b9d jvmci/jdk.internal.jvmci.hotspot.amd64/src/jdk/internal/jvmci/hotspot/amd64/AMD64HotSpotJVMCIBackendFactory.java --- a/jvmci/jdk.internal.jvmci.hotspot.amd64/src/jdk/internal/jvmci/hotspot/amd64/AMD64HotSpotJVMCIBackendFactory.java Wed Sep 30 11:41:40 2015 +0200 +++ b/jvmci/jdk.internal.jvmci.hotspot.amd64/src/jdk/internal/jvmci/hotspot/amd64/AMD64HotSpotJVMCIBackendFactory.java Wed Sep 30 11:29:19 2015 +0200 @@ -49,6 +49,9 @@ protected EnumSet computeFeatures(HotSpotVMConfig config) { // Configure the feature set using the HotSpot flag settings. EnumSet features = EnumSet.noneOf(AMD64.CPUFeature.class); + if ((config.x86CPUFeatures & config.cpu3DNOWPREFETCH) != 0) { + features.add(AMD64.CPUFeature.AMD_3DNOW_PREFETCH); + } assert config.useSSE >= 2 : "minimum config for x64"; features.add(AMD64.CPUFeature.SSE); features.add(AMD64.CPUFeature.SSE2); @@ -59,7 +62,7 @@ features.add(AMD64.CPUFeature.SSSE3); } if ((config.x86CPUFeatures & config.cpuSSE4A) != 0) { - features.add(AMD64.CPUFeature.SSE4a); + features.add(AMD64.CPUFeature.SSE4A); } if ((config.x86CPUFeatures & config.cpuSSE41) != 0) { features.add(AMD64.CPUFeature.SSE4_1); @@ -67,26 +70,23 @@ if ((config.x86CPUFeatures & config.cpuSSE42) != 0) { features.add(AMD64.CPUFeature.SSE4_2); } + if ((config.x86CPUFeatures & config.cpuPOPCNT) != 0) { + features.add(AMD64.CPUFeature.POPCNT); + } + if ((config.x86CPUFeatures & config.cpuLZCNT) != 0) { + features.add(AMD64.CPUFeature.LZCNT); + } if ((config.x86CPUFeatures & config.cpuAVX) != 0) { features.add(AMD64.CPUFeature.AVX); } if ((config.x86CPUFeatures & config.cpuAVX2) != 0) { features.add(AMD64.CPUFeature.AVX2); } - if ((config.x86CPUFeatures & config.cpuERMS) != 0) { - features.add(AMD64.CPUFeature.ERMS); - } - if ((config.x86CPUFeatures & config.cpuLZCNT) != 0) { - features.add(AMD64.CPUFeature.LZCNT); - } - if ((config.x86CPUFeatures & config.cpuPOPCNT) != 0) { - features.add(AMD64.CPUFeature.POPCNT); - } if ((config.x86CPUFeatures & config.cpuAES) != 0) { features.add(AMD64.CPUFeature.AES); } - if ((config.x86CPUFeatures & config.cpu3DNOWPREFETCH) != 0) { - features.add(AMD64.CPUFeature.AMD_3DNOW_PREFETCH); + if ((config.x86CPUFeatures & config.cpuERMS) != 0) { + features.add(AMD64.CPUFeature.ERMS); } if ((config.x86CPUFeatures & config.cpuBMI1) != 0) { features.add(AMD64.CPUFeature.BMI1); diff -r c7ce66399b04 -r 5d6bb2cb3b9d src/cpu/x86/vm/vmStructs_x86.hpp --- a/src/cpu/x86/vm/vmStructs_x86.hpp Wed Sep 30 11:41:40 2015 +0200 +++ b/src/cpu/x86/vm/vmStructs_x86.hpp Wed Sep 30 11:29:19 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -72,7 +72,9 @@ declare_constant(VM_Version::CPU_ERMS) \ declare_constant(VM_Version::CPU_CLMUL) \ declare_constant(VM_Version::CPU_BMI1) \ - declare_constant(VM_Version::CPU_BMI2) + declare_constant(VM_Version::CPU_BMI2) \ + declare_constant(VM_Version::CPU_RTM) \ + declare_constant(VM_Version::CPU_ADX) #define VM_LONG_CONSTANTS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant)