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