brintos

brintos / llvm-project-archived public Read only

0
0
Text · 138.3 KiB · 0e0ad7e Raw
1357 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -costmodel-reduxcost=true -mtriple=x86_64-apple-darwin -mattr=+sse2 | FileCheck %s --check-prefixes=CHECK,SSE,SSE23; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -costmodel-reduxcost=true -mtriple=x86_64-apple-darwin -mattr=+ssse3 | FileCheck %s --check-prefixes=CHECK,SSE,SSSE34; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -costmodel-reduxcost=true -mtriple=x86_64-apple-darwin -mattr=+sse4.2 | FileCheck %s --check-prefixes=CHECK,SSE,SSE425; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -costmodel-reduxcost=true -mtriple=x86_64-apple-darwin -mattr=+avx | FileCheck %s --check-prefixes=CHECK,AVX,AVX16; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -costmodel-reduxcost=true -mtriple=x86_64-apple-darwin -mattr=+avx2 | FileCheck %s --check-prefixes=CHECK,AVX,AVX27 8; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -costmodel-reduxcost=true -mtriple=x86_64-apple-darwin -mcpu=slm | FileCheck %s --check-prefixes=SLM9 10; These are old tests for matching reduction costs from extract elements - something that has now been removed.11 12define fastcc float @reduction_cost_float(<4 x float> %rdx) {13; SSE2-LABEL: 'reduction_cost_float'14; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>15; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf16; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>17; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf718; SSE2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 019; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r20;21; SSSE3-LABEL: 'reduction_cost_float'22; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>23; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf24; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>25; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf726; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 027; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r28;29; SSE42-LABEL: 'reduction_cost_float'30; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>31; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf32; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>33; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf734; SSE42-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 035; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r36;37; AVX1-LABEL: 'reduction_cost_float'38; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>39; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf40; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>41; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf742; AVX1-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 043; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r44;45; AVX2-LABEL: 'reduction_cost_float'46; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>47; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf48; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>49; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf750; AVX2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 051; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r52;53; SLM-LABEL: 'reduction_cost_float'54; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>55; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf56; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>57; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf758; SLM-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 059; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r60;61  %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>62  %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf63  %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>64  %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf765 66  %r = extractelement <4 x float> %bin.rdx8, i32 067  ret float %r68}69 70define fastcc i32 @reduction_cost_int(<8 x i32> %rdx) {71; SSE-LABEL: 'reduction_cost_int'72; SSE-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>73; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx = add <8 x i32> %rdx, %rdx.shuf74; SSE-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>75; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx.2 = add <8 x i32> %bin.rdx, %rdx.shuf.276; SSE-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.3 = shufflevector <8 x i32> %bin.rdx.2, <8 x i32> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>77; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx.3 = add <8 x i32> %bin.rdx.2, %rdx.shuf.378; SSE-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i32> %bin.rdx.3, i32 079; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r80;81; AVX1-LABEL: 'reduction_cost_int'82; AVX1-NEXT:  Cost Model: Found costs of 4 for: %rdx.shuf = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>83; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:2 SizeLat:6 for: %bin.rdx = add <8 x i32> %rdx, %rdx.shuf84; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>85; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:2 SizeLat:6 for: %bin.rdx.2 = add <8 x i32> %bin.rdx, %rdx.shuf.286; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.3 = shufflevector <8 x i32> %bin.rdx.2, <8 x i32> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>87; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:2 SizeLat:6 for: %bin.rdx.3 = add <8 x i32> %bin.rdx.2, %rdx.shuf.388; AVX1-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i32> %bin.rdx.3, i32 089; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r90;91; AVX2-LABEL: 'reduction_cost_int'92; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>93; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %bin.rdx = add <8 x i32> %rdx, %rdx.shuf94; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>95; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %bin.rdx.2 = add <8 x i32> %bin.rdx, %rdx.shuf.296; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.3 = shufflevector <8 x i32> %bin.rdx.2, <8 x i32> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>97; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %bin.rdx.3 = add <8 x i32> %bin.rdx.2, %rdx.shuf.398; AVX2-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i32> %bin.rdx.3, i32 099; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r100;101; SLM-LABEL: 'reduction_cost_int'102; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>103; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx = add <8 x i32> %rdx, %rdx.shuf104; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>105; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx.2 = add <8 x i32> %bin.rdx, %rdx.shuf.2106; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.3 = shufflevector <8 x i32> %bin.rdx.2, <8 x i32> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>107; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx.3 = add <8 x i32> %bin.rdx.2, %rdx.shuf.3108; SLM-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i32> %bin.rdx.3, i32 0109; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r110;111  %rdx.shuf = shufflevector <8 x i32> %rdx, <8 x i32> undef,112  <8 x i32> <i32 4    , i32     5, i32     6, i32     7,113  i32 undef, i32 undef, i32 undef, i32 undef>114  %bin.rdx = add <8 x i32> %rdx, %rdx.shuf115  %rdx.shuf.2 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef,116  <8 x i32> <i32 2    , i32 3,     i32 undef, i32 undef,117  i32 undef, i32 undef, i32 undef, i32 undef>118  %bin.rdx.2 = add <8 x i32> %bin.rdx, %rdx.shuf.2119  %rdx.shuf.3 = shufflevector <8 x i32> %bin.rdx.2, <8 x i32> undef,120  <8 x i32> <i32 1    , i32 undef, i32 undef, i32 undef,121  i32 undef, i32 undef, i32 undef, i32 undef>122  %bin.rdx.3 = add <8 x i32> %bin.rdx.2, %rdx.shuf.3123 124  %r = extractelement <8 x i32> %bin.rdx.3, i32 0125  ret i32 %r126}127 128define fastcc float @pairwise_hadd(<4 x float> %rdx, float %f1) {129; SSE2-LABEL: 'pairwise_hadd'130; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>131; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>132; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1133; SSE2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>134; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>135; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1136; SSE2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0137; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %r2 = fadd float %r, %f1138; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2139;140; SSSE3-LABEL: 'pairwise_hadd'141; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>142; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>143; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1144; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>145; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>146; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1147; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0148; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %r2 = fadd float %r, %f1149; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2150;151; SSE42-LABEL: 'pairwise_hadd'152; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>153; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>154; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1155; SSE42-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>156; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>157; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1158; SSE42-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0159; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %r2 = fadd float %r, %f1160; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2161;162; AVX1-LABEL: 'pairwise_hadd'163; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>164; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>165; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1166; AVX1-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>167; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>168; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1169; AVX1-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0170; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %r2 = fadd float %r, %f1171; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2172;173; AVX2-LABEL: 'pairwise_hadd'174; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>175; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>176; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1177; AVX2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>178; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>179; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1180; AVX2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0181; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %r2 = fadd float %r, %f1182; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2183;184; SLM-LABEL: 'pairwise_hadd'185; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>186; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>187; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1188; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>189; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>190; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1191; SLM-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0192; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %r2 = fadd float %r, %f1193; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2194;195  %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef,196  <4 x i32> <i32 0, i32 2 , i32 undef, i32 undef>197  %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef,198  <4 x i32> <i32 1, i32 3, i32 undef, i32 undef>199  %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1200  %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef,201  <4 x i32> <i32 0, i32 undef, i32 undef, i32 undef>202  %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef,203  <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>204  %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1205 206  %r = extractelement <4 x float> %bin.rdx.1, i32 0207  %r2 = fadd float %r, %f1208  ret float %r2209}210 211define fastcc float @pairwise_hadd_assoc(<4 x float> %rdx, float %f1) {212; SSE2-LABEL: 'pairwise_hadd_assoc'213; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>214; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>215; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.1, %rdx.shuf.0.0216; SSE2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>217; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>218; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1219; SSE2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0220; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %r2 = fadd float %r, %f1221; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2222;223; SSSE3-LABEL: 'pairwise_hadd_assoc'224; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>225; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>226; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.1, %rdx.shuf.0.0227; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>228; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>229; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1230; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0231; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %r2 = fadd float %r, %f1232; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2233;234; SSE42-LABEL: 'pairwise_hadd_assoc'235; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>236; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>237; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.1, %rdx.shuf.0.0238; SSE42-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>239; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>240; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1241; SSE42-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0242; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %r2 = fadd float %r, %f1243; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2244;245; AVX1-LABEL: 'pairwise_hadd_assoc'246; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>247; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>248; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.1, %rdx.shuf.0.0249; AVX1-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>250; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>251; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1252; AVX1-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0253; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %r2 = fadd float %r, %f1254; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2255;256; AVX2-LABEL: 'pairwise_hadd_assoc'257; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>258; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>259; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.1, %rdx.shuf.0.0260; AVX2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>261; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>262; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1263; AVX2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0264; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %r2 = fadd float %r, %f1265; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2266;267; SLM-LABEL: 'pairwise_hadd_assoc'268; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>269; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>270; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.1, %rdx.shuf.0.0271; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>272; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>273; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1274; SLM-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0275; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %r2 = fadd float %r, %f1276; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2277;278  %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef,279  <4 x i32> <i32 0, i32 2 , i32 undef, i32 undef>280  %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef,281  <4 x i32> <i32 1, i32 3, i32 undef, i32 undef>282  %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.1, %rdx.shuf.0.0283  %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef,284  <4 x i32> <i32 0, i32 undef, i32 undef, i32 undef>285  %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef,286  <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>287  %bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1288 289  %r = extractelement <4 x float> %bin.rdx.1, i32 0290  %r2 = fadd float %r, %f1291  ret float %r2292}293 294define fastcc float @pairwise_hadd_skip_first(<4 x float> %rdx, float %f1) {295; SSE2-LABEL: 'pairwise_hadd_skip_first'296; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>297; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>298; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1299; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>300; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %bin.rdx.0, %rdx.shuf.1.1301; SSE2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0302; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %r2 = fadd float %r, %f1303; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2304;305; SSSE3-LABEL: 'pairwise_hadd_skip_first'306; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>307; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>308; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1309; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>310; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %bin.rdx.0, %rdx.shuf.1.1311; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0312; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %r2 = fadd float %r, %f1313; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2314;315; SSE42-LABEL: 'pairwise_hadd_skip_first'316; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>317; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>318; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1319; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>320; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %bin.rdx.0, %rdx.shuf.1.1321; SSE42-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0322; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %r2 = fadd float %r, %f1323; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2324;325; AVX1-LABEL: 'pairwise_hadd_skip_first'326; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>327; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>328; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1329; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>330; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %bin.rdx.0, %rdx.shuf.1.1331; AVX1-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0332; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %r2 = fadd float %r, %f1333; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2334;335; AVX2-LABEL: 'pairwise_hadd_skip_first'336; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>337; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>338; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1339; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>340; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %bin.rdx.0, %rdx.shuf.1.1341; AVX2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0342; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %r2 = fadd float %r, %f1343; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2344;345; SLM-LABEL: 'pairwise_hadd_skip_first'346; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>347; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>348; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1349; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>350; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx.1 = fadd <4 x float> %bin.rdx.0, %rdx.shuf.1.1351; SLM-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx.1, i32 0352; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %r2 = fadd float %r, %f1353; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r2354;355  %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef,356  <4 x i32> <i32 0, i32 2 , i32 undef, i32 undef>357  %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef,358  <4 x i32> <i32 1, i32 3, i32 undef, i32 undef>359  %bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1360  %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef,361  <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>362  %bin.rdx.1 = fadd <4 x float> %bin.rdx.0, %rdx.shuf.1.1363 364  %r = extractelement <4 x float> %bin.rdx.1, i32 0365  %r2 = fadd float %r, %f1366  ret float %r2367}368 369define fastcc double @no_pairwise_reduction2double(<2 x double> %rdx, double %f1) {370; SSE2-LABEL: 'no_pairwise_reduction2double'371; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 poison>372; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <2 x double> %rdx, %rdx.shuf373; SSE2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <2 x double> %bin.rdx, i32 0374; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r375;376; SSSE3-LABEL: 'no_pairwise_reduction2double'377; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 poison>378; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <2 x double> %rdx, %rdx.shuf379; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <2 x double> %bin.rdx, i32 0380; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r381;382; SSE42-LABEL: 'no_pairwise_reduction2double'383; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 poison>384; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <2 x double> %rdx, %rdx.shuf385; SSE42-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <2 x double> %bin.rdx, i32 0386; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r387;388; AVX1-LABEL: 'no_pairwise_reduction2double'389; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 poison>390; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx = fadd <2 x double> %rdx, %rdx.shuf391; AVX1-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <2 x double> %bin.rdx, i32 0392; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r393;394; AVX2-LABEL: 'no_pairwise_reduction2double'395; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 poison>396; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx = fadd <2 x double> %rdx, %rdx.shuf397; AVX2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <2 x double> %bin.rdx, i32 0398; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r399;400; SLM-LABEL: 'no_pairwise_reduction2double'401; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 poison>402; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx = fadd <2 x double> %rdx, %rdx.shuf403; SLM-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <2 x double> %bin.rdx, i32 0404; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r405;406  %rdx.shuf = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 undef>407  %bin.rdx = fadd <2 x double> %rdx, %rdx.shuf408 409  %r = extractelement <2 x double> %bin.rdx, i32 0410  ret double %r411}412 413define fastcc float @no_pairwise_reduction4float(<4 x float> %rdx, float %f1) {414; SSE2-LABEL: 'no_pairwise_reduction4float'415; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>416; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf417; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>418; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf7419; SSE2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 0420; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r421;422; SSSE3-LABEL: 'no_pairwise_reduction4float'423; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>424; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf425; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>426; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf7427; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 0428; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r429;430; SSE42-LABEL: 'no_pairwise_reduction4float'431; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>432; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf433; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>434; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf7435; SSE42-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 0436; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r437;438; AVX1-LABEL: 'no_pairwise_reduction4float'439; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>440; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf441; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>442; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf7443; AVX1-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 0444; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r445;446; AVX2-LABEL: 'no_pairwise_reduction4float'447; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>448; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf449; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>450; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf7451; AVX2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 0452; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r453;454; SLM-LABEL: 'no_pairwise_reduction4float'455; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>456; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf457; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>458; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf7459; SLM-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 0460; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r461;462  %rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>463  %bin.rdx = fadd <4 x float> %rdx, %rdx.shuf464  %rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>465  %bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf7466 467  %r = extractelement <4 x float> %bin.rdx8, i32 0468  ret float %r469}470 471define fastcc double @no_pairwise_reduction4double(<4 x double> %rdx, double %f1) {472; SSE2-LABEL: 'no_pairwise_reduction4double'473; SSE2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>474; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <4 x double> %rdx, %rdx.shuf475; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>476; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <4 x double> %bin.rdx, %rdx.shuf7477; SSE2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x double> %bin.rdx8, i32 0478; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r479;480; SSSE3-LABEL: 'no_pairwise_reduction4double'481; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>482; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <4 x double> %rdx, %rdx.shuf483; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>484; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <4 x double> %bin.rdx, %rdx.shuf7485; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x double> %bin.rdx8, i32 0486; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r487;488; SSE42-LABEL: 'no_pairwise_reduction4double'489; SSE42-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>490; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <4 x double> %rdx, %rdx.shuf491; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>492; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <4 x double> %bin.rdx, %rdx.shuf7493; SSE42-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x double> %bin.rdx8, i32 0494; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r495;496; AVX1-LABEL: 'no_pairwise_reduction4double'497; AVX1-NEXT:  Cost Model: Found costs of 2 for: %rdx.shuf = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>498; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:2 for: %bin.rdx = fadd <4 x double> %rdx, %rdx.shuf499; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>500; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:2 for: %bin.rdx8 = fadd <4 x double> %bin.rdx, %rdx.shuf7501; AVX1-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x double> %bin.rdx8, i32 0502; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r503;504; AVX2-LABEL: 'no_pairwise_reduction4double'505; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>506; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:2 for: %bin.rdx = fadd <4 x double> %rdx, %rdx.shuf507; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>508; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:2 for: %bin.rdx8 = fadd <4 x double> %bin.rdx, %rdx.shuf7509; AVX2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x double> %bin.rdx8, i32 0510; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r511;512; SLM-LABEL: 'no_pairwise_reduction4double'513; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>514; SLM-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:8 SizeLat:2 for: %bin.rdx = fadd <4 x double> %rdx, %rdx.shuf515; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>516; SLM-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:8 SizeLat:2 for: %bin.rdx8 = fadd <4 x double> %bin.rdx, %rdx.shuf7517; SLM-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x double> %bin.rdx8, i32 0518; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r519;520  %rdx.shuf = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>521  %bin.rdx = fadd <4 x double> %rdx, %rdx.shuf522  %rdx.shuf7 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>523  %bin.rdx8 = fadd <4 x double> %bin.rdx, %rdx.shuf7524 525  %r = extractelement <4 x double> %bin.rdx8, i32 0526  ret double %r527}528 529define fastcc float @no_pairwise_reduction8float(<8 x float> %rdx, float %f1) {530; SSE2-LABEL: 'no_pairwise_reduction8float'531; SSE2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf3 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>532; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx4 = fadd <8 x float> %rdx, %rdx.shuf3533; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x float> %bin.rdx4, <8 x float> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>534; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <8 x float> %bin.rdx4, %rdx.shuf535; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>536; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <8 x float> %bin.rdx, %rdx.shuf7537; SSE2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <8 x float> %bin.rdx8, i32 0538; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r539;540; SSSE3-LABEL: 'no_pairwise_reduction8float'541; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf3 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>542; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx4 = fadd <8 x float> %rdx, %rdx.shuf3543; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x float> %bin.rdx4, <8 x float> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>544; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <8 x float> %bin.rdx4, %rdx.shuf545; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>546; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <8 x float> %bin.rdx, %rdx.shuf7547; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <8 x float> %bin.rdx8, i32 0548; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r549;550; SSE42-LABEL: 'no_pairwise_reduction8float'551; SSE42-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf3 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>552; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx4 = fadd <8 x float> %rdx, %rdx.shuf3553; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x float> %bin.rdx4, <8 x float> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>554; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <8 x float> %bin.rdx4, %rdx.shuf555; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>556; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <8 x float> %bin.rdx, %rdx.shuf7557; SSE42-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <8 x float> %bin.rdx8, i32 0558; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r559;560; AVX1-LABEL: 'no_pairwise_reduction8float'561; AVX1-NEXT:  Cost Model: Found costs of 4 for: %rdx.shuf3 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>562; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:2 for: %bin.rdx4 = fadd <8 x float> %rdx, %rdx.shuf3563; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x float> %bin.rdx4, <8 x float> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>564; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:2 for: %bin.rdx = fadd <8 x float> %bin.rdx4, %rdx.shuf565; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>566; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:2 for: %bin.rdx8 = fadd <8 x float> %bin.rdx, %rdx.shuf7567; AVX1-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <8 x float> %bin.rdx8, i32 0568; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r569;570; AVX2-LABEL: 'no_pairwise_reduction8float'571; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf3 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>572; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:2 for: %bin.rdx4 = fadd <8 x float> %rdx, %rdx.shuf3573; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x float> %bin.rdx4, <8 x float> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>574; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:2 for: %bin.rdx = fadd <8 x float> %bin.rdx4, %rdx.shuf575; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>576; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:2 for: %bin.rdx8 = fadd <8 x float> %bin.rdx, %rdx.shuf7577; AVX2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <8 x float> %bin.rdx8, i32 0578; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r579;580; SLM-LABEL: 'no_pairwise_reduction8float'581; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf3 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>582; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx4 = fadd <8 x float> %rdx, %rdx.shuf3583; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x float> %bin.rdx4, <8 x float> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>584; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <8 x float> %bin.rdx4, %rdx.shuf585; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>586; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <8 x float> %bin.rdx, %rdx.shuf7587; SLM-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <8 x float> %bin.rdx8, i32 0588; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r589;590  %rdx.shuf3 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7,i32 undef, i32 undef, i32 undef, i32 undef>591  %bin.rdx4 = fadd <8 x float> %rdx, %rdx.shuf3592  %rdx.shuf = shufflevector <8 x float> %bin.rdx4, <8 x float> undef, <8 x i32> <i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>593  %bin.rdx = fadd <8 x float> %bin.rdx4, %rdx.shuf594  %rdx.shuf7 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>595  %bin.rdx8 = fadd <8 x float> %bin.rdx, %rdx.shuf7596 597  %r = extractelement <8 x float> %bin.rdx8, i32 0598  ret float %r599}600 601define fastcc i64 @no_pairwise_reduction2i64(<2 x i64> %rdx, i64 %f1) {602; SSE-LABEL: 'no_pairwise_reduction2i64'603; SSE-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <2 x i64> %rdx, <2 x i64> undef, <2 x i32> <i32 1, i32 poison>604; SSE-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:2 for: %bin.rdx = add <2 x i64> %rdx, %rdx.shuf605; SSE-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <2 x i64> %bin.rdx, i32 0606; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r607;608; AVX-LABEL: 'no_pairwise_reduction2i64'609; AVX-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <2 x i64> %rdx, <2 x i64> undef, <2 x i32> <i32 1, i32 poison>610; AVX-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <2 x i64> %rdx, %rdx.shuf611; AVX-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <2 x i64> %bin.rdx, i32 0612; AVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r613;614; SLM-LABEL: 'no_pairwise_reduction2i64'615; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <2 x i64> %rdx, <2 x i64> undef, <2 x i32> <i32 1, i32 poison>616; SLM-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:1 Lat:2 SizeLat:2 for: %bin.rdx = add <2 x i64> %rdx, %rdx.shuf617; SLM-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <2 x i64> %bin.rdx, i32 0618; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r619;620  %rdx.shuf = shufflevector <2 x i64> %rdx, <2 x i64> undef, <2 x i32> <i32 1, i32 undef>621  %bin.rdx = add <2 x i64> %rdx, %rdx.shuf622 623  %r = extractelement <2 x i64> %bin.rdx, i32 0624  ret i64 %r625}626 627define fastcc i32 @no_pairwise_reduction4i32(<4 x i32> %rdx, i32 %f1) {628; CHECK-LABEL: 'no_pairwise_reduction4i32'629; CHECK-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x i32> %rdx, <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>630; CHECK-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <4 x i32> %rdx, %rdx.shuf631; CHECK-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>632; CHECK-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <4 x i32> %bin.rdx, %rdx.shuf7633; CHECK-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <4 x i32> %bin.rdx8, i32 0634; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r635;636; SLM-LABEL: 'no_pairwise_reduction4i32'637; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x i32> %rdx, <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>638; SLM-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <4 x i32> %rdx, %rdx.shuf639; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>640; SLM-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <4 x i32> %bin.rdx, %rdx.shuf7641; SLM-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <4 x i32> %bin.rdx8, i32 0642; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r643;644  %rdx.shuf = shufflevector <4 x i32> %rdx, <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>645  %bin.rdx = add <4 x i32> %rdx, %rdx.shuf646  %rdx.shuf7 = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>647  %bin.rdx8 = add <4 x i32> %bin.rdx, %rdx.shuf7648 649  %r = extractelement <4 x i32> %bin.rdx8, i32 0650  ret i32 %r651}652 653define fastcc i64 @no_pairwise_reduction4i64(<4 x i64> %rdx, i64 %f1) {654; SSE-LABEL: 'no_pairwise_reduction4i64'655; SSE-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>656; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:4 for: %bin.rdx = add <4 x i64> %rdx, %rdx.shuf657; SSE-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>658; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:4 for: %bin.rdx8 = add <4 x i64> %bin.rdx, %rdx.shuf7659; SSE-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <4 x i64> %bin.rdx8, i32 0660; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r661;662; AVX1-LABEL: 'no_pairwise_reduction4i64'663; AVX1-NEXT:  Cost Model: Found costs of 2 for: %rdx.shuf = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>664; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:2 SizeLat:6 for: %bin.rdx = add <4 x i64> %rdx, %rdx.shuf665; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>666; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:2 SizeLat:6 for: %bin.rdx8 = add <4 x i64> %bin.rdx, %rdx.shuf7667; AVX1-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <4 x i64> %bin.rdx8, i32 0668; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r669;670; AVX2-LABEL: 'no_pairwise_reduction4i64'671; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>672; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %bin.rdx = add <4 x i64> %rdx, %rdx.shuf673; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>674; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %bin.rdx8 = add <4 x i64> %bin.rdx, %rdx.shuf7675; AVX2-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <4 x i64> %bin.rdx8, i32 0676; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r677;678; SLM-LABEL: 'no_pairwise_reduction4i64'679; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>680; SLM-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:2 Lat:4 SizeLat:4 for: %bin.rdx = add <4 x i64> %rdx, %rdx.shuf681; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>682; SLM-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:2 Lat:4 SizeLat:4 for: %bin.rdx8 = add <4 x i64> %bin.rdx, %rdx.shuf7683; SLM-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <4 x i64> %bin.rdx8, i32 0684; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r685;686  %rdx.shuf = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>687  %bin.rdx = add <4 x i64> %rdx, %rdx.shuf688  %rdx.shuf7 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>689  %bin.rdx8 = add <4 x i64> %bin.rdx, %rdx.shuf7690 691  %r = extractelement <4 x i64> %bin.rdx8, i32 0692  ret i64 %r693}694 695define fastcc i16 @no_pairwise_reduction8i16(<8 x i16> %rdx, i16 %f1) {696; SSE2-LABEL: 'no_pairwise_reduction8i16'697; SSE2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:5 SizeLat:5 for: %rdx.shuf3 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>698; SSE2-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx4 = add <8 x i16> %rdx, %rdx.shuf3699; SSE2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:5 SizeLat:5 for: %rdx.shuf = shufflevector <8 x i16> %bin.rdx4, <8 x i16> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>700; SSE2-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <8 x i16> %bin.rdx4, %rdx.shuf701; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>702; SSE2-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <8 x i16> %bin.rdx, %rdx.shuf7703; SSE2-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i16> %bin.rdx8, i32 0704; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r705;706; SSSE3-LABEL: 'no_pairwise_reduction8i16'707; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf3 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>708; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx4 = add <8 x i16> %rdx, %rdx.shuf3709; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x i16> %bin.rdx4, <8 x i16> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>710; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <8 x i16> %bin.rdx4, %rdx.shuf711; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>712; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <8 x i16> %bin.rdx, %rdx.shuf7713; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i16> %bin.rdx8, i32 0714; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r715;716; SSE42-LABEL: 'no_pairwise_reduction8i16'717; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf3 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>718; SSE42-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx4 = add <8 x i16> %rdx, %rdx.shuf3719; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x i16> %bin.rdx4, <8 x i16> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>720; SSE42-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <8 x i16> %bin.rdx4, %rdx.shuf721; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>722; SSE42-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <8 x i16> %bin.rdx, %rdx.shuf7723; SSE42-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i16> %bin.rdx8, i32 0724; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r725;726; AVX-LABEL: 'no_pairwise_reduction8i16'727; AVX-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf3 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>728; AVX-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx4 = add <8 x i16> %rdx, %rdx.shuf3729; AVX-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x i16> %bin.rdx4, <8 x i16> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>730; AVX-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <8 x i16> %bin.rdx4, %rdx.shuf731; AVX-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>732; AVX-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <8 x i16> %bin.rdx, %rdx.shuf7733; AVX-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i16> %bin.rdx8, i32 0734; AVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r735;736; SLM-LABEL: 'no_pairwise_reduction8i16'737; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf3 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>738; SLM-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx4 = add <8 x i16> %rdx, %rdx.shuf3739; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x i16> %bin.rdx4, <8 x i16> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>740; SLM-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <8 x i16> %bin.rdx4, %rdx.shuf741; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>742; SLM-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <8 x i16> %bin.rdx, %rdx.shuf7743; SLM-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i16> %bin.rdx8, i32 0744; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r745;746  %rdx.shuf3 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7,i32 undef, i32 undef, i32 undef, i32 undef>747  %bin.rdx4 = add <8 x i16> %rdx, %rdx.shuf3748  %rdx.shuf = shufflevector <8 x i16> %bin.rdx4, <8 x i16> undef, <8 x i32> <i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>749  %bin.rdx = add <8 x i16> %bin.rdx4, %rdx.shuf750  %rdx.shuf7 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>751  %bin.rdx8 = add <8 x i16> %bin.rdx, %rdx.shuf7752 753  %r = extractelement <8 x i16> %bin.rdx8, i32 0754  ret i16 %r755}756 757define fastcc i32 @no_pairwise_reduction8i32(<8 x i32> %rdx, i32 %f1) {758; SSE-LABEL: 'no_pairwise_reduction8i32'759; SSE-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf3 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>760; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx4 = add <8 x i32> %rdx, %rdx.shuf3761; SSE-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x i32> %bin.rdx4, <8 x i32> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>762; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx = add <8 x i32> %bin.rdx4, %rdx.shuf763; SSE-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>764; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx8 = add <8 x i32> %bin.rdx, %rdx.shuf7765; SSE-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i32> %bin.rdx8, i32 0766; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r767;768; AVX1-LABEL: 'no_pairwise_reduction8i32'769; AVX1-NEXT:  Cost Model: Found costs of 4 for: %rdx.shuf3 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>770; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:2 SizeLat:6 for: %bin.rdx4 = add <8 x i32> %rdx, %rdx.shuf3771; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x i32> %bin.rdx4, <8 x i32> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>772; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:2 SizeLat:6 for: %bin.rdx = add <8 x i32> %bin.rdx4, %rdx.shuf773; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>774; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:2 SizeLat:6 for: %bin.rdx8 = add <8 x i32> %bin.rdx, %rdx.shuf7775; AVX1-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i32> %bin.rdx8, i32 0776; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r777;778; AVX2-LABEL: 'no_pairwise_reduction8i32'779; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf3 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>780; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %bin.rdx4 = add <8 x i32> %rdx, %rdx.shuf3781; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x i32> %bin.rdx4, <8 x i32> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>782; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %bin.rdx = add <8 x i32> %bin.rdx4, %rdx.shuf783; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>784; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %bin.rdx8 = add <8 x i32> %bin.rdx, %rdx.shuf7785; AVX2-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i32> %bin.rdx8, i32 0786; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r787;788; SLM-LABEL: 'no_pairwise_reduction8i32'789; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf3 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>790; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx4 = add <8 x i32> %rdx, %rdx.shuf3791; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf = shufflevector <8 x i32> %bin.rdx4, <8 x i32> undef, <8 x i32> <i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>792; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx = add <8 x i32> %bin.rdx4, %rdx.shuf793; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf7 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>794; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx8 = add <8 x i32> %bin.rdx, %rdx.shuf7795; SLM-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i32> %bin.rdx8, i32 0796; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r797;798  %rdx.shuf3 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7,i32 undef, i32 undef, i32 undef, i32 undef>799  %bin.rdx4 = add <8 x i32> %rdx, %rdx.shuf3800  %rdx.shuf = shufflevector <8 x i32> %bin.rdx4, <8 x i32> undef, <8 x i32> <i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>801  %bin.rdx = add <8 x i32> %bin.rdx4, %rdx.shuf802  %rdx.shuf7 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>803  %bin.rdx8 = add <8 x i32> %bin.rdx, %rdx.shuf7804 805  %r = extractelement <8 x i32> %bin.rdx8, i32 0806  ret i32 %r807}808 809define fastcc double @pairwise_reduction2double(<2 x double> %rdx, double %f1) {810; SSE2-LABEL: 'pairwise_reduction2double'811; SSE2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 0, i32 poison>812; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 poison>813; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <2 x double> %rdx.shuf.1.0, %rdx.shuf.1.1814; SSE2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <2 x double> %bin.rdx8, i32 0815; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r816;817; SSSE3-LABEL: 'pairwise_reduction2double'818; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 0, i32 poison>819; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 poison>820; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <2 x double> %rdx.shuf.1.0, %rdx.shuf.1.1821; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <2 x double> %bin.rdx8, i32 0822; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r823;824; SSE42-LABEL: 'pairwise_reduction2double'825; SSE42-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 0, i32 poison>826; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 poison>827; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <2 x double> %rdx.shuf.1.0, %rdx.shuf.1.1828; SSE42-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <2 x double> %bin.rdx8, i32 0829; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r830;831; AVX1-LABEL: 'pairwise_reduction2double'832; AVX1-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 0, i32 poison>833; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 poison>834; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx8 = fadd <2 x double> %rdx.shuf.1.0, %rdx.shuf.1.1835; AVX1-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <2 x double> %bin.rdx8, i32 0836; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r837;838; AVX2-LABEL: 'pairwise_reduction2double'839; AVX2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 0, i32 poison>840; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 poison>841; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx8 = fadd <2 x double> %rdx.shuf.1.0, %rdx.shuf.1.1842; AVX2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <2 x double> %bin.rdx8, i32 0843; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r844;845; SLM-LABEL: 'pairwise_reduction2double'846; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 0, i32 poison>847; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 poison>848; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx8 = fadd <2 x double> %rdx.shuf.1.0, %rdx.shuf.1.1849; SLM-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <2 x double> %bin.rdx8, i32 0850; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r851;852  %rdx.shuf.1.0 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 0, i32 undef>853  %rdx.shuf.1.1 = shufflevector <2 x double> %rdx, <2 x double> undef, <2 x i32> <i32 1, i32 undef>854  %bin.rdx8 = fadd <2 x double> %rdx.shuf.1.0, %rdx.shuf.1.1855 856  %r = extractelement <2 x double> %bin.rdx8, i32 0857  ret double %r858}859 860define fastcc float @pairwise_reduction4float(<4 x float> %rdx, float %f1) {861; SSE2-LABEL: 'pairwise_reduction4float'862; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>863; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>864; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1865; SSE2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>866; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>867; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1868; SSE2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 0869; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r870;871; SSSE3-LABEL: 'pairwise_reduction4float'872; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>873; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>874; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1875; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>876; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>877; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1878; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 0879; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r880;881; SSE42-LABEL: 'pairwise_reduction4float'882; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>883; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>884; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1885; SSE42-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>886; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>887; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1888; SSE42-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 0889; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r890;891; AVX1-LABEL: 'pairwise_reduction4float'892; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>893; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>894; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1895; AVX1-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>896; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>897; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1898; AVX1-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 0899; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r900;901; AVX2-LABEL: 'pairwise_reduction4float'902; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>903; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>904; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1905; AVX2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>906; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>907; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1908; AVX2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 0909; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r910;911; SLM-LABEL: 'pairwise_reduction4float'912; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>913; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>914; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1915; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>916; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>917; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %bin.rdx8 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1918; SLM-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x float> %bin.rdx8, i32 0919; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r920;921  %rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 undef, i32 undef>922  %rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 undef, i32 undef>923  %bin.rdx = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1924  %rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 0, i32 undef, i32 undef, i32 undef>925  %rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx, <4 x float> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>926  %bin.rdx8 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1927 928  %r = extractelement <4 x float> %bin.rdx8, i32 0929  ret float %r930}931 932define fastcc double @pairwise_reduction4double(<4 x double> %rdx, double %f1) {933; SSE2-LABEL: 'pairwise_reduction4double'934; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>935; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>936; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <4 x double> %rdx.shuf.0.0, %rdx.shuf.0.1937; SSE2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>938; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>939; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <4 x double> %rdx.shuf.1.0, %rdx.shuf.1.1940; SSE2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x double> %bin.rdx8, i32 0941; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r942;943; SSSE3-LABEL: 'pairwise_reduction4double'944; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>945; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>946; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <4 x double> %rdx.shuf.0.0, %rdx.shuf.0.1947; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>948; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>949; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <4 x double> %rdx.shuf.1.0, %rdx.shuf.1.1950; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x double> %bin.rdx8, i32 0951; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r952;953; SSE42-LABEL: 'pairwise_reduction4double'954; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>955; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>956; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <4 x double> %rdx.shuf.0.0, %rdx.shuf.0.1957; SSE42-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>958; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>959; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <4 x double> %rdx.shuf.1.0, %rdx.shuf.1.1960; SSE42-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x double> %bin.rdx8, i32 0961; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r962;963; AVX1-LABEL: 'pairwise_reduction4double'964; AVX1-NEXT:  Cost Model: Found costs of 2 for: %rdx.shuf.0.0 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>965; AVX1-NEXT:  Cost Model: Found costs of 2 for: %rdx.shuf.0.1 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>966; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:2 for: %bin.rdx = fadd <4 x double> %rdx.shuf.0.0, %rdx.shuf.0.1967; AVX1-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>968; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>969; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:2 for: %bin.rdx8 = fadd <4 x double> %rdx.shuf.1.0, %rdx.shuf.1.1970; AVX1-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x double> %bin.rdx8, i32 0971; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r972;973; AVX2-LABEL: 'pairwise_reduction4double'974; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>975; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>976; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:2 for: %bin.rdx = fadd <4 x double> %rdx.shuf.0.0, %rdx.shuf.0.1977; AVX2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>978; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>979; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:2 for: %bin.rdx8 = fadd <4 x double> %rdx.shuf.1.0, %rdx.shuf.1.1980; AVX2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x double> %bin.rdx8, i32 0981; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r982;983; SLM-LABEL: 'pairwise_reduction4double'984; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>985; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>986; SLM-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:8 SizeLat:2 for: %bin.rdx = fadd <4 x double> %rdx.shuf.0.0, %rdx.shuf.0.1987; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>988; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>989; SLM-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:8 SizeLat:2 for: %bin.rdx8 = fadd <4 x double> %rdx.shuf.1.0, %rdx.shuf.1.1990; SLM-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <4 x double> %bin.rdx8, i32 0991; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret double %r992;993  %rdx.shuf.0.0 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 0, i32 2, i32 undef, i32 undef>994  %rdx.shuf.0.1 = shufflevector <4 x double> %rdx, <4 x double> undef, <4 x i32> <i32 1, i32 3, i32 undef, i32 undef>995  %bin.rdx = fadd <4 x double> %rdx.shuf.0.0, %rdx.shuf.0.1996  %rdx.shuf.1.0 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 0, i32 undef, i32 undef, i32 undef>997  %rdx.shuf.1.1 = shufflevector <4 x double> %bin.rdx, <4 x double> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>998  %bin.rdx8 = fadd <4 x double> %rdx.shuf.1.0, %rdx.shuf.1.1999 1000  %r = extractelement <4 x double> %bin.rdx8, i32 01001  ret double %r1002}1003 1004define fastcc float @pairwise_reduction8float(<8 x float> %rdx, float %f1) {1005; SSE2-LABEL: 'pairwise_reduction8float'1006; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1007; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1008; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <8 x float> %rdx.shuf.0.0, %rdx.shuf.0.11009; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1010; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1011; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <8 x float> %rdx.shuf.1.0, %rdx.shuf.1.11012; SSE2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1013; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1014; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx9 = fadd <8 x float> %rdx.shuf.2.0, %rdx.shuf.2.11015; SSE2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <8 x float> %bin.rdx9, i32 01016; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r1017;1018; SSSE3-LABEL: 'pairwise_reduction8float'1019; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1020; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1021; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <8 x float> %rdx.shuf.0.0, %rdx.shuf.0.11022; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1023; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1024; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <8 x float> %rdx.shuf.1.0, %rdx.shuf.1.11025; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1026; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1027; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx9 = fadd <8 x float> %rdx.shuf.2.0, %rdx.shuf.2.11028; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <8 x float> %bin.rdx9, i32 01029; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r1030;1031; SSE42-LABEL: 'pairwise_reduction8float'1032; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1033; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1034; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <8 x float> %rdx.shuf.0.0, %rdx.shuf.0.11035; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1036; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1037; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <8 x float> %rdx.shuf.1.0, %rdx.shuf.1.11038; SSE42-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1039; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1040; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx9 = fadd <8 x float> %rdx.shuf.2.0, %rdx.shuf.2.11041; SSE42-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <8 x float> %bin.rdx9, i32 01042; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r1043;1044; AVX1-LABEL: 'pairwise_reduction8float'1045; AVX1-NEXT:  Cost Model: Found costs of 4 for: %rdx.shuf.0.0 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1046; AVX1-NEXT:  Cost Model: Found costs of 4 for: %rdx.shuf.0.1 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1047; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:2 for: %bin.rdx = fadd <8 x float> %rdx.shuf.0.0, %rdx.shuf.0.11048; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1049; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1050; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:2 for: %bin.rdx8 = fadd <8 x float> %rdx.shuf.1.0, %rdx.shuf.1.11051; AVX1-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1052; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1053; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:2 for: %bin.rdx9 = fadd <8 x float> %rdx.shuf.2.0, %rdx.shuf.2.11054; AVX1-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <8 x float> %bin.rdx9, i32 01055; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r1056;1057; AVX2-LABEL: 'pairwise_reduction8float'1058; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1059; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1060; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:2 for: %bin.rdx = fadd <8 x float> %rdx.shuf.0.0, %rdx.shuf.0.11061; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1062; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1063; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:2 for: %bin.rdx8 = fadd <8 x float> %rdx.shuf.1.0, %rdx.shuf.1.11064; AVX2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1065; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1066; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:2 for: %bin.rdx9 = fadd <8 x float> %rdx.shuf.2.0, %rdx.shuf.2.11067; AVX2-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <8 x float> %bin.rdx9, i32 01068; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r1069;1070; SLM-LABEL: 'pairwise_reduction8float'1071; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1072; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1073; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx = fadd <8 x float> %rdx.shuf.0.0, %rdx.shuf.0.11074; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1075; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x float> %bin.rdx, <8 x float> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1076; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx8 = fadd <8 x float> %rdx.shuf.1.0, %rdx.shuf.1.11077; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1078; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1079; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %bin.rdx9 = fadd <8 x float> %rdx.shuf.2.0, %rdx.shuf.2.11080; SLM-NEXT:  Cost Model: Found costs of 0 for: %r = extractelement <8 x float> %bin.rdx9, i32 01081; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r1082;1083  %rdx.shuf.0.0 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6,i32 undef, i32 undef, i32 undef, i32 undef>1084  %rdx.shuf.0.1 = shufflevector <8 x float> %rdx, <8 x float> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7,i32 undef, i32 undef, i32 undef, i32 undef>1085  %bin.rdx = fadd <8 x float> %rdx.shuf.0.0, %rdx.shuf.0.11086  %rdx.shuf.1.0 = shufflevector <8 x float> %bin.rdx, <8 x float> undef,<8 x i32> <i32 0, i32 2, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1087  %rdx.shuf.1.1 = shufflevector <8 x float> %bin.rdx, <8 x float> undef,<8 x i32> <i32 1, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1088  %bin.rdx8 = fadd <8 x float> %rdx.shuf.1.0, %rdx.shuf.1.11089  %rdx.shuf.2.0 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef,<8 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1090  %rdx.shuf.2.1 = shufflevector <8 x float> %bin.rdx8, <8 x float> undef,<8 x i32> <i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1091  %bin.rdx9 = fadd <8 x float> %rdx.shuf.2.0, %rdx.shuf.2.11092 1093  %r = extractelement <8 x float> %bin.rdx9, i32 01094  ret float %r1095}1096 1097define fastcc i64 @pairwise_reduction2i64(<2 x i64> %rdx, i64 %f1) {1098; SSE-LABEL: 'pairwise_reduction2i64'1099; SSE-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <2 x i64> %rdx, <2 x i64> undef, <2 x i32> <i32 0, i32 poison>1100; SSE-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <2 x i64> %rdx, <2 x i64> undef, <2 x i32> <i32 1, i32 poison>1101; SSE-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:2 for: %bin.rdx8 = add <2 x i64> %rdx.shuf.1.0, %rdx.shuf.1.11102; SSE-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <2 x i64> %bin.rdx8, i32 01103; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r1104;1105; AVX-LABEL: 'pairwise_reduction2i64'1106; AVX-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <2 x i64> %rdx, <2 x i64> undef, <2 x i32> <i32 0, i32 poison>1107; AVX-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <2 x i64> %rdx, <2 x i64> undef, <2 x i32> <i32 1, i32 poison>1108; AVX-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <2 x i64> %rdx.shuf.1.0, %rdx.shuf.1.11109; AVX-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <2 x i64> %bin.rdx8, i32 01110; AVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r1111;1112; SLM-LABEL: 'pairwise_reduction2i64'1113; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <2 x i64> %rdx, <2 x i64> undef, <2 x i32> <i32 0, i32 poison>1114; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <2 x i64> %rdx, <2 x i64> undef, <2 x i32> <i32 1, i32 poison>1115; SLM-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:1 Lat:2 SizeLat:2 for: %bin.rdx8 = add <2 x i64> %rdx.shuf.1.0, %rdx.shuf.1.11116; SLM-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <2 x i64> %bin.rdx8, i32 01117; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r1118;1119  %rdx.shuf.1.0 = shufflevector <2 x i64> %rdx, <2 x i64> undef, <2 x i32> <i32 0, i32 undef>1120  %rdx.shuf.1.1 = shufflevector <2 x i64> %rdx, <2 x i64> undef, <2 x i32> <i32 1, i32 undef>1121  %bin.rdx8 = add <2 x i64> %rdx.shuf.1.0, %rdx.shuf.1.11122 1123  %r = extractelement <2 x i64> %bin.rdx8, i32 01124  ret i64 %r1125}1126 1127define fastcc i32 @pairwise_reduction4i32(<4 x i32> %rdx, i32 %f1) {1128; CHECK-LABEL: 'pairwise_reduction4i32'1129; CHECK-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x i32> %rdx, <4 x i32> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>1130; CHECK-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x i32> %rdx, <4 x i32> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>1131; CHECK-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <4 x i32> %rdx.shuf.0.0, %rdx.shuf.0.11132; CHECK-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>1133; CHECK-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>1134; CHECK-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <4 x i32> %rdx.shuf.1.0, %rdx.shuf.1.11135; CHECK-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <4 x i32> %bin.rdx8, i32 01136; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r1137;1138; SLM-LABEL: 'pairwise_reduction4i32'1139; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x i32> %rdx, <4 x i32> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>1140; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x i32> %rdx, <4 x i32> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>1141; SLM-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <4 x i32> %rdx.shuf.0.0, %rdx.shuf.0.11142; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>1143; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>1144; SLM-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <4 x i32> %rdx.shuf.1.0, %rdx.shuf.1.11145; SLM-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <4 x i32> %bin.rdx8, i32 01146; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r1147;1148  %rdx.shuf.0.0 = shufflevector <4 x i32> %rdx, <4 x i32> undef, <4 x i32> <i32 0, i32 2, i32 undef, i32 undef>1149  %rdx.shuf.0.1 = shufflevector <4 x i32> %rdx, <4 x i32> undef, <4 x i32> <i32 1, i32 3, i32 undef, i32 undef>1150  %bin.rdx = add <4 x i32> %rdx.shuf.0.0, %rdx.shuf.0.11151  %rdx.shuf.1.0 = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 0, i32 undef, i32 undef, i32 undef>1152  %rdx.shuf.1.1 = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>1153  %bin.rdx8 = add <4 x i32> %rdx.shuf.1.0, %rdx.shuf.1.11154 1155  %r = extractelement <4 x i32> %bin.rdx8, i32 01156  ret i32 %r1157}1158 1159define fastcc i64 @pairwise_reduction4i64(<4 x i64> %rdx, i64 %f1) {1160; SSE-LABEL: 'pairwise_reduction4i64'1161; SSE-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>1162; SSE-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>1163; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:4 for: %bin.rdx = add <4 x i64> %rdx.shuf.0.0, %rdx.shuf.0.11164; SSE-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>1165; SSE-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>1166; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:4 for: %bin.rdx8 = add <4 x i64> %rdx.shuf.1.0, %rdx.shuf.1.11167; SSE-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <4 x i64> %bin.rdx8, i32 01168; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r1169;1170; AVX1-LABEL: 'pairwise_reduction4i64'1171; AVX1-NEXT:  Cost Model: Found costs of 2 for: %rdx.shuf.0.0 = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>1172; AVX1-NEXT:  Cost Model: Found costs of 2 for: %rdx.shuf.0.1 = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>1173; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:2 SizeLat:6 for: %bin.rdx = add <4 x i64> %rdx.shuf.0.0, %rdx.shuf.0.11174; AVX1-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>1175; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>1176; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:2 SizeLat:6 for: %bin.rdx8 = add <4 x i64> %rdx.shuf.1.0, %rdx.shuf.1.11177; AVX1-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <4 x i64> %bin.rdx8, i32 01178; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r1179;1180; AVX2-LABEL: 'pairwise_reduction4i64'1181; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>1182; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>1183; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %bin.rdx = add <4 x i64> %rdx.shuf.0.0, %rdx.shuf.0.11184; AVX2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>1185; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>1186; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %bin.rdx8 = add <4 x i64> %rdx.shuf.1.0, %rdx.shuf.1.11187; AVX2-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <4 x i64> %bin.rdx8, i32 01188; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r1189;1190; SLM-LABEL: 'pairwise_reduction4i64'1191; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 0, i32 2, i32 poison, i32 poison>1192; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 poison, i32 poison>1193; SLM-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:2 Lat:4 SizeLat:4 for: %bin.rdx = add <4 x i64> %rdx.shuf.0.0, %rdx.shuf.0.11194; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.1.0 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>1195; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>1196; SLM-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:2 Lat:4 SizeLat:4 for: %bin.rdx8 = add <4 x i64> %rdx.shuf.1.0, %rdx.shuf.1.11197; SLM-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <4 x i64> %bin.rdx8, i32 01198; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %r1199;1200  %rdx.shuf.0.0 = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 0, i32 2, i32 undef, i32 undef>1201  %rdx.shuf.0.1 = shufflevector <4 x i64> %rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 undef, i32 undef>1202  %bin.rdx = add <4 x i64> %rdx.shuf.0.0, %rdx.shuf.0.11203  %rdx.shuf.1.0 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 0, i32 undef, i32 undef, i32 undef>1204  %rdx.shuf.1.1 = shufflevector <4 x i64> %bin.rdx, <4 x i64> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>1205  %bin.rdx8 = add <4 x i64> %rdx.shuf.1.0, %rdx.shuf.1.11206 1207  %r = extractelement <4 x i64> %bin.rdx8, i32 01208  ret i64 %r1209}1210 1211define fastcc i16 @pairwise_reduction8i16(<8 x i16> %rdx, i16 %f1) {1212; SSE2-LABEL: 'pairwise_reduction8i16'1213; SSE2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:5 SizeLat:5 for: %rdx.shuf.0.0 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1214; SSE2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:5 SizeLat:5 for: %rdx.shuf.0.1 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1215; SSE2-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <8 x i16> %rdx.shuf.0.0, %rdx.shuf.0.11216; SSE2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:5 SizeLat:5 for: %rdx.shuf.1.0 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1217; SSE2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:5 SizeLat:5 for: %rdx.shuf.1.1 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1218; SSE2-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <8 x i16> %rdx.shuf.1.0, %rdx.shuf.1.11219; SSE2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x i16> %bin.rdx8, <8 x i16> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1220; SSE2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x i16> %bin.rdx8, <8 x i16> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1221; SSE2-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx9 = add <8 x i16> %rdx.shuf.2.0, %rdx.shuf.2.11222; SSE2-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i16> %bin.rdx9, i32 01223; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r1224;1225; SSSE3-LABEL: 'pairwise_reduction8i16'1226; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1227; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1228; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <8 x i16> %rdx.shuf.0.0, %rdx.shuf.0.11229; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1230; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1231; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <8 x i16> %rdx.shuf.1.0, %rdx.shuf.1.11232; SSSE3-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x i16> %bin.rdx8, <8 x i16> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1233; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x i16> %bin.rdx8, <8 x i16> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1234; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx9 = add <8 x i16> %rdx.shuf.2.0, %rdx.shuf.2.11235; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i16> %bin.rdx9, i32 01236; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r1237;1238; SSE42-LABEL: 'pairwise_reduction8i16'1239; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1240; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1241; SSE42-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <8 x i16> %rdx.shuf.0.0, %rdx.shuf.0.11242; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1243; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1244; SSE42-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <8 x i16> %rdx.shuf.1.0, %rdx.shuf.1.11245; SSE42-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x i16> %bin.rdx8, <8 x i16> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1246; SSE42-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x i16> %bin.rdx8, <8 x i16> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1247; SSE42-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx9 = add <8 x i16> %rdx.shuf.2.0, %rdx.shuf.2.11248; SSE42-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i16> %bin.rdx9, i32 01249; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r1250;1251; AVX-LABEL: 'pairwise_reduction8i16'1252; AVX-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1253; AVX-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1254; AVX-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <8 x i16> %rdx.shuf.0.0, %rdx.shuf.0.11255; AVX-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1256; AVX-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1257; AVX-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <8 x i16> %rdx.shuf.1.0, %rdx.shuf.1.11258; AVX-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x i16> %bin.rdx8, <8 x i16> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1259; AVX-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x i16> %bin.rdx8, <8 x i16> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1260; AVX-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx9 = add <8 x i16> %rdx.shuf.2.0, %rdx.shuf.2.11261; AVX-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i16> %bin.rdx9, i32 01262; AVX-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r1263;1264; SLM-LABEL: 'pairwise_reduction8i16'1265; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1266; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1267; SLM-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx = add <8 x i16> %rdx.shuf.0.0, %rdx.shuf.0.11268; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1269; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1270; SLM-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx8 = add <8 x i16> %rdx.shuf.1.0, %rdx.shuf.1.11271; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x i16> %bin.rdx8, <8 x i16> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1272; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x i16> %bin.rdx8, <8 x i16> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1273; SLM-NEXT:  Cost Model: Found costs of 1 for: %bin.rdx9 = add <8 x i16> %rdx.shuf.2.0, %rdx.shuf.2.11274; SLM-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i16> %bin.rdx9, i32 01275; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r1276;1277  %rdx.shuf.0.0 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6,i32 undef, i32 undef, i32 undef, i32 undef>1278  %rdx.shuf.0.1 = shufflevector <8 x i16> %rdx, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7,i32 undef, i32 undef, i32 undef, i32 undef>1279  %bin.rdx = add <8 x i16> %rdx.shuf.0.0, %rdx.shuf.0.11280  %rdx.shuf.1.0 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef,<8 x i32> <i32 0, i32 2, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1281  %rdx.shuf.1.1 = shufflevector <8 x i16> %bin.rdx, <8 x i16> undef,<8 x i32> <i32 1, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1282  %bin.rdx8 = add <8 x i16> %rdx.shuf.1.0, %rdx.shuf.1.11283  %rdx.shuf.2.0 = shufflevector <8 x i16> %bin.rdx8, <8 x i16> undef,<8 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1284  %rdx.shuf.2.1 = shufflevector <8 x i16> %bin.rdx8, <8 x i16> undef,<8 x i32> <i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1285  %bin.rdx9 = add <8 x i16> %rdx.shuf.2.0, %rdx.shuf.2.11286 1287  %r = extractelement <8 x i16> %bin.rdx9, i32 01288  ret i16 %r1289}1290 1291define fastcc i32 @pairwise_reduction8i32(<8 x i32> %rdx, i32 %f1) {1292; SSE-LABEL: 'pairwise_reduction8i32'1293; SSE-NEXT:  Cost Model: Found costs of 2 for: %rdx.shuf.0.0 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1294; SSE-NEXT:  Cost Model: Found costs of 2 for: %rdx.shuf.0.1 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1295; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx = add <8 x i32> %rdx.shuf.0.0, %rdx.shuf.0.11296; SSE-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1297; SSE-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1298; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx8 = add <8 x i32> %rdx.shuf.1.0, %rdx.shuf.1.11299; SSE-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x i32> %bin.rdx8, <8 x i32> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1300; SSE-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x i32> %bin.rdx8, <8 x i32> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1301; SSE-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx9 = add <8 x i32> %rdx.shuf.2.0, %rdx.shuf.2.11302; SSE-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i32> %bin.rdx9, i32 01303; SSE-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r1304;1305; AVX1-LABEL: 'pairwise_reduction8i32'1306; AVX1-NEXT:  Cost Model: Found costs of 4 for: %rdx.shuf.0.0 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1307; AVX1-NEXT:  Cost Model: Found costs of 4 for: %rdx.shuf.0.1 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1308; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:2 SizeLat:6 for: %bin.rdx = add <8 x i32> %rdx.shuf.0.0, %rdx.shuf.0.11309; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1310; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1311; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:2 SizeLat:6 for: %bin.rdx8 = add <8 x i32> %rdx.shuf.1.0, %rdx.shuf.1.11312; AVX1-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x i32> %bin.rdx8, <8 x i32> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1313; AVX1-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x i32> %bin.rdx8, <8 x i32> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1314; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:2 SizeLat:6 for: %bin.rdx9 = add <8 x i32> %rdx.shuf.2.0, %rdx.shuf.2.11315; AVX1-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i32> %bin.rdx9, i32 01316; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r1317;1318; AVX2-LABEL: 'pairwise_reduction8i32'1319; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.0 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1320; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.0.1 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1321; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %bin.rdx = add <8 x i32> %rdx.shuf.0.0, %rdx.shuf.0.11322; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1323; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1324; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %bin.rdx8 = add <8 x i32> %rdx.shuf.1.0, %rdx.shuf.1.11325; AVX2-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x i32> %bin.rdx8, <8 x i32> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1326; AVX2-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x i32> %bin.rdx8, <8 x i32> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1327; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %bin.rdx9 = add <8 x i32> %rdx.shuf.2.0, %rdx.shuf.2.11328; AVX2-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i32> %bin.rdx9, i32 01329; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r1330;1331; SLM-LABEL: 'pairwise_reduction8i32'1332; SLM-NEXT:  Cost Model: Found costs of 2 for: %rdx.shuf.0.0 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 poison, i32 poison, i32 poison, i32 poison>1333; SLM-NEXT:  Cost Model: Found costs of 2 for: %rdx.shuf.0.1 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>1334; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx = add <8 x i32> %rdx.shuf.0.0, %rdx.shuf.0.11335; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.0 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 0, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1336; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.1.1 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1337; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx8 = add <8 x i32> %rdx.shuf.1.0, %rdx.shuf.1.11338; SLM-NEXT:  Cost Model: Found costs of 0 for: %rdx.shuf.2.0 = shufflevector <8 x i32> %bin.rdx8, <8 x i32> undef, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1339; SLM-NEXT:  Cost Model: Found costs of 1 for: %rdx.shuf.2.1 = shufflevector <8 x i32> %bin.rdx8, <8 x i32> undef, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>1340; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %bin.rdx9 = add <8 x i32> %rdx.shuf.2.0, %rdx.shuf.2.11341; SLM-NEXT:  Cost Model: Found costs of 1 for: %r = extractelement <8 x i32> %bin.rdx9, i32 01342; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r1343;1344  %rdx.shuf.0.0 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6,i32 undef, i32 undef, i32 undef, i32 undef>1345  %rdx.shuf.0.1 = shufflevector <8 x i32> %rdx, <8 x i32> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7,i32 undef, i32 undef, i32 undef, i32 undef>1346  %bin.rdx = add <8 x i32> %rdx.shuf.0.0, %rdx.shuf.0.11347  %rdx.shuf.1.0 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef,<8 x i32> <i32 0, i32 2, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1348  %rdx.shuf.1.1 = shufflevector <8 x i32> %bin.rdx, <8 x i32> undef,<8 x i32> <i32 1, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1349  %bin.rdx8 = add <8 x i32> %rdx.shuf.1.0, %rdx.shuf.1.11350  %rdx.shuf.2.0 = shufflevector <8 x i32> %bin.rdx8, <8 x i32> undef,<8 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1351  %rdx.shuf.2.1 = shufflevector <8 x i32> %bin.rdx8, <8 x i32> undef,<8 x i32> <i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1352  %bin.rdx9 = add <8 x i32> %rdx.shuf.2.0, %rdx.shuf.2.11353 1354  %r = extractelement <8 x i32> %bin.rdx9, i32 01355  ret i32 %r1356}1357