From 87f9fa42d5b79eebb5771b3825142d44b3059f55 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Sun, 19 Feb 2017 21:44:35 +0000 Subject: [PATCH] [AVX-512] Remove AddedComplexity from masked operations. The size of the patterns already increases their priority. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295619 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86InstrAVX512.td | 48 +++++++++++--------------------- 1 file changed, 16 insertions(+), 32 deletions(-) diff --git a/lib/Target/X86/X86InstrAVX512.td b/lib/Target/X86/X86InstrAVX512.td index cdeefb572ec..3c62d16d42e 100644 --- a/lib/Target/X86/X86InstrAVX512.td +++ b/lib/Target/X86/X86InstrAVX512.td @@ -210,7 +210,7 @@ multiclass AVX512_maskable_custom O, Format F, Pattern, itin>; // Prefer over VMOV*rrk Pat<> - let AddedComplexity = 20, isCommutable = IsKCommutable in + let isCommutable = IsKCommutable in def NAME#k: AVX512 O, Format F, // Zero mask does not add any restrictions to commute operands transformation. // So, it is Ok to use IsCommutable instead of IsKCommutable. - let AddedComplexity = 30, isCommutable = IsCommutable in // Prefer over VMOV*rrkz Pat<> + let isCommutable = IsCommutable in // Prefer over VMOV*rrkz Pat<> def NAME#kz: AVX512 opc, string OpcodeStr, (SrcInfo.VT (scalar_to_vector (SrcInfo.ScalarLdFrag addr:$src))))), (!cast(NAME#DestInfo.ZSuffix#m) addr:$src)>; - let AddedComplexity = 20 in def : Pat<(DestInfo.VT (vselect DestInfo.KRCWM:$mask, (X86VBroadcast (SrcInfo.VT (scalar_to_vector @@ -891,7 +890,6 @@ multiclass avx512_broadcast_rm opc, string OpcodeStr, DestInfo.RC:$src0)), (!cast(NAME#DestInfo.ZSuffix#mk) DestInfo.RC:$src0, DestInfo.KRCWM:$mask, addr:$src)>; - let AddedComplexity = 30 in def : Pat<(DestInfo.VT (vselect DestInfo.KRCWM:$mask, (X86VBroadcast (SrcInfo.VT (scalar_to_vector @@ -2001,22 +1999,20 @@ multiclass avx512_scalar_fpclass opc, string OpcodeStr, SDNode OpNode, [(set _.KRC:$dst,(or _.KRCWM:$mask, (OpNode (_.VT _.RC:$src1), (i32 imm:$src2))))], NoItinerary>, EVEX_K; - let AddedComplexity = 20 in { - def rm : AVX512; - def rmk : AVX512, EVEX_K; - } + (i32 imm:$src2)))], NoItinerary>; + def rmk : AVX512, EVEX_K; } } @@ -4920,7 +4916,6 @@ multiclass avx512_var_shift_int_lowering(InstrStr#_.ZSuffix##rm) _.RC:$src1, addr:$src2)>; - let AddedComplexity = 20 in { def : Pat<(_.VT (vselect _.KRCWM:$mask, (X86vsrav _.RC:$src1, _.RC:$src2), _.RC:$src0)), (!cast(InstrStr#_.ZSuffix#rrk) _.RC:$src0, @@ -4930,8 +4925,6 @@ multiclass avx512_var_shift_int_lowering(InstrStr#_.ZSuffix##rmk) _.RC:$src0, _.KRC:$mask, _.RC:$src1, addr:$src2)>; - } - let AddedComplexity = 30 in { def : Pat<(_.VT (vselect _.KRCWM:$mask, (X86vsrav _.RC:$src1, _.RC:$src2), _.ImmAllZerosV)), (!cast(InstrStr#_.ZSuffix#rrkz) _.KRC:$mask, @@ -4941,7 +4934,6 @@ multiclass avx512_var_shift_int_lowering(InstrStr#_.ZSuffix##rmkz) _.KRC:$mask, _.RC:$src1, addr:$src2)>; - } } } @@ -4953,14 +4945,12 @@ multiclass avx512_var_shift_int_lowering_mb(InstrStr#_.ZSuffix##rmb) _.RC:$src1, addr:$src2)>; - let AddedComplexity = 20 in def : Pat<(_.VT (vselect _.KRCWM:$mask, (X86vsrav _.RC:$src1, (X86VBroadcast (_.ScalarLdFrag addr:$src2))), _.RC:$src0)), (!cast(InstrStr#_.ZSuffix##rmbk) _.RC:$src0, _.KRC:$mask, _.RC:$src1, addr:$src2)>; - let AddedComplexity = 30 in def : Pat<(_.VT (vselect _.KRCWM:$mask, (X86vsrav _.RC:$src1, (X86VBroadcast (_.ScalarLdFrag addr:$src2))), @@ -6824,7 +6814,7 @@ let Defs = [EFLAGS], Predicates = [HasAVX512] in { /// avx512_fp14_s rcp14ss, rcp14sd, rsqrt14ss, rsqrt14sd multiclass avx512_fp14_s opc, string OpcodeStr, SDNode OpNode, X86VectorVTInfo _> { - let AddedComplexity = 20 , Predicates = [HasAVX512] in { + let Predicates = [HasAVX512] in { defm rr : AVX512_maskable_scalar opc, string OpcodeStr, SDNode OpNode, }// Constraints = "$src1 = $dst" // Additional patterns for matching passthru operand in other positions. - let AddedComplexity = 20 in { def : Pat<(_.VT (vselect _.KRCWM:$mask, (OpNode _.RC:$src3, _.RC:$src2, _.RC:$src1, (i8 imm:$src4)), _.RC:$src1)), @@ -8968,7 +8957,6 @@ multiclass avx512_ternlog opc, string OpcodeStr, SDNode OpNode, _.RC:$src1)), (!cast(NAME#_.ZSuffix#rrik) _.RC:$src1, _.KRCWM:$mask, _.RC:$src2, _.RC:$src3, (VPTERNLOG213_imm8 imm:$src4))>; - } // Additional patterns for matching loads in other positions. def : Pat<(_.VT (OpNode (bitconvert (_.LdFrag addr:$src3)), @@ -8983,7 +8971,6 @@ multiclass avx512_ternlog opc, string OpcodeStr, SDNode OpNode, // Additional patterns for matching zero masking with loads in other // positions. - let AddedComplexity = 30 in { def : Pat<(_.VT (vselect _.KRCWM:$mask, (OpNode (bitconvert (_.LdFrag addr:$src3)), _.RC:$src2, _.RC:$src1, (i8 imm:$src4)), @@ -8996,18 +8983,15 @@ multiclass avx512_ternlog opc, string OpcodeStr, SDNode OpNode, _.ImmAllZerosV)), (!cast(NAME#_.ZSuffix#rmikz) _.RC:$src1, _.KRCWM:$mask, _.RC:$src2, addr:$src3, (VPTERNLOG132_imm8 imm:$src4))>; - } // Additional patterns for matching masked loads with different // operand orders. - let AddedComplexity = 20 in { def : Pat<(_.VT (vselect _.KRCWM:$mask, (OpNode _.RC:$src1, (bitconvert (_.LdFrag addr:$src3)), _.RC:$src2, (i8 imm:$src4)), _.RC:$src1)), (!cast(NAME#_.ZSuffix#rmik) _.RC:$src1, _.KRCWM:$mask, _.RC:$src2, addr:$src3, (VPTERNLOG132_imm8 imm:$src4))>; - } } multiclass avx512_common_ternlog{ -- 2.50.1