185 SSE4_2,
186 POPCNT,
187 LZCNT,
188 TSC,
189 TSCINV,
190 AVX,
191 AVX2,
192 AES,
193 ERMS,
194 CLMUL,
195 BMI1,
196 BMI2,
197 RTM,
198 ADX,
199 AVX512F,
200 AVX512DQ,
201 AVX512PF,
202 AVX512ER,
203 AVX512CD,
204 AVX512BW,
205 AVX512VL
206 }
207
208 private final EnumSet<CPUFeature> features;
209
210 /**
211 * Set of flags to control code emission.
212 */
213 public static enum Flag {
214 UseCountLeadingZerosInstruction,
215 UseCountTrailingZerosInstruction
216 }
217
218 private final EnumSet<Flag> flags;
219
220 private final AMD64Kind largestKind;
221
222 public AMD64(EnumSet<CPUFeature> features, EnumSet<Flag> flags) {
223 super("AMD64", AMD64Kind.QWORD, ByteOrder.LITTLE_ENDIAN, true, allRegisters, LOAD_STORE | STORE_STORE, 1, 8);
224 this.features = features;
225 this.flags = flags;
|
185 SSE4_2,
186 POPCNT,
187 LZCNT,
188 TSC,
189 TSCINV,
190 AVX,
191 AVX2,
192 AES,
193 ERMS,
194 CLMUL,
195 BMI1,
196 BMI2,
197 RTM,
198 ADX,
199 AVX512F,
200 AVX512DQ,
201 AVX512PF,
202 AVX512ER,
203 AVX512CD,
204 AVX512BW,
205 AVX512VL,
206 SHA
207 }
208
209 private final EnumSet<CPUFeature> features;
210
211 /**
212 * Set of flags to control code emission.
213 */
214 public static enum Flag {
215 UseCountLeadingZerosInstruction,
216 UseCountTrailingZerosInstruction
217 }
218
219 private final EnumSet<Flag> flags;
220
221 private final AMD64Kind largestKind;
222
223 public AMD64(EnumSet<CPUFeature> features, EnumSet<Flag> flags) {
224 super("AMD64", AMD64Kind.QWORD, ByteOrder.LITTLE_ENDIAN, true, allRegisters, LOAD_STORE | STORE_STORE, 1, 8);
225 this.features = features;
226 this.flags = flags;
|