def nxv2bf16 : ValueType<32, 163>; // n x 2 x bf16 vector value
def nxv4bf16 : ValueType<64, 164>; // n x 4 x bf16 vector value
def nxv8bf16 : ValueType<128, 165>; // n x 8 x bf16 vector value
-
-def nxv1f32 : ValueType<32, 166>; // n x 1 x f32 vector value
-def nxv2f32 : ValueType<64, 167>; // n x 2 x f32 vector value
-def nxv4f32 : ValueType<128, 168>; // n x 4 x f32 vector value
-def nxv8f32 : ValueType<256, 169>; // n x 8 x f32 vector value
-def nxv16f32 : ValueType<512, 170>; // n x 16 x f32 vector value
-
-def nxv1f64 : ValueType<64, 171>; // n x 1 x f64 vector value
-def nxv2f64 : ValueType<128, 172>; // n x 2 x f64 vector value
-def nxv4f64 : ValueType<256, 173>; // n x 4 x f64 vector value
-def nxv8f64 : ValueType<512, 174>; // n x 8 x f64 vector value
-
-def x86mmx : ValueType<64, 175>; // X86 MMX value
-def FlagVT : ValueType<0, 176>; // Pre-RA sched glue
-def isVoid : ValueType<0, 177>; // Produces no value
-def untyped : ValueType<8, 178>; // Produces an untyped value
-def funcref : ValueType<0, 179>; // WebAssembly's funcref type
-def externref : ValueType<0, 180>; // WebAssembly's externref type
-def x86amx : ValueType<8192, 181>; // X86 AMX value
-def i64x8 : ValueType<512, 182>; // 8 Consecutive GPRs (AArch64)
+def nxv16bf16 : ValueType<256, 166>; // n x 16 x bf16 vector value
+def nxv32bf16 : ValueType<512, 167>; // n x 32 x bf16 vector value
+
+def nxv1f32 : ValueType<32, 168>; // n x 1 x f32 vector value
+def nxv2f32 : ValueType<64, 169>; // n x 2 x f32 vector value
+def nxv4f32 : ValueType<128, 170>; // n x 4 x f32 vector value
+def nxv8f32 : ValueType<256, 171>; // n x 8 x f32 vector value
+def nxv16f32 : ValueType<512, 172>; // n x 16 x f32 vector value
+
+def nxv1f64 : ValueType<64, 173>; // n x 1 x f64 vector value
+def nxv2f64 : ValueType<128, 174>; // n x 2 x f64 vector value
+def nxv4f64 : ValueType<256, 175>; // n x 4 x f64 vector value
+def nxv8f64 : ValueType<512, 176>; // n x 8 x f64 vector value
+
+def x86mmx : ValueType<64, 177>; // X86 MMX value
+def FlagVT : ValueType<0, 178>; // Pre-RA sched glue
+def isVoid : ValueType<0, 179>; // Produces no value
+def untyped : ValueType<8, 180>; // Produces an untyped value
+def funcref : ValueType<0, 181>; // WebAssembly's funcref type
+def externref : ValueType<0, 182>; // WebAssembly's externref type
+def x86amx : ValueType<8192, 183>; // X86 AMX value
+def i64x8 : ValueType<512, 184>; // 8 Consecutive GPRs (AArch64)
def token : ValueType<0, 248>; // TokenTy
def MetadataVT : ValueType<0, 249>; // Metadata
nxv2bf16 = 163, // n x 2 x bf16
nxv4bf16 = 164, // n x 4 x bf16
nxv8bf16 = 165, // n x 8 x bf16
+ nxv16bf16 = 166, // n x 16 x bf16
+ nxv32bf16 = 167, // n x 32 x bf16
- nxv1f32 = 166, // n x 1 x f32
- nxv2f32 = 167, // n x 2 x f32
- nxv4f32 = 168, // n x 4 x f32
- nxv8f32 = 169, // n x 8 x f32
- nxv16f32 = 170, // n x 16 x f32
+ nxv1f32 = 168, // n x 1 x f32
+ nxv2f32 = 169, // n x 2 x f32
+ nxv4f32 = 170, // n x 4 x f32
+ nxv8f32 = 171, // n x 8 x f32
+ nxv16f32 = 172, // n x 16 x f32
- nxv1f64 = 171, // n x 1 x f64
- nxv2f64 = 172, // n x 2 x f64
- nxv4f64 = 173, // n x 4 x f64
- nxv8f64 = 174, // n x 8 x f64
+ nxv1f64 = 173, // n x 1 x f64
+ nxv2f64 = 174, // n x 2 x f64
+ nxv4f64 = 175, // n x 4 x f64
+ nxv8f64 = 176, // n x 8 x f64
FIRST_FP_SCALABLE_VECTOR_VALUETYPE = nxv1f16,
LAST_FP_SCALABLE_VECTOR_VALUETYPE = nxv8f64,
FIRST_VECTOR_VALUETYPE = v1i1,
LAST_VECTOR_VALUETYPE = nxv8f64,
- x86mmx = 175, // This is an X86 MMX value
+ x86mmx = 177, // This is an X86 MMX value
- Glue = 176, // This glues nodes together during pre-RA sched
+ Glue = 178, // This glues nodes together during pre-RA sched
- isVoid = 177, // This has no value
+ isVoid = 179, // This has no value
- Untyped = 178, // This value takes a register, but has
+ Untyped = 180, // This value takes a register, but has
// unspecified type. The register class
// will be determined by the opcode.
- funcref = 179, // WebAssembly's funcref type
- externref = 180, // WebAssembly's externref type
- x86amx = 181, // This is an X86 AMX value
- i64x8 = 182, // 8 Consecutive GPRs (AArch64)
+ funcref = 181, // WebAssembly's funcref type
+ externref = 182, // WebAssembly's externref type
+ x86amx = 183, // This is an X86 AMX value
+ i64x8 = 184, // 8 Consecutive GPRs (AArch64)
FIRST_VALUETYPE = 1, // This is always the beginning of the list.
LAST_VALUETYPE = i64x8, // This always remains at the end of the list.
case nxv1bf16:
case nxv2bf16:
case nxv4bf16:
- case nxv8bf16: return bf16;
+ case nxv8bf16:
+ case nxv16bf16:
+ case nxv32bf16: return bf16;
case v1f32:
case v2f32:
case v3f32:
case nxv32i16:
case nxv32i32:
case nxv32i64:
- case nxv32f16: return 32;
+ case nxv32f16:
+ case nxv32bf16: return 32;
case v16i1:
case v16i8:
case v16i16:
case nxv16i32:
case nxv16i64:
case nxv16f16:
+ case nxv16bf16:
case nxv16f32: return 16;
case v8i1:
case v8i8:
case nxv8i32:
case nxv4i64:
case nxv16f16:
+ case nxv16bf16:
case nxv8f32:
case nxv4f64: return TypeSize::Scalable(256);
case i64x8:
case nxv16i32:
case nxv8i64:
case nxv32f16:
+ case nxv32bf16:
case nxv16f32:
case nxv8f64: return TypeSize::Scalable(512);
case v1024i1:
if (NumElements == 2) return MVT::nxv2bf16;
if (NumElements == 4) return MVT::nxv4bf16;
if (NumElements == 8) return MVT::nxv8bf16;
+ if (NumElements == 16) return MVT::nxv16bf16;
+ if (NumElements == 32) return MVT::nxv32bf16;
break;
case MVT::f32:
if (NumElements == 1) return MVT::nxv1f32;