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