[llvm] 68057c2 - Add new vector types for LLVM

Mateja Marjanovic via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 29 08:02:48 PST 2022


Author: Mateja Marjanovic
Date: 2022-11-29T17:02:04+01:00
New Revision: 68057c2b8d94d0426a72ad81b00b215f7b5650fa

URL: https://github.com/llvm/llvm-project/commit/68057c2b8d94d0426a72ad81b00b215f7b5650fa
DIFF: https://github.com/llvm/llvm-project/commit/68057c2b8d94d0426a72ad81b00b215f7b5650fa.diff

LOG: Add new vector types for LLVM

Add v9i32, v9f32, v10i32, v10f32, v11i32, v11f32, v12i32 and v12f32.

Differential Revision: https://reviews.llvm.org/D138136

Added: 
    

Modified: 
    llvm/include/llvm/CodeGen/ValueTypes.td
    llvm/include/llvm/Support/MachineValueType.h
    llvm/lib/CodeGen/ValueTypes.cpp
    llvm/utils/TableGen/CodeGenTarget.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/CodeGen/ValueTypes.td b/llvm/include/llvm/CodeGen/ValueTypes.td
index 9fc145551880f..c22553855c556 100644
--- a/llvm/include/llvm/CodeGen/ValueTypes.td
+++ b/llvm/include/llvm/CodeGen/ValueTypes.td
@@ -87,147 +87,155 @@ def v5i32    : ValueType<160,   59>;  //    5 x i32 vector value
 def v6i32    : ValueType<192,   60>;  //    6 x f32 vector value
 def v7i32    : ValueType<224,   61>;  //    7 x f32 vector value
 def v8i32    : ValueType<256,   62>;  //    8 x i32 vector value
