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

Phoebe Wang via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 9 22:47:17 PST 2023


pengfei added inline comments.


================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:34125
+  case ISD::EXTRACT_VECTOR_ELT: {
+    // f16 = extract vxxf16 %vec, i64 %idx
+    MVT SplitVT = N->getSimpleValueType(0);
----------------
We usually use `vNf16`


================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:34126-34128
+    MVT SplitVT = N->getSimpleValueType(0);
+    assert(SplitVT == MVT::f16 &&
+           "Unexpected Value type of EXTRACT_VECTOR_ELT!");
----------------
Try to avoid defining variable used by assert only. Compiler may report used variable when do releast build.


================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:34131-34132
+    SDValue VecOp = N->getOperand(0);
+    MVT ExtVT =
+        MVT::getVectorVT(MVT::i16, VecOp.getValueType().getVectorNumElements());
+    SDValue Split = DAG.getBitcast(ExtVT, N->getOperand(0));
----------------
You can use `changeVectorElementTypeToInteger`.


================
Comment at: llvm/test/CodeGen/X86/avx512fp16-mov.ll:1352
 
+define half @extract_f16_8(<32 x half> %x, i64 %idx) {
+; X64-LABEL: extract_f16_8:
----------------
Add `nounwind`.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D141348



More information about the llvm-commits mailing list