From: Simon Pilgrim Date: Tue, 19 Feb 2019 17:23:55 +0000 (+0000) Subject: [X86][AVX2] Hide VPBLENDD instructions behind AVX2 predicate X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3e38505d0613c6d284201665f018135a643b5f8d;p=llvm [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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354358 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86InstrSSE.td b/lib/Target/X86/X86InstrSSE.td index a55b1489e9e..c37f1227438 100644 --- a/lib/Target/X86/X86InstrSSE.td +++ b/lib/Target/X86/X86InstrSSE.td @@ -7753,12 +7753,14 @@ multiclass AVX2_blend_rmi opc, string OpcodeStr, SDNode OpNode, (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.