[PATCH] D32273: [X86][AVX512] Make i1 illegal in the CodeGen

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 20 16:18:59 PDT 2017


craig.topper added a comment.

I still need to look at this some more, but here a few comments.



================
Comment at: include/llvm/CodeGen/MachineValueType.h:58
 
-      v2i1           =  13,   //    2 x i1
-      v4i1           =  14,   //    4 x i1
-      v8i1           =  15,   //    8 x i1
-      v16i1          =  16,   //   16 x i1
-      v32i1          =  17,   //   32 x i1
-      v64i1          =  18,   //   64 x i1
-      v512i1         =  19,   //  512 x i1
-      v1024i1        =  20,   // 1024 x i1
-
-      v1i8           =  21,   //  1 x i8
-      v2i8           =  22,   //  2 x i8
-      v4i8           =  23,   //  4 x i8
-      v8i8           =  24,   //  8 x i8
-      v16i8          =  25,   // 16 x i8
-      v32i8          =  26,   // 32 x i8
-      v64i8          =  27,   // 64 x i8
-      v128i8         =  28,   //128 x i8
-      v256i8         =  29,   //256 x i8
-
-      v1i16          =  30,   //  1 x i16
-      v2i16          =  31,   //  2 x i16
-      v4i16          =  32,   //  4 x i16
-      v8i16          =  33,   //  8 x i16
-      v16i16         =  34,   // 16 x i16
-      v32i16         =  35,   // 32 x i16
-      v64i16         =  36,   // 64 x i16
-      v128i16        =  37,   //128 x i16
-
-      v1i32          =  38,   //  1 x i32
-      v2i32          =  39,   //  2 x i32
-      v4i32          =  40,   //  4 x i32
-      v8i32          =  41,   //  8 x i32
-      v16i32         =  42,   // 16 x i32
-      v32i32         =  43,   // 32 x i32
-      v64i32         =  44,   // 64 x i32
-
-      v1i64          =  45,   //  1 x i64
-      v2i64          =  46,   //  2 x i64
-      v4i64          =  47,   //  4 x i64
-      v8i64          =  48,   //  8 x i64
-      v16i64         =  49,   // 16 x i64
-      v32i64         =  50,   // 32 x i64
-
-      v1i128         =  51,   //  1 x i128
-
-      FIRST_INTEGER_VECTOR_VALUETYPE = v2i1,
+      v1i1           =  13,   //    2 x i1
+      v2i1           =  14,   //    2 x i1
----------------
This needs to be rebased on top of a commit that went in today that changed this for ScalableVector MVTs.


================
Comment at: include/llvm/CodeGen/MachineValueType.h:448
         llvm_unreachable("Value type is metadata.");
+      case v1i1:
       case i1  :  return 1;
----------------
Can you put the scalar type before the vector type? That would be more consistent with the other code.


================
Comment at: lib/Target/X86/X86InstrInfo.cpp:6318
       return Subtarget.hasBWI() ? X86::KMOVDrk : X86::KMOVWrk;
+    if (X86::GR16RegClass.contains(DestReg)) {
+      DestReg = getX86SubSuperRegister(DestReg, 32);
----------------
Why is this code coming back? We should use the right SUBREG operations in the output patterns so that we only do GR32/GR64 copies.


https://reviews.llvm.org/D32273





More information about the llvm-commits mailing list