[PATCH] D141348: [X86][CodeGen]Fix extract f16 from big vectors

Wang, Xin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 9 21:29:05 PST 2023


XinWang10 updated this revision to Diff 487669.
XinWang10 edited the summary of this revision.
XinWang10 added a comment.

Updating D141348 <https://reviews.llvm.org/D141348>: [X86][CodeGen]Fix extract f16 from big vectors


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D141348

Files:
  llvm/lib/Target/X86/X86ISelLowering.cpp


Index: llvm/lib/Target/X86/X86ISelLowering.cpp
===================================================================
--- llvm/lib/Target/X86/X86ISelLowering.cpp
+++ llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -34113,7 +34113,7 @@
     Results.push_back(V);
     return;
   }
-  case ISD::BITREVERSE:{
+  case ISD::BITREVERSE: {
     assert(N->getValueType(0) == MVT::i64 && "Unexpected VT!");
     assert(Subtarget.hasXOP() && "Expected XOP");
     // We can use VPPERM by copying to a vector register and back. We'll need
@@ -34121,14 +34121,18 @@
     Results.push_back(LowerBITREVERSE(SDValue(N, 0), Subtarget, DAG));
     return;
   }
-  case ISD::EXTRACT_VECTOR_ELT:{
+  case ISD::EXTRACT_VECTOR_ELT: {
     // f16 = extract vxxf16 %vec, i64 %idx
     MVT SplitVT = N->getSimpleValueType(0);
-    assert(SplitVT == MVT::f16 && "Unexpected Value type of EXTRACT_VECTOR_ELT!");
-    SDValue VecOp = N->getOperand(0);
-    MVT ExtVT = MVT::getVectorVT(MVT::i16, VecOp.getValueType().getVectorNumElements());
+    assert(SplitVT == MVT::f16 &&
+           "Unexpected Value type of EXTRACT_VECTOR_ELT!");
+    assert(Subtarget.HasFP16() && "Expected FP16") SDValue VecOp =
+        N->getOperand(0);
+    MVT ExtVT =
+        MVT::getVectorVT(MVT::i16, VecOp.getValueType().getVectorNumElements());
     SDValue Split = DAG.getBitcast(ExtVT, N->getOperand(0));
-    Split = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, MVT::i16, Split, N->getOperand(1));
+    Split = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, MVT::i16, Split,
+                        N->getOperand(1));
     Split = DAG.getBitcast(MVT::f16, Split);
     Results.push_back(Split);
     return;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D141348.487669.patch
Type: text/x-patch
Size: 1654 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230110/fe549eba/attachment.bin>


More information about the llvm-commits mailing list