1
1
/*
2
- * Copyright (c) 2009, 2022 , Oracle and/or its affiliates. All rights reserved.
2
+ * Copyright (c) 2009, 2023 , Oracle and/or its affiliates. All rights reserved.
3
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
4
*
5
5
* This code is free software; you can redistribute it and/or modify it
@@ -248,6 +248,8 @@ public enum Flag {
248
248
249
249
private final AMD64Kind largestKind ;
250
250
251
+ private final AMD64Kind largestMaskKind ;
252
+
251
253
public AMD64 (EnumSet <CPUFeature > features , EnumSet <Flag > flags ) {
252
254
super ("AMD64" , AMD64Kind .QWORD , ByteOrder .LITTLE_ENDIAN , true , allRegisters , LOAD_LOAD | LOAD_STORE | STORE_STORE , 1 , 8 );
253
255
this .features = features ;
@@ -256,10 +258,17 @@ public AMD64(EnumSet<CPUFeature> features, EnumSet<Flag> flags) {
256
258
257
259
if (features .contains (CPUFeature .AVX512F )) {
258
260
largestKind = AMD64Kind .V512_QWORD ;
261
+ if (features .contains (CPUFeature .AVX512BW )) {
262
+ largestMaskKind = AMD64Kind .MASK64 ;
263
+ } else {
264
+ largestMaskKind = AMD64Kind .MASK16 ;
265
+ }
259
266
} else if (features .contains (CPUFeature .AVX )) {
260
267
largestKind = AMD64Kind .V256_QWORD ;
268
+ largestMaskKind = null ;
261
269
} else {
262
270
largestKind = AMD64Kind .V128_QWORD ;
271
+ largestMaskKind = null ;
263
272
}
264
273
}
265
274
@@ -324,7 +333,7 @@ public AMD64Kind getLargestStorableKind(RegisterCategory category) {
324
333
} else if (category .equals (XMM )) {
325
334
return largestKind ;
326
335
} else if (category .equals (MASK )) {
327
- return AMD64Kind . MASK64 ;
336
+ return largestMaskKind ;
328
337
} else {
329
338
return null ;
330
339
}
0 commit comments