-def v16i32   : ValueType<512,   63>;  //   16 x i32 vector value
-def v32i32   : ValueType<1024,  64>;  //   32 x i32 vector value
-def v64i32   : ValueType<2048,  65>;  //   64 x i32 vector value
-def v128i32  : ValueType<4096,  66>;  //  128 x i32 vector value
-def v256i32  : ValueType<8192,  67>;  //  256 x i32 vector value
-def v512i32  : ValueType<16384, 68>;  //  512 x i32 vector value
-def v1024i32 : ValueType<32768, 69>;  // 1024 x i32 vector value
-def v2048i32 : ValueType<65536, 70>;  // 2048 x i32 vector value
-
-def v1i64   : ValueType<64,    71>;  //   1 x i64 vector value
-def v2i64   : ValueType<128,   72>;  //   2 x i64 vector value
-def v3i64   : ValueType<192,   73>;  //   3 x i64 vector value
-def v4i64   : ValueType<256,   74>;  //   4 x i64 vector value
-def v8i64   : ValueType<512,   75>;  //   8 x i64 vector value
-def v16i64  : ValueType<1024,  76>;  //  16 x i64 vector value
-def v32i64  : ValueType<2048,  77>;  //  32 x i64 vector value
-def v64i64  : ValueType<4096,  78>;  //  64 x i64 vector value
-def v128i64 : ValueType<8192,  79>;  // 128 x i64 vector value
-def v256i64 : ValueType<16384, 80>;  // 256 x i64 vector value
-
-def v1i128 : ValueType<128, 81>;  //  1 x i128 vector value
-
-def v1f16    : ValueType<16,     82>;  //    1 x f16 vector value
-def v2f16    : ValueType<32,     83>;  //    2 x f16 vector value
-def v3f16    : ValueType<48,     84>;  //    3 x f16 vector value
-def v4f16    : ValueType<64,     85>;  //    4 x f16 vector value
-def v8f16    : ValueType<128,    86>;  //    8 x f16 vector value
-def v16f16   : ValueType<256,    87>;  //   16 x f16 vector value
-def v32f16   : ValueType<512,    88>;  //   32 x f16 vector value
-def v64f16   : ValueType<1024,   89>;  //   64 x f16 vector value
-def v128f16  : ValueType<2048,   90>;  //  128 x f16 vector value
-def v256f16  : ValueType<4096,   91>;  //  256 x f16 vector value
-def v512f16  : ValueType<8192,   92>;  //  512 x f16 vector value
-
-def v2bf16   : ValueType<32,     93>;  //    2 x bf16 vector value
-def v3bf16   : ValueType<48,     94>;  //    3 x bf16 vector value
-def v4bf16   : ValueType<64,     95>;  //    4 x bf16 vector value
-def v8bf16   : ValueType<128,    96>;  //    8 x bf16 vector value
-def v16bf16  : ValueType<256,    97>;  //   16 x bf16 vector value
-def v32bf16  : ValueType<512,    98>;  //   32 x bf16 vector value
-def v64bf16  : ValueType<1024,   99>;  //   64 x bf16 vector value
-def v128bf16 : ValueType<2048,  100>;  //  128 x bf16 vector value
-
-def v1f32    : ValueType<32,    101>;  //    1 x f32 vector value
-def v2f32    : ValueType<64,    102>;  //    2 x f32 vector value
-def v3f32    : ValueType<96,    103>;  //    3 x f32 vector value
-def v4f32    : ValueType<128,   104>;  //    4 x f32 vector value
-def v5f32    : ValueType<160,   105>;  //    5 x f32 vector value
-def v6f32    : ValueType<192,   106>;  //    6 x f32 vector value
-def v7f32    : ValueType<224,   107>;  //    7 x f32 vector value
-def v8f32    : ValueType<256,   108>;  //    8 x f32 vector value
-def v16f32   : ValueType<512,   109>;  //   16 x f32 vector value
-def v32f32   : ValueType<1024,  110>;  //   32 x f32 vector value
-def v64f32   : ValueType<2048,  111>;  //   64 x f32 vector value
-def v128f32  : ValueType<4096,  112>;  //  128 x f32 vector value
-def v256f32  : ValueType<8192,  113>;  //  256 x f32 vector value
-def v512f32  : ValueType<16384, 114>;  //  512 x f32 vector value
-def v1024f32 : ValueType<32768, 115>;  // 1024 x f32 vector value
-def v2048f32 : ValueType<65536, 116>;  // 2048 x f32 vector value
-
-def v1f64    : ValueType<64,    117>;  //    1 x f64 vector value
-def v2f64    : ValueType<128,   118>;  //    2 x f64 vector value
-def v3f64    : ValueType<192,   119>;  //    3 x f64 vector value
-def v4f64    : ValueType<256,   120>;  //    4 x f64 vector value
-def v8f64    : ValueType<512,   121>;  //    8 x f64 vector value
-def v16f64   : ValueType<1024,  122>;  //   16 x f64 vector value
-def v32f64   : ValueType<2048,  123>;  //   32 x f64 vector value
-def v64f64   : ValueType<4096,  124>;  //   64 x f64 vector value
-def v128f64  : ValueType<8192,  125>;  //  128 x f64 vector value
-def v256f64  : ValueType<16384, 126>;  //  256 x f64 vector value
-
-def nxv1i1  : ValueType<1,  127>;  // n x  1 x i1  vector value
-def nxv2i1  : ValueType<2,  128>;  // n x  2 x i1  vector value
-def nxv4i1  : ValueType<4,  129>;  // n x  4 x i1  vector value
-def nxv8i1  : ValueType<8,  130>;  // n x  8 x i1  vector value
-def nxv16i1 : ValueType<16, 131>;  // n x 16 x i1  vector value
-def nxv32i1 : ValueType<32, 132>;  // n x 32 x i1  vector value
-def nxv64i1 : ValueType<64, 133>;  // n x 64 x i1  vector value
-
-def nxv1i8  : ValueType<8,   134>;  // n x  1 x i8  vector value
-def nxv2i8  : ValueType<16,  135>;  // n x  2 x i8  vector value
-def nxv4i8  : ValueType<32,  136>;  // n x  4 x i8  vector value
-def nxv8i8  : ValueType<64,  137>;  // n x  8 x i8  vector value
-def nxv16i8 : ValueType<128, 138>;  // n x 16 x i8  vector value
-def nxv32i8 : ValueType<256, 139>;  // n x 32 x i8  vector value
-def nxv64i8 : ValueType<512, 140>;  // n x 64 x i8  vector value
-
-def nxv1i16  : ValueType<16,  141>;  // n x  1 x i16 vector value
-def nxv2i16  : ValueType<32,  142>;  // n x  2 x i16 vector value
-def nxv4i16  : ValueType<64,  143>;  // n x  4 x i16 vector value
-def nxv8i16  : ValueType<128, 144>;  // n x  8 x i16 vector value
-def nxv16i16 : ValueType<256, 145>;  // n x 16 x i16 vector value
-def nxv32i16 : ValueType<512, 146>;  // n x 32 x i16 vector value
-
-def nxv1i32  : ValueType<32,   147>;  // n x  1 x i32 vector value
-def nxv2i32  : ValueType<64,   148>;  // n x  2 x i32 vector value
-def nxv4i32  : ValueType<128,  149>;  // n x  4 x i32 vector value
-def nxv8i32  : ValueType<256,  150>;  // n x  8 x i32 vector value
-def nxv16i32 : ValueType<512,  151>;  // n x 16 x i32 vector value
-def nxv32i32 : ValueType<1024, 152>;  // n x 32 x i32 vector value
-
-def nxv1i64  : ValueType<64,   153>;  // n x  1 x i64 vector value
-def nxv2i64  : ValueType<128,  154>;  // n x  2 x i64 vector value
-def nxv4i64  : ValueType<256,  155>;  // n x  4 x i64 vector value
-def nxv8i64  : ValueType<512,  156>;  // n x  8 x i64 vector value
-def nxv16i64 : ValueType<1024, 157>;  // n x 16 x i64 vector value
-def nxv32i64 : ValueType<2048, 158>;  // n x 32 x i64 vector value
-
-def nxv1f16  : ValueType<16,  159>;  // n x  1 x  f16 vector value
-def nxv2f16  : ValueType<32,  160>;  // n x  2 x  f16 vector value
-def nxv4f16  : ValueType<64,  161>;  // n x  4 x  f16 vector value
-def nxv8f16  : ValueType<128, 162>;  // n x  8 x  f16 vector value
-def nxv16f16 : ValueType<256, 163>;  // n x 16 x  f16 vector value
-def nxv32f16 : ValueType<512, 164>;  // n x 32 x  f16 vector value
-
-def nxv1bf16 : ValueType<16,  165>;  // n x  1 x bf16 vector value
-def nxv2bf16 : ValueType<32,  166>;  // n x  2 x bf16 vector value
-def nxv4bf16 : ValueType<64,  167>;  // n x  4 x bf16 vector value
-def nxv8bf16 : ValueType<128, 168>;  // n x  8 x bf16 vector value
-def nxv16bf16 : ValueType<256, 169>;  // n x 16 x bf16 vector value
-def nxv32bf16 : ValueType<512, 170>;  // n x 32 x bf16 vector value
-
-def nxv1f32  : ValueType<32,  171>;  // n x  1 x  f32 vector value
-def nxv2f32  : ValueType<64,  172>;  // n x  2 x  f32 vector value
-def nxv4f32  : ValueType<128, 173>;  // n x  4 x  f32 vector value
-def nxv8f32  : ValueType<256, 174>;  // n x  8 x  f32 vector value
-def nxv16f32 : ValueType<512, 175>;  // n x 16 x  f32 vector value
-
-def nxv1f64  : ValueType<64,  176>;  // n x  1 x  f64 vector value
-def nxv2f64  : ValueType<128, 177>;  // n x  2 x  f64 vector value
-def nxv4f64  : ValueType<256, 178>;  // n x  4 x  f64 vector value
-def nxv8f64  : ValueType<512, 179>;  // n x  8 x  f64 vector value
-
-def x86mmx    : ValueType<64,   180>;  // X86 MMX value
-def FlagVT    : ValueType<0,    181>;  // Pre-RA sched glue
-def isVoid    : ValueType<0,    182>;  // Produces no value
-def untyped   : ValueType<8,    183>;  // Produces an untyped value
-def funcref   : ValueType<0,    184>;  // WebAssembly's funcref type
-def externref : ValueType<0,    185>;  // WebAssembly's externref type
-def x86amx    : ValueType<8192, 186>;  // X86 AMX value
-def i64x8     : ValueType<512,  187>;  // 8 Consecutive GPRs (AArch64)
+def v9i32    : ValueType<288,   63>;  //    9 x i32 vector value
+def v10i32   : ValueType<320,   64>;  //   10 x i32 vector value
+def v11i32   : ValueType<352,   65>;  //   11 x i32 vector value
+def v12i32   : ValueType<384,   66>;  //   12 x i32 vector value
+def v16i32   : ValueType<512,   67>;  //   16 x i32 vector value
+def v32i32   : ValueType<1024,  68>;  //   32 x i32 vector value
+def v64i32   : ValueType<2048,  69>;  //   64 x i32 vector value
+def v128i32  : ValueType<4096,  70>;  //  128 x i32 vector value
+def v256i32  : ValueType<8192,  71>;  //  256 x i32 vector value
+def v512i32  : ValueType<16384, 72>;  //  512 x i32 vector value
+def v1024i32 : ValueType<32768, 73>;  // 1024 x i32 vector value
+def v2048i32 : ValueType<65536, 74>;  // 2048 x i32 vector value
+
+def v1i64   : ValueType<64,    75>;  //   1 x i64 vector value
+def v2i64   : ValueType<128,   76>;  //   2 x i64 vector value
+def v3i64   : ValueType<192,   77>;  //   3 x i64 vector value
+def v4i64   : ValueType<256,   78>;  //   4 x i64 vector value
+def v8i64   : ValueType<512,   79>;  //   8 x i64 vector value
+def v16i64  : ValueType<1024,  80>;  //  16 x i64 vector value
+def v32i64  : ValueType<2048,  81>;  //  32 x i64 vector value
+def v64i64  : ValueType<4096,  82>;  //  64 x i64 vector value
+def v128i64 : ValueType<8192,  83>;  // 128 x i64 vector value
+def v256i64 : ValueType<16384, 84>;  // 256 x i64 vector value
+
+def v1i128 : ValueType<128, 85>;  //  1 x i128 vector value
+
+def v1f16    : ValueType<16,     86>;  //    1 x f16 vector value
+def v2f16    : ValueType<32,     87>;  //    2 x f16 vector value
+def v3f16    : ValueType<48,     88>;  //    3 x f16 vector value
+def v4f16    : ValueType<64,     89>;  //    4 x f16 vector value
+def v8f16    : ValueType<128,    90>;  //    8 x f16 vector value
+def v16f16   : ValueType<256,    91>;  //   16 x f16 vector value
+def v32f16   : ValueType<512,    92>;  //   32 x f16 vector value
+def v64f16   : ValueType<1024,   93>;  //   64 x f16 vector value
+def v128f16  : ValueType<2048,   94>;  //  128 x f16 vector value
+def v256f16  : ValueType<4096,   95>;  //  256 x f16 vector value
+def v512f16  : ValueType<8192,   96>;  //  512 x f16 vector value
+
+def v2bf16   : ValueType<32,     97>;  //    2 x bf16 vector value
+def v3bf16   : ValueType<48,     98>;  //    3 x bf16 vector value
+def v4bf16   : ValueType<64,     99>;  //    4 x bf16 vector value
+def v8bf16   : ValueType<128,   100>;  //    8 x bf16 vector value
+def v16bf16  : ValueType<256,   101>;  //   16 x bf16 vector value
+def v32bf16  : ValueType<512,   102>;  //   32 x bf16 vector value
+def v64bf16  : ValueType<1024,  103>;  //   64 x bf16 vector value
+def v128bf16 : ValueType<2048,  104>;  //  128 x bf16 vector value
+
+def v1f32    : ValueType<32,    105>;  //    1 x f32 vector value
+def v2f32    : ValueType<64,    106>;  //    2 x f32 vector value
+def v3f32    : ValueType<96,    107>;  //    3 x f32 vector value
+def v4f32    : ValueType<128,   108>;  //    4 x f32 vector value
+def v5f32    : ValueType<160,   109>;  //    5 x f32 vector value
+def v6f32    : ValueType<192,   110>;  //    6 x f32 vector value
+def v7f32    : ValueType<224,   111>;  //    7 x f32 vector value
+def v8f32    : ValueType<256,   112>;  //    8 x f32 vector value
+def v9f32    : ValueType<288,   113>;  //    9 x f32 vector value
+def v10f32   : ValueType<320,   114>;  //   10 x f32 vector value
+def v11f32   : ValueType<352,   115>;  //   11 x f32 vector value
+def v12f32   : ValueType<384,   116>;  //   12 x f32 vector value
+def v16f32   : ValueType<512,   117>;  //   16 x f32 vector value
+def v32f32   : ValueType<1024,  118>;  //   32 x f32 vector value
+def v64f32   : ValueType<2048,  119>;  //   64 x f32 vector value
+def v128f32  : ValueType<4096,  120>;  //  128 x f32 vector value
+def v256f32  : ValueType<8192,  121>;  //  256 x f32 vector value
+def v512f32  : ValueType<16384, 122>;  //  512 x f32 vector value
+def v1024f32 : ValueType<32768, 123>;  // 1024 x f32 vector value
+def v2048f32 : ValueType<65536, 124>;  // 2048 x f32 vector value
+
+def v1f64    : ValueType<64,    125>;  //    1 x f64 vector value
+def v2f64    : ValueType<128,   126>;  //    2 x f64 vector value
+def v3f64    : ValueType<192,   127>;  //    3 x f64 vector value
+def v4f64    : ValueType<256,   128>;  //    4 x f64 vector value
+def v8f64    : ValueType<512,   129>;  //    8 x f64 vector value
+def v16f64   : ValueType<1024,  130>;  //   16 x f64 vector value
+def v32f64   : ValueType<2048,  131>;  //   32 x f64 vector value
+def v64f64   : ValueType<4096,  132>;  //   64 x f64 vector value
+def v128f64  : ValueType<8192,  133>;  //  128 x f64 vector value
+def v256f64  : ValueType<16384, 134>;  //  256 x f64 vector value
+
+def nxv1i1  : ValueType<1,  135>;  // n x  1 x i1  vector value
+def nxv2i1  : ValueType<2,  136>;  // n x  2 x i1  vector value
+def nxv4i1  : ValueType<4,  137>;  // n x  4 x i1  vector value
+def nxv8i1  : ValueType<8,  138>;  // n x  8 x i1  vector value
+def nxv16i1 : ValueType<16, 139>;  // n x 16 x i1  vector value
+def nxv32i1 : ValueType<32, 140>;  // n x 32 x i1  vector value
+def nxv64i1 : ValueType<64, 141>;  // n x 64 x i1  vector value
+
+def nxv1i8  : ValueType<8,   142>;  // n x  1 x i8  vector value
+def nxv2i8  : ValueType<16,  143>;  // n x  2 x i8  vector value
+def nxv4i8  : ValueType<32,  144>;  // n x  4 x i8  vector value
+def nxv8i8  : ValueType<64,  145>;  // n x  8 x i8  vector value
+def nxv16i8 : ValueType<128, 146>;  // n x 16 x i8  vector value
+def nxv32i8 : ValueType<256, 147>;  // n x 32 x i8  vector value
+def nxv64i8 : ValueType<512, 148>;  // n x 64 x i8  vector value
+
+def nxv1i16  : ValueType<16,  149>;  // n x  1 x i16 vector value
+def nxv2i16  : ValueType<32,  150>;  // n x  2 x i16 vector value
+def nxv4i16  : ValueType<64,  151>;  // n x  4 x i16 vector value
+def nxv8i16  : ValueType<128, 152>;  // n x  8 x i16 vector value
+def nxv16i16 : ValueType<256, 153>;  // n x 16 x i16 vector value
+def nxv32i16 : ValueType<512, 154>;  // n x 32 x i16 vector value
+
+def nxv1i32  : ValueType<32,   155>;  // n x  1 x i32 vector value
+def nxv2i32  : ValueType<64,   156>;  // n x  2 x i32 vector value
+def nxv4i32  : ValueType<128,  157>;  // n x  4 x i32 vector value
+def nxv8i32  : ValueType<256,  158>;  // n x  8 x i32 vector value
+def nxv16i32 : ValueType<512,  159>;  // n x 16 x i32 vector value
+def nxv32i32 : ValueType<1024, 160>;  // n x 32 x i32 vector value
+
+def nxv1i64  : ValueType<64,   161>;  // n x  1 x i64 vector value
+def nxv2i64  : ValueType<128,  162>;  // n x  2 x i64 vector value
+def nxv4i64  : ValueType<256,  163>;  // n x  4 x i64 vector value
+def nxv8i64  : ValueType<512,  164>;  // n x  8 x i64 vector value
+def nxv16i64 : ValueType<1024, 165>;  // n x 16 x i64 vector value
+def nxv32i64 : ValueType<2048, 166>;  // n x 32 x i64 vector value
+
+def nxv1f16  : ValueType<16,  167>;  // n x  1 x  f16 vector value
+def nxv2f16  : ValueType<32,  168>;  // n x  2 x  f16 vector value
+def nxv4f16  : ValueType<64,  169>;  // n x  4 x  f16 vector value
+def nxv8f16  : ValueType<128, 170>;  // n x  8 x  f16 vector value
+def nxv16f16 : ValueType<256, 171>;  // n x 16 x  f16 vector value
+def nxv32f16 : ValueType<512, 172>;  // n x 32 x  f16 vector value
+
+def nxv1bf16 : ValueType<16,  173>;  // n x  1 x bf16 vector value
+def nxv2bf16 : ValueType<32,  174>;  // n x  2 x bf16 vector value
+def nxv4bf16 : ValueType<64,  175>;  // n x  4 x bf16 vector value
+def nxv8bf16 : ValueType<128, 176>;  // n x  8 x bf16 vector value
+def nxv16bf16 : ValueType<256, 177>;  // n x 16 x bf16 vector value
+def nxv32bf16 : ValueType<512, 178>;  // n x 32 x bf16 vector value
+
+def nxv1f32  : ValueType<32,  179>;  // n x  1 x  f32 vector value
+def nxv2f32  : ValueType<64,  180>;  // n x  2 x  f32 vector value
+def nxv4f32  : ValueType<128, 181>;  // n x  4 x  f32 vector value
+def nxv8f32  : ValueType<256, 182>;  // n x  8 x  f32 vector value
+def nxv16f32 : ValueType<512, 183>;  // n x 16 x  f32 vector value
+
+def nxv1f64  : ValueType<64,  184>;  // n x  1 x  f64 vector value
+def nxv2f64  : ValueType<128, 185>;  // n x  2 x  f64 vector value
+def nxv4f64  : ValueType<256, 186>;  // n x  4 x  f64 vector value
+def nxv8f64  : ValueType<512, 187>;  // n x  8 x  f64 vector value
+
+def x86mmx    : ValueType<64,   188>;  // X86 MMX value
+def FlagVT    : ValueType<0,    189>;  // Pre-RA sched glue
+def isVoid    : ValueType<0,    190>;  // Produces no value
+def untyped   : ValueType<8,    191>;  // Produces an untyped value
+def funcref   : ValueType<0,    192>;  // WebAssembly's funcref type
+def externref : ValueType<0,    193>;  // WebAssembly's externref type
+def x86amx    : ValueType<8192, 194>;  // X86 AMX value
+def i64x8     : ValueType<512,  195>;  // 8 Consecutive GPRs (AArch64)
 
 def token      : ValueType<0, 248>;  // TokenTy
 def MetadataVT : ValueType<0, 249>;  // Metadata

