1082 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt -passes="print<cost-model>" -cost-kind=all 2>&1 -disable-output -mtriple=thumbv8.1m.main-none-eabi -mattr=+mve < %s | FileCheck %s3 4target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"5 6define void @add_i8() {7; CHECK-LABEL: 'add_i8'8; CHECK-NEXT: Cost Model: Found costs of 4 for: %a0 = call i8 @llvm.vector.reduce.add.v1i8(<1 x i8> undef)9; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a1 = call i8 @llvm.vector.reduce.add.v2i8(<2 x i8> undef)10; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2 = call i8 @llvm.vector.reduce.add.v4i8(<4 x i8> undef)11; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3 = call i8 @llvm.vector.reduce.add.v8i8(<8 x i8> undef)12; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a4 = call i8 @llvm.vector.reduce.add.v16i8(<16 x i8> undef)13; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void14;15 %a0 = call i8 @llvm.vector.reduce.add.v1i8(<1 x i8> undef)16 17 %a1 = call i8 @llvm.vector.reduce.add.v2i8(<2 x i8> undef)18 19 %a2 = call i8 @llvm.vector.reduce.add.v4i8(<4 x i8> undef)20 21 %a3 = call i8 @llvm.vector.reduce.add.v8i8(<8 x i8> undef)22 23 %a4 = call i8 @llvm.vector.reduce.add.v16i8(<16 x i8> undef)24 25 ret void26}27 28define void @add_i16() {29; CHECK-LABEL: 'add_i16'30; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a0za = zext <1 x i8> undef to <1 x i16>31; CHECK-NEXT: Cost Model: Found costs of 4 for: %a0z = call i16 @llvm.vector.reduce.add.v1i16(<1 x i16> %a0za)32; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a0sa = sext <1 x i8> undef to <1 x i16>33; CHECK-NEXT: Cost Model: Found costs of 4 for: %a0s = call i16 @llvm.vector.reduce.add.v1i16(<1 x i16> %a0sa)34; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a1za = zext <2 x i8> undef to <2 x i16>35; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a1z = call i16 @llvm.vector.reduce.add.v2i16(<2 x i16> %a1za)36; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %a1sa = sext <2 x i8> undef to <2 x i16>37; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a1s = call i16 @llvm.vector.reduce.add.v2i16(<2 x i16> %a1sa)38; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a2za = zext <4 x i8> undef to <4 x i16>39; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2z = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %a2za)40; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a2sa = sext <4 x i8> undef to <4 x i16>41; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2s = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %a2sa)42; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3za = zext <8 x i8> undef to <8 x i16>43; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3z = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %a3za)44; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3sa = sext <8 x i8> undef to <8 x i16>45; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3s = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %a3sa)46; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:1 SizeLat:1 for: %a4za = zext <16 x i8> undef to <16 x i16>47; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a4z = call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> %a4za)48; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:1 SizeLat:1 for: %a4sa = sext <16 x i8> undef to <16 x i16>49; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a4s = call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> %a4sa)50; CHECK-NEXT: Cost Model: Found costs of 4 for: %a5 = call i16 @llvm.vector.reduce.add.v1i16(<1 x i16> undef)51; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a6 = call i16 @llvm.vector.reduce.add.v2i16(<2 x i16> undef)52; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7 = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> undef)53; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a8 = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> undef)54; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a9 = call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> undef)55; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void56;57 %a0za = zext <1 x i8> undef to <1 x i16>58 %a0z = call i16 @llvm.vector.reduce.add.v1i16(<1 x i16> %a0za)59 60 %a0sa = sext <1 x i8> undef to <1 x i16>61 %a0s = call i16 @llvm.vector.reduce.add.v1i16(<1 x i16> %a0sa)62 63 %a1za = zext <2 x i8> undef to <2 x i16>64 %a1z = call i16 @llvm.vector.reduce.add.v2i16(<2 x i16> %a1za)65 66 %a1sa = sext <2 x i8> undef to <2 x i16>67 %a1s = call i16 @llvm.vector.reduce.add.v2i16(<2 x i16> %a1sa)68 69 %a2za = zext <4 x i8> undef to <4 x i16>70 %a2z = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %a2za)71 72 %a2sa = sext <4 x i8> undef to <4 x i16>73 %a2s = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %a2sa)74 75 %a3za = zext <8 x i8> undef to <8 x i16>76 %a3z = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %a3za)77 78 %a3sa = sext <8 x i8> undef to <8 x i16>79 %a3s = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %a3sa)80 81 %a4za = zext <16 x i8> undef to <16 x i16>82 %a4z = call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> %a4za)83 84 %a4sa = sext <16 x i8> undef to <16 x i16>85 %a4s = call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> %a4sa)86 87 %a5 = call i16 @llvm.vector.reduce.add.v1i16(<1 x i16> undef)88 89 %a6 = call i16 @llvm.vector.reduce.add.v2i16(<2 x i16> undef)90 91 %a7 = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> undef)92 93 %a8 = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> undef)94 95 %a9 = call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> undef)96 97 ret void98}99 100define void @add_i32() {101; CHECK-LABEL: 'add_i32'102; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a0za = zext <1 x i8> undef to <1 x i32>103; CHECK-NEXT: Cost Model: Found costs of 4 for: %a0z = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a0za)104; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a0sa = sext <1 x i8> undef to <1 x i32>105; CHECK-NEXT: Cost Model: Found costs of 4 for: %a0s = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a0sa)106; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a1za = zext <2 x i8> undef to <2 x i32>107; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a1z = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a1za)108; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %a1sa = sext <2 x i8> undef to <2 x i32>109; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a1s = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a1sa)110; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a2za = zext <4 x i8> undef to <4 x i32>111; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2z = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a2za)112; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a2sa = sext <4 x i8> undef to <4 x i32>113; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2s = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a2sa)114; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a3za = zext <8 x i8> undef to <8 x i32>115; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a3z = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a3za)116; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a3sa = sext <8 x i8> undef to <8 x i32>117; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a3s = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a3sa)118; CHECK-NEXT: Cost Model: Found costs of RThru:74 CodeSize:1 Lat:1 SizeLat:1 for: %a4za = zext <16 x i8> undef to <16 x i32>119; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a4z = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a4za)120; CHECK-NEXT: Cost Model: Found costs of RThru:74 CodeSize:1 Lat:1 SizeLat:1 for: %a4sa = sext <16 x i8> undef to <16 x i32>121; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a4s = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a4sa)122; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a5za = zext <1 x i16> undef to <1 x i32>123; CHECK-NEXT: Cost Model: Found costs of 4 for: %a5z = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a5za)124; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a5sa = sext <1 x i16> undef to <1 x i32>125; CHECK-NEXT: Cost Model: Found costs of 4 for: %a5s = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a5sa)126; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a6za = zext <2 x i16> undef to <2 x i32>127; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a6z = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a6za)128; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %a6sa = sext <2 x i16> undef to <2 x i32>129; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a6s = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a6sa)130; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7za = zext <4 x i16> undef to <4 x i32>131; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7z = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a7za)132; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7sa = sext <4 x i16> undef to <4 x i32>133; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7s = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a7sa)134; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:1 SizeLat:1 for: %a8za = zext <8 x i16> undef to <8 x i32>135; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a8z = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a8za)136; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:1 SizeLat:1 for: %a8sa = sext <8 x i16> undef to <8 x i32>137; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a8s = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a8sa)138; CHECK-NEXT: Cost Model: Found costs of RThru:40 CodeSize:1 Lat:1 SizeLat:1 for: %a9za = zext <16 x i16> undef to <16 x i32>139; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a9z = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a9za)140; CHECK-NEXT: Cost Model: Found costs of RThru:40 CodeSize:1 Lat:1 SizeLat:1 for: %a9sa = sext <16 x i16> undef to <16 x i32>141; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a9s = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a9sa)142; CHECK-NEXT: Cost Model: Found costs of 4 for: %a10 = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> undef)143; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a11 = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> undef)144; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a12 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> undef)145; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a13 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> undef)146; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a14 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> undef)147; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void148;149 %a0za = zext <1 x i8> undef to <1 x i32>150 %a0z = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a0za)151 152 %a0sa = sext <1 x i8> undef to <1 x i32>153 %a0s = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a0sa)154 155 %a1za = zext <2 x i8> undef to <2 x i32>156 %a1z = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a1za)157 158 %a1sa = sext <2 x i8> undef to <2 x i32>159 %a1s = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a1sa)160 161 %a2za = zext <4 x i8> undef to <4 x i32>162 %a2z = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a2za)163 164 %a2sa = sext <4 x i8> undef to <4 x i32>165 %a2s = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a2sa)166 167 %a3za = zext <8 x i8> undef to <8 x i32>168 %a3z = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a3za)169 170 %a3sa = sext <8 x i8> undef to <8 x i32>171 %a3s = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a3sa)172 173 %a4za = zext <16 x i8> undef to <16 x i32>174 %a4z = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a4za)175 176 %a4sa = sext <16 x i8> undef to <16 x i32>177 %a4s = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a4sa)178 179 %a5za = zext <1 x i16> undef to <1 x i32>180 %a5z = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a5za)181 182 %a5sa = sext <1 x i16> undef to <1 x i32>183 %a5s = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a5sa)184 185 %a6za = zext <2 x i16> undef to <2 x i32>186 %a6z = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a6za)187 188 %a6sa = sext <2 x i16> undef to <2 x i32>189 %a6s = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a6sa)190 191 %a7za = zext <4 x i16> undef to <4 x i32>192 %a7z = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a7za)193 194 %a7sa = sext <4 x i16> undef to <4 x i32>195 %a7s = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a7sa)196 197 %a8za = zext <8 x i16> undef to <8 x i32>198 %a8z = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a8za)199 200 %a8sa = sext <8 x i16> undef to <8 x i32>201 %a8s = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a8sa)202 203 %a9za = zext <16 x i16> undef to <16 x i32>204 %a9z = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a9za)205 206 %a9sa = sext <16 x i16> undef to <16 x i32>207 %a9s = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a9sa)208 209 %a10 = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> undef)210 211 %a11 = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> undef)212 213 %a12 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> undef)214 215 %a13 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> undef)216 217 %a14 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> undef)218 219 ret void220}221 222define void @add_i64() {223; CHECK-LABEL: 'add_i64'224; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a0za = zext <1 x i8> undef to <1 x i64>225; CHECK-NEXT: Cost Model: Found costs of 8 for: %a0z = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a0za)226; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a0sa = sext <1 x i8> undef to <1 x i64>227; CHECK-NEXT: Cost Model: Found costs of 8 for: %a0s = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a0sa)228; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a1za = zext <2 x i8> undef to <2 x i64>229; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a1z = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a1za)230; CHECK-NEXT: Cost Model: Found costs of RThru:20 CodeSize:10 Lat:20 SizeLat:20 for: %a1sa = sext <2 x i8> undef to <2 x i64>231; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a1s = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a1sa)232; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a2za = zext <4 x i8> undef to <4 x i64>233; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a2z = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a2za)234; CHECK-NEXT: Cost Model: Found costs of RThru:82 CodeSize:1 Lat:1 SizeLat:1 for: %a2sa = sext <4 x i8> undef to <4 x i64>235; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a2s = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a2sa)236; CHECK-NEXT: Cost Model: Found costs of RThru:74 CodeSize:1 Lat:1 SizeLat:1 for: %a3za = zext <8 x i8> undef to <8 x i64>237; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a3z = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a3za)238; CHECK-NEXT: Cost Model: Found costs of RThru:330 CodeSize:1 Lat:1 SizeLat:1 for: %a3sa = sext <8 x i8> undef to <8 x i64>239; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a3s = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a3sa)240; CHECK-NEXT: Cost Model: Found costs of RThru:298 CodeSize:1 Lat:1 SizeLat:1 for: %a4za = zext <16 x i8> undef to <16 x i64>241; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a4z = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a4za)242; CHECK-NEXT: Cost Model: Found costs of RThru:1322 CodeSize:1 Lat:1 SizeLat:1 for: %a4sa = sext <16 x i8> undef to <16 x i64>243; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a4s = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a4sa)244; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a5za = zext <1 x i16> undef to <1 x i64>245; CHECK-NEXT: Cost Model: Found costs of 8 for: %a5z = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a5za)246; CHECK-NEXT: Cost Model: Found costs of RThru:36 CodeSize:1 Lat:1 SizeLat:1 for: %a5sa = sext <1 x i16> undef to <1 x i64>247; CHECK-NEXT: Cost Model: Found costs of 8 for: %a5s = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a5sa)248; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a6za = zext <2 x i16> undef to <2 x i64>249; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a6z = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a6za)250; CHECK-NEXT: Cost Model: Found costs of RThru:20 CodeSize:10 Lat:20 SizeLat:20 for: %a6sa = sext <2 x i16> undef to <2 x i64>251; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a6s = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a6sa)252; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a7za = zext <4 x i16> undef to <4 x i64>253; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a7z = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a7za)254; CHECK-NEXT: Cost Model: Found costs of RThru:82 CodeSize:1 Lat:1 SizeLat:1 for: %a7sa = sext <4 x i16> undef to <4 x i64>255; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a7s = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a7sa)256; CHECK-NEXT: Cost Model: Found costs of RThru:74 CodeSize:1 Lat:1 SizeLat:1 for: %a8za = zext <8 x i16> undef to <8 x i64>257; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a8z = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a8za)258; CHECK-NEXT: Cost Model: Found costs of RThru:330 CodeSize:1 Lat:1 SizeLat:1 for: %a8sa = sext <8 x i16> undef to <8 x i64>259; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a8s = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a8sa)260; CHECK-NEXT: Cost Model: Found costs of RThru:296 CodeSize:1 Lat:1 SizeLat:1 for: %a9za = zext <16 x i16> undef to <16 x i64>261; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a9z = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a9za)262; CHECK-NEXT: Cost Model: Found costs of RThru:1320 CodeSize:1 Lat:1 SizeLat:1 for: %a9sa = sext <16 x i16> undef to <16 x i64>263; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a9s = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a9sa)264; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a10za = zext <1 x i32> undef to <1 x i64>265; CHECK-NEXT: Cost Model: Found costs of 8 for: %a10z = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a10za)266; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a10sa = sext <1 x i32> undef to <1 x i64>267; CHECK-NEXT: Cost Model: Found costs of 8 for: %a10s = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a10sa)268; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a11za = zext <2 x i32> undef to <2 x i64>269; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a11z = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a11za)270; CHECK-NEXT: Cost Model: Found costs of RThru:16 CodeSize:8 Lat:16 SizeLat:16 for: %a11sa = sext <2 x i32> undef to <2 x i64>271; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a11s = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a11sa)272; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a12za = zext <4 x i32> undef to <4 x i64>273; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a12z = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a12za)274; CHECK-NEXT: Cost Model: Found costs of RThru:66 CodeSize:1 Lat:1 SizeLat:1 for: %a12sa = sext <4 x i32> undef to <4 x i64>275; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a12s = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a12sa)276; CHECK-NEXT: Cost Model: Found costs of RThru:72 CodeSize:1 Lat:1 SizeLat:1 for: %a13za = zext <8 x i32> undef to <8 x i64>277; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a13z = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a13za)278; CHECK-NEXT: Cost Model: Found costs of RThru:264 CodeSize:1 Lat:1 SizeLat:1 for: %a13sa = sext <8 x i32> undef to <8 x i64>279; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a13s = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a13sa)280; CHECK-NEXT: Cost Model: Found costs of RThru:288 CodeSize:1 Lat:1 SizeLat:1 for: %a14za = zext <16 x i32> undef to <16 x i64>281; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a14z = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a14za)282; CHECK-NEXT: Cost Model: Found costs of RThru:1056 CodeSize:1 Lat:1 SizeLat:1 for: %a14sa = sext <16 x i32> undef to <16 x i64>283; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a14s = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a14sa)284; CHECK-NEXT: Cost Model: Found costs of 8 for: %a15 = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> undef)285; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a16 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> undef)286; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a17 = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> undef)287; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a18 = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> undef)288; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a19 = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> undef)289; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void290;291 %a0za = zext <1 x i8> undef to <1 x i64>292 %a0z = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a0za)293 294 %a0sa = sext <1 x i8> undef to <1 x i64>295 %a0s = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a0sa)296 297 %a1za = zext <2 x i8> undef to <2 x i64>298 %a1z = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a1za)299 300 %a1sa = sext <2 x i8> undef to <2 x i64>301 %a1s = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a1sa)302 303 %a2za = zext <4 x i8> undef to <4 x i64>304 %a2z = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a2za)305 306 %a2sa = sext <4 x i8> undef to <4 x i64>307 %a2s = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a2sa)308 309 %a3za = zext <8 x i8> undef to <8 x i64>310 %a3z = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a3za)311 312 %a3sa = sext <8 x i8> undef to <8 x i64>313 %a3s = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a3sa)314 315 %a4za = zext <16 x i8> undef to <16 x i64>316 %a4z = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a4za)317 318 %a4sa = sext <16 x i8> undef to <16 x i64>319 %a4s = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a4sa)320 321 %a5za = zext <1 x i16> undef to <1 x i64>322 %a5z = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a5za)323 324 %a5sa = sext <1 x i16> undef to <1 x i64>325 %a5s = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a5sa)326 327 %a6za = zext <2 x i16> undef to <2 x i64>328 %a6z = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a6za)329 330 %a6sa = sext <2 x i16> undef to <2 x i64>331 %a6s = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a6sa)332 333 %a7za = zext <4 x i16> undef to <4 x i64>334 %a7z = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a7za)335 336 %a7sa = sext <4 x i16> undef to <4 x i64>337 %a7s = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a7sa)338 339 %a8za = zext <8 x i16> undef to <8 x i64>340 %a8z = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a8za)341 342 %a8sa = sext <8 x i16> undef to <8 x i64>343 %a8s = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a8sa)344 345 %a9za = zext <16 x i16> undef to <16 x i64>346 %a9z = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a9za)347 348 %a9sa = sext <16 x i16> undef to <16 x i64>349 %a9s = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a9sa)350 351 %a10za = zext <1 x i32> undef to <1 x i64>352 %a10z = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a10za)353 354 %a10sa = sext <1 x i32> undef to <1 x i64>355 %a10s = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a10sa)356 357 %a11za = zext <2 x i32> undef to <2 x i64>358 %a11z = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a11za)359 360 %a11sa = sext <2 x i32> undef to <2 x i64>361 %a11s = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a11sa)362 363 %a12za = zext <4 x i32> undef to <4 x i64>364 %a12z = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a12za)365 366 %a12sa = sext <4 x i32> undef to <4 x i64>367 %a12s = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a12sa)368 369 %a13za = zext <8 x i32> undef to <8 x i64>370 %a13z = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a13za)371 372 %a13sa = sext <8 x i32> undef to <8 x i64>373 %a13s = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a13sa)374 375 %a14za = zext <16 x i32> undef to <16 x i64>376 %a14z = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a14za)377 378 %a14sa = sext <16 x i32> undef to <16 x i64>379 %a14s = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a14sa)380 381 %a15 = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> undef)382 383 %a16 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> undef)384 385 %a17 = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> undef)386 387 %a18 = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> undef)388 389 %a19 = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> undef)390 391 ret void392}393 394define void @mla_i8() {395; CHECK-LABEL: 'mla_i8'396; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a0m = mul <1 x i8> undef, undef397; CHECK-NEXT: Cost Model: Found costs of 4 for: %a0 = call i8 @llvm.vector.reduce.add.v1i8(<1 x i8> %a0m)398; CHECK-NEXT: Cost Model: Found costs of 10 for: %a1m = mul <2 x i8> undef, undef399; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a1 = call i8 @llvm.vector.reduce.add.v2i8(<2 x i8> %a1m)400; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2m = mul <4 x i8> undef, undef401; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2 = call i8 @llvm.vector.reduce.add.v4i8(<4 x i8> %a2m)402; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3m = mul <8 x i8> undef, undef403; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3 = call i8 @llvm.vector.reduce.add.v8i8(<8 x i8> %a3m)404; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a4m = mul <16 x i8> undef, undef405; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a4 = call i8 @llvm.vector.reduce.add.v16i8(<16 x i8> %a4m)406; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void407;408 %a0m = mul <1 x i8> undef, undef409 %a0 = call i8 @llvm.vector.reduce.add.v1i8(<1 x i8> %a0m)410 411 %a1m = mul <2 x i8> undef, undef412 %a1 = call i8 @llvm.vector.reduce.add.v2i8(<2 x i8> %a1m)413 414 %a2m = mul <4 x i8> undef, undef415 %a2 = call i8 @llvm.vector.reduce.add.v4i8(<4 x i8> %a2m)416 417 %a3m = mul <8 x i8> undef, undef418 %a3 = call i8 @llvm.vector.reduce.add.v8i8(<8 x i8> %a3m)419 420 %a4m = mul <16 x i8> undef, undef421 %a4 = call i8 @llvm.vector.reduce.add.v16i8(<16 x i8> %a4m)422 423 ret void424}425 426define void @mla_i16() {427; CHECK-LABEL: 'mla_i16'428; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a0za = zext <1 x i8> undef to <1 x i16>429; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a0zb = zext <1 x i8> undef to <1 x i16>430; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a0zm = mul <1 x i16> %a0za, %a0zb431; CHECK-NEXT: Cost Model: Found costs of 4 for: %a0z = call i16 @llvm.vector.reduce.add.v1i16(<1 x i16> %a0zm)432; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a0sa = sext <1 x i8> undef to <1 x i16>433; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a0sb = sext <1 x i8> undef to <1 x i16>434; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a0sm = mul <1 x i16> %a0sa, %a0sb435; CHECK-NEXT: Cost Model: Found costs of 4 for: %a0s = call i16 @llvm.vector.reduce.add.v1i16(<1 x i16> %a0sm)436; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a1za = zext <2 x i8> undef to <2 x i16>437; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a1zb = zext <2 x i8> undef to <2 x i16>438; CHECK-NEXT: Cost Model: Found costs of 26 for: %a1zm = mul <2 x i16> %a1za, %a1zb439; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a1z = call i16 @llvm.vector.reduce.add.v2i16(<2 x i16> %a1zm)440; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %a1sa = sext <2 x i8> undef to <2 x i16>441; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %a1sb = sext <2 x i8> undef to <2 x i16>442; CHECK-NEXT: Cost Model: Found costs of 26 for: %a1sm = mul <2 x i16> %a1sa, %a1sb443; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a1s = call i16 @llvm.vector.reduce.add.v2i16(<2 x i16> %a1sm)444; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a2za = zext <4 x i8> undef to <4 x i16>445; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a2zb = zext <4 x i8> undef to <4 x i16>446; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2zm = mul <4 x i16> %a2za, %a2zb447; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2z = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %a2zm)448; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a2sa = sext <4 x i8> undef to <4 x i16>449; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a2sb = sext <4 x i8> undef to <4 x i16>450; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2sm = mul <4 x i16> %a2sa, %a2sb451; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2s = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %a2sm)452; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3za = zext <8 x i8> undef to <8 x i16>453; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3zb = zext <8 x i8> undef to <8 x i16>454; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3zm = mul <8 x i16> %a3za, %a3zb455; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3z = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %a3zm)456; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3sa = sext <8 x i8> undef to <8 x i16>457; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3sb = sext <8 x i8> undef to <8 x i16>458; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3sm = mul <8 x i16> %a3sa, %a3sb459; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a3s = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %a3sm)460; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:1 SizeLat:1 for: %a4za = zext <16 x i8> undef to <16 x i16>461; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:1 SizeLat:1 for: %a4zb = zext <16 x i8> undef to <16 x i16>462; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a4zm = mul <16 x i16> %a4za, %a4zb463; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a4z = call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> %a4zm)464; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:1 SizeLat:1 for: %a4sa = sext <16 x i8> undef to <16 x i16>465; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:1 SizeLat:1 for: %a4sb = sext <16 x i8> undef to <16 x i16>466; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a4sm = mul <16 x i16> %a4sa, %a4sb467; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a4s = call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> %a4sm)468; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a5m = mul <1 x i16> undef, undef469; CHECK-NEXT: Cost Model: Found costs of 4 for: %a5 = call i16 @llvm.vector.reduce.add.v1i16(<1 x i16> %a5m)470; CHECK-NEXT: Cost Model: Found costs of 10 for: %a6m = mul <2 x i16> undef, undef471; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a6 = call i16 @llvm.vector.reduce.add.v2i16(<2 x i16> %a6m)472; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7m = mul <4 x i16> undef, undef473; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7 = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %a7m)474; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a8m = mul <8 x i16> undef, undef475; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a8 = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %a8m)476; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a9m = mul <16 x i16> undef, undef477; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a9 = call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> %a9m)478; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void479;480 %a0za = zext <1 x i8> undef to <1 x i16>481 %a0zb = zext <1 x i8> undef to <1 x i16>482 %a0zm = mul <1 x i16> %a0za, %a0zb483 %a0z = call i16 @llvm.vector.reduce.add.v1i16(<1 x i16> %a0zm)484 485 %a0sa = sext <1 x i8> undef to <1 x i16>486 %a0sb = sext <1 x i8> undef to <1 x i16>487 %a0sm = mul <1 x i16> %a0sa, %a0sb488 %a0s = call i16 @llvm.vector.reduce.add.v1i16(<1 x i16> %a0sm)489 490 %a1za = zext <2 x i8> undef to <2 x i16>491 %a1zb = zext <2 x i8> undef to <2 x i16>492 %a1zm = mul <2 x i16> %a1za, %a1zb493 %a1z = call i16 @llvm.vector.reduce.add.v2i16(<2 x i16> %a1zm)494 495 %a1sa = sext <2 x i8> undef to <2 x i16>496 %a1sb = sext <2 x i8> undef to <2 x i16>497 %a1sm = mul <2 x i16> %a1sa, %a1sb498 %a1s = call i16 @llvm.vector.reduce.add.v2i16(<2 x i16> %a1sm)499 500 %a2za = zext <4 x i8> undef to <4 x i16>501 %a2zb = zext <4 x i8> undef to <4 x i16>502 %a2zm = mul <4 x i16> %a2za, %a2zb503 %a2z = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %a2zm)504 505 %a2sa = sext <4 x i8> undef to <4 x i16>506 %a2sb = sext <4 x i8> undef to <4 x i16>507 %a2sm = mul <4 x i16> %a2sa, %a2sb508 %a2s = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %a2sm)509 510 %a3za = zext <8 x i8> undef to <8 x i16>511 %a3zb = zext <8 x i8> undef to <8 x i16>512 %a3zm = mul <8 x i16> %a3za, %a3zb513 %a3z = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %a3zm)514 515 %a3sa = sext <8 x i8> undef to <8 x i16>516 %a3sb = sext <8 x i8> undef to <8 x i16>517 %a3sm = mul <8 x i16> %a3sa, %a3sb518 %a3s = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %a3sm)519 520 %a4za = zext <16 x i8> undef to <16 x i16>521 %a4zb = zext <16 x i8> undef to <16 x i16>522 %a4zm = mul <16 x i16> %a4za, %a4zb523 %a4z = call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> %a4zm)524 525 %a4sa = sext <16 x i8> undef to <16 x i16>526 %a4sb = sext <16 x i8> undef to <16 x i16>527 %a4sm = mul <16 x i16> %a4sa, %a4sb528 %a4s = call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> %a4sm)529 530 %a5m = mul <1 x i16> undef, undef531 %a5 = call i16 @llvm.vector.reduce.add.v1i16(<1 x i16> %a5m)532 533 %a6m = mul <2 x i16> undef, undef534 %a6 = call i16 @llvm.vector.reduce.add.v2i16(<2 x i16> %a6m)535 536 %a7m = mul <4 x i16> undef, undef537 %a7 = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %a7m)538 539 %a8m = mul <8 x i16> undef, undef540 %a8 = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %a8m)541 542 %a9m = mul <16 x i16> undef, undef543 %a9 = call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> %a9m)544 545 ret void546}547 548define void @mla_i32() {549; CHECK-LABEL: 'mla_i32'550; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a0za = zext <1 x i8> undef to <1 x i32>551; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a0zb = zext <1 x i8> undef to <1 x i32>552; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a0zm = mul <1 x i32> %a0za, %a0zb553; CHECK-NEXT: Cost Model: Found costs of 4 for: %a0z = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a0zm)554; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a0sa = sext <1 x i8> undef to <1 x i32>555; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a0sb = sext <1 x i8> undef to <1 x i32>556; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a0sm = mul <1 x i32> %a0sa, %a0sb557; CHECK-NEXT: Cost Model: Found costs of 4 for: %a0s = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a0sm)558; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a1za = zext <2 x i8> undef to <2 x i32>559; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a1zb = zext <2 x i8> undef to <2 x i32>560; CHECK-NEXT: Cost Model: Found costs of 26 for: %a1zm = mul <2 x i32> %a1za, %a1zb561; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a1z = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a1zm)562; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %a1sa = sext <2 x i8> undef to <2 x i32>563; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %a1sb = sext <2 x i8> undef to <2 x i32>564; CHECK-NEXT: Cost Model: Found costs of 26 for: %a1sm = mul <2 x i32> %a1sa, %a1sb565; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a1s = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a1sm)566; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a2za = zext <4 x i8> undef to <4 x i32>567; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a2zb = zext <4 x i8> undef to <4 x i32>568; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2zm = mul <4 x i32> %a2za, %a2zb569; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2z = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a2zm)570; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a2sa = sext <4 x i8> undef to <4 x i32>571; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a2sb = sext <4 x i8> undef to <4 x i32>572; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2sm = mul <4 x i32> %a2sa, %a2sb573; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a2s = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a2sm)574; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a3za = zext <8 x i8> undef to <8 x i32>575; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a3zb = zext <8 x i8> undef to <8 x i32>576; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a3zm = mul <8 x i32> %a3za, %a3zb577; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a3z = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a3zm)578; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a3sa = sext <8 x i8> undef to <8 x i32>579; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a3sb = sext <8 x i8> undef to <8 x i32>580; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a3sm = mul <8 x i32> %a3sa, %a3sb581; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a3s = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a3sm)582; CHECK-NEXT: Cost Model: Found costs of RThru:74 CodeSize:1 Lat:1 SizeLat:1 for: %a4za = zext <16 x i8> undef to <16 x i32>583; CHECK-NEXT: Cost Model: Found costs of RThru:74 CodeSize:1 Lat:1 SizeLat:1 for: %a4zb = zext <16 x i8> undef to <16 x i32>584; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a4zm = mul <16 x i32> %a4za, %a4zb585; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a4z = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a4zm)586; CHECK-NEXT: Cost Model: Found costs of RThru:74 CodeSize:1 Lat:1 SizeLat:1 for: %a4sa = sext <16 x i8> undef to <16 x i32>587; CHECK-NEXT: Cost Model: Found costs of RThru:74 CodeSize:1 Lat:1 SizeLat:1 for: %a4sb = sext <16 x i8> undef to <16 x i32>588; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a4sm = mul <16 x i32> %a4sa, %a4sb589; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a4s = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a4sm)590; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a5za = zext <1 x i16> undef to <1 x i32>591; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a5zb = zext <1 x i16> undef to <1 x i32>592; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a5zm = mul <1 x i32> %a5za, %a5zb593; CHECK-NEXT: Cost Model: Found costs of 4 for: %a5z = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a5zm)594; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a5sa = sext <1 x i16> undef to <1 x i32>595; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a5sb = sext <1 x i16> undef to <1 x i32>596; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a5sm = mul <1 x i32> %a5sa, %a5sb597; CHECK-NEXT: Cost Model: Found costs of 4 for: %a5s = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a5sm)598; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a6za = zext <2 x i16> undef to <2 x i32>599; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %a6zb = zext <2 x i16> undef to <2 x i32>600; CHECK-NEXT: Cost Model: Found costs of 26 for: %a6zm = mul <2 x i32> %a6za, %a6zb601; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a6z = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a6zm)602; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %a6sa = sext <2 x i16> undef to <2 x i32>603; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %a6sb = sext <2 x i16> undef to <2 x i32>604; CHECK-NEXT: Cost Model: Found costs of 26 for: %a6sm = mul <2 x i32> %a6sa, %a6sb605; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a6s = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a6sm)606; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7za = zext <4 x i16> undef to <4 x i32>607; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7zb = zext <4 x i16> undef to <4 x i32>608; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7zm = mul <4 x i32> %a7za, %a7zb609; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7z = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a7zm)610; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7sa = sext <4 x i16> undef to <4 x i32>611; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7sb = sext <4 x i16> undef to <4 x i32>612; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7sm = mul <4 x i32> %a7sa, %a7sb613; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a7s = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a7sm)614; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:1 SizeLat:1 for: %a8za = zext <8 x i16> undef to <8 x i32>615; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:1 SizeLat:1 for: %a8zb = zext <8 x i16> undef to <8 x i32>616; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a8zm = mul <8 x i32> %a8za, %a8zb617; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a8z = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a8zm)618; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:1 SizeLat:1 for: %a8sa = sext <8 x i16> undef to <8 x i32>619; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:1 SizeLat:1 for: %a8sb = sext <8 x i16> undef to <8 x i32>620; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a8sm = mul <8 x i32> %a8sa, %a8sb621; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a8s = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a8sm)622; CHECK-NEXT: Cost Model: Found costs of RThru:40 CodeSize:1 Lat:1 SizeLat:1 for: %a9za = zext <16 x i16> undef to <16 x i32>623; CHECK-NEXT: Cost Model: Found costs of RThru:40 CodeSize:1 Lat:1 SizeLat:1 for: %a9zb = zext <16 x i16> undef to <16 x i32>624; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a9zm = mul <16 x i32> %a9za, %a9zb625; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a9z = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a9zm)626; CHECK-NEXT: Cost Model: Found costs of RThru:40 CodeSize:1 Lat:1 SizeLat:1 for: %a9sa = sext <16 x i16> undef to <16 x i32>627; CHECK-NEXT: Cost Model: Found costs of RThru:40 CodeSize:1 Lat:1 SizeLat:1 for: %a9sb = sext <16 x i16> undef to <16 x i32>628; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a9sm = mul <16 x i32> %a9sa, %a9sb629; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a9s = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a9sm)630; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a10m = mul <1 x i32> undef, undef631; CHECK-NEXT: Cost Model: Found costs of 4 for: %a10 = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a10m)632; CHECK-NEXT: Cost Model: Found costs of 10 for: %a11m = mul <2 x i32> undef, undef633; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:38 Lat:54 SizeLat:54 for: %a11 = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a11m)634; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a12m = mul <4 x i32> undef, undef635; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %a12 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a12m)636; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a13m = mul <8 x i32> undef, undef637; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a13 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a13m)638; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a14m = mul <16 x i32> undef, undef639; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %a14 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a14m)640; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void641;642 %a0za = zext <1 x i8> undef to <1 x i32>643 %a0zb = zext <1 x i8> undef to <1 x i32>644 %a0zm = mul <1 x i32> %a0za, %a0zb645 %a0z = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a0zm)646 647 %a0sa = sext <1 x i8> undef to <1 x i32>648 %a0sb = sext <1 x i8> undef to <1 x i32>649 %a0sm = mul <1 x i32> %a0sa, %a0sb650 %a0s = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a0sm)651 652 %a1za = zext <2 x i8> undef to <2 x i32>653 %a1zb = zext <2 x i8> undef to <2 x i32>654 %a1zm = mul <2 x i32> %a1za, %a1zb655 %a1z = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a1zm)656 657 %a1sa = sext <2 x i8> undef to <2 x i32>658 %a1sb = sext <2 x i8> undef to <2 x i32>659 %a1sm = mul <2 x i32> %a1sa, %a1sb660 %a1s = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a1sm)661 662 %a2za = zext <4 x i8> undef to <4 x i32>663 %a2zb = zext <4 x i8> undef to <4 x i32>664 %a2zm = mul <4 x i32> %a2za, %a2zb665 %a2z = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a2zm)666 667 %a2sa = sext <4 x i8> undef to <4 x i32>668 %a2sb = sext <4 x i8> undef to <4 x i32>669 %a2sm = mul <4 x i32> %a2sa, %a2sb670 %a2s = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a2sm)671 672 %a3za = zext <8 x i8> undef to <8 x i32>673 %a3zb = zext <8 x i8> undef to <8 x i32>674 %a3zm = mul <8 x i32> %a3za, %a3zb675 %a3z = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a3zm)676 677 %a3sa = sext <8 x i8> undef to <8 x i32>678 %a3sb = sext <8 x i8> undef to <8 x i32>679 %a3sm = mul <8 x i32> %a3sa, %a3sb680 %a3s = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a3sm)681 682 %a4za = zext <16 x i8> undef to <16 x i32>683 %a4zb = zext <16 x i8> undef to <16 x i32>684 %a4zm = mul <16 x i32> %a4za, %a4zb685 %a4z = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a4zm)686 687 %a4sa = sext <16 x i8> undef to <16 x i32>688 %a4sb = sext <16 x i8> undef to <16 x i32>689 %a4sm = mul <16 x i32> %a4sa, %a4sb690 %a4s = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a4sm)691 692 %a5za = zext <1 x i16> undef to <1 x i32>693 %a5zb = zext <1 x i16> undef to <1 x i32>694 %a5zm = mul <1 x i32> %a5za, %a5zb695 %a5z = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a5zm)696 697 %a5sa = sext <1 x i16> undef to <1 x i32>698 %a5sb = sext <1 x i16> undef to <1 x i32>699 %a5sm = mul <1 x i32> %a5sa, %a5sb700 %a5s = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a5sm)701 702 %a6za = zext <2 x i16> undef to <2 x i32>703 %a6zb = zext <2 x i16> undef to <2 x i32>704 %a6zm = mul <2 x i32> %a6za, %a6zb705 %a6z = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a6zm)706 707 %a6sa = sext <2 x i16> undef to <2 x i32>708 %a6sb = sext <2 x i16> undef to <2 x i32>709 %a6sm = mul <2 x i32> %a6sa, %a6sb710 %a6s = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a6sm)711 712 %a7za = zext <4 x i16> undef to <4 x i32>713 %a7zb = zext <4 x i16> undef to <4 x i32>714 %a7zm = mul <4 x i32> %a7za, %a7zb715 %a7z = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a7zm)716 717 %a7sa = sext <4 x i16> undef to <4 x i32>718 %a7sb = sext <4 x i16> undef to <4 x i32>719 %a7sm = mul <4 x i32> %a7sa, %a7sb720 %a7s = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a7sm)721 722 %a8za = zext <8 x i16> undef to <8 x i32>723 %a8zb = zext <8 x i16> undef to <8 x i32>724 %a8zm = mul <8 x i32> %a8za, %a8zb725 %a8z = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a8zm)726 727 %a8sa = sext <8 x i16> undef to <8 x i32>728 %a8sb = sext <8 x i16> undef to <8 x i32>729 %a8sm = mul <8 x i32> %a8sa, %a8sb730 %a8s = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a8sm)731 732 %a9za = zext <16 x i16> undef to <16 x i32>733 %a9zb = zext <16 x i16> undef to <16 x i32>734 %a9zm = mul <16 x i32> %a9za, %a9zb735 %a9z = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a9zm)736 737 %a9sa = sext <16 x i16> undef to <16 x i32>738 %a9sb = sext <16 x i16> undef to <16 x i32>739 %a9sm = mul <16 x i32> %a9sa, %a9sb740 %a9s = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a9sm)741 742 %a10m = mul <1 x i32> undef, undef743 %a10 = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a10m)744 745 %a11m = mul <2 x i32> undef, undef746 %a11 = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %a11m)747 748 %a12m = mul <4 x i32> undef, undef749 %a12 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a12m)750 751 %a13m = mul <8 x i32> undef, undef752 %a13 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a13m)753 754 %a14m = mul <16 x i32> undef, undef755 %a14 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %a14m)756 757 ret void758}759 760define void @mla_i64() {761; CHECK-LABEL: 'mla_i64'762; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a0za = zext <1 x i8> undef to <1 x i64>763; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a0zb = zext <1 x i8> undef to <1 x i64>764; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a0zm = mul <1 x i64> %a0za, %a0zb765; CHECK-NEXT: Cost Model: Found costs of 8 for: %a0z = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a0zm)766; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a0sa = sext <1 x i8> undef to <1 x i64>767; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a0sb = sext <1 x i8> undef to <1 x i64>768; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a0sm = mul <1 x i64> %a0sa, %a0sb769; CHECK-NEXT: Cost Model: Found costs of 8 for: %a0s = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a0sm)770; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a1za = zext <2 x i8> undef to <2 x i64>771; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a1zb = zext <2 x i8> undef to <2 x i64>772; CHECK-NEXT: Cost Model: Found costs of 52 for: %a1zm = mul <2 x i64> %a1za, %a1zb773; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a1z = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a1zm)774; CHECK-NEXT: Cost Model: Found costs of RThru:20 CodeSize:10 Lat:20 SizeLat:20 for: %a1sa = sext <2 x i8> undef to <2 x i64>775; CHECK-NEXT: Cost Model: Found costs of RThru:20 CodeSize:10 Lat:20 SizeLat:20 for: %a1sb = sext <2 x i8> undef to <2 x i64>776; CHECK-NEXT: Cost Model: Found costs of 52 for: %a1sm = mul <2 x i64> %a1sa, %a1sb777; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a1s = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a1sm)778; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a2za = zext <4 x i8> undef to <4 x i64>779; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a2zb = zext <4 x i8> undef to <4 x i64>780; CHECK-NEXT: Cost Model: Found costs of 104 for: %a2zm = mul <4 x i64> %a2za, %a2zb781; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a2z = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a2zm)782; CHECK-NEXT: Cost Model: Found costs of RThru:82 CodeSize:1 Lat:1 SizeLat:1 for: %a2sa = sext <4 x i8> undef to <4 x i64>783; CHECK-NEXT: Cost Model: Found costs of RThru:82 CodeSize:1 Lat:1 SizeLat:1 for: %a2sb = sext <4 x i8> undef to <4 x i64>784; CHECK-NEXT: Cost Model: Found costs of 104 for: %a2sm = mul <4 x i64> %a2sa, %a2sb785; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a2s = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a2sm)786; CHECK-NEXT: Cost Model: Found costs of RThru:74 CodeSize:1 Lat:1 SizeLat:1 for: %a3za = zext <8 x i8> undef to <8 x i64>787; CHECK-NEXT: Cost Model: Found costs of RThru:74 CodeSize:1 Lat:1 SizeLat:1 for: %a3zb = zext <8 x i8> undef to <8 x i64>788; CHECK-NEXT: Cost Model: Found costs of 208 for: %a3zm = mul <8 x i64> %a3za, %a3zb789; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a3z = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a3zm)790; CHECK-NEXT: Cost Model: Found costs of RThru:330 CodeSize:1 Lat:1 SizeLat:1 for: %a3sa = sext <8 x i8> undef to <8 x i64>791; CHECK-NEXT: Cost Model: Found costs of RThru:330 CodeSize:1 Lat:1 SizeLat:1 for: %a3sb = sext <8 x i8> undef to <8 x i64>792; CHECK-NEXT: Cost Model: Found costs of 208 for: %a3sm = mul <8 x i64> %a3sa, %a3sb793; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a3s = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a3sm)794; CHECK-NEXT: Cost Model: Found costs of RThru:298 CodeSize:1 Lat:1 SizeLat:1 for: %a4za = zext <16 x i8> undef to <16 x i64>795; CHECK-NEXT: Cost Model: Found costs of RThru:298 CodeSize:1 Lat:1 SizeLat:1 for: %a4zb = zext <16 x i8> undef to <16 x i64>796; CHECK-NEXT: Cost Model: Found costs of 416 for: %a4zm = mul <16 x i64> %a4za, %a4zb797; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a4z = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a4zm)798; CHECK-NEXT: Cost Model: Found costs of RThru:1322 CodeSize:1 Lat:1 SizeLat:1 for: %a4sa = sext <16 x i8> undef to <16 x i64>799; CHECK-NEXT: Cost Model: Found costs of RThru:1322 CodeSize:1 Lat:1 SizeLat:1 for: %a4sb = sext <16 x i8> undef to <16 x i64>800; CHECK-NEXT: Cost Model: Found costs of 416 for: %a4sm = mul <16 x i64> %a4sa, %a4sb801; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a4s = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a4sm)802; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a5za = zext <1 x i16> undef to <1 x i64>803; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a5zb = zext <1 x i16> undef to <1 x i64>804; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a5zm = mul <1 x i64> %a5za, %a5zb805; CHECK-NEXT: Cost Model: Found costs of 8 for: %a5z = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a5zm)806; CHECK-NEXT: Cost Model: Found costs of RThru:36 CodeSize:1 Lat:1 SizeLat:1 for: %a5sa = sext <1 x i16> undef to <1 x i64>807; CHECK-NEXT: Cost Model: Found costs of RThru:36 CodeSize:1 Lat:1 SizeLat:1 for: %a5sb = sext <1 x i16> undef to <1 x i64>808; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a5sm = mul <1 x i64> %a5sa, %a5sb809; CHECK-NEXT: Cost Model: Found costs of 8 for: %a5s = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a5sm)810; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a6za = zext <2 x i16> undef to <2 x i64>811; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a6zb = zext <2 x i16> undef to <2 x i64>812; CHECK-NEXT: Cost Model: Found costs of 52 for: %a6zm = mul <2 x i64> %a6za, %a6zb813; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a6z = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a6zm)814; CHECK-NEXT: Cost Model: Found costs of RThru:20 CodeSize:10 Lat:20 SizeLat:20 for: %a6sa = sext <2 x i16> undef to <2 x i64>815; CHECK-NEXT: Cost Model: Found costs of RThru:20 CodeSize:10 Lat:20 SizeLat:20 for: %a6sb = sext <2 x i16> undef to <2 x i64>816; CHECK-NEXT: Cost Model: Found costs of 52 for: %a6sm = mul <2 x i64> %a6sa, %a6sb817; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a6s = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a6sm)818; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a7za = zext <4 x i16> undef to <4 x i64>819; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a7zb = zext <4 x i16> undef to <4 x i64>820; CHECK-NEXT: Cost Model: Found costs of 104 for: %a7zm = mul <4 x i64> %a7za, %a7zb821; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a7z = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a7zm)822; CHECK-NEXT: Cost Model: Found costs of RThru:82 CodeSize:1 Lat:1 SizeLat:1 for: %a7sa = sext <4 x i16> undef to <4 x i64>823; CHECK-NEXT: Cost Model: Found costs of RThru:82 CodeSize:1 Lat:1 SizeLat:1 for: %a7sb = sext <4 x i16> undef to <4 x i64>824; CHECK-NEXT: Cost Model: Found costs of 104 for: %a7sm = mul <4 x i64> %a7sa, %a7sb825; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a7s = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a7sm)826; CHECK-NEXT: Cost Model: Found costs of RThru:74 CodeSize:1 Lat:1 SizeLat:1 for: %a8za = zext <8 x i16> undef to <8 x i64>827; CHECK-NEXT: Cost Model: Found costs of RThru:74 CodeSize:1 Lat:1 SizeLat:1 for: %a8zb = zext <8 x i16> undef to <8 x i64>828; CHECK-NEXT: Cost Model: Found costs of 208 for: %a8zm = mul <8 x i64> %a8za, %a8zb829; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a8z = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a8zm)830; CHECK-NEXT: Cost Model: Found costs of RThru:330 CodeSize:1 Lat:1 SizeLat:1 for: %a8sa = sext <8 x i16> undef to <8 x i64>831; CHECK-NEXT: Cost Model: Found costs of RThru:330 CodeSize:1 Lat:1 SizeLat:1 for: %a8sb = sext <8 x i16> undef to <8 x i64>832; CHECK-NEXT: Cost Model: Found costs of 208 for: %a8sm = mul <8 x i64> %a8sa, %a8sb833; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a8s = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a8sm)834; CHECK-NEXT: Cost Model: Found costs of RThru:296 CodeSize:1 Lat:1 SizeLat:1 for: %a9za = zext <16 x i16> undef to <16 x i64>835; CHECK-NEXT: Cost Model: Found costs of RThru:296 CodeSize:1 Lat:1 SizeLat:1 for: %a9zb = zext <16 x i16> undef to <16 x i64>836; CHECK-NEXT: Cost Model: Found costs of 416 for: %a9zm = mul <16 x i64> %a9za, %a9zb837; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a9z = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a9zm)838; CHECK-NEXT: Cost Model: Found costs of RThru:1320 CodeSize:1 Lat:1 SizeLat:1 for: %a9sa = sext <16 x i16> undef to <16 x i64>839; CHECK-NEXT: Cost Model: Found costs of RThru:1320 CodeSize:1 Lat:1 SizeLat:1 for: %a9sb = sext <16 x i16> undef to <16 x i64>840; CHECK-NEXT: Cost Model: Found costs of 416 for: %a9sm = mul <16 x i64> %a9sa, %a9sb841; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a9s = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a9sm)842; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a10za = zext <1 x i32> undef to <1 x i64>843; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a10zb = zext <1 x i32> undef to <1 x i64>844; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a10zm = mul <1 x i64> %a10za, %a10zb845; CHECK-NEXT: Cost Model: Found costs of 8 for: %a10z = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a10zm)846; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a10sa = sext <1 x i32> undef to <1 x i64>847; CHECK-NEXT: Cost Model: Found costs of RThru:34 CodeSize:1 Lat:1 SizeLat:1 for: %a10sb = sext <1 x i32> undef to <1 x i64>848; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a10sm = mul <1 x i64> %a10sa, %a10sb849; CHECK-NEXT: Cost Model: Found costs of 8 for: %a10s = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a10sm)850; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a11za = zext <2 x i32> undef to <2 x i64>851; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a11zb = zext <2 x i32> undef to <2 x i64>852; CHECK-NEXT: Cost Model: Found costs of 52 for: %a11zm = mul <2 x i64> %a11za, %a11zb853; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a11z = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a11zm)854; CHECK-NEXT: Cost Model: Found costs of RThru:16 CodeSize:8 Lat:16 SizeLat:16 for: %a11sa = sext <2 x i32> undef to <2 x i64>855; CHECK-NEXT: Cost Model: Found costs of RThru:16 CodeSize:8 Lat:16 SizeLat:16 for: %a11sb = sext <2 x i32> undef to <2 x i64>856; CHECK-NEXT: Cost Model: Found costs of 52 for: %a11sm = mul <2 x i64> %a11sa, %a11sb857; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a11s = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a11sm)858; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a12za = zext <4 x i32> undef to <4 x i64>859; CHECK-NEXT: Cost Model: Found costs of RThru:18 CodeSize:1 Lat:1 SizeLat:1 for: %a12zb = zext <4 x i32> undef to <4 x i64>860; CHECK-NEXT: Cost Model: Found costs of 104 for: %a12zm = mul <4 x i64> %a12za, %a12zb861; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a12z = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a12zm)862; CHECK-NEXT: Cost Model: Found costs of RThru:66 CodeSize:1 Lat:1 SizeLat:1 for: %a12sa = sext <4 x i32> undef to <4 x i64>863; CHECK-NEXT: Cost Model: Found costs of RThru:66 CodeSize:1 Lat:1 SizeLat:1 for: %a12sb = sext <4 x i32> undef to <4 x i64>864; CHECK-NEXT: Cost Model: Found costs of 104 for: %a12sm = mul <4 x i64> %a12sa, %a12sb865; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a12s = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a12sm)866; CHECK-NEXT: Cost Model: Found costs of RThru:72 CodeSize:1 Lat:1 SizeLat:1 for: %a13za = zext <8 x i32> undef to <8 x i64>867; CHECK-NEXT: Cost Model: Found costs of RThru:72 CodeSize:1 Lat:1 SizeLat:1 for: %a13zb = zext <8 x i32> undef to <8 x i64>868; CHECK-NEXT: Cost Model: Found costs of 208 for: %a13zm = mul <8 x i64> %a13za, %a13zb869; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a13z = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a13zm)870; CHECK-NEXT: Cost Model: Found costs of RThru:264 CodeSize:1 Lat:1 SizeLat:1 for: %a13sa = sext <8 x i32> undef to <8 x i64>871; CHECK-NEXT: Cost Model: Found costs of RThru:264 CodeSize:1 Lat:1 SizeLat:1 for: %a13sb = sext <8 x i32> undef to <8 x i64>872; CHECK-NEXT: Cost Model: Found costs of 208 for: %a13sm = mul <8 x i64> %a13sa, %a13sb873; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a13s = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a13sm)874; CHECK-NEXT: Cost Model: Found costs of RThru:288 CodeSize:1 Lat:1 SizeLat:1 for: %a14za = zext <16 x i32> undef to <16 x i64>875; CHECK-NEXT: Cost Model: Found costs of RThru:288 CodeSize:1 Lat:1 SizeLat:1 for: %a14zb = zext <16 x i32> undef to <16 x i64>876; CHECK-NEXT: Cost Model: Found costs of 416 for: %a14zm = mul <16 x i64> %a14za, %a14zb877; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a14z = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a14zm)878; CHECK-NEXT: Cost Model: Found costs of RThru:1056 CodeSize:1 Lat:1 SizeLat:1 for: %a14sa = sext <16 x i32> undef to <16 x i64>879; CHECK-NEXT: Cost Model: Found costs of RThru:1056 CodeSize:1 Lat:1 SizeLat:1 for: %a14sb = sext <16 x i32> undef to <16 x i64>880; CHECK-NEXT: Cost Model: Found costs of 416 for: %a14sm = mul <16 x i64> %a14sa, %a14sb881; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a14s = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a14sm)882; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %a15m = mul <1 x i64> undef, undef883; CHECK-NEXT: Cost Model: Found costs of 8 for: %a15 = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a15m)884; CHECK-NEXT: Cost Model: Found costs of 20 for: %a16m = mul <2 x i64> undef, undef885; CHECK-NEXT: Cost Model: Found costs of RThru:108 CodeSize:76 Lat:108 SizeLat:108 for: %a16 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a16m)886; CHECK-NEXT: Cost Model: Found costs of 40 for: %a17m = mul <4 x i64> undef, undef887; CHECK-NEXT: Cost Model: Found costs of RThru:208 CodeSize:144 Lat:208 SizeLat:208 for: %a17 = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a17m)888; CHECK-NEXT: Cost Model: Found costs of 80 for: %a18m = mul <8 x i64> undef, undef889; CHECK-NEXT: Cost Model: Found costs of RThru:408 CodeSize:280 Lat:408 SizeLat:408 for: %a18 = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a18m)890; CHECK-NEXT: Cost Model: Found costs of 160 for: %a19m = mul <16 x i64> undef, undef891; CHECK-NEXT: Cost Model: Found costs of RThru:808 CodeSize:552 Lat:808 SizeLat:808 for: %a19 = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a19m)892; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void893;894 %a0za = zext <1 x i8> undef to <1 x i64>895 %a0zb = zext <1 x i8> undef to <1 x i64>896 %a0zm = mul <1 x i64> %a0za, %a0zb897 %a0z = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a0zm)898 899 %a0sa = sext <1 x i8> undef to <1 x i64>900 %a0sb = sext <1 x i8> undef to <1 x i64>901 %a0sm = mul <1 x i64> %a0sa, %a0sb902 %a0s = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a0sm)903 904 %a1za = zext <2 x i8> undef to <2 x i64>905 %a1zb = zext <2 x i8> undef to <2 x i64>906 %a1zm = mul <2 x i64> %a1za, %a1zb907 %a1z = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a1zm)908 909 %a1sa = sext <2 x i8> undef to <2 x i64>910 %a1sb = sext <2 x i8> undef to <2 x i64>911 %a1sm = mul <2 x i64> %a1sa, %a1sb912 %a1s = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a1sm)913 914 %a2za = zext <4 x i8> undef to <4 x i64>915 %a2zb = zext <4 x i8> undef to <4 x i64>916 %a2zm = mul <4 x i64> %a2za, %a2zb917 %a2z = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a2zm)918 919 %a2sa = sext <4 x i8> undef to <4 x i64>920 %a2sb = sext <4 x i8> undef to <4 x i64>921 %a2sm = mul <4 x i64> %a2sa, %a2sb922 %a2s = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a2sm)923 924 %a3za = zext <8 x i8> undef to <8 x i64>925 %a3zb = zext <8 x i8> undef to <8 x i64>926 %a3zm = mul <8 x i64> %a3za, %a3zb927 %a3z = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a3zm)928 929 %a3sa = sext <8 x i8> undef to <8 x i64>930 %a3sb = sext <8 x i8> undef to <8 x i64>931 %a3sm = mul <8 x i64> %a3sa, %a3sb932 %a3s = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a3sm)933 934 %a4za = zext <16 x i8> undef to <16 x i64>935 %a4zb = zext <16 x i8> undef to <16 x i64>936 %a4zm = mul <16 x i64> %a4za, %a4zb937 %a4z = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a4zm)938 939 %a4sa = sext <16 x i8> undef to <16 x i64>940 %a4sb = sext <16 x i8> undef to <16 x i64>941 %a4sm = mul <16 x i64> %a4sa, %a4sb942 %a4s = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a4sm)943 944 %a5za = zext <1 x i16> undef to <1 x i64>945 %a5zb = zext <1 x i16> undef to <1 x i64>946 %a5zm = mul <1 x i64> %a5za, %a5zb947 %a5z = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a5zm)948 949 %a5sa = sext <1 x i16> undef to <1 x i64>950 %a5sb = sext <1 x i16> undef to <1 x i64>951 %a5sm = mul <1 x i64> %a5sa, %a5sb952 %a5s = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a5sm)953 954 %a6za = zext <2 x i16> undef to <2 x i64>955 %a6zb = zext <2 x i16> undef to <2 x i64>956 %a6zm = mul <2 x i64> %a6za, %a6zb957 %a6z = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a6zm)958 959 %a6sa = sext <2 x i16> undef to <2 x i64>960 %a6sb = sext <2 x i16> undef to <2 x i64>961 %a6sm = mul <2 x i64> %a6sa, %a6sb962 %a6s = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a6sm)963 964 %a7za = zext <4 x i16> undef to <4 x i64>965 %a7zb = zext <4 x i16> undef to <4 x i64>966 %a7zm = mul <4 x i64> %a7za, %a7zb967 %a7z = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a7zm)968 969 %a7sa = sext <4 x i16> undef to <4 x i64>970 %a7sb = sext <4 x i16> undef to <4 x i64>971 %a7sm = mul <4 x i64> %a7sa, %a7sb972 %a7s = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a7sm)973 974 %a8za = zext <8 x i16> undef to <8 x i64>975 %a8zb = zext <8 x i16> undef to <8 x i64>976 %a8zm = mul <8 x i64> %a8za, %a8zb977 %a8z = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a8zm)978 979 %a8sa = sext <8 x i16> undef to <8 x i64>980 %a8sb = sext <8 x i16> undef to <8 x i64>981 %a8sm = mul <8 x i64> %a8sa, %a8sb982 %a8s = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a8sm)983 984 %a9za = zext <16 x i16> undef to <16 x i64>985 %a9zb = zext <16 x i16> undef to <16 x i64>986 %a9zm = mul <16 x i64> %a9za, %a9zb987 %a9z = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a9zm)988 989 %a9sa = sext <16 x i16> undef to <16 x i64>990 %a9sb = sext <16 x i16> undef to <16 x i64>991 %a9sm = mul <16 x i64> %a9sa, %a9sb992 %a9s = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a9sm)993 994 %a10za = zext <1 x i32> undef to <1 x i64>995 %a10zb = zext <1 x i32> undef to <1 x i64>996 %a10zm = mul <1 x i64> %a10za, %a10zb997 %a10z = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a10zm)998 999 %a10sa = sext <1 x i32> undef to <1 x i64>1000 %a10sb = sext <1 x i32> undef to <1 x i64>1001 %a10sm = mul <1 x i64> %a10sa, %a10sb1002 %a10s = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a10sm)1003 1004 %a11za = zext <2 x i32> undef to <2 x i64>1005 %a11zb = zext <2 x i32> undef to <2 x i64>1006 %a11zm = mul <2 x i64> %a11za, %a11zb1007 %a11z = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a11zm)1008 1009 %a11sa = sext <2 x i32> undef to <2 x i64>1010 %a11sb = sext <2 x i32> undef to <2 x i64>1011 %a11sm = mul <2 x i64> %a11sa, %a11sb1012 %a11s = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a11sm)1013 1014 %a12za = zext <4 x i32> undef to <4 x i64>1015 %a12zb = zext <4 x i32> undef to <4 x i64>1016 %a12zm = mul <4 x i64> %a12za, %a12zb1017 %a12z = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a12zm)1018 1019 %a12sa = sext <4 x i32> undef to <4 x i64>1020 %a12sb = sext <4 x i32> undef to <4 x i64>1021 %a12sm = mul <4 x i64> %a12sa, %a12sb1022 %a12s = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a12sm)1023 1024 %a13za = zext <8 x i32> undef to <8 x i64>1025 %a13zb = zext <8 x i32> undef to <8 x i64>1026 %a13zm = mul <8 x i64> %a13za, %a13zb1027 %a13z = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a13zm)1028 1029 %a13sa = sext <8 x i32> undef to <8 x i64>1030 %a13sb = sext <8 x i32> undef to <8 x i64>1031 %a13sm = mul <8 x i64> %a13sa, %a13sb1032 %a13s = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a13sm)1033 1034 %a14za = zext <16 x i32> undef to <16 x i64>1035 %a14zb = zext <16 x i32> undef to <16 x i64>1036 %a14zm = mul <16 x i64> %a14za, %a14zb1037 %a14z = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a14zm)1038 1039 %a14sa = sext <16 x i32> undef to <16 x i64>1040 %a14sb = sext <16 x i32> undef to <16 x i64>1041 %a14sm = mul <16 x i64> %a14sa, %a14sb1042 %a14s = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a14sm)1043 1044 %a15m = mul <1 x i64> undef, undef1045 %a15 = call i64 @llvm.vector.reduce.add.v1i64(<1 x i64> %a15m)1046 1047 %a16m = mul <2 x i64> undef, undef1048 %a16 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a16m)1049 1050 %a17m = mul <4 x i64> undef, undef1051 %a17 = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %a17m)1052 1053 %a18m = mul <8 x i64> undef, undef1054 %a18 = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %a18m)1055 1056 %a19m = mul <16 x i64> undef, undef1057 %a19 = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %a19m)1058 1059 ret void1060}1061 1062declare i16 @llvm.vector.reduce.add.v16i16(<16 x i16>)1063declare i16 @llvm.vector.reduce.add.v1i16(<1 x i16>)1064declare i16 @llvm.vector.reduce.add.v2i16(<2 x i16>)1065declare i16 @llvm.vector.reduce.add.v4i16(<4 x i16>)1066declare i16 @llvm.vector.reduce.add.v8i16(<8 x i16>)1067declare i32 @llvm.vector.reduce.add.v16i32(<16 x i32>)1068declare i32 @llvm.vector.reduce.add.v1i32(<1 x i32>)1069declare i32 @llvm.vector.reduce.add.v2i32(<2 x i32>)1070declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>)1071declare i32 @llvm.vector.reduce.add.v8i32(<8 x i32>)1072declare i64 @llvm.vector.reduce.add.v16i64(<16 x i64>)1073declare i64 @llvm.vector.reduce.add.v1i64(<1 x i64>)1074declare i64 @llvm.vector.reduce.add.v2i64(<2 x i64>)1075declare i64 @llvm.vector.reduce.add.v4i64(<4 x i64>)1076declare i64 @llvm.vector.reduce.add.v8i64(<8 x i64>)1077declare i8 @llvm.vector.reduce.add.v16i8(<16 x i8>)1078declare i8 @llvm.vector.reduce.add.v1i8(<1 x i8>)1079declare i8 @llvm.vector.reduce.add.v2i8(<2 x i8>)1080declare i8 @llvm.vector.reduce.add.v4i8(<4 x i8>)1081declare i8 @llvm.vector.reduce.add.v8i8(<8 x i8>)1082