107 features.add(AMD64.CPUFeature.AVX512DQ); 108 } 109 if ((config.vmVersionFeatures & config.amd64AVX512PF) != 0) { 110 features.add(AMD64.CPUFeature.AVX512PF); 111 } 112 if ((config.vmVersionFeatures & config.amd64AVX512ER) != 0) { 113 features.add(AMD64.CPUFeature.AVX512ER); 114 } 115 if ((config.vmVersionFeatures & config.amd64AVX512CD) != 0) { 116 features.add(AMD64.CPUFeature.AVX512CD); 117 } 118 if ((config.vmVersionFeatures & config.amd64AVX512BW) != 0) { 119 features.add(AMD64.CPUFeature.AVX512BW); 120 } 121 if ((config.vmVersionFeatures & config.amd64AVX512VL) != 0) { 122 features.add(AMD64.CPUFeature.AVX512VL); 123 } 124 if ((config.vmVersionFeatures & config.amd64SHA) != 0) { 125 features.add(AMD64.CPUFeature.SHA); 126 } 127 return features; 128 } 129 130 protected EnumSet<AMD64.Flag> computeFlags(AMD64HotSpotVMConfig config) { 131 EnumSet<AMD64.Flag> flags = EnumSet.noneOf(AMD64.Flag.class); 132 if (config.useCountLeadingZerosInstruction) { 133 flags.add(AMD64.Flag.UseCountLeadingZerosInstruction); 134 } 135 if (config.useCountTrailingZerosInstruction) { 136 flags.add(AMD64.Flag.UseCountTrailingZerosInstruction); 137 } 138 return flags; 139 } 140 141 protected TargetDescription createTarget(AMD64HotSpotVMConfig config) { 142 final int stackFrameAlignment = 16; 143 final int implicitNullCheckLimit = 4096; 144 final boolean inlineObjects = true; 145 Architecture arch = new AMD64(computeFeatures(config), computeFlags(config)); 146 return new TargetDescription(arch, true, stackFrameAlignment, implicitNullCheckLimit, inlineObjects); | 107 features.add(AMD64.CPUFeature.AVX512DQ); 108 } 109 if ((config.vmVersionFeatures & config.amd64AVX512PF) != 0) { 110 features.add(AMD64.CPUFeature.AVX512PF); 111 } 112 if ((config.vmVersionFeatures & config.amd64AVX512ER) != 0) { 113 features.add(AMD64.CPUFeature.AVX512ER); 114 } 115 if ((config.vmVersionFeatures & config.amd64AVX512CD) != 0) { 116 features.add(AMD64.CPUFeature.AVX512CD); 117 } 118 if ((config.vmVersionFeatures & config.amd64AVX512BW) != 0) { 119 features.add(AMD64.CPUFeature.AVX512BW); 120 } 121 if ((config.vmVersionFeatures & config.amd64AVX512VL) != 0) { 122 features.add(AMD64.CPUFeature.AVX512VL); 123 } 124 if ((config.vmVersionFeatures & config.amd64SHA) != 0) { 125 features.add(AMD64.CPUFeature.SHA); 126 } 127 if ((config.vmVersionFeatures & config.amd64FMA) != 0) { 128 features.add(AMD64.CPUFeature.FMA); 129 } 130 return features; 131 } 132 133 protected EnumSet<AMD64.Flag> computeFlags(AMD64HotSpotVMConfig config) { 134 EnumSet<AMD64.Flag> flags = EnumSet.noneOf(AMD64.Flag.class); 135 if (config.useCountLeadingZerosInstruction) { 136 flags.add(AMD64.Flag.UseCountLeadingZerosInstruction); 137 } 138 if (config.useCountTrailingZerosInstruction) { 139 flags.add(AMD64.Flag.UseCountTrailingZerosInstruction); 140 } 141 return flags; 142 } 143 144 protected TargetDescription createTarget(AMD64HotSpotVMConfig config) { 145 final int stackFrameAlignment = 16; 146 final int implicitNullCheckLimit = 4096; 147 final boolean inlineObjects = true; 148 Architecture arch = new AMD64(computeFeatures(config), computeFlags(config)); 149 return new TargetDescription(arch, true, stackFrameAlignment, implicitNullCheckLimit, inlineObjects); |