diff options
| author | Craig Topper <craig.topper@intel.com> | 2019-07-17 22:26:00 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2019-07-17 22:26:00 +0000 |
| commit | 61fff7a33731b12f22425132de68c06d7f4208fd (patch) | |
| tree | 1052da3efa4d3c0e0cc8346198f86a50d0e35f2d /llvm/lib/Target | |
| parent | 1375659e0f0209754bb1401b60e0c4a5b4c77067 (diff) | |
| download | bcm5719-llvm-61fff7a33731b12f22425132de68c06d7f4208fd.tar.gz bcm5719-llvm-61fff7a33731b12f22425132de68c06d7f4208fd.zip | |
[X86] Make sure we mark 128/256 MLOAD as Legal with VLX when min-legal-vector-width=256 is in effect.
This started triggering an assertion after r364718 when we made
these Custom under AVX2.
llvm-svn: 366382
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 59540211d54..15d4bde0167 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -1267,7 +1267,7 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM, for (auto VT : { MVT::v4i32, MVT::v8i32, MVT::v2i64, MVT::v4i64, MVT::v4f32, MVT::v8f32, MVT::v2f64, MVT::v4f64 }) { - setOperationAction(ISD::MLOAD, VT, Custom); + setOperationAction(ISD::MLOAD, VT, Subtarget.hasVLX() ? Legal : Custom); setOperationAction(ISD::MSTORE, VT, Legal); } @@ -1416,10 +1416,12 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM, // With 512-bit vectors and no VLX, we prefer to widen MLOAD/MSTORE // to 512-bit rather than use the AVX2 instructions so that we can use // k-masks. - for (auto VT : {MVT::v4i32, MVT::v8i32, MVT::v2i64, MVT::v4i64, - MVT::v4f32, MVT::v8f32, MVT::v2f64, MVT::v4f64}) { - setOperationAction(ISD::MLOAD, VT, Subtarget.hasVLX() ? Legal : Custom); - setOperationAction(ISD::MSTORE, VT, Subtarget.hasVLX() ? Legal : Custom); + if (!Subtarget.hasVLX()) { + for (auto VT : {MVT::v4i32, MVT::v8i32, MVT::v2i64, MVT::v4i64, + MVT::v4f32, MVT::v8f32, MVT::v2f64, MVT::v4f64}) { + setOperationAction(ISD::MLOAD, VT, Custom); + setOperationAction(ISD::MSTORE, VT, Custom); + } } setOperationAction(ISD::TRUNCATE, MVT::v8i32, Custom); |

