diff options
| author | Craig Topper <craig.topper@intel.com> | 2018-09-10 20:31:27 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2018-09-10 20:31:27 +0000 |
| commit | a5ae613c15a315ea7e575ea94e058cd6524a0aaf (patch) | |
| tree | 6bcf546f72b55d53ccfeb5a87451c269a288c443 | |
| parent | 8eeb16f5d1008a3d3fc89e88d92b3bcebc36bba2 (diff) | |
| download | bcm5719-llvm-a5ae613c15a315ea7e575ea94e058cd6524a0aaf.tar.gz bcm5719-llvm-a5ae613c15a315ea7e575ea94e058cd6524a0aaf.zip | |
[X86] Mark the ISD::SETLT/SETLE condition codes as illegal for v32i16/v64i8 to match the other vector types.
I'm having a hard time finding a test case for this, but we should be consistent here. The fact that we canonicalize all zeros and all ones constants to vXi32 and all other constants to loads makes this hard to hit the easy DAG combine infinite loop we get for some of the other types.
llvm-svn: 341859
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 6509ac4e9bf..ef74f49b6ae 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -1574,6 +1574,11 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM, setOperationPromotedToType(ISD::AND, VT, MVT::v8i64); setOperationPromotedToType(ISD::OR, VT, MVT::v8i64); setOperationPromotedToType(ISD::XOR, VT, MVT::v8i64); + + // The condition codes aren't legal in SSE/AVX and under AVX512 we use + // setcc all the way to isel and prefer SETGT in some isel patterns. + setCondCodeAction(ISD::SETLT, VT, Custom); + setCondCodeAction(ISD::SETLE, VT, Custom); } for (auto ExtType : {ISD::ZEXTLOAD, ISD::SEXTLOAD}) { |

