[PATCH] D76212: [X86] Make v32i16/v64i8 legal types without avx512bw. Use custom splitting instead.

Simon Pilgrim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 13 10:46:30 PDT 2020


RKSimon added inline comments.
Herald added a reviewer: ctetreau.


================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:19833
 
-    In = DAG.getNode(ISD::CONCAT_VECTORS, SDLoc(Op),
-                     MVT::v16i8, In, DAG.getUNDEF(MVT::v8i8));
-    return DAG.getNode(ExtendInVecOpc, dl, VT, In);
+    return DAG.getNode(ISD::CONCAT_VECTORS, dl, VT, Lo, Hi);
   }
----------------
Maybe update LowerVectorIntUnary so we can use it here? We just need to relax the requirement that the src/dst vector element types are equal which doesn't seem to really necessary.


================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:20186
+      Hi = DAG.getNode(ISD::TRUNCATE, DL, MVT::v16i8, Hi);
+      return DAG.getNode(ISD::CONCAT_VECTORS, DL, VT, Lo, Hi);
+    }
----------------
LowerVectorIntUnary?


================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:21639
+                     DAG.getNode(Op.getOpcode(), dl, NewVT, LHS1, RHS1, CC),
+                     DAG.getNode(Op.getOpcode(), dl, NewVT, LHS2, RHS2, CC));
+}
----------------
Maybe pull out a common LowerVectorIntVSETCC and have Lower256IntVSETCC/Lower512IntVSETCC wrap it with value type assertions?


================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:22966
 
-    In = DAG.getNode(ISD::CONCAT_VECTORS, SDLoc(Op),
-                     MVT::v16i8, In, DAG.getUNDEF(MVT::v8i8));
-    return DAG.getNode(ISD::SIGN_EXTEND_VECTOR_INREG, dl, VT, In);
+    return DAG.getNode(ISD::CONCAT_VECTORS, dl, VT, Lo, Hi);
   }
----------------
LowerVectorIntUnary?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D76212/new/

https://reviews.llvm.org/D76212





More information about the llvm-commits mailing list