diff  --git a/llvm/include/llvm/Support/MachineValueType.h b/llvm/include/llvm/Support/MachineValueType.h
index 1fe4128516adc..c506f6d648a17 100644
--- a/llvm/include/llvm/Support/MachineValueType.h
+++ b/llvm/include/llvm/Support/MachineValueType.h
@@ -114,79 +114,88 @@ namespace llvm {
       v6i32          =  60,   //    6 x i32
       v7i32          =  61,   //    7 x i32
       v8i32          =  62,   //    8 x i32
-      v16i32         =  63,   //   16 x i32
-      v32i32         =  64,   //   32 x i32
-      v64i32         =  65,   //   64 x i32
-      v128i32        =  66,   //  128 x i32
-      v256i32        =  67,   //  256 x i32
-      v512i32        =  68,   //  512 x i32
-      v1024i32       =  69,   // 1024 x i32
-      v2048i32       =  70,   // 2048 x i32
-
-      v1i64          =  71,   //   1 x i64
-      v2i64          =  72,   //   2 x i64
-      v3i64          =  73,   //   3 x i64
-      v4i64          =  74,   //   4 x i64
-      v8i64          =  75,   //   8 x i64
-      v16i64         =  76,   //  16 x i64
-      v32i64         =  77,   //  32 x i64
-      v64i64         =  78,   //  64 x i64
-      v128i64        =  79,   // 128 x i64
-      v256i64        =  80,   // 256 x i64
-
-      v1i128         =  81,   //  1 x i128
+      v9i32          =  63,   //    9 x i32
+      v10i32         =  64,   //   10 x i32
+      v11i32         =  65,   //   11 x i32
+      v12i32         =  66,   //   12 x i32
+      v16i32         =  67,   //   16 x i32
+      v32i32         =  68,   //   32 x i32
+      v64i32         =  69,   //   64 x i32
+      v128i32        =  70,   //  128 x i32
+      v256i32        =  71,   //  256 x i32
+      v512i32        =  72,   //  512 x i32
+      v1024i32       =  73,   // 1024 x i32
+      v2048i32       =  74,   // 2048 x i32
+
+      v1i64          =  75,   //   1 x i64
+      v2i64          =  76,   //   2 x i64
+      v3i64          =  77,   //   3 x i64
+      v4i64          =  78,   //   4 x i64
+      v8i64          =  79,   //   8 x i64
+      v16i64         =  80,   //  16 x i64
+      v32i64         =  81,   //  32 x i64
+      v64i64         =  82,   //  64 x i64
+      v128i64        =  83,   // 128 x i64
+      v256i64        =  84,   // 256 x i64
+
+      v1i128         =  85,   //  1 x i128
 
       FIRST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE = v1i1,
       LAST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE = v1i128,
 
-      v1f16          =  82,   //    1 x f16
-      v2f16          =  83,   //    2 x f16
-      v3f16          =  84,   //    3 x f16
-      v4f16          =  85,   //    4 x f16
-      v8f16          =  86,   //    8 x f16
-      v16f16         =  87,   //   16 x f16
-      v32f16         =  88,   //   32 x f16
-      v64f16         =  89,   //   64 x f16
-      v128f16        =  90,   //  128 x f16
-      v256f16        =  91,   //  256 x f16
-      v512f16        =  92,   //  512 x f16
-
-      v2bf16         =  93,   //    2 x bf16
-      v3bf16         =  94,   //    3 x bf16
-      v4bf16         =  95,   //    4 x bf16
-      v8bf16         =  96,   //    8 x bf16
-      v16bf16        =  97,   //   16 x bf16
-      v32bf16        =  98,   //   32 x bf16
-      v64bf16        =  99,   //   64 x bf16
-      v128bf16       = 100,   //  128 x bf16
-
-      v1f32          = 101,   //    1 x f32
-      v2f32          = 102,   //    2 x f32
-      v3f32          = 103,   //    3 x f32
-      v4f32          = 104,   //    4 x f32
-      v5f32          = 105,   //    5 x f32
-      v6f32          = 106,   //    6 x f32
-      v7f32          = 107,   //    7 x f32
-      v8f32          = 108,   //    8 x f32
-      v16f32         = 109,   //   16 x f32
-      v32f32         = 110,   //   32 x f32
-      v64f32         = 111,   //   64 x f32
-      v128f32        = 112,   //  128 x f32
-      v256f32        = 113,   //  256 x f32
-      v512f32        = 114,   //  512 x f32
-      v1024f32       = 115,   // 1024 x f32
-      v2048f32       = 116,   // 2048 x f32
-
-      v1f64          = 117,   //    1 x f64
-      v2f64          = 118,   //    2 x f64
-      v3f64          = 119,   //    3 x f64
-      v4f64          = 120,   //    4 x f64
-      v8f64          = 121,   //    8 x f64
-      v16f64         = 122,   //   16 x f64
-      v32f64         = 123,   //   32 x f64
-      v64f64         = 124,   //   64 x f64
-      v128f64        = 125,   //  128 x f64
-      v256f64        = 126,   //  256 x f64
+      v1f16          =  86,   //    1 x f16
+      v2f16          =  87,   //    2 x f16
+      v3f16          =  88,   //    3 x f16
+      v4f16          =  89,   //    4 x f16
+      v8f16          =  90,   //    8 x f16
+      v16f16         =  91,   //   16 x f16
+      v32f16         =  92,   //   32 x f16
+      v64f16         =  93,   //   64 x f16
+      v128f16        =  94,   //  128 x f16
+      v256f16        =  95,   //  256 x f16
+      v512f16        =  96,   //  512 x f16
+
+      v2bf16         =  97,   //    2 x bf16
+      v3bf16         =  98,   //    3 x bf16
+      v4bf16         =  99,   //    4 x bf16
+      v8bf16         = 100,   //    8 x bf16
+      v16bf16        = 101,   //   16 x bf16
+      v32bf16        = 102,   //   32 x bf16
+      v64bf16        = 103,   //   64 x bf16
+      v128bf16       = 104,   //  128 x bf16
+
+      v1f32          = 105,   //    1 x f32
+      v2f32          = 106,   //    2 x f32
+      v3f32          = 107,   //    3 x f32
+      v4f32          = 108,   //    4 x f32
+      v5f32          = 109,   //    5 x f32
+      v6f32          = 110,   //    6 x f32
+      v7f32          = 111,   //    7 x f32
+      v8f32          = 112,   //    8 x f32
+      v9f32          = 113,   //    9 x f32
+      v10f32         = 114,   //   10 x f32
+      v11f32         = 115,   //   11 x f32
+      v12f32         = 116,   //   12 x f32
+      v16f32         = 117,   //   16 x f32
+
+      v32f32         = 118,   //   32 x f32
+      v64f32         = 119,   //   64 x f32
+      v128f32        = 120,   //  128 x f32
+      v256f32        = 121,   //  256 x f32
+      v512f32        = 122,   //  512 x f32
+      v1024f32       = 123,   // 1024 x f32
+      v2048f32       = 124,   // 2048 x f32
+
+      v1f64          = 125,   //    1 x f64
+      v2f64          = 126,   //    2 x f64
+      v3f64          = 127,   //    3 x f64
+      v4f64          = 128,   //    4 x f64
+      v8f64          = 129,   //    8 x f64
+      v16f64         = 130,   //   16 x f64
+      v32f64         = 131,   //   32 x f64
+      v64f64         = 132,   //   64 x f64
+      v128f64        = 133,   //  128 x f64
+      v256f64        = 134,   //  256 x f64
 
       FIRST_FP_FIXEDLEN_VECTOR_VALUETYPE = v1f16,
       LAST_FP_FIXEDLEN_VECTOR_VALUETYPE = v256f64,
@@ -194,70 +203,70 @@ namespace llvm {
       FIRST_FIXEDLEN_VECTOR_VALUETYPE = v1i1,
       LAST_FIXEDLEN_VECTOR_VALUETYPE = v256f64,
 
-      nxv1i1         = 127,   // n x  1 x i1
-      nxv2i1         = 128,   // n x  2 x i1
-      nxv4i1         = 129,   // n x  4 x i1
-      nxv8i1         = 130,   // n x  8 x i1
-      nxv16i1        = 131,   // n x 16 x i1
-      nxv32i1        = 132,   // n x 32 x i1
-      nxv64i1        = 133,   // n x 64 x i1
-
-      nxv1i8         = 134,   // n x  1 x i8
-      nxv2i8         = 135,   // n x  2 x i8
-      nxv4i8         = 136,   // n x  4 x i8
-      nxv8i8         = 137,   // n x  8 x i8
-      nxv16i8        = 138,   // n x 16 x i8
-      nxv32i8        = 139,   // n x 32 x i8
-      nxv64i8        = 140,   // n x 64 x i8
-
-      nxv1i16        = 141,  // n x  1 x i16
-      nxv2i16        = 142,  // n x  2 x i16
-      nxv4i16        = 143,  // n x  4 x i16
-      nxv8i16        = 144,  // n x  8 x i16
-      nxv16i16       = 145,  // n x 16 x i16
-      nxv32i16       = 146,  // n x 32 x i16
-
-      nxv1i32        = 147,  // n x  1 x i32
-      nxv2i32        = 148,  // n x  2 x i32
-      nxv4i32        = 149,  // n x  4 x i32
-      nxv8i32        = 150,  // n x  8 x i32
-      nxv16i32       = 151,  // n x 16 x i32
-      nxv32i32       = 152,  // n x 32 x i32
-
-      nxv1i64        = 153,  // n x  1 x i64
-      nxv2i64        = 154,  // n x  2 x i64
-      nxv4i64        = 155,  // n x  4 x i64
-      nxv8i64        = 156,  // n x  8 x i64
-      nxv16i64       = 157,  // n x 16 x i64
-      nxv32i64       = 158,  // n x 32 x i64
+      nxv1i1         = 135,   // n x  1 x i1
+      nxv2i1         = 136,   // n x  2 x i1
+      nxv4i1         = 137,   // n x  4 x i1
+      nxv8i1         = 138,   // n x  8 x i1
+      nxv16i1        = 139,   // n x 16 x i1
+      nxv32i1        = 140,   // n x 32 x i1
+      nxv64i1        = 141,   // n x 64 x i1
+
+      nxv1i8         = 142,   // n x  1 x i8
+      nxv2i8         = 143,   // n x  2 x i8
+      nxv4i8         = 144,   // n x  4 x i8
+      nxv8i8         = 145,   // n x  8 x i8
+      nxv16i8        = 146,   // n x 16 x i8
+      nxv32i8        = 147,   // n x 32 x i8
+      nxv64i8        = 148,   // n x 64 x i8
+
+      nxv1i16        = 149,  // n x  1 x i16
+      nxv2i16        = 150,  // n x  2 x i16
+      nxv4i16        = 151,  // n x  4 x i16
+      nxv8i16        = 152,  // n x  8 x i16
+      nxv16i16       = 153,  // n x 16 x i16
+      nxv32i16       = 154,  // n x 32 x i16
+
+      nxv1i32        = 155,  // n x  1 x i32
+      nxv2i32        = 156,  // n x  2 x i32
+      nxv4i32        = 157,  // n x  4 x i32
+      nxv8i32        = 158,  // n x  8 x i32
+      nxv16i32       = 159,  // n x 16 x i32
+      nxv32i32       = 160,  // n x 32 x i32
+
+      nxv1i64        = 161,  // n x  1 x i64
+      nxv2i64        = 162,  // n x  2 x i64
+      nxv4i64        = 163,  // n x  4 x i64
+      nxv8i64        = 164,  // n x  8 x i64
+      nxv16i64       = 165,  // n x 16 x i64
+      nxv32i64       = 166,  // n x 32 x i64
 
       FIRST_INTEGER_SCALABLE_VECTOR_VALUETYPE = nxv1i1,
       LAST_INTEGER_SCALABLE_VECTOR_VALUETYPE = nxv32i64,
 
-      nxv1f16        = 159,  // n x  1 x f16
-      nxv2f16        = 160,  // n x  2 x f16
-      nxv4f16        = 161,  // n x  4 x f16
-      nxv8f16        = 162,  // n x  8 x f16
-      nxv16f16       = 163,  // n x 16 x f16
-      nxv32f16       = 164,  // n x 32 x f16
-
-      nxv1bf16       = 165,  // n x  1 x bf16
-      nxv2bf16       = 166,  // n x  2 x bf16
-      nxv4bf16       = 167,  // n x  4 x bf16
-      nxv8bf16       = 168,  // n x  8 x bf16
-      nxv16bf16      = 169,  // n x 16 x bf16
-      nxv32bf16      = 170,  // n x 32 x bf16
-
-      nxv1f32        = 171,  // n x  1 x f32
-      nxv2f32        = 172,  // n x  2 x f32
-      nxv4f32        = 173,  // n x  4 x f32
-      nxv8f32        = 174,  // n x  8 x f32
-      nxv16f32       = 175,  // n x 16 x f32
-
-      nxv1f64        = 176,  // n x  1 x f64
-      nxv2f64        = 177,  // n x  2 x f64
-      nxv4f64        = 178,  // n x  4 x f64
-      nxv8f64        = 179,  // n x  8 x f64
+      nxv1f16        = 167,  // n x  1 x f16
+      nxv2f16        = 168,  // n x  2 x f16
+      nxv4f16        = 169,  // n x  4 x f16
+      nxv8f16        = 170,  // n x  8 x f16
+      nxv16f16       = 171,  // n x 16 x f16
+      nxv32f16       = 172,  // n x 32 x f16
+
+      nxv1bf16       = 173,  // n x  1 x bf16
+      nxv2bf16       = 174,  // n x  2 x bf16
+      nxv4bf16       = 175,  // n x  4 x bf16
+      nxv8bf16       = 176,  // n x  8 x bf16
+      nxv16bf16      = 177,  // n x 16 x bf16
+      nxv32bf16      = 178,  // n x 32 x bf16
+
+      nxv1f32        = 179,  // n x  1 x f32
+      nxv2f32        = 180,  // n x  2 x f32
+      nxv4f32        = 181,  // n x  4 x f32
+      nxv8f32        = 182,  // n x  8 x f32
+      nxv16f32       = 183,  // n x 16 x f32
+
+      nxv1f64        = 184,  // n x  1 x f64
+      nxv2f64        = 185,  // n x  2 x f64
+      nxv4f64        = 186,  // n x  4 x f64
+      nxv8f64        = 187,  // n x  8 x f64
 
       FIRST_FP_SCALABLE_VECTOR_VALUETYPE = nxv1f16,
       LAST_FP_SCALABLE_VECTOR_VALUETYPE = nxv8f64,
@@ -268,20 +277,20 @@ namespace llvm {
       FIRST_VECTOR_VALUETYPE = v1i1,
       LAST_VECTOR_VALUETYPE  = nxv8f64,
 
-      x86mmx         = 180,    // This is an X86 MMX value
+      x86mmx         = 188,    // This is an X86 MMX value
 
-      Glue           = 181,    // This glues nodes together during pre-RA sched
+      Glue           = 189,    // This glues nodes together during pre-RA sched
 
-      isVoid         = 182,    // This has no value
+      isVoid         = 190,    // This has no value
 
-      Untyped        = 183,    // This value takes a register, but has
+      Untyped        = 191,    // This value takes a register, but has
                                // unspecified type.  The register class
                                // will be determined by the opcode.
 
-      funcref        = 184,    // WebAssembly's funcref type
-      externref      = 185,    // WebAssembly's externref type
-      x86amx         = 186,    // This is an X86 AMX value
-      i64x8          = 187,    // 8 Consecutive GPRs (AArch64)
+      funcref        = 192,    // WebAssembly's funcref type
+      externref      = 193,    // WebAssembly's externref type
+      x86amx         = 194,    // This is an X86 AMX value
+      i64x8          = 195,    // 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.
@@ -290,7 +299,7 @@ namespace llvm {
       // This is the current maximum for LAST_VALUETYPE.
       // MVT::MAX_ALLOWED_VALUETYPE is used for asserts and to size bit vectors
       // This value must be a multiple of 32.
-      MAX_ALLOWED_VALUETYPE = 192,
+      MAX_ALLOWED_VALUETYPE = 224,
 
       // A value of type llvm::TokenTy
       token          = 248,
@@ -601,6 +610,10 @@ namespace llvm {
       case v6i32:
       case v7i32:
       case v8i32:
+      case v9i32:
+      case v10i32:
+      case v11i32:
+      case v12i32:
       case v16i32:
       case v32i32:
       case v64i32:
@@ -671,6 +684,10 @@ namespace llvm {
       case v6f32:
       case v7f32:
       case v8f32:
+      case v9f32:
+      case v10f32:
+      case v11f32:
+      case v12f32:
       case v16f32:
       case v32f32:
       case v64f32:
@@ -785,6 +802,14 @@ namespace llvm {
       case nxv16f16:
       case nxv16bf16:
       case nxv16f32: return 16;
+      case v12i32:
+      case v12f32: return 12;
+      case v11i32:
+      case v11f32: return 11;
+      case v10i32:
+      case v10f32: return 10;
+      case v9i32:
+      case v9f32: return 9;
       case v8i1:
       case v8i8:
       case v8i16:
@@ -1027,6 +1052,14 @@ namespace llvm {
       case nxv16bf16:
       case nxv8f32:
       case nxv4f64: return TypeSize::Scalable(256);
+      case v9i32:
+      case v9f32: return TypeSize::Fixed(288);
+      case v10i32:
+      case v10f32: return TypeSize::Fixed(320);
+      case v11i32:
+      case v11f32: return TypeSize::Fixed(352);
+      case v12i32:
+      case v12f32: return TypeSize::Fixed(384);
       case i64x8:
       case v512i1:
       case v256i2:
@@ -1289,6 +1322,10 @@ namespace llvm {
         if (NumElements == 6)    return MVT::v6i32;
         if (NumElements == 7)    return MVT::v7i32;
         if (NumElements == 8)    return MVT::v8i32;
+        if (NumElements == 9)    return MVT::v9i32;
+        if (NumElements == 10)   return MVT::v10i32;
+        if (NumElements == 11)   return MVT::v11i32;
+        if (NumElements == 12)   return MVT::v12i32;
         if (NumElements == 16)   return MVT::v16i32;
         if (NumElements == 32)   return MVT::v32i32;
         if (NumElements == 64)   return MVT::v64i32;
@@ -1345,6 +1382,10 @@ namespace llvm {
         if (NumElements == 6)    return MVT::v6f32;
         if (NumElements == 7)    return MVT::v7f32;
         if (NumElements == 8)    return MVT::v8f32;
+        if (NumElements == 9)    return MVT::v9f32;
+        if (NumElements == 10)   return MVT::v10f32;
+        if (NumElements == 11)   return MVT::v11f32;
+        if (NumElements == 12)   return MVT::v12f32;
         if (NumElements == 16)   return MVT::v16f32;
         if (NumElements == 32)   return MVT::v32f32;
         if (NumElements == 64)   return MVT::v64f32;

diff  --git a/llvm/lib/CodeGen/ValueTypes.cpp b/llvm/lib/CodeGen/ValueTypes.cpp
index cea97a30828ef..608434800bc39 100644
--- a/llvm/lib/CodeGen/ValueTypes.cpp
+++ b/llvm/lib/CodeGen/ValueTypes.cpp
@@ -302,6 +302,14 @@ Type *EVT::getTypeForEVT(LLVMContext &Context) const {
     return FixedVectorType::get(Type::getInt32Ty(Context), 7);
   case MVT::v8i32:
     return FixedVectorType::get(Type::getInt32Ty(Context), 8);
+  case MVT::v9i32:
+    return FixedVectorType::get(Type::getInt32Ty(Context), 9);
+  case MVT::v10i32:
+    return FixedVectorType::get(Type::getInt32Ty(Context), 10);
+  case MVT::v11i32:
+    return FixedVectorType::get(Type::getInt32Ty(Context), 11);
+  case MVT::v12i32:
+    return FixedVectorType::get(Type::getInt32Ty(Context), 12);
   case MVT::v16i32:
     return FixedVectorType::get(Type::getInt32Ty(Context), 16);
   case MVT::v32i32:
@@ -394,6 +402,14 @@ Type *EVT::getTypeForEVT(LLVMContext &Context) const {
     return FixedVectorType::get(Type::getFloatTy(Context), 7);
   case MVT::v8f32:
     return FixedVectorType::get(Type::getFloatTy(Context), 8);
+  case MVT::v9f32:
+    return FixedVectorType::get(Type::getFloatTy(Context), 9);
+  case MVT::v10f32:
+    return FixedVectorType::get(Type::getFloatTy(Context), 10);
+  case MVT::v11f32:
+    return FixedVectorType::get(Type::getFloatTy(Context), 11);
+  case MVT::v12f32:
+    return FixedVectorType::get(Type::getFloatTy(Context), 12);
   case MVT::v16f32:
     return FixedVectorType::get(Type::getFloatTy(Context), 16);
   case MVT::v32f32:

diff  --git a/llvm/utils/TableGen/CodeGenTarget.cpp b/llvm/utils/TableGen/CodeGenTarget.cpp
index 79100151d1ba1..108bf4d33df4a 100644
--- a/llvm/utils/TableGen/CodeGenTarget.cpp
+++ b/llvm/utils/TableGen/CodeGenTarget.cpp
@@ -126,6 +126,10 @@ StringRef llvm::getEnumName(MVT::SimpleValueType T) {
   case MVT::v6i32:    return "MVT::v6i32";
   case MVT::v7i32:    return "MVT::v7i32";
   case MVT::v8i32:    return "MVT::v8i32";
+  case MVT::v9i32:    return "MVT::v9i32";
+  case MVT::v10i32:   return "MVT::v10i32";
+  case MVT::v11i32:   return "MVT::v11i32";
+  case MVT::v12i32:   return "MVT::v12i32";
   case MVT::v16i32:   return "MVT::v16i32";
   case MVT::v32i32:   return "MVT::v32i32";
   case MVT::v64i32:   return "MVT::v64i32";
@@ -172,6 +176,10 @@ StringRef llvm::getEnumName(MVT::SimpleValueType T) {
   case MVT::v6f32:    return "MVT::v6f32";
   case MVT::v7f32:    return "MVT::v7f32";
   case MVT::v8f32:    return "MVT::v8f32";
+  case MVT::v9f32:    return "MVT::v9f32";
+  case MVT::v10f32:   return "MVT::v10f32";
+  case MVT::v11f32:   return "MVT::v11f32";
+  case MVT::v12f32:   return "MVT::v12f32";
   case MVT::v16f32:   return "MVT::v16f32";
   case MVT::v32f32:   return "MVT::v32f32";
   case MVT::v64f32:   return "MVT::v64f32";


        


More information about the llvm-commits mailing list