[PATCH] D71879: [X86] Custom widen 128/256-bit vXi32 fp_to_uint on avx512f targets without avx512vl. Similar for vXi64 on avx512dq without avx512vl.
Pengfei Wang via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 25 17:11:17 PST 2019
pengfei added inline comments.
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:19811-19812
+ if (VT == MVT::v8i32 && SrcVT == MVT::v8f64) {
+ assert(!IsSigned && "Expected unsigned conversion!");
+ assert(Subtarget.useAVX512Regs() && "Requires avx512f");
+ return Op;
----------------
Why no signed, they are legal too.
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:19837-19839
+ } else {
+ Res = DAG.getNode(ISD::FP_TO_UINT, dl, ResVT, Src);
+ }
----------------
Remove curly braces.
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:19868-19870
+ } else {
+ Res = DAG.getNode(Op.getOpcode(), dl, MVT::v8i64, Src);
+ }
----------------
Remove curly braces.
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:19883
SDValue Tmp = DAG.getNode(ISD::CONCAT_VECTORS, dl, MVT::v4f32, Src,
DAG.getUNDEF(MVT::v2f32));
if (IsStrict) {
----------------
Need pad zero for strict.
================
Comment at: llvm/test/CodeGen/X86/vec-strict-fptoint-256.ll:1122
; AVX512DQ: # %bb.0:
; AVX512DQ-NEXT: vcvttps2dq %ymm0, %ymm0
; AVX512DQ-NEXT: vpmovdw %zmm0, %ymm0
----------------
There're tests for AVX512DQ that don't use zmm registers, I guess the actions for them are not correctly set.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D71879/new/
https://reviews.llvm.org/D71879
More information about the llvm-commits
mailing list