204 AVX512DQ,
205 AVX512PF,
206 AVX512ER,
207 AVX512CD,
208 AVX512BW,
209 AVX512VL,
210 SHA,
211 FMA,
212 VZEROUPPER,
213 AVX512_VPOPCNTDQ,
214 AVX512_VPCLMULQDQ,
215 AVX512_VAES,
216 AVX512_VNNI,
217 FLUSH,
218 FLUSHOPT,
219 CLWB,
220 AVX512_VBMI2,
221 AVX512_VBMI,
222 HV,
223 SERIALIZE,
224 }
225
226 private final EnumSet<CPUFeature> features;
227
228 /**
229 * Set of flags to control code emission.
230 */
231 public enum Flag {
232 UseCountLeadingZerosInstruction,
233 UseCountTrailingZerosInstruction
234 }
235
236 private final EnumSet<Flag> flags;
237
238 private final AMD64Kind largestKind;
239
240 public AMD64(EnumSet<CPUFeature> features, EnumSet<Flag> flags) {
241 super("AMD64", AMD64Kind.QWORD, ByteOrder.LITTLE_ENDIAN, true, allRegisters, LOAD_LOAD | LOAD_STORE | STORE_STORE, 1, 8);
242 this.features = features;
243 this.flags = flags;
|
204 AVX512DQ,
205 AVX512PF,
206 AVX512ER,
207 AVX512CD,
208 AVX512BW,
209 AVX512VL,
210 SHA,
211 FMA,
212 VZEROUPPER,
213 AVX512_VPOPCNTDQ,
214 AVX512_VPCLMULQDQ,
215 AVX512_VAES,
216 AVX512_VNNI,
217 FLUSH,
218 FLUSHOPT,
219 CLWB,
220 AVX512_VBMI2,
221 AVX512_VBMI,
222 HV,
223 SERIALIZE,
224 GFNI,
225 AVX512_BITALG,
226 }
227
228 private final EnumSet<CPUFeature> features;
229
230 /**
231 * Set of flags to control code emission.
232 */
233 public enum Flag {
234 UseCountLeadingZerosInstruction,
235 UseCountTrailingZerosInstruction
236 }
237
238 private final EnumSet<Flag> flags;
239
240 private final AMD64Kind largestKind;
241
242 public AMD64(EnumSet<CPUFeature> features, EnumSet<Flag> flags) {
243 super("AMD64", AMD64Kind.QWORD, ByteOrder.LITTLE_ENDIAN, true, allRegisters, LOAD_LOAD | LOAD_STORE | STORE_STORE, 1, 8);
244 this.features = features;
245 this.flags = flags;
|