[llvm] r354358 - [X86][AVX2] Hide VPBLENDD instructions behind AVX2 predicate
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 19 09:23:55 PST 2019
Author: rksimon
Date: Tue Feb 19 09:23:55 2019
New Revision: 354358
URL: http://llvm.org/viewvc/llvm-project?rev=354358&view=rev
Log:
[X86][AVX2] Hide VPBLENDD instructions behind AVX2 predicate
This was the cause of the regression in D57888 - the commuted load pattern wasn't hidden by the predicate so once we enabled v4i32 blends on SSE41+ targets then isel was incorrectly matched against AVX2+ instructions.
Modified:
llvm/trunk/lib/Target/X86/X86InstrSSE.td
Modified: llvm/trunk/lib/Target/X86/X86InstrSSE.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrSSE.td?rev=354358&r1=354357&r2=354358&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrSSE.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrSSE.td Tue Feb 19 09:23:55 2019
@@ -7753,12 +7753,14 @@ multiclass AVX2_blend_rmi<bits<8> opc, s
(commuteXForm imm:$src3))>;
}
+let Predicates = [HasAVX2] in {
defm VPBLENDD : AVX2_blend_rmi<0x02, "vpblendd", X86Blendi, v4i32,
SchedWriteBlend.XMM, VR128, i128mem,
BlendCommuteImm4>;
defm VPBLENDDY : AVX2_blend_rmi<0x02, "vpblendd", X86Blendi, v8i32,
SchedWriteBlend.YMM, VR256, i256mem,
BlendCommuteImm8>, VEX_L;
+}
// For insertion into the zero index (low half) of a 256-bit vector, it is
// more efficient to generate a blend with immediate instead of an insert*128.
More information about the llvm-commits
mailing list