[PATCH] D36854: [AVX512] Don't use 32-bit elements version of AND/OR/XOR/ANDN during isel unless we're matching a masked op or broadcast
Craig Topper via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 17 17:28:42 PDT 2017
craig.topper created this revision.
Selecting 32-bit element logical ops without a select or broadcast requires matching a bitconvert on the inputs to the and. But that's a weird thing to rely on. It's entirely possible that one of the inputs doesn't have a bitcast and one does.
Since there's no functional difference, just remove the extra patterns and save some isel table size.
https://reviews.llvm.org/D36854
Files:
lib/Target/X86/X86InstrAVX512.td
Index: lib/Target/X86/X86InstrAVX512.td
===================================================================
--- lib/Target/X86/X86InstrAVX512.td
+++ lib/Target/X86/X86InstrAVX512.td
@@ -4862,6 +4862,7 @@
SDPatternOperator OpNode,
SDNode OpNodeMsk, X86VectorVTInfo _,
bit IsCommutable = 0> {
+ let hasSideEffects = 0 in
defm rr : AVX512_maskable_logic<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
@@ -4872,6 +4873,7 @@
IIC_SSE_BIT_P_RR, IsCommutable>,
AVX512BIBase, EVEX_4V;
+ let hasSideEffects = 0, mayLoad = 1 in
defm rm : AVX512_maskable_logic<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D36854.111590.patch
Type: text/x-patch
Size: 933 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170818/2a872c6c/attachment.bin>
More information about the llvm-commits
mailing list