Previously we did this with isel patterns that used garbage in
the widened part of the source. But that's not valid for strictfp.
So now we custom widen and use zeroes for the widened elemens for
strictfp.
This replaces D71864.
Paths
| Differential D71879
[X86] Custom widen 128/256-bit vXi32 fp_to_uint on avx512f targets without avx512vl. Similar for vXi64 on avx512dq without avx512vl. ClosedPublic Authored by craig.topper on Dec 25 2019, 1:13 PM.
Details Summary Previously we did this with isel patterns that used garbage in This replaces D71864.
Diff Detail
Event Timelinecraig.topper added inline comments.
craig.topper added inline comments.
Comment Actions Do you have plan for uint_to _fp and signed i64? Otherwise, I can do it.
This revision is now accepted and ready to land.Dec 26 2019, 6:39 PM Closed by commit rGecbaf152f8fe: [X86] Custom widen 128/256-bit vXi32 fp_to_uint on avx512f targets without… (authored by craig.topper). · Explain WhyDec 26 2019, 10:34 PM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 235293 llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/lib/Target/X86/X86InstrAVX512.td
llvm/lib/Target/X86/X86TargetTransformInfo.cpp
llvm/test/CodeGen/X86/vec-strict-fptoint-128.ll
llvm/test/CodeGen/X86/vec-strict-fptoint-256.ll
|
This was needed because LegalizeVectorOps can send the Chain result in when its checking to see if our widened code needs to be legalized itself. So we have to make sure we get the VT from result 0 regardless of what's in Op.