[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / Analysis / CostModel / AArch64 / arith-widening.ll
blob303bcfa289577ce60e4289deb831494fb8c161bd
1 ; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2 ; RUN: opt < %s -mtriple=aarch64-unknown-linux-gnu -passes="print<cost-model>" -cost-kind=throughput 2>&1 -disable-output | FileCheck %s
4 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
6 define void @extaddv1(i8 %i8, i16 %i16, i32 %i32, i64 %i64)  {
7 ; CHECK-LABEL: 'extaddv1'
8 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_16 = sext i8 %i8 to i16
9 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_16 = add i16 %i16, %sw_8_16
10 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_16 = sext i8 %i8 to i16
11 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_16 = sext i8 %i8 to i16
12 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_16 = add i16 %sl1_8_16, %sl2_8_16
13 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_16 = zext i8 %i8 to i16
14 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_16 = add i16 %i16, %zw_8_16
15 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_16 = zext i8 %i8 to i16
16 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_16 = zext i8 %i8 to i16
17 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_16 = add i16 %zl1_8_16, %zl2_8_16
18 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_32 = sext i8 %i8 to i32
19 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_32 = add i32 %i32, %sw_8_32
20 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_32 = sext i8 %i8 to i32
21 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_32 = sext i8 %i8 to i32
22 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_32 = add i32 %sl1_8_32, %sl2_8_32
23 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_32 = zext i8 %i8 to i32
24 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_32 = add i32 %i32, %zw_8_32
25 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_32 = zext i8 %i8 to i32
26 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_32 = zext i8 %i8 to i32
27 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_32 = add i32 %zl1_8_32, %zl2_8_32
28 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_64 = sext i8 %i8 to i64
29 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_64 = add i64 %i64, %sw_8_64
30 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_64 = sext i8 %i8 to i64
31 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_64 = sext i8 %i8 to i64
32 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_64 = add i64 %sl1_8_64, %sl2_8_64
33 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_8_64 = zext i8 %i8 to i64
34 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_64 = add i64 %i64, %zw_8_64
35 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_8_64 = zext i8 %i8 to i64
36 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_8_64 = zext i8 %i8 to i64
37 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_64 = add i64 %zl1_8_64, %zl2_8_64
38 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_16_32 = sext i16 %i16 to i32
39 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_32 = add i32 %i32, %sw_16_32
40 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_16_32 = sext i16 %i16 to i32
41 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_16_32 = sext i16 %i16 to i32
42 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_32 = add i32 %sl1_16_32, %sl2_16_32
43 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_16_32 = zext i16 %i16 to i32
44 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_32 = add i32 %i32, %zw_16_32
45 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_16_32 = zext i16 %i16 to i32
46 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_16_32 = zext i16 %i16 to i32
47 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_32 = add i32 %zl1_16_32, %zl2_16_32
48 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_16_64 = sext i16 %i16 to i64
49 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_64 = add i64 %i64, %sw_16_64
50 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_16_64 = sext i16 %i16 to i64
51 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_16_64 = sext i16 %i16 to i64
52 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_64 = add i64 %sl1_16_64, %sl2_16_64
53 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_16_64 = zext i16 %i16 to i64
54 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_64 = add i64 %i64, %zw_16_64
55 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_16_64 = zext i16 %i16 to i64
56 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_16_64 = zext i16 %i16 to i64
57 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_64 = add i64 %zl1_16_64, %zl2_16_64
58 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_32_64 = sext i32 %i32 to i64
59 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_32_64 = add i64 %i64, %sw_32_64
60 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_32_64 = sext i32 %i32 to i64
61 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_32_64 = sext i32 %i32 to i64
62 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_32_64 = add i64 %sl1_32_64, %sl2_32_64
63 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_32_64 = zext i32 %i32 to i64
64 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_32_64 = add i64 %i64, %zw_32_64
65 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext i32 %i32 to i64
66 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext i32 %i32 to i64
67 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_32_64 = add i64 %zl1_32_64, %zl2_32_64
68 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
70   %sw_8_16 = sext i8 %i8 to i16
71   %asw_8_16 = add i16 %i16, %sw_8_16
72   %sl1_8_16 = sext i8 %i8 to i16
73   %sl2_8_16 = sext i8 %i8 to i16
74   %asl_8_16 = add i16 %sl1_8_16, %sl2_8_16
76   %zw_8_16 = zext i8 %i8 to i16
77   %azw_8_16 = add i16 %i16, %zw_8_16
78   %zl1_8_16 = zext i8 %i8 to i16
79   %zl2_8_16 = zext i8 %i8 to i16
80   %azl_8_16 = add i16 %zl1_8_16, %zl2_8_16
82   %sw_8_32 = sext i8 %i8 to i32
83   %asw_8_32 = add i32 %i32, %sw_8_32
84   %sl1_8_32 = sext i8 %i8 to i32
85   %sl2_8_32 = sext i8 %i8 to i32
86   %asl_8_32 = add i32 %sl1_8_32, %sl2_8_32
88   %zw_8_32 = zext i8 %i8 to i32
89   %azw_8_32 = add i32 %i32, %zw_8_32
90   %zl1_8_32 = zext i8 %i8 to i32
91   %zl2_8_32 = zext i8 %i8 to i32
92   %azl_8_32 = add i32 %zl1_8_32, %zl2_8_32
94   %sw_8_64 = sext i8 %i8 to i64
95   %asw_8_64 = add i64 %i64, %sw_8_64
96   %sl1_8_64 = sext i8 %i8 to i64
97   %sl2_8_64 = sext i8 %i8 to i64
98   %asl_8_64 = add i64 %sl1_8_64, %sl2_8_64
100   %zw_8_64 = zext i8 %i8 to i64
101   %azw_8_64 = add i64 %i64, %zw_8_64
102   %zl1_8_64 = zext i8 %i8 to i64
103   %zl2_8_64 = zext i8 %i8 to i64
104   %azl_8_64 = add i64 %zl1_8_64, %zl2_8_64
106   %sw_16_32 = sext i16 %i16 to i32
107   %asw_16_32 = add i32 %i32, %sw_16_32
108   %sl1_16_32 = sext i16 %i16 to i32
109   %sl2_16_32 = sext i16 %i16 to i32
110   %asl_16_32 = add i32 %sl1_16_32, %sl2_16_32
112   %zw_16_32 = zext i16 %i16 to i32
113   %azw_16_32 = add i32 %i32, %zw_16_32
114   %zl1_16_32 = zext i16 %i16 to i32
115   %zl2_16_32 = zext i16 %i16 to i32
116   %azl_16_32 = add i32 %zl1_16_32, %zl2_16_32
118   %sw_16_64 = sext i16 %i16 to i64
119   %asw_16_64 = add i64 %i64, %sw_16_64
120   %sl1_16_64 = sext i16 %i16 to i64
121   %sl2_16_64 = sext i16 %i16 to i64
122   %asl_16_64 = add i64 %sl1_16_64, %sl2_16_64
124   %zw_16_64 = zext i16 %i16 to i64
125   %azw_16_64 = add i64 %i64, %zw_16_64
126   %zl1_16_64 = zext i16 %i16 to i64
127   %zl2_16_64 = zext i16 %i16 to i64
128   %azl_16_64 = add i64 %zl1_16_64, %zl2_16_64
130   %sw_32_64 = sext i32 %i32 to i64
131   %asw_32_64 = add i64 %i64, %sw_32_64
132   %sl1_32_64 = sext i32 %i32 to i64
133   %sl2_32_64 = sext i32 %i32 to i64
134   %asl_32_64 = add i64 %sl1_32_64, %sl2_32_64
136   %zw_32_64 = zext i32 %i32 to i64
137   %azw_32_64 = add i64 %i64, %zw_32_64
138   %zl1_32_64 = zext i32 %i32 to i64
139   %zl2_32_64 = zext i32 %i32 to i64
140   %azl_32_64 = add i64 %zl1_32_64, %zl2_32_64
142   ret void
145 define void @extaddv2(<2 x i8> %i8, <2 x i16> %i16, <2 x i32> %i32, <2 x i64> %i64)  {
146 ; CHECK-LABEL: 'extaddv2'
147 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_16 = sext <2 x i8> %i8 to <2 x i16>
148 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_16 = add <2 x i16> %i16, %sw_8_16
149 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_16 = sext <2 x i8> %i8 to <2 x i16>
150 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_16 = sext <2 x i8> %i8 to <2 x i16>
151 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_16 = add <2 x i16> %sl1_8_16, %sl2_8_16
152 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_16 = zext <2 x i8> %i8 to <2 x i16>
153 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_16 = add <2 x i16> %i16, %zw_8_16
154 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_16 = zext <2 x i8> %i8 to <2 x i16>
155 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_16 = zext <2 x i8> %i8 to <2 x i16>
156 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_16 = add <2 x i16> %zl1_8_16, %zl2_8_16
157 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_32 = sext <2 x i8> %i8 to <2 x i32>
158 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_32 = add <2 x i32> %i32, %sw_8_32
159 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_32 = sext <2 x i8> %i8 to <2 x i32>
160 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_32 = sext <2 x i8> %i8 to <2 x i32>
161 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_32 = add <2 x i32> %sl1_8_32, %sl2_8_32
162 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_32 = zext <2 x i8> %i8 to <2 x i32>
163 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_32 = add <2 x i32> %i32, %zw_8_32
164 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_32 = zext <2 x i8> %i8 to <2 x i32>
165 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_32 = zext <2 x i8> %i8 to <2 x i32>
166 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_32 = add <2 x i32> %zl1_8_32, %zl2_8_32
167 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_64 = sext <2 x i8> %i8 to <2 x i64>
168 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_64 = add <2 x i64> %i64, %sw_8_64
169 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_64 = sext <2 x i8> %i8 to <2 x i64>
170 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_64 = sext <2 x i8> %i8 to <2 x i64>
171 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_64 = add <2 x i64> %sl1_8_64, %sl2_8_64
172 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_64 = zext <2 x i8> %i8 to <2 x i64>
173 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_64 = add <2 x i64> %i64, %zw_8_64
174 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_64 = zext <2 x i8> %i8 to <2 x i64>
175 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_64 = zext <2 x i8> %i8 to <2 x i64>
176 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_64 = add <2 x i64> %zl1_8_64, %zl2_8_64
177 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_16_32 = sext <2 x i16> %i16 to <2 x i32>
178 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_32 = add <2 x i32> %i32, %sw_16_32
179 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_16_32 = sext <2 x i16> %i16 to <2 x i32>
180 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_16_32 = sext <2 x i16> %i16 to <2 x i32>
181 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_32 = add <2 x i32> %sl1_16_32, %sl2_16_32
182 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_16_32 = zext <2 x i16> %i16 to <2 x i32>
183 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_32 = add <2 x i32> %i32, %zw_16_32
184 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_16_32 = zext <2 x i16> %i16 to <2 x i32>
185 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_16_32 = zext <2 x i16> %i16 to <2 x i32>
186 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_32 = add <2 x i32> %zl1_16_32, %zl2_16_32
187 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_16_64 = sext <2 x i16> %i16 to <2 x i64>
188 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_64 = add <2 x i64> %i64, %sw_16_64
189 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_16_64 = sext <2 x i16> %i16 to <2 x i64>
190 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_16_64 = sext <2 x i16> %i16 to <2 x i64>
191 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_64 = add <2 x i64> %sl1_16_64, %sl2_16_64
192 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_16_64 = zext <2 x i16> %i16 to <2 x i64>
193 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_64 = add <2 x i64> %i64, %zw_16_64
194 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_16_64 = zext <2 x i16> %i16 to <2 x i64>
195 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_16_64 = zext <2 x i16> %i16 to <2 x i64>
196 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_64 = add <2 x i64> %zl1_16_64, %zl2_16_64
197 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_32_64 = sext <2 x i32> %i32 to <2 x i64>
198 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_32_64 = add <2 x i64> %i64, %sw_32_64
199 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_32_64 = sext <2 x i32> %i32 to <2 x i64>
200 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_32_64 = sext <2 x i32> %i32 to <2 x i64>
201 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_32_64 = add <2 x i64> %sl1_32_64, %sl2_32_64
202 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_32_64 = zext <2 x i32> %i32 to <2 x i64>
203 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_32_64 = add <2 x i64> %i64, %zw_32_64
204 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext <2 x i32> %i32 to <2 x i64>
205 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext <2 x i32> %i32 to <2 x i64>
206 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_32_64 = add <2 x i64> %zl1_32_64, %zl2_32_64
207 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
209   %sw_8_16 = sext <2 x i8> %i8 to <2 x i16>
210   %asw_8_16 = add <2 x i16> %i16, %sw_8_16
211   %sl1_8_16 = sext <2 x i8> %i8 to <2 x i16>
212   %sl2_8_16 = sext <2 x i8> %i8 to <2 x i16>
213   %asl_8_16 = add <2 x i16> %sl1_8_16, %sl2_8_16
215   %zw_8_16 = zext <2 x i8> %i8 to <2 x i16>
216   %azw_8_16 = add <2 x i16> %i16, %zw_8_16
217   %zl1_8_16 = zext <2 x i8> %i8 to <2 x i16>
218   %zl2_8_16 = zext <2 x i8> %i8 to <2 x i16>
219   %azl_8_16 = add <2 x i16> %zl1_8_16, %zl2_8_16
221   %sw_8_32 = sext <2 x i8> %i8 to <2 x i32>
222   %asw_8_32 = add <2 x i32> %i32, %sw_8_32
223   %sl1_8_32 = sext <2 x i8> %i8 to <2 x i32>
224   %sl2_8_32 = sext <2 x i8> %i8 to <2 x i32>
225   %asl_8_32 = add <2 x i32> %sl1_8_32, %sl2_8_32
227   %zw_8_32 = zext <2 x i8> %i8 to <2 x i32>
228   %azw_8_32 = add <2 x i32> %i32, %zw_8_32
229   %zl1_8_32 = zext <2 x i8> %i8 to <2 x i32>
230   %zl2_8_32 = zext <2 x i8> %i8 to <2 x i32>
231   %azl_8_32 = add <2 x i32> %zl1_8_32, %zl2_8_32
233   %sw_8_64 = sext <2 x i8> %i8 to <2 x i64>
234   %asw_8_64 = add <2 x i64> %i64, %sw_8_64
235   %sl1_8_64 = sext <2 x i8> %i8 to <2 x i64>
236   %sl2_8_64 = sext <2 x i8> %i8 to <2 x i64>
237   %asl_8_64 = add <2 x i64> %sl1_8_64, %sl2_8_64
239   %zw_8_64 = zext <2 x i8> %i8 to <2 x i64>
240   %azw_8_64 = add <2 x i64> %i64, %zw_8_64
241   %zl1_8_64 = zext <2 x i8> %i8 to <2 x i64>
242   %zl2_8_64 = zext <2 x i8> %i8 to <2 x i64>
243   %azl_8_64 = add <2 x i64> %zl1_8_64, %zl2_8_64
245   %sw_16_32 = sext <2 x i16> %i16 to <2 x i32>
246   %asw_16_32 = add <2 x i32> %i32, %sw_16_32
247   %sl1_16_32 = sext <2 x i16> %i16 to <2 x i32>
248   %sl2_16_32 = sext <2 x i16> %i16 to <2 x i32>
249   %asl_16_32 = add <2 x i32> %sl1_16_32, %sl2_16_32
251   %zw_16_32 = zext <2 x i16> %i16 to <2 x i32>
252   %azw_16_32 = add <2 x i32> %i32, %zw_16_32
253   %zl1_16_32 = zext <2 x i16> %i16 to <2 x i32>
254   %zl2_16_32 = zext <2 x i16> %i16 to <2 x i32>
255   %azl_16_32 = add <2 x i32> %zl1_16_32, %zl2_16_32
257   %sw_16_64 = sext <2 x i16> %i16 to <2 x i64>
258   %asw_16_64 = add <2 x i64> %i64, %sw_16_64
259   %sl1_16_64 = sext <2 x i16> %i16 to <2 x i64>
260   %sl2_16_64 = sext <2 x i16> %i16 to <2 x i64>
261   %asl_16_64 = add <2 x i64> %sl1_16_64, %sl2_16_64
263   %zw_16_64 = zext <2 x i16> %i16 to <2 x i64>
264   %azw_16_64 = add <2 x i64> %i64, %zw_16_64
265   %zl1_16_64 = zext <2 x i16> %i16 to <2 x i64>
266   %zl2_16_64 = zext <2 x i16> %i16 to <2 x i64>
267   %azl_16_64 = add <2 x i64> %zl1_16_64, %zl2_16_64
269   %sw_32_64 = sext <2 x i32> %i32 to <2 x i64>
270   %asw_32_64 = add <2 x i64> %i64, %sw_32_64
271   %sl1_32_64 = sext <2 x i32> %i32 to <2 x i64>
272   %sl2_32_64 = sext <2 x i32> %i32 to <2 x i64>
273   %asl_32_64 = add <2 x i64> %sl1_32_64, %sl2_32_64
275   %zw_32_64 = zext <2 x i32> %i32 to <2 x i64>
276   %azw_32_64 = add <2 x i64> %i64, %zw_32_64
277   %zl1_32_64 = zext <2 x i32> %i32 to <2 x i64>
278   %zl2_32_64 = zext <2 x i32> %i32 to <2 x i64>
279   %azl_32_64 = add <2 x i64> %zl1_32_64, %zl2_32_64
281   ret void
284 define void @extaddv4(<4 x i8> %i8, <4 x i16> %i16, <4 x i32> %i32, <4 x i64> %i64)  {
285 ; CHECK-LABEL: 'extaddv4'
286 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_16 = sext <4 x i8> %i8 to <4 x i16>
287 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_16 = add <4 x i16> %i16, %sw_8_16
288 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_16 = sext <4 x i8> %i8 to <4 x i16>
289 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_16 = sext <4 x i8> %i8 to <4 x i16>
290 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_16 = add <4 x i16> %sl1_8_16, %sl2_8_16
291 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_16 = zext <4 x i8> %i8 to <4 x i16>
292 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_16 = add <4 x i16> %i16, %zw_8_16
293 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_16 = zext <4 x i8> %i8 to <4 x i16>
294 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_16 = zext <4 x i8> %i8 to <4 x i16>
295 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_16 = add <4 x i16> %zl1_8_16, %zl2_8_16
296 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_32 = sext <4 x i8> %i8 to <4 x i32>
297 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_32 = add <4 x i32> %i32, %sw_8_32
298 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_32 = sext <4 x i8> %i8 to <4 x i32>
299 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_32 = sext <4 x i8> %i8 to <4 x i32>
300 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_32 = add <4 x i32> %sl1_8_32, %sl2_8_32
301 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_32 = zext <4 x i8> %i8 to <4 x i32>
302 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_32 = add <4 x i32> %i32, %zw_8_32
303 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_32 = zext <4 x i8> %i8 to <4 x i32>
304 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_32 = zext <4 x i8> %i8 to <4 x i32>
305 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_32 = add <4 x i32> %zl1_8_32, %zl2_8_32
306 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sw_8_64 = sext <4 x i8> %i8 to <4 x i64>
307 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_8_64 = add <4 x i64> %i64, %sw_8_64
308 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl1_8_64 = sext <4 x i8> %i8 to <4 x i64>
309 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl2_8_64 = sext <4 x i8> %i8 to <4 x i64>
310 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_8_64 = add <4 x i64> %sl1_8_64, %sl2_8_64
311 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zw_8_64 = zext <4 x i8> %i8 to <4 x i64>
312 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_8_64 = add <4 x i64> %i64, %zw_8_64
313 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl1_8_64 = zext <4 x i8> %i8 to <4 x i64>
314 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl2_8_64 = zext <4 x i8> %i8 to <4 x i64>
315 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_8_64 = add <4 x i64> %zl1_8_64, %zl2_8_64
316 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_16_32 = sext <4 x i16> %i16 to <4 x i32>
317 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_32 = add <4 x i32> %i32, %sw_16_32
318 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_16_32 = sext <4 x i16> %i16 to <4 x i32>
319 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_16_32 = sext <4 x i16> %i16 to <4 x i32>
320 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_32 = add <4 x i32> %sl1_16_32, %sl2_16_32
321 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_16_32 = zext <4 x i16> %i16 to <4 x i32>
322 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_32 = add <4 x i32> %i32, %zw_16_32
323 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_16_32 = zext <4 x i16> %i16 to <4 x i32>
324 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_16_32 = zext <4 x i16> %i16 to <4 x i32>
325 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_32 = add <4 x i32> %zl1_16_32, %zl2_16_32
326 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sw_16_64 = sext <4 x i16> %i16 to <4 x i64>
327 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_16_64 = add <4 x i64> %i64, %sw_16_64
328 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl1_16_64 = sext <4 x i16> %i16 to <4 x i64>
329 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl2_16_64 = sext <4 x i16> %i16 to <4 x i64>
330 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_16_64 = add <4 x i64> %sl1_16_64, %sl2_16_64
331 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zw_16_64 = zext <4 x i16> %i16 to <4 x i64>
332 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_16_64 = add <4 x i64> %i64, %zw_16_64
333 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl1_16_64 = zext <4 x i16> %i16 to <4 x i64>
334 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl2_16_64 = zext <4 x i16> %i16 to <4 x i64>
335 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_16_64 = add <4 x i64> %zl1_16_64, %zl2_16_64
336 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_32_64 = sext <4 x i32> %i32 to <4 x i64>
337 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_32_64 = add <4 x i64> %i64, %sw_32_64
338 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_32_64 = sext <4 x i32> %i32 to <4 x i64>
339 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_32_64 = sext <4 x i32> %i32 to <4 x i64>
340 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_32_64 = add <4 x i64> %sl1_32_64, %sl2_32_64
341 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_32_64 = zext <4 x i32> %i32 to <4 x i64>
342 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_32_64 = add <4 x i64> %i64, %zw_32_64
343 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext <4 x i32> %i32 to <4 x i64>
344 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext <4 x i32> %i32 to <4 x i64>
345 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_32_64 = add <4 x i64> %zl1_32_64, %zl2_32_64
346 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
348   %sw_8_16 = sext <4 x i8> %i8 to <4 x i16>
349   %asw_8_16 = add <4 x i16> %i16, %sw_8_16
350   %sl1_8_16 = sext <4 x i8> %i8 to <4 x i16>
351   %sl2_8_16 = sext <4 x i8> %i8 to <4 x i16>
352   %asl_8_16 = add <4 x i16> %sl1_8_16, %sl2_8_16
354   %zw_8_16 = zext <4 x i8> %i8 to <4 x i16>
355   %azw_8_16 = add <4 x i16> %i16, %zw_8_16
356   %zl1_8_16 = zext <4 x i8> %i8 to <4 x i16>
357   %zl2_8_16 = zext <4 x i8> %i8 to <4 x i16>
358   %azl_8_16 = add <4 x i16> %zl1_8_16, %zl2_8_16
360   %sw_8_32 = sext <4 x i8> %i8 to <4 x i32>
361   %asw_8_32 = add <4 x i32> %i32, %sw_8_32
362   %sl1_8_32 = sext <4 x i8> %i8 to <4 x i32>
363   %sl2_8_32 = sext <4 x i8> %i8 to <4 x i32>
364   %asl_8_32 = add <4 x i32> %sl1_8_32, %sl2_8_32
366   %zw_8_32 = zext <4 x i8> %i8 to <4 x i32>
367   %azw_8_32 = add <4 x i32> %i32, %zw_8_32
368   %zl1_8_32 = zext <4 x i8> %i8 to <4 x i32>
369   %zl2_8_32 = zext <4 x i8> %i8 to <4 x i32>
370   %azl_8_32 = add <4 x i32> %zl1_8_32, %zl2_8_32
372   %sw_8_64 = sext <4 x i8> %i8 to <4 x i64>
373   %asw_8_64 = add <4 x i64> %i64, %sw_8_64
374   %sl1_8_64 = sext <4 x i8> %i8 to <4 x i64>
375   %sl2_8_64 = sext <4 x i8> %i8 to <4 x i64>
376   %asl_8_64 = add <4 x i64> %sl1_8_64, %sl2_8_64
378   %zw_8_64 = zext <4 x i8> %i8 to <4 x i64>
379   %azw_8_64 = add <4 x i64> %i64, %zw_8_64
380   %zl1_8_64 = zext <4 x i8> %i8 to <4 x i64>
381   %zl2_8_64 = zext <4 x i8> %i8 to <4 x i64>
382   %azl_8_64 = add <4 x i64> %zl1_8_64, %zl2_8_64
384   %sw_16_32 = sext <4 x i16> %i16 to <4 x i32>
385   %asw_16_32 = add <4 x i32> %i32, %sw_16_32
386   %sl1_16_32 = sext <4 x i16> %i16 to <4 x i32>
387   %sl2_16_32 = sext <4 x i16> %i16 to <4 x i32>
388   %asl_16_32 = add <4 x i32> %sl1_16_32, %sl2_16_32
390   %zw_16_32 = zext <4 x i16> %i16 to <4 x i32>
391   %azw_16_32 = add <4 x i32> %i32, %zw_16_32
392   %zl1_16_32 = zext <4 x i16> %i16 to <4 x i32>
393   %zl2_16_32 = zext <4 x i16> %i16 to <4 x i32>
394   %azl_16_32 = add <4 x i32> %zl1_16_32, %zl2_16_32
396   %sw_16_64 = sext <4 x i16> %i16 to <4 x i64>
397   %asw_16_64 = add <4 x i64> %i64, %sw_16_64
398   %sl1_16_64 = sext <4 x i16> %i16 to <4 x i64>
399   %sl2_16_64 = sext <4 x i16> %i16 to <4 x i64>
400   %asl_16_64 = add <4 x i64> %sl1_16_64, %sl2_16_64
402   %zw_16_64 = zext <4 x i16> %i16 to <4 x i64>
403   %azw_16_64 = add <4 x i64> %i64, %zw_16_64
404   %zl1_16_64 = zext <4 x i16> %i16 to <4 x i64>
405   %zl2_16_64 = zext <4 x i16> %i16 to <4 x i64>
406   %azl_16_64 = add <4 x i64> %zl1_16_64, %zl2_16_64
408   %sw_32_64 = sext <4 x i32> %i32 to <4 x i64>
409   %asw_32_64 = add <4 x i64> %i64, %sw_32_64
410   %sl1_32_64 = sext <4 x i32> %i32 to <4 x i64>
411   %sl2_32_64 = sext <4 x i32> %i32 to <4 x i64>
412   %asl_32_64 = add <4 x i64> %sl1_32_64, %sl2_32_64
414   %zw_32_64 = zext <4 x i32> %i32 to <4 x i64>
415   %azw_32_64 = add <4 x i64> %i64, %zw_32_64
416   %zl1_32_64 = zext <4 x i32> %i32 to <4 x i64>
417   %zl2_32_64 = zext <4 x i32> %i32 to <4 x i64>
418   %azl_32_64 = add <4 x i64> %zl1_32_64, %zl2_32_64
420   ret void
423 define void @extaddv8(<8 x i8> %i8, <8 x i16> %i16, <8 x i32> %i32, <8 x i64> %i64)  {
424 ; CHECK-LABEL: 'extaddv8'
425 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_8_16 = sext <8 x i8> %i8 to <8 x i16>
426 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_16 = add <8 x i16> %i16, %sw_8_16
427 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
428 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_8_16 = sext <8 x i8> %i8 to <8 x i16>
429 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_16 = add <8 x i16> %sl1_8_16, %sl2_8_16
430 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_8_16 = zext <8 x i8> %i8 to <8 x i16>
431 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_16 = add <8 x i16> %i16, %zw_8_16
432 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
433 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_8_16 = zext <8 x i8> %i8 to <8 x i16>
434 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_16 = add <8 x i16> %zl1_8_16, %zl2_8_16
435 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sw_8_32 = sext <8 x i8> %i8 to <8 x i32>
436 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_8_32 = add <8 x i32> %i32, %sw_8_32
437 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl1_8_32 = sext <8 x i8> %i8 to <8 x i32>
438 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl2_8_32 = sext <8 x i8> %i8 to <8 x i32>
439 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_8_32 = add <8 x i32> %sl1_8_32, %sl2_8_32
440 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zw_8_32 = zext <8 x i8> %i8 to <8 x i32>
441 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_8_32 = add <8 x i32> %i32, %zw_8_32
442 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl1_8_32 = zext <8 x i8> %i8 to <8 x i32>
443 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl2_8_32 = zext <8 x i8> %i8 to <8 x i32>
444 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_8_32 = add <8 x i32> %zl1_8_32, %zl2_8_32
445 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %sw_8_64 = sext <8 x i8> %i8 to <8 x i64>
446 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asw_8_64 = add <8 x i64> %i64, %sw_8_64
447 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %sl1_8_64 = sext <8 x i8> %i8 to <8 x i64>
448 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %sl2_8_64 = sext <8 x i8> %i8 to <8 x i64>
449 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asl_8_64 = add <8 x i64> %sl1_8_64, %sl2_8_64
450 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %zw_8_64 = zext <8 x i8> %i8 to <8 x i64>
451 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azw_8_64 = add <8 x i64> %i64, %zw_8_64
452 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %zl1_8_64 = zext <8 x i8> %i8 to <8 x i64>
453 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %zl2_8_64 = zext <8 x i8> %i8 to <8 x i64>
454 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azl_8_64 = add <8 x i64> %zl1_8_64, %zl2_8_64
455 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_16_32 = sext <8 x i16> %i16 to <8 x i32>
456 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_16_32 = add <8 x i32> %i32, %sw_16_32
457 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_16_32 = sext <8 x i16> %i16 to <8 x i32>
458 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_16_32 = sext <8 x i16> %i16 to <8 x i32>
459 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_16_32 = add <8 x i32> %sl1_16_32, %sl2_16_32
460 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_16_32 = zext <8 x i16> %i16 to <8 x i32>
461 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_16_32 = add <8 x i32> %i32, %zw_16_32
462 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_16_32 = zext <8 x i16> %i16 to <8 x i32>
463 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_16_32 = zext <8 x i16> %i16 to <8 x i32>
464 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_16_32 = add <8 x i32> %zl1_16_32, %zl2_16_32
465 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sw_16_64 = sext <8 x i16> %i16 to <8 x i64>
466 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asw_16_64 = add <8 x i64> %i64, %sw_16_64
467 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sl1_16_64 = sext <8 x i16> %i16 to <8 x i64>
468 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sl2_16_64 = sext <8 x i16> %i16 to <8 x i64>
469 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asl_16_64 = add <8 x i64> %sl1_16_64, %sl2_16_64
470 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zw_16_64 = zext <8 x i16> %i16 to <8 x i64>
471 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azw_16_64 = add <8 x i64> %i64, %zw_16_64
472 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zl1_16_64 = zext <8 x i16> %i16 to <8 x i64>
473 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zl2_16_64 = zext <8 x i16> %i16 to <8 x i64>
474 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azl_16_64 = add <8 x i64> %zl1_16_64, %zl2_16_64
475 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_32_64 = sext <8 x i32> %i32 to <8 x i64>
476 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asw_32_64 = add <8 x i64> %i64, %sw_32_64
477 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_32_64 = sext <8 x i32> %i32 to <8 x i64>
478 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_32_64 = sext <8 x i32> %i32 to <8 x i64>
479 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asl_32_64 = add <8 x i64> %sl1_32_64, %sl2_32_64
480 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_32_64 = zext <8 x i32> %i32 to <8 x i64>
481 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azw_32_64 = add <8 x i64> %i64, %zw_32_64
482 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext <8 x i32> %i32 to <8 x i64>
483 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext <8 x i32> %i32 to <8 x i64>
484 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azl_32_64 = add <8 x i64> %zl1_32_64, %zl2_32_64
485 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
487   %sw_8_16 = sext <8 x i8> %i8 to <8 x i16>
488   %asw_8_16 = add <8 x i16> %i16, %sw_8_16
489   %sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
490   %sl2_8_16 = sext <8 x i8> %i8 to <8 x i16>
491   %asl_8_16 = add <8 x i16> %sl1_8_16, %sl2_8_16
493   %zw_8_16 = zext <8 x i8> %i8 to <8 x i16>
494   %azw_8_16 = add <8 x i16> %i16, %zw_8_16
495   %zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
496   %zl2_8_16 = zext <8 x i8> %i8 to <8 x i16>
497   %azl_8_16 = add <8 x i16> %zl1_8_16, %zl2_8_16
499   %sw_8_32 = sext <8 x i8> %i8 to <8 x i32>
500   %asw_8_32 = add <8 x i32> %i32, %sw_8_32
501   %sl1_8_32 = sext <8 x i8> %i8 to <8 x i32>
502   %sl2_8_32 = sext <8 x i8> %i8 to <8 x i32>
503   %asl_8_32 = add <8 x i32> %sl1_8_32, %sl2_8_32
505   %zw_8_32 = zext <8 x i8> %i8 to <8 x i32>
506   %azw_8_32 = add <8 x i32> %i32, %zw_8_32
507   %zl1_8_32 = zext <8 x i8> %i8 to <8 x i32>
508   %zl2_8_32 = zext <8 x i8> %i8 to <8 x i32>
509   %azl_8_32 = add <8 x i32> %zl1_8_32, %zl2_8_32
511   %sw_8_64 = sext <8 x i8> %i8 to <8 x i64>
512   %asw_8_64 = add <8 x i64> %i64, %sw_8_64
513   %sl1_8_64 = sext <8 x i8> %i8 to <8 x i64>
514   %sl2_8_64 = sext <8 x i8> %i8 to <8 x i64>
515   %asl_8_64 = add <8 x i64> %sl1_8_64, %sl2_8_64
517   %zw_8_64 = zext <8 x i8> %i8 to <8 x i64>
518   %azw_8_64 = add <8 x i64> %i64, %zw_8_64
519   %zl1_8_64 = zext <8 x i8> %i8 to <8 x i64>
520   %zl2_8_64 = zext <8 x i8> %i8 to <8 x i64>
521   %azl_8_64 = add <8 x i64> %zl1_8_64, %zl2_8_64
523   %sw_16_32 = sext <8 x i16> %i16 to <8 x i32>
524   %asw_16_32 = add <8 x i32> %i32, %sw_16_32
525   %sl1_16_32 = sext <8 x i16> %i16 to <8 x i32>
526   %sl2_16_32 = sext <8 x i16> %i16 to <8 x i32>
527   %asl_16_32 = add <8 x i32> %sl1_16_32, %sl2_16_32
529   %zw_16_32 = zext <8 x i16> %i16 to <8 x i32>
530   %azw_16_32 = add <8 x i32> %i32, %zw_16_32
531   %zl1_16_32 = zext <8 x i16> %i16 to <8 x i32>
532   %zl2_16_32 = zext <8 x i16> %i16 to <8 x i32>
533   %azl_16_32 = add <8 x i32> %zl1_16_32, %zl2_16_32
535   %sw_16_64 = sext <8 x i16> %i16 to <8 x i64>
536   %asw_16_64 = add <8 x i64> %i64, %sw_16_64
537   %sl1_16_64 = sext <8 x i16> %i16 to <8 x i64>
538   %sl2_16_64 = sext <8 x i16> %i16 to <8 x i64>
539   %asl_16_64 = add <8 x i64> %sl1_16_64, %sl2_16_64
541   %zw_16_64 = zext <8 x i16> %i16 to <8 x i64>
542   %azw_16_64 = add <8 x i64> %i64, %zw_16_64
543   %zl1_16_64 = zext <8 x i16> %i16 to <8 x i64>
544   %zl2_16_64 = zext <8 x i16> %i16 to <8 x i64>
545   %azl_16_64 = add <8 x i64> %zl1_16_64, %zl2_16_64
547   %sw_32_64 = sext <8 x i32> %i32 to <8 x i64>
548   %asw_32_64 = add <8 x i64> %i64, %sw_32_64
549   %sl1_32_64 = sext <8 x i32> %i32 to <8 x i64>
550   %sl2_32_64 = sext <8 x i32> %i32 to <8 x i64>
551   %asl_32_64 = add <8 x i64> %sl1_32_64, %sl2_32_64
553   %zw_32_64 = zext <8 x i32> %i32 to <8 x i64>
554   %azw_32_64 = add <8 x i64> %i64, %zw_32_64
555   %zl1_32_64 = zext <8 x i32> %i32 to <8 x i64>
556   %zl2_32_64 = zext <8 x i32> %i32 to <8 x i64>
557   %azl_32_64 = add <8 x i64> %zl1_32_64, %zl2_32_64
559   ret void
562 define void @extaddv16(<16 x i8> %i8, <16 x i16> %i16, <16 x i32> %i32, <16 x i64> %i64)  {
563 ; CHECK-LABEL: 'extaddv16'
564 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_8_16 = sext <16 x i8> %i8 to <16 x i16>
565 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_8_16 = add <16 x i16> %i16, %sw_8_16
566 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_8_16 = sext <16 x i8> %i8 to <16 x i16>
567 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_8_16 = sext <16 x i8> %i8 to <16 x i16>
568 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_8_16 = add <16 x i16> %sl1_8_16, %sl2_8_16
569 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_8_16 = zext <16 x i8> %i8 to <16 x i16>
570 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_8_16 = add <16 x i16> %i16, %zw_8_16
571 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_8_16 = zext <16 x i8> %i8 to <16 x i16>
572 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_8_16 = zext <16 x i8> %i8 to <16 x i16>
573 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_8_16 = add <16 x i16> %zl1_8_16, %zl2_8_16
574 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sw_8_32 = sext <16 x i8> %i8 to <16 x i32>
575 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asw_8_32 = add <16 x i32> %i32, %sw_8_32
576 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sl1_8_32 = sext <16 x i8> %i8 to <16 x i32>
577 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sl2_8_32 = sext <16 x i8> %i8 to <16 x i32>
578 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asl_8_32 = add <16 x i32> %sl1_8_32, %sl2_8_32
579 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zw_8_32 = zext <16 x i8> %i8 to <16 x i32>
580 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azw_8_32 = add <16 x i32> %i32, %zw_8_32
581 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zl1_8_32 = zext <16 x i8> %i8 to <16 x i32>
582 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zl2_8_32 = zext <16 x i8> %i8 to <16 x i32>
583 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azl_8_32 = add <16 x i32> %zl1_8_32, %zl2_8_32
584 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %sw_8_64 = sext <16 x i8> %i8 to <16 x i64>
585 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %asw_8_64 = add <16 x i64> %i64, %sw_8_64
586 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %sl1_8_64 = sext <16 x i8> %i8 to <16 x i64>
587 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %sl2_8_64 = sext <16 x i8> %i8 to <16 x i64>
588 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %asl_8_64 = add <16 x i64> %sl1_8_64, %sl2_8_64
589 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %zw_8_64 = zext <16 x i8> %i8 to <16 x i64>
590 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %azw_8_64 = add <16 x i64> %i64, %zw_8_64
591 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %zl1_8_64 = zext <16 x i8> %i8 to <16 x i64>
592 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %zl2_8_64 = zext <16 x i8> %i8 to <16 x i64>
593 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %azl_8_64 = add <16 x i64> %zl1_8_64, %zl2_8_64
594 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_16_32 = sext <16 x i16> %i16 to <16 x i32>
595 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asw_16_32 = add <16 x i32> %i32, %sw_16_32
596 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_16_32 = sext <16 x i16> %i16 to <16 x i32>
597 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_16_32 = sext <16 x i16> %i16 to <16 x i32>
598 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asl_16_32 = add <16 x i32> %sl1_16_32, %sl2_16_32
599 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_16_32 = zext <16 x i16> %i16 to <16 x i32>
600 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azw_16_32 = add <16 x i32> %i32, %zw_16_32
601 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_16_32 = zext <16 x i16> %i16 to <16 x i32>
602 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_16_32 = zext <16 x i16> %i16 to <16 x i32>
603 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azl_16_32 = add <16 x i32> %zl1_16_32, %zl2_16_32
604 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %sw_16_64 = sext <16 x i16> %i16 to <16 x i64>
605 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %asw_16_64 = add <16 x i64> %i64, %sw_16_64
606 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %sl1_16_64 = sext <16 x i16> %i16 to <16 x i64>
607 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %sl2_16_64 = sext <16 x i16> %i16 to <16 x i64>
608 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %asl_16_64 = add <16 x i64> %sl1_16_64, %sl2_16_64
609 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %zw_16_64 = zext <16 x i16> %i16 to <16 x i64>
610 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %azw_16_64 = add <16 x i64> %i64, %zw_16_64
611 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %zl1_16_64 = zext <16 x i16> %i16 to <16 x i64>
612 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %zl2_16_64 = zext <16 x i16> %i16 to <16 x i64>
613 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %azl_16_64 = add <16 x i64> %zl1_16_64, %zl2_16_64
614 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_32_64 = sext <16 x i32> %i32 to <16 x i64>
615 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %asw_32_64 = add <16 x i64> %i64, %sw_32_64
616 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_32_64 = sext <16 x i32> %i32 to <16 x i64>
617 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_32_64 = sext <16 x i32> %i32 to <16 x i64>
618 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %asl_32_64 = add <16 x i64> %sl1_32_64, %sl2_32_64
619 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_32_64 = zext <16 x i32> %i32 to <16 x i64>
620 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %azw_32_64 = add <16 x i64> %i64, %zw_32_64
621 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext <16 x i32> %i32 to <16 x i64>
622 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext <16 x i32> %i32 to <16 x i64>
623 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %azl_32_64 = add <16 x i64> %zl1_32_64, %zl2_32_64
624 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
626   %sw_8_16 = sext <16 x i8> %i8 to <16 x i16>
627   %asw_8_16 = add <16 x i16> %i16, %sw_8_16
628   %sl1_8_16 = sext <16 x i8> %i8 to <16 x i16>
629   %sl2_8_16 = sext <16 x i8> %i8 to <16 x i16>
630   %asl_8_16 = add <16 x i16> %sl1_8_16, %sl2_8_16
632   %zw_8_16 = zext <16 x i8> %i8 to <16 x i16>
633   %azw_8_16 = add <16 x i16> %i16, %zw_8_16
634   %zl1_8_16 = zext <16 x i8> %i8 to <16 x i16>
635   %zl2_8_16 = zext <16 x i8> %i8 to <16 x i16>
636   %azl_8_16 = add <16 x i16> %zl1_8_16, %zl2_8_16
638   %sw_8_32 = sext <16 x i8> %i8 to <16 x i32>
639   %asw_8_32 = add <16 x i32> %i32, %sw_8_32
640   %sl1_8_32 = sext <16 x i8> %i8 to <16 x i32>
641   %sl2_8_32 = sext <16 x i8> %i8 to <16 x i32>
642   %asl_8_32 = add <16 x i32> %sl1_8_32, %sl2_8_32
644   %zw_8_32 = zext <16 x i8> %i8 to <16 x i32>
645   %azw_8_32 = add <16 x i32> %i32, %zw_8_32
646   %zl1_8_32 = zext <16 x i8> %i8 to <16 x i32>
647   %zl2_8_32 = zext <16 x i8> %i8 to <16 x i32>
648   %azl_8_32 = add <16 x i32> %zl1_8_32, %zl2_8_32
650   %sw_8_64 = sext <16 x i8> %i8 to <16 x i64>
651   %asw_8_64 = add <16 x i64> %i64, %sw_8_64
652   %sl1_8_64 = sext <16 x i8> %i8 to <16 x i64>
653   %sl2_8_64 = sext <16 x i8> %i8 to <16 x i64>
654   %asl_8_64 = add <16 x i64> %sl1_8_64, %sl2_8_64
656   %zw_8_64 = zext <16 x i8> %i8 to <16 x i64>
657   %azw_8_64 = add <16 x i64> %i64, %zw_8_64
658   %zl1_8_64 = zext <16 x i8> %i8 to <16 x i64>
659   %zl2_8_64 = zext <16 x i8> %i8 to <16 x i64>
660   %azl_8_64 = add <16 x i64> %zl1_8_64, %zl2_8_64
662   %sw_16_32 = sext <16 x i16> %i16 to <16 x i32>
663   %asw_16_32 = add <16 x i32> %i32, %sw_16_32
664   %sl1_16_32 = sext <16 x i16> %i16 to <16 x i32>
665   %sl2_16_32 = sext <16 x i16> %i16 to <16 x i32>
666   %asl_16_32 = add <16 x i32> %sl1_16_32, %sl2_16_32
668   %zw_16_32 = zext <16 x i16> %i16 to <16 x i32>
669   %azw_16_32 = add <16 x i32> %i32, %zw_16_32
670   %zl1_16_32 = zext <16 x i16> %i16 to <16 x i32>
671   %zl2_16_32 = zext <16 x i16> %i16 to <16 x i32>
672   %azl_16_32 = add <16 x i32> %zl1_16_32, %zl2_16_32
674   %sw_16_64 = sext <16 x i16> %i16 to <16 x i64>
675   %asw_16_64 = add <16 x i64> %i64, %sw_16_64
676   %sl1_16_64 = sext <16 x i16> %i16 to <16 x i64>
677   %sl2_16_64 = sext <16 x i16> %i16 to <16 x i64>
678   %asl_16_64 = add <16 x i64> %sl1_16_64, %sl2_16_64
680   %zw_16_64 = zext <16 x i16> %i16 to <16 x i64>
681   %azw_16_64 = add <16 x i64> %i64, %zw_16_64
682   %zl1_16_64 = zext <16 x i16> %i16 to <16 x i64>
683   %zl2_16_64 = zext <16 x i16> %i16 to <16 x i64>
684   %azl_16_64 = add <16 x i64> %zl1_16_64, %zl2_16_64
686   %sw_32_64 = sext <16 x i32> %i32 to <16 x i64>
687   %asw_32_64 = add <16 x i64> %i64, %sw_32_64
688   %sl1_32_64 = sext <16 x i32> %i32 to <16 x i64>
689   %sl2_32_64 = sext <16 x i32> %i32 to <16 x i64>
690   %asl_32_64 = add <16 x i64> %sl1_32_64, %sl2_32_64
692   %zw_32_64 = zext <16 x i32> %i32 to <16 x i64>
693   %azw_32_64 = add <16 x i64> %i64, %zw_32_64
694   %zl1_32_64 = zext <16 x i32> %i32 to <16 x i64>
695   %zl2_32_64 = zext <16 x i32> %i32 to <16 x i64>
696   %azl_32_64 = add <16 x i64> %zl1_32_64, %zl2_32_64
698   ret void
701 define void @extsubv1(i8 %i8, i16 %i16, i32 %i32, i64 %i64)  {
702 ; CHECK-LABEL: 'extsubv1'
703 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_16 = sext i8 %i8 to i16
704 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_16 = sub i16 %i16, %sw_8_16
705 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_16 = sext i8 %i8 to i16
706 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_16 = sext i8 %i8 to i16
707 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_16 = sub i16 %sl1_8_16, %sl2_8_16
708 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_16 = zext i8 %i8 to i16
709 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_16 = sub i16 %i16, %zw_8_16
710 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_16 = zext i8 %i8 to i16
711 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_16 = zext i8 %i8 to i16
712 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_16 = sub i16 %zl1_8_16, %zl2_8_16
713 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_32 = sext i8 %i8 to i32
714 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_32 = sub i32 %i32, %sw_8_32
715 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_32 = sext i8 %i8 to i32
716 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_32 = sext i8 %i8 to i32
717 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_32 = sub i32 %sl1_8_32, %sl2_8_32
718 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_32 = zext i8 %i8 to i32
719 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_32 = sub i32 %i32, %zw_8_32
720 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_32 = zext i8 %i8 to i32
721 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_32 = zext i8 %i8 to i32
722 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_32 = sub i32 %zl1_8_32, %zl2_8_32
723 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_64 = sext i8 %i8 to i64
724 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_64 = sub i64 %i64, %sw_8_64
725 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_64 = sext i8 %i8 to i64
726 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_64 = sext i8 %i8 to i64
727 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_64 = sub i64 %sl1_8_64, %sl2_8_64
728 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_8_64 = zext i8 %i8 to i64
729 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_64 = sub i64 %i64, %zw_8_64
730 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_8_64 = zext i8 %i8 to i64
731 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_8_64 = zext i8 %i8 to i64
732 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_64 = sub i64 %zl1_8_64, %zl2_8_64
733 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_16_32 = sext i16 %i16 to i32
734 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_32 = sub i32 %i32, %sw_16_32
735 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_16_32 = sext i16 %i16 to i32
736 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_16_32 = sext i16 %i16 to i32
737 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_32 = sub i32 %sl1_16_32, %sl2_16_32
738 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_16_32 = zext i16 %i16 to i32
739 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_32 = sub i32 %i32, %zw_16_32
740 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_16_32 = zext i16 %i16 to i32
741 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_16_32 = zext i16 %i16 to i32
742 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_32 = sub i32 %zl1_16_32, %zl2_16_32
743 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_16_64 = sext i16 %i16 to i64
744 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_64 = sub i64 %i64, %sw_16_64
745 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_16_64 = sext i16 %i16 to i64
746 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_16_64 = sext i16 %i16 to i64
747 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_64 = sub i64 %sl1_16_64, %sl2_16_64
748 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_16_64 = zext i16 %i16 to i64
749 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_64 = sub i64 %i64, %zw_16_64
750 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_16_64 = zext i16 %i16 to i64
751 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_16_64 = zext i16 %i16 to i64
752 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_64 = sub i64 %zl1_16_64, %zl2_16_64
753 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_32_64 = sext i32 %i32 to i64
754 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_32_64 = sub i64 %i64, %sw_32_64
755 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_32_64 = sext i32 %i32 to i64
756 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_32_64 = sext i32 %i32 to i64
757 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_32_64 = sub i64 %sl1_32_64, %sl2_32_64
758 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_32_64 = zext i32 %i32 to i64
759 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_32_64 = sub i64 %i64, %zw_32_64
760 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext i32 %i32 to i64
761 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext i32 %i32 to i64
762 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_32_64 = sub i64 %zl1_32_64, %zl2_32_64
763 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
765   %sw_8_16 = sext i8 %i8 to i16
766   %asw_8_16 = sub i16 %i16, %sw_8_16
767   %sl1_8_16 = sext i8 %i8 to i16
768   %sl2_8_16 = sext i8 %i8 to i16
769   %asl_8_16 = sub i16 %sl1_8_16, %sl2_8_16
771   %zw_8_16 = zext i8 %i8 to i16
772   %azw_8_16 = sub i16 %i16, %zw_8_16
773   %zl1_8_16 = zext i8 %i8 to i16
774   %zl2_8_16 = zext i8 %i8 to i16
775   %azl_8_16 = sub i16 %zl1_8_16, %zl2_8_16
777   %sw_8_32 = sext i8 %i8 to i32
778   %asw_8_32 = sub i32 %i32, %sw_8_32
779   %sl1_8_32 = sext i8 %i8 to i32
780   %sl2_8_32 = sext i8 %i8 to i32
781   %asl_8_32 = sub i32 %sl1_8_32, %sl2_8_32
783   %zw_8_32 = zext i8 %i8 to i32
784   %azw_8_32 = sub i32 %i32, %zw_8_32
785   %zl1_8_32 = zext i8 %i8 to i32
786   %zl2_8_32 = zext i8 %i8 to i32
787   %azl_8_32 = sub i32 %zl1_8_32, %zl2_8_32
789   %sw_8_64 = sext i8 %i8 to i64
790   %asw_8_64 = sub i64 %i64, %sw_8_64
791   %sl1_8_64 = sext i8 %i8 to i64
792   %sl2_8_64 = sext i8 %i8 to i64
793   %asl_8_64 = sub i64 %sl1_8_64, %sl2_8_64
795   %zw_8_64 = zext i8 %i8 to i64
796   %azw_8_64 = sub i64 %i64, %zw_8_64
797   %zl1_8_64 = zext i8 %i8 to i64
798   %zl2_8_64 = zext i8 %i8 to i64
799   %azl_8_64 = sub i64 %zl1_8_64, %zl2_8_64
801   %sw_16_32 = sext i16 %i16 to i32
802   %asw_16_32 = sub i32 %i32, %sw_16_32
803   %sl1_16_32 = sext i16 %i16 to i32
804   %sl2_16_32 = sext i16 %i16 to i32
805   %asl_16_32 = sub i32 %sl1_16_32, %sl2_16_32
807   %zw_16_32 = zext i16 %i16 to i32
808   %azw_16_32 = sub i32 %i32, %zw_16_32
809   %zl1_16_32 = zext i16 %i16 to i32
810   %zl2_16_32 = zext i16 %i16 to i32
811   %azl_16_32 = sub i32 %zl1_16_32, %zl2_16_32
813   %sw_16_64 = sext i16 %i16 to i64
814   %asw_16_64 = sub i64 %i64, %sw_16_64
815   %sl1_16_64 = sext i16 %i16 to i64
816   %sl2_16_64 = sext i16 %i16 to i64
817   %asl_16_64 = sub i64 %sl1_16_64, %sl2_16_64
819   %zw_16_64 = zext i16 %i16 to i64
820   %azw_16_64 = sub i64 %i64, %zw_16_64
821   %zl1_16_64 = zext i16 %i16 to i64
822   %zl2_16_64 = zext i16 %i16 to i64
823   %azl_16_64 = sub i64 %zl1_16_64, %zl2_16_64
825   %sw_32_64 = sext i32 %i32 to i64
826   %asw_32_64 = sub i64 %i64, %sw_32_64
827   %sl1_32_64 = sext i32 %i32 to i64
828   %sl2_32_64 = sext i32 %i32 to i64
829   %asl_32_64 = sub i64 %sl1_32_64, %sl2_32_64
831   %zw_32_64 = zext i32 %i32 to i64
832   %azw_32_64 = sub i64 %i64, %zw_32_64
833   %zl1_32_64 = zext i32 %i32 to i64
834   %zl2_32_64 = zext i32 %i32 to i64
835   %azl_32_64 = sub i64 %zl1_32_64, %zl2_32_64
837   ret void
840 define void @extsubv2(<2 x i8> %i8, <2 x i16> %i16, <2 x i32> %i32, <2 x i64> %i64)  {
841 ; CHECK-LABEL: 'extsubv2'
842 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_16 = sext <2 x i8> %i8 to <2 x i16>
843 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_16 = sub <2 x i16> %i16, %sw_8_16
844 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_16 = sext <2 x i8> %i8 to <2 x i16>
845 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_16 = sext <2 x i8> %i8 to <2 x i16>
846 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_16 = sub <2 x i16> %sl1_8_16, %sl2_8_16
847 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_16 = zext <2 x i8> %i8 to <2 x i16>
848 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_16 = sub <2 x i16> %i16, %zw_8_16
849 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_16 = zext <2 x i8> %i8 to <2 x i16>
850 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_16 = zext <2 x i8> %i8 to <2 x i16>
851 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_16 = sub <2 x i16> %zl1_8_16, %zl2_8_16
852 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_32 = sext <2 x i8> %i8 to <2 x i32>
853 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_32 = sub <2 x i32> %i32, %sw_8_32
854 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_32 = sext <2 x i8> %i8 to <2 x i32>
855 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_32 = sext <2 x i8> %i8 to <2 x i32>
856 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_32 = sub <2 x i32> %sl1_8_32, %sl2_8_32
857 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_32 = zext <2 x i8> %i8 to <2 x i32>
858 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_32 = sub <2 x i32> %i32, %zw_8_32
859 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_32 = zext <2 x i8> %i8 to <2 x i32>
860 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_32 = zext <2 x i8> %i8 to <2 x i32>
861 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_32 = sub <2 x i32> %zl1_8_32, %zl2_8_32
862 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_64 = sext <2 x i8> %i8 to <2 x i64>
863 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_64 = sub <2 x i64> %i64, %sw_8_64
864 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_64 = sext <2 x i8> %i8 to <2 x i64>
865 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_64 = sext <2 x i8> %i8 to <2 x i64>
866 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_64 = sub <2 x i64> %sl1_8_64, %sl2_8_64
867 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_64 = zext <2 x i8> %i8 to <2 x i64>
868 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_64 = sub <2 x i64> %i64, %zw_8_64
869 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_64 = zext <2 x i8> %i8 to <2 x i64>
870 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_64 = zext <2 x i8> %i8 to <2 x i64>
871 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_64 = sub <2 x i64> %zl1_8_64, %zl2_8_64
872 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_16_32 = sext <2 x i16> %i16 to <2 x i32>
873 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_32 = sub <2 x i32> %i32, %sw_16_32
874 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_16_32 = sext <2 x i16> %i16 to <2 x i32>
875 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_16_32 = sext <2 x i16> %i16 to <2 x i32>
876 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_32 = sub <2 x i32> %sl1_16_32, %sl2_16_32
877 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_16_32 = zext <2 x i16> %i16 to <2 x i32>
878 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_32 = sub <2 x i32> %i32, %zw_16_32
879 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_16_32 = zext <2 x i16> %i16 to <2 x i32>
880 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_16_32 = zext <2 x i16> %i16 to <2 x i32>
881 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_32 = sub <2 x i32> %zl1_16_32, %zl2_16_32
882 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_16_64 = sext <2 x i16> %i16 to <2 x i64>
883 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_64 = sub <2 x i64> %i64, %sw_16_64
884 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_16_64 = sext <2 x i16> %i16 to <2 x i64>
885 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_16_64 = sext <2 x i16> %i16 to <2 x i64>
886 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_64 = sub <2 x i64> %sl1_16_64, %sl2_16_64
887 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_16_64 = zext <2 x i16> %i16 to <2 x i64>
888 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_64 = sub <2 x i64> %i64, %zw_16_64
889 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_16_64 = zext <2 x i16> %i16 to <2 x i64>
890 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_16_64 = zext <2 x i16> %i16 to <2 x i64>
891 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_64 = sub <2 x i64> %zl1_16_64, %zl2_16_64
892 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_32_64 = sext <2 x i32> %i32 to <2 x i64>
893 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_32_64 = sub <2 x i64> %i64, %sw_32_64
894 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_32_64 = sext <2 x i32> %i32 to <2 x i64>
895 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_32_64 = sext <2 x i32> %i32 to <2 x i64>
896 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_32_64 = sub <2 x i64> %sl1_32_64, %sl2_32_64
897 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_32_64 = zext <2 x i32> %i32 to <2 x i64>
898 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_32_64 = sub <2 x i64> %i64, %zw_32_64
899 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext <2 x i32> %i32 to <2 x i64>
900 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext <2 x i32> %i32 to <2 x i64>
901 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_32_64 = sub <2 x i64> %zl1_32_64, %zl2_32_64
902 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
904   %sw_8_16 = sext <2 x i8> %i8 to <2 x i16>
905   %asw_8_16 = sub <2 x i16> %i16, %sw_8_16
906   %sl1_8_16 = sext <2 x i8> %i8 to <2 x i16>
907   %sl2_8_16 = sext <2 x i8> %i8 to <2 x i16>
908   %asl_8_16 = sub <2 x i16> %sl1_8_16, %sl2_8_16
910   %zw_8_16 = zext <2 x i8> %i8 to <2 x i16>
911   %azw_8_16 = sub <2 x i16> %i16, %zw_8_16
912   %zl1_8_16 = zext <2 x i8> %i8 to <2 x i16>
913   %zl2_8_16 = zext <2 x i8> %i8 to <2 x i16>
914   %azl_8_16 = sub <2 x i16> %zl1_8_16, %zl2_8_16
916   %sw_8_32 = sext <2 x i8> %i8 to <2 x i32>
917   %asw_8_32 = sub <2 x i32> %i32, %sw_8_32
918   %sl1_8_32 = sext <2 x i8> %i8 to <2 x i32>
919   %sl2_8_32 = sext <2 x i8> %i8 to <2 x i32>
920   %asl_8_32 = sub <2 x i32> %sl1_8_32, %sl2_8_32
922   %zw_8_32 = zext <2 x i8> %i8 to <2 x i32>
923   %azw_8_32 = sub <2 x i32> %i32, %zw_8_32
924   %zl1_8_32 = zext <2 x i8> %i8 to <2 x i32>
925   %zl2_8_32 = zext <2 x i8> %i8 to <2 x i32>
926   %azl_8_32 = sub <2 x i32> %zl1_8_32, %zl2_8_32
928   %sw_8_64 = sext <2 x i8> %i8 to <2 x i64>
929   %asw_8_64 = sub <2 x i64> %i64, %sw_8_64
930   %sl1_8_64 = sext <2 x i8> %i8 to <2 x i64>
931   %sl2_8_64 = sext <2 x i8> %i8 to <2 x i64>
932   %asl_8_64 = sub <2 x i64> %sl1_8_64, %sl2_8_64
934   %zw_8_64 = zext <2 x i8> %i8 to <2 x i64>
935   %azw_8_64 = sub <2 x i64> %i64, %zw_8_64
936   %zl1_8_64 = zext <2 x i8> %i8 to <2 x i64>
937   %zl2_8_64 = zext <2 x i8> %i8 to <2 x i64>
938   %azl_8_64 = sub <2 x i64> %zl1_8_64, %zl2_8_64
940   %sw_16_32 = sext <2 x i16> %i16 to <2 x i32>
941   %asw_16_32 = sub <2 x i32> %i32, %sw_16_32
942   %sl1_16_32 = sext <2 x i16> %i16 to <2 x i32>
943   %sl2_16_32 = sext <2 x i16> %i16 to <2 x i32>
944   %asl_16_32 = sub <2 x i32> %sl1_16_32, %sl2_16_32
946   %zw_16_32 = zext <2 x i16> %i16 to <2 x i32>
947   %azw_16_32 = sub <2 x i32> %i32, %zw_16_32
948   %zl1_16_32 = zext <2 x i16> %i16 to <2 x i32>
949   %zl2_16_32 = zext <2 x i16> %i16 to <2 x i32>
950   %azl_16_32 = sub <2 x i32> %zl1_16_32, %zl2_16_32
952   %sw_16_64 = sext <2 x i16> %i16 to <2 x i64>
953   %asw_16_64 = sub <2 x i64> %i64, %sw_16_64
954   %sl1_16_64 = sext <2 x i16> %i16 to <2 x i64>
955   %sl2_16_64 = sext <2 x i16> %i16 to <2 x i64>
956   %asl_16_64 = sub <2 x i64> %sl1_16_64, %sl2_16_64
958   %zw_16_64 = zext <2 x i16> %i16 to <2 x i64>
959   %azw_16_64 = sub <2 x i64> %i64, %zw_16_64
960   %zl1_16_64 = zext <2 x i16> %i16 to <2 x i64>
961   %zl2_16_64 = zext <2 x i16> %i16 to <2 x i64>
962   %azl_16_64 = sub <2 x i64> %zl1_16_64, %zl2_16_64
964   %sw_32_64 = sext <2 x i32> %i32 to <2 x i64>
965   %asw_32_64 = sub <2 x i64> %i64, %sw_32_64
966   %sl1_32_64 = sext <2 x i32> %i32 to <2 x i64>
967   %sl2_32_64 = sext <2 x i32> %i32 to <2 x i64>
968   %asl_32_64 = sub <2 x i64> %sl1_32_64, %sl2_32_64
970   %zw_32_64 = zext <2 x i32> %i32 to <2 x i64>
971   %azw_32_64 = sub <2 x i64> %i64, %zw_32_64
972   %zl1_32_64 = zext <2 x i32> %i32 to <2 x i64>
973   %zl2_32_64 = zext <2 x i32> %i32 to <2 x i64>
974   %azl_32_64 = sub <2 x i64> %zl1_32_64, %zl2_32_64
976   ret void
979 define void @extsubv4(<4 x i8> %i8, <4 x i16> %i16, <4 x i32> %i32, <4 x i64> %i64)  {
980 ; CHECK-LABEL: 'extsubv4'
981 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_16 = sext <4 x i8> %i8 to <4 x i16>
982 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_16 = sub <4 x i16> %i16, %sw_8_16
983 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_16 = sext <4 x i8> %i8 to <4 x i16>
984 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_16 = sext <4 x i8> %i8 to <4 x i16>
985 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_16 = sub <4 x i16> %sl1_8_16, %sl2_8_16
986 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_16 = zext <4 x i8> %i8 to <4 x i16>
987 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_16 = sub <4 x i16> %i16, %zw_8_16
988 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_16 = zext <4 x i8> %i8 to <4 x i16>
989 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_16 = zext <4 x i8> %i8 to <4 x i16>
990 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_16 = sub <4 x i16> %zl1_8_16, %zl2_8_16
991 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_32 = sext <4 x i8> %i8 to <4 x i32>
992 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_32 = sub <4 x i32> %i32, %sw_8_32
993 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_32 = sext <4 x i8> %i8 to <4 x i32>
994 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_32 = sext <4 x i8> %i8 to <4 x i32>
995 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_32 = sub <4 x i32> %sl1_8_32, %sl2_8_32
996 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_32 = zext <4 x i8> %i8 to <4 x i32>
997 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_32 = sub <4 x i32> %i32, %zw_8_32
998 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_32 = zext <4 x i8> %i8 to <4 x i32>
999 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_32 = zext <4 x i8> %i8 to <4 x i32>
1000 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_32 = sub <4 x i32> %zl1_8_32, %zl2_8_32
1001 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sw_8_64 = sext <4 x i8> %i8 to <4 x i64>
1002 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_8_64 = sub <4 x i64> %i64, %sw_8_64
1003 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl1_8_64 = sext <4 x i8> %i8 to <4 x i64>
1004 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl2_8_64 = sext <4 x i8> %i8 to <4 x i64>
1005 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_8_64 = sub <4 x i64> %sl1_8_64, %sl2_8_64
1006 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zw_8_64 = zext <4 x i8> %i8 to <4 x i64>
1007 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_8_64 = sub <4 x i64> %i64, %zw_8_64
1008 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl1_8_64 = zext <4 x i8> %i8 to <4 x i64>
1009 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl2_8_64 = zext <4 x i8> %i8 to <4 x i64>
1010 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_8_64 = sub <4 x i64> %zl1_8_64, %zl2_8_64
1011 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_16_32 = sext <4 x i16> %i16 to <4 x i32>
1012 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_32 = sub <4 x i32> %i32, %sw_16_32
1013 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_16_32 = sext <4 x i16> %i16 to <4 x i32>
1014 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_16_32 = sext <4 x i16> %i16 to <4 x i32>
1015 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_32 = sub <4 x i32> %sl1_16_32, %sl2_16_32
1016 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_16_32 = zext <4 x i16> %i16 to <4 x i32>
1017 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_32 = sub <4 x i32> %i32, %zw_16_32
1018 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_16_32 = zext <4 x i16> %i16 to <4 x i32>
1019 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_16_32 = zext <4 x i16> %i16 to <4 x i32>
1020 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_32 = sub <4 x i32> %zl1_16_32, %zl2_16_32
1021 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sw_16_64 = sext <4 x i16> %i16 to <4 x i64>
1022 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_16_64 = sub <4 x i64> %i64, %sw_16_64
1023 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl1_16_64 = sext <4 x i16> %i16 to <4 x i64>
1024 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl2_16_64 = sext <4 x i16> %i16 to <4 x i64>
1025 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_16_64 = sub <4 x i64> %sl1_16_64, %sl2_16_64
1026 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zw_16_64 = zext <4 x i16> %i16 to <4 x i64>
1027 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_16_64 = sub <4 x i64> %i64, %zw_16_64
1028 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl1_16_64 = zext <4 x i16> %i16 to <4 x i64>
1029 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl2_16_64 = zext <4 x i16> %i16 to <4 x i64>
1030 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_16_64 = sub <4 x i64> %zl1_16_64, %zl2_16_64
1031 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_32_64 = sext <4 x i32> %i32 to <4 x i64>
1032 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_32_64 = sub <4 x i64> %i64, %sw_32_64
1033 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_32_64 = sext <4 x i32> %i32 to <4 x i64>
1034 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_32_64 = sext <4 x i32> %i32 to <4 x i64>
1035 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_32_64 = sub <4 x i64> %sl1_32_64, %sl2_32_64
1036 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_32_64 = zext <4 x i32> %i32 to <4 x i64>
1037 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_32_64 = sub <4 x i64> %i64, %zw_32_64
1038 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext <4 x i32> %i32 to <4 x i64>
1039 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext <4 x i32> %i32 to <4 x i64>
1040 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_32_64 = sub <4 x i64> %zl1_32_64, %zl2_32_64
1041 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
1043   %sw_8_16 = sext <4 x i8> %i8 to <4 x i16>
1044   %asw_8_16 = sub <4 x i16> %i16, %sw_8_16
1045   %sl1_8_16 = sext <4 x i8> %i8 to <4 x i16>
1046   %sl2_8_16 = sext <4 x i8> %i8 to <4 x i16>
1047   %asl_8_16 = sub <4 x i16> %sl1_8_16, %sl2_8_16
1049   %zw_8_16 = zext <4 x i8> %i8 to <4 x i16>
1050   %azw_8_16 = sub <4 x i16> %i16, %zw_8_16
1051   %zl1_8_16 = zext <4 x i8> %i8 to <4 x i16>
1052   %zl2_8_16 = zext <4 x i8> %i8 to <4 x i16>
1053   %azl_8_16 = sub <4 x i16> %zl1_8_16, %zl2_8_16
1055   %sw_8_32 = sext <4 x i8> %i8 to <4 x i32>
1056   %asw_8_32 = sub <4 x i32> %i32, %sw_8_32
1057   %sl1_8_32 = sext <4 x i8> %i8 to <4 x i32>
1058   %sl2_8_32 = sext <4 x i8> %i8 to <4 x i32>
1059   %asl_8_32 = sub <4 x i32> %sl1_8_32, %sl2_8_32
1061   %zw_8_32 = zext <4 x i8> %i8 to <4 x i32>
1062   %azw_8_32 = sub <4 x i32> %i32, %zw_8_32
1063   %zl1_8_32 = zext <4 x i8> %i8 to <4 x i32>
1064   %zl2_8_32 = zext <4 x i8> %i8 to <4 x i32>
1065   %azl_8_32 = sub <4 x i32> %zl1_8_32, %zl2_8_32
1067   %sw_8_64 = sext <4 x i8> %i8 to <4 x i64>
1068   %asw_8_64 = sub <4 x i64> %i64, %sw_8_64
1069   %sl1_8_64 = sext <4 x i8> %i8 to <4 x i64>
1070   %sl2_8_64 = sext <4 x i8> %i8 to <4 x i64>
1071   %asl_8_64 = sub <4 x i64> %sl1_8_64, %sl2_8_64
1073   %zw_8_64 = zext <4 x i8> %i8 to <4 x i64>
1074   %azw_8_64 = sub <4 x i64> %i64, %zw_8_64
1075   %zl1_8_64 = zext <4 x i8> %i8 to <4 x i64>
1076   %zl2_8_64 = zext <4 x i8> %i8 to <4 x i64>
1077   %azl_8_64 = sub <4 x i64> %zl1_8_64, %zl2_8_64
1079   %sw_16_32 = sext <4 x i16> %i16 to <4 x i32>
1080   %asw_16_32 = sub <4 x i32> %i32, %sw_16_32
1081   %sl1_16_32 = sext <4 x i16> %i16 to <4 x i32>
1082   %sl2_16_32 = sext <4 x i16> %i16 to <4 x i32>
1083   %asl_16_32 = sub <4 x i32> %sl1_16_32, %sl2_16_32
1085   %zw_16_32 = zext <4 x i16> %i16 to <4 x i32>
1086   %azw_16_32 = sub <4 x i32> %i32, %zw_16_32
1087   %zl1_16_32 = zext <4 x i16> %i16 to <4 x i32>
1088   %zl2_16_32 = zext <4 x i16> %i16 to <4 x i32>
1089   %azl_16_32 = sub <4 x i32> %zl1_16_32, %zl2_16_32
1091   %sw_16_64 = sext <4 x i16> %i16 to <4 x i64>
1092   %asw_16_64 = sub <4 x i64> %i64, %sw_16_64
1093   %sl1_16_64 = sext <4 x i16> %i16 to <4 x i64>
1094   %sl2_16_64 = sext <4 x i16> %i16 to <4 x i64>
1095   %asl_16_64 = sub <4 x i64> %sl1_16_64, %sl2_16_64
1097   %zw_16_64 = zext <4 x i16> %i16 to <4 x i64>
1098   %azw_16_64 = sub <4 x i64> %i64, %zw_16_64
1099   %zl1_16_64 = zext <4 x i16> %i16 to <4 x i64>
1100   %zl2_16_64 = zext <4 x i16> %i16 to <4 x i64>
1101   %azl_16_64 = sub <4 x i64> %zl1_16_64, %zl2_16_64
1103   %sw_32_64 = sext <4 x i32> %i32 to <4 x i64>
1104   %asw_32_64 = sub <4 x i64> %i64, %sw_32_64
1105   %sl1_32_64 = sext <4 x i32> %i32 to <4 x i64>
1106   %sl2_32_64 = sext <4 x i32> %i32 to <4 x i64>
1107   %asl_32_64 = sub <4 x i64> %sl1_32_64, %sl2_32_64
1109   %zw_32_64 = zext <4 x i32> %i32 to <4 x i64>
1110   %azw_32_64 = sub <4 x i64> %i64, %zw_32_64
1111   %zl1_32_64 = zext <4 x i32> %i32 to <4 x i64>
1112   %zl2_32_64 = zext <4 x i32> %i32 to <4 x i64>
1113   %azl_32_64 = sub <4 x i64> %zl1_32_64, %zl2_32_64
1115   ret void
1118 define void @extsubv8(<8 x i8> %i8, <8 x i16> %i16, <8 x i32> %i32, <8 x i64> %i64)  {
1119 ; CHECK-LABEL: 'extsubv8'
1120 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_8_16 = sext <8 x i8> %i8 to <8 x i16>
1121 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_16 = sub <8 x i16> %i16, %sw_8_16
1122 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
1123 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_8_16 = sext <8 x i8> %i8 to <8 x i16>
1124 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_16 = sub <8 x i16> %sl1_8_16, %sl2_8_16
1125 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_8_16 = zext <8 x i8> %i8 to <8 x i16>
1126 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_16 = sub <8 x i16> %i16, %zw_8_16
1127 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
1128 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_8_16 = zext <8 x i8> %i8 to <8 x i16>
1129 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_16 = sub <8 x i16> %zl1_8_16, %zl2_8_16
1130 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sw_8_32 = sext <8 x i8> %i8 to <8 x i32>
1131 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_8_32 = sub <8 x i32> %i32, %sw_8_32
1132 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl1_8_32 = sext <8 x i8> %i8 to <8 x i32>
1133 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl2_8_32 = sext <8 x i8> %i8 to <8 x i32>
1134 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_8_32 = sub <8 x i32> %sl1_8_32, %sl2_8_32
1135 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zw_8_32 = zext <8 x i8> %i8 to <8 x i32>
1136 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_8_32 = sub <8 x i32> %i32, %zw_8_32
1137 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl1_8_32 = zext <8 x i8> %i8 to <8 x i32>
1138 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl2_8_32 = zext <8 x i8> %i8 to <8 x i32>
1139 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_8_32 = sub <8 x i32> %zl1_8_32, %zl2_8_32
1140 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %sw_8_64 = sext <8 x i8> %i8 to <8 x i64>
1141 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asw_8_64 = sub <8 x i64> %i64, %sw_8_64
1142 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %sl1_8_64 = sext <8 x i8> %i8 to <8 x i64>
1143 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %sl2_8_64 = sext <8 x i8> %i8 to <8 x i64>
1144 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asl_8_64 = sub <8 x i64> %sl1_8_64, %sl2_8_64
1145 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %zw_8_64 = zext <8 x i8> %i8 to <8 x i64>
1146 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azw_8_64 = sub <8 x i64> %i64, %zw_8_64
1147 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %zl1_8_64 = zext <8 x i8> %i8 to <8 x i64>
1148 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %zl2_8_64 = zext <8 x i8> %i8 to <8 x i64>
1149 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azl_8_64 = sub <8 x i64> %zl1_8_64, %zl2_8_64
1150 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_16_32 = sext <8 x i16> %i16 to <8 x i32>
1151 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_16_32 = sub <8 x i32> %i32, %sw_16_32
1152 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_16_32 = sext <8 x i16> %i16 to <8 x i32>
1153 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_16_32 = sext <8 x i16> %i16 to <8 x i32>
1154 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_16_32 = sub <8 x i32> %sl1_16_32, %sl2_16_32
1155 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_16_32 = zext <8 x i16> %i16 to <8 x i32>
1156 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_16_32 = sub <8 x i32> %i32, %zw_16_32
1157 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_16_32 = zext <8 x i16> %i16 to <8 x i32>
1158 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_16_32 = zext <8 x i16> %i16 to <8 x i32>
1159 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_16_32 = sub <8 x i32> %zl1_16_32, %zl2_16_32
1160 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sw_16_64 = sext <8 x i16> %i16 to <8 x i64>
1161 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asw_16_64 = sub <8 x i64> %i64, %sw_16_64
1162 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sl1_16_64 = sext <8 x i16> %i16 to <8 x i64>
1163 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sl2_16_64 = sext <8 x i16> %i16 to <8 x i64>
1164 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asl_16_64 = sub <8 x i64> %sl1_16_64, %sl2_16_64
1165 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zw_16_64 = zext <8 x i16> %i16 to <8 x i64>
1166 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azw_16_64 = sub <8 x i64> %i64, %zw_16_64
1167 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zl1_16_64 = zext <8 x i16> %i16 to <8 x i64>
1168 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zl2_16_64 = zext <8 x i16> %i16 to <8 x i64>
1169 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azl_16_64 = sub <8 x i64> %zl1_16_64, %zl2_16_64
1170 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_32_64 = sext <8 x i32> %i32 to <8 x i64>
1171 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asw_32_64 = sub <8 x i64> %i64, %sw_32_64
1172 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_32_64 = sext <8 x i32> %i32 to <8 x i64>
1173 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_32_64 = sext <8 x i32> %i32 to <8 x i64>
1174 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asl_32_64 = sub <8 x i64> %sl1_32_64, %sl2_32_64
1175 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_32_64 = zext <8 x i32> %i32 to <8 x i64>
1176 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azw_32_64 = sub <8 x i64> %i64, %zw_32_64
1177 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext <8 x i32> %i32 to <8 x i64>
1178 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext <8 x i32> %i32 to <8 x i64>
1179 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azl_32_64 = sub <8 x i64> %zl1_32_64, %zl2_32_64
1180 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
1182   %sw_8_16 = sext <8 x i8> %i8 to <8 x i16>
1183   %asw_8_16 = sub <8 x i16> %i16, %sw_8_16
1184   %sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
1185   %sl2_8_16 = sext <8 x i8> %i8 to <8 x i16>
1186   %asl_8_16 = sub <8 x i16> %sl1_8_16, %sl2_8_16
1188   %zw_8_16 = zext <8 x i8> %i8 to <8 x i16>
1189   %azw_8_16 = sub <8 x i16> %i16, %zw_8_16
1190   %zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
1191   %zl2_8_16 = zext <8 x i8> %i8 to <8 x i16>
1192   %azl_8_16 = sub <8 x i16> %zl1_8_16, %zl2_8_16
1194   %sw_8_32 = sext <8 x i8> %i8 to <8 x i32>
1195   %asw_8_32 = sub <8 x i32> %i32, %sw_8_32
1196   %sl1_8_32 = sext <8 x i8> %i8 to <8 x i32>
1197   %sl2_8_32 = sext <8 x i8> %i8 to <8 x i32>
1198   %asl_8_32 = sub <8 x i32> %sl1_8_32, %sl2_8_32
1200   %zw_8_32 = zext <8 x i8> %i8 to <8 x i32>
1201   %azw_8_32 = sub <8 x i32> %i32, %zw_8_32
1202   %zl1_8_32 = zext <8 x i8> %i8 to <8 x i32>
1203   %zl2_8_32 = zext <8 x i8> %i8 to <8 x i32>
1204   %azl_8_32 = sub <8 x i32> %zl1_8_32, %zl2_8_32
1206   %sw_8_64 = sext <8 x i8> %i8 to <8 x i64>
1207   %asw_8_64 = sub <8 x i64> %i64, %sw_8_64
1208   %sl1_8_64 = sext <8 x i8> %i8 to <8 x i64>
1209   %sl2_8_64 = sext <8 x i8> %i8 to <8 x i64>
1210   %asl_8_64 = sub <8 x i64> %sl1_8_64, %sl2_8_64
1212   %zw_8_64 = zext <8 x i8> %i8 to <8 x i64>
1213   %azw_8_64 = sub <8 x i64> %i64, %zw_8_64
1214   %zl1_8_64 = zext <8 x i8> %i8 to <8 x i64>
1215   %zl2_8_64 = zext <8 x i8> %i8 to <8 x i64>
1216   %azl_8_64 = sub <8 x i64> %zl1_8_64, %zl2_8_64
1218   %sw_16_32 = sext <8 x i16> %i16 to <8 x i32>
1219   %asw_16_32 = sub <8 x i32> %i32, %sw_16_32
1220   %sl1_16_32 = sext <8 x i16> %i16 to <8 x i32>
1221   %sl2_16_32 = sext <8 x i16> %i16 to <8 x i32>
1222   %asl_16_32 = sub <8 x i32> %sl1_16_32, %sl2_16_32
1224   %zw_16_32 = zext <8 x i16> %i16 to <8 x i32>
1225   %azw_16_32 = sub <8 x i32> %i32, %zw_16_32
1226   %zl1_16_32 = zext <8 x i16> %i16 to <8 x i32>
1227   %zl2_16_32 = zext <8 x i16> %i16 to <8 x i32>
1228   %azl_16_32 = sub <8 x i32> %zl1_16_32, %zl2_16_32
1230   %sw_16_64 = sext <8 x i16> %i16 to <8 x i64>
1231   %asw_16_64 = sub <8 x i64> %i64, %sw_16_64
1232   %sl1_16_64 = sext <8 x i16> %i16 to <8 x i64>
1233   %sl2_16_64 = sext <8 x i16> %i16 to <8 x i64>
1234   %asl_16_64 = sub <8 x i64> %sl1_16_64, %sl2_16_64
1236   %zw_16_64 = zext <8 x i16> %i16 to <8 x i64>
1237   %azw_16_64 = sub <8 x i64> %i64, %zw_16_64
1238   %zl1_16_64 = zext <8 x i16> %i16 to <8 x i64>
1239   %zl2_16_64 = zext <8 x i16> %i16 to <8 x i64>
1240   %azl_16_64 = sub <8 x i64> %zl1_16_64, %zl2_16_64
1242   %sw_32_64 = sext <8 x i32> %i32 to <8 x i64>
1243   %asw_32_64 = sub <8 x i64> %i64, %sw_32_64
1244   %sl1_32_64 = sext <8 x i32> %i32 to <8 x i64>
1245   %sl2_32_64 = sext <8 x i32> %i32 to <8 x i64>
1246   %asl_32_64 = sub <8 x i64> %sl1_32_64, %sl2_32_64
1248   %zw_32_64 = zext <8 x i32> %i32 to <8 x i64>
1249   %azw_32_64 = sub <8 x i64> %i64, %zw_32_64
1250   %zl1_32_64 = zext <8 x i32> %i32 to <8 x i64>
1251   %zl2_32_64 = zext <8 x i32> %i32 to <8 x i64>
1252   %azl_32_64 = sub <8 x i64> %zl1_32_64, %zl2_32_64
1254   ret void
1257 define void @extsubv16(<16 x i8> %i8, <16 x i16> %i16, <16 x i32> %i32, <16 x i64> %i64)  {
1258 ; CHECK-LABEL: 'extsubv16'
1259 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_8_16 = sext <16 x i8> %i8 to <16 x i16>
1260 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_8_16 = sub <16 x i16> %i16, %sw_8_16
1261 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_8_16 = sext <16 x i8> %i8 to <16 x i16>
1262 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_8_16 = sext <16 x i8> %i8 to <16 x i16>
1263 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_8_16 = sub <16 x i16> %sl1_8_16, %sl2_8_16
1264 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_8_16 = zext <16 x i8> %i8 to <16 x i16>
1265 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_8_16 = sub <16 x i16> %i16, %zw_8_16
1266 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_8_16 = zext <16 x i8> %i8 to <16 x i16>
1267 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_8_16 = zext <16 x i8> %i8 to <16 x i16>
1268 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_8_16 = sub <16 x i16> %zl1_8_16, %zl2_8_16
1269 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sw_8_32 = sext <16 x i8> %i8 to <16 x i32>
1270 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asw_8_32 = sub <16 x i32> %i32, %sw_8_32
1271 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sl1_8_32 = sext <16 x i8> %i8 to <16 x i32>
1272 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sl2_8_32 = sext <16 x i8> %i8 to <16 x i32>
1273 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asl_8_32 = sub <16 x i32> %sl1_8_32, %sl2_8_32
1274 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zw_8_32 = zext <16 x i8> %i8 to <16 x i32>
1275 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azw_8_32 = sub <16 x i32> %i32, %zw_8_32
1276 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zl1_8_32 = zext <16 x i8> %i8 to <16 x i32>
1277 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zl2_8_32 = zext <16 x i8> %i8 to <16 x i32>
1278 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azl_8_32 = sub <16 x i32> %zl1_8_32, %zl2_8_32
1279 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %sw_8_64 = sext <16 x i8> %i8 to <16 x i64>
1280 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %asw_8_64 = sub <16 x i64> %i64, %sw_8_64
1281 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %sl1_8_64 = sext <16 x i8> %i8 to <16 x i64>
1282 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %sl2_8_64 = sext <16 x i8> %i8 to <16 x i64>
1283 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %asl_8_64 = sub <16 x i64> %sl1_8_64, %sl2_8_64
1284 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %zw_8_64 = zext <16 x i8> %i8 to <16 x i64>
1285 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %azw_8_64 = sub <16 x i64> %i64, %zw_8_64
1286 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %zl1_8_64 = zext <16 x i8> %i8 to <16 x i64>
1287 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %zl2_8_64 = zext <16 x i8> %i8 to <16 x i64>
1288 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %azl_8_64 = sub <16 x i64> %zl1_8_64, %zl2_8_64
1289 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_16_32 = sext <16 x i16> %i16 to <16 x i32>
1290 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asw_16_32 = sub <16 x i32> %i32, %sw_16_32
1291 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_16_32 = sext <16 x i16> %i16 to <16 x i32>
1292 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_16_32 = sext <16 x i16> %i16 to <16 x i32>
1293 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asl_16_32 = sub <16 x i32> %sl1_16_32, %sl2_16_32
1294 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_16_32 = zext <16 x i16> %i16 to <16 x i32>
1295 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azw_16_32 = sub <16 x i32> %i32, %zw_16_32
1296 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_16_32 = zext <16 x i16> %i16 to <16 x i32>
1297 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_16_32 = zext <16 x i16> %i16 to <16 x i32>
1298 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azl_16_32 = sub <16 x i32> %zl1_16_32, %zl2_16_32
1299 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %sw_16_64 = sext <16 x i16> %i16 to <16 x i64>
1300 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %asw_16_64 = sub <16 x i64> %i64, %sw_16_64
1301 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %sl1_16_64 = sext <16 x i16> %i16 to <16 x i64>
1302 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %sl2_16_64 = sext <16 x i16> %i16 to <16 x i64>
1303 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %asl_16_64 = sub <16 x i64> %sl1_16_64, %sl2_16_64
1304 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %zw_16_64 = zext <16 x i16> %i16 to <16 x i64>
1305 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %azw_16_64 = sub <16 x i64> %i64, %zw_16_64
1306 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %zl1_16_64 = zext <16 x i16> %i16 to <16 x i64>
1307 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %zl2_16_64 = zext <16 x i16> %i16 to <16 x i64>
1308 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %azl_16_64 = sub <16 x i64> %zl1_16_64, %zl2_16_64
1309 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sw_32_64 = sext <16 x i32> %i32 to <16 x i64>
1310 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %asw_32_64 = sub <16 x i64> %i64, %sw_32_64
1311 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_32_64 = sext <16 x i32> %i32 to <16 x i64>
1312 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_32_64 = sext <16 x i32> %i32 to <16 x i64>
1313 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %asl_32_64 = sub <16 x i64> %sl1_32_64, %sl2_32_64
1314 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_32_64 = zext <16 x i32> %i32 to <16 x i64>
1315 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %azw_32_64 = sub <16 x i64> %i64, %zw_32_64
1316 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext <16 x i32> %i32 to <16 x i64>
1317 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext <16 x i32> %i32 to <16 x i64>
1318 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %azl_32_64 = sub <16 x i64> %zl1_32_64, %zl2_32_64
1319 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
1321   %sw_8_16 = sext <16 x i8> %i8 to <16 x i16>
1322   %asw_8_16 = sub <16 x i16> %i16, %sw_8_16
1323   %sl1_8_16 = sext <16 x i8> %i8 to <16 x i16>
1324   %sl2_8_16 = sext <16 x i8> %i8 to <16 x i16>
1325   %asl_8_16 = sub <16 x i16> %sl1_8_16, %sl2_8_16
1327   %zw_8_16 = zext <16 x i8> %i8 to <16 x i16>
1328   %azw_8_16 = sub <16 x i16> %i16, %zw_8_16
1329   %zl1_8_16 = zext <16 x i8> %i8 to <16 x i16>
1330   %zl2_8_16 = zext <16 x i8> %i8 to <16 x i16>
1331   %azl_8_16 = sub <16 x i16> %zl1_8_16, %zl2_8_16
1333   %sw_8_32 = sext <16 x i8> %i8 to <16 x i32>
1334   %asw_8_32 = sub <16 x i32> %i32, %sw_8_32
1335   %sl1_8_32 = sext <16 x i8> %i8 to <16 x i32>
1336   %sl2_8_32 = sext <16 x i8> %i8 to <16 x i32>
1337   %asl_8_32 = sub <16 x i32> %sl1_8_32, %sl2_8_32
1339   %zw_8_32 = zext <16 x i8> %i8 to <16 x i32>
1340   %azw_8_32 = sub <16 x i32> %i32, %zw_8_32
1341   %zl1_8_32 = zext <16 x i8> %i8 to <16 x i32>
1342   %zl2_8_32 = zext <16 x i8> %i8 to <16 x i32>
1343   %azl_8_32 = sub <16 x i32> %zl1_8_32, %zl2_8_32
1345   %sw_8_64 = sext <16 x i8> %i8 to <16 x i64>
1346   %asw_8_64 = sub <16 x i64> %i64, %sw_8_64
1347   %sl1_8_64 = sext <16 x i8> %i8 to <16 x i64>
1348   %sl2_8_64 = sext <16 x i8> %i8 to <16 x i64>
1349   %asl_8_64 = sub <16 x i64> %sl1_8_64, %sl2_8_64
1351   %zw_8_64 = zext <16 x i8> %i8 to <16 x i64>
1352   %azw_8_64 = sub <16 x i64> %i64, %zw_8_64
1353   %zl1_8_64 = zext <16 x i8> %i8 to <16 x i64>
1354   %zl2_8_64 = zext <16 x i8> %i8 to <16 x i64>
1355   %azl_8_64 = sub <16 x i64> %zl1_8_64, %zl2_8_64
1357   %sw_16_32 = sext <16 x i16> %i16 to <16 x i32>
1358   %asw_16_32 = sub <16 x i32> %i32, %sw_16_32
1359   %sl1_16_32 = sext <16 x i16> %i16 to <16 x i32>
1360   %sl2_16_32 = sext <16 x i16> %i16 to <16 x i32>
1361   %asl_16_32 = sub <16 x i32> %sl1_16_32, %sl2_16_32
1363   %zw_16_32 = zext <16 x i16> %i16 to <16 x i32>
1364   %azw_16_32 = sub <16 x i32> %i32, %zw_16_32
1365   %zl1_16_32 = zext <16 x i16> %i16 to <16 x i32>
1366   %zl2_16_32 = zext <16 x i16> %i16 to <16 x i32>
1367   %azl_16_32 = sub <16 x i32> %zl1_16_32, %zl2_16_32
1369   %sw_16_64 = sext <16 x i16> %i16 to <16 x i64>
1370   %asw_16_64 = sub <16 x i64> %i64, %sw_16_64
1371   %sl1_16_64 = sext <16 x i16> %i16 to <16 x i64>
1372   %sl2_16_64 = sext <16 x i16> %i16 to <16 x i64>
1373   %asl_16_64 = sub <16 x i64> %sl1_16_64, %sl2_16_64
1375   %zw_16_64 = zext <16 x i16> %i16 to <16 x i64>
1376   %azw_16_64 = sub <16 x i64> %i64, %zw_16_64
1377   %zl1_16_64 = zext <16 x i16> %i16 to <16 x i64>
1378   %zl2_16_64 = zext <16 x i16> %i16 to <16 x i64>
1379   %azl_16_64 = sub <16 x i64> %zl1_16_64, %zl2_16_64
1381   %sw_32_64 = sext <16 x i32> %i32 to <16 x i64>
1382   %asw_32_64 = sub <16 x i64> %i64, %sw_32_64
1383   %sl1_32_64 = sext <16 x i32> %i32 to <16 x i64>
1384   %sl2_32_64 = sext <16 x i32> %i32 to <16 x i64>
1385   %asl_32_64 = sub <16 x i64> %sl1_32_64, %sl2_32_64
1387   %zw_32_64 = zext <16 x i32> %i32 to <16 x i64>
1388   %azw_32_64 = sub <16 x i64> %i64, %zw_32_64
1389   %zl1_32_64 = zext <16 x i32> %i32 to <16 x i64>
1390   %zl2_32_64 = zext <16 x i32> %i32 to <16 x i64>
1391   %azl_32_64 = sub <16 x i64> %zl1_32_64, %zl2_32_64
1393   ret void
1396 define void @extmulv1(i8 %i8, i16 %i16, i32 %i32, i64 %i64)  {
1397 ; CHECK-LABEL: 'extmulv1'
1398 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_16 = sext i8 %i8 to i16
1399 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_16 = mul i16 %i16, %sw_8_16
1400 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_16 = sext i8 %i8 to i16
1401 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_16 = sext i8 %i8 to i16
1402 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_16 = mul i16 %sl1_8_16, %sl2_8_16
1403 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_16 = zext i8 %i8 to i16
1404 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_16 = mul i16 %i16, %zw_8_16
1405 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_16 = zext i8 %i8 to i16
1406 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_16 = zext i8 %i8 to i16
1407 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_16 = mul i16 %zl1_8_16, %zl2_8_16
1408 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_32 = sext i8 %i8 to i32
1409 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_32 = mul i32 %i32, %sw_8_32
1410 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_32 = sext i8 %i8 to i32
1411 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_32 = sext i8 %i8 to i32
1412 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_32 = mul i32 %sl1_8_32, %sl2_8_32
1413 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_32 = zext i8 %i8 to i32
1414 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_32 = mul i32 %i32, %zw_8_32
1415 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_32 = zext i8 %i8 to i32
1416 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_32 = zext i8 %i8 to i32
1417 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_32 = mul i32 %zl1_8_32, %zl2_8_32
1418 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_64 = sext i8 %i8 to i64
1419 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_64 = mul i64 %i64, %sw_8_64
1420 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_64 = sext i8 %i8 to i64
1421 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_64 = sext i8 %i8 to i64
1422 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_64 = mul i64 %sl1_8_64, %sl2_8_64
1423 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_8_64 = zext i8 %i8 to i64
1424 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_64 = mul i64 %i64, %zw_8_64
1425 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_8_64 = zext i8 %i8 to i64
1426 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_8_64 = zext i8 %i8 to i64
1427 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_64 = mul i64 %zl1_8_64, %zl2_8_64
1428 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_16_32 = sext i16 %i16 to i32
1429 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_32 = mul i32 %i32, %sw_16_32
1430 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_16_32 = sext i16 %i16 to i32
1431 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_16_32 = sext i16 %i16 to i32
1432 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_32 = mul i32 %sl1_16_32, %sl2_16_32
1433 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_16_32 = zext i16 %i16 to i32
1434 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_32 = mul i32 %i32, %zw_16_32
1435 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_16_32 = zext i16 %i16 to i32
1436 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_16_32 = zext i16 %i16 to i32
1437 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_32 = mul i32 %zl1_16_32, %zl2_16_32
1438 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_16_64 = sext i16 %i16 to i64
1439 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_64 = mul i64 %i64, %sw_16_64
1440 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_16_64 = sext i16 %i16 to i64
1441 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_16_64 = sext i16 %i16 to i64
1442 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_64 = mul i64 %sl1_16_64, %sl2_16_64
1443 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_16_64 = zext i16 %i16 to i64
1444 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_64 = mul i64 %i64, %zw_16_64
1445 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_16_64 = zext i16 %i16 to i64
1446 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_16_64 = zext i16 %i16 to i64
1447 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_64 = mul i64 %zl1_16_64, %zl2_16_64
1448 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_32_64 = sext i32 %i32 to i64
1449 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_32_64 = mul i64 %i64, %sw_32_64
1450 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_32_64 = sext i32 %i32 to i64
1451 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_32_64 = sext i32 %i32 to i64
1452 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_32_64 = mul i64 %sl1_32_64, %sl2_32_64
1453 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zw_32_64 = zext i32 %i32 to i64
1454 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_32_64 = mul i64 %i64, %zw_32_64
1455 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext i32 %i32 to i64
1456 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext i32 %i32 to i64
1457 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_32_64 = mul i64 %zl1_32_64, %zl2_32_64
1458 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
1460   %sw_8_16 = sext i8 %i8 to i16
1461   %asw_8_16 = mul i16 %i16, %sw_8_16
1462   %sl1_8_16 = sext i8 %i8 to i16
1463   %sl2_8_16 = sext i8 %i8 to i16
1464   %asl_8_16 = mul i16 %sl1_8_16, %sl2_8_16
1466   %zw_8_16 = zext i8 %i8 to i16
1467   %azw_8_16 = mul i16 %i16, %zw_8_16
1468   %zl1_8_16 = zext i8 %i8 to i16
1469   %zl2_8_16 = zext i8 %i8 to i16
1470   %azl_8_16 = mul i16 %zl1_8_16, %zl2_8_16
1472   %sw_8_32 = sext i8 %i8 to i32
1473   %asw_8_32 = mul i32 %i32, %sw_8_32
1474   %sl1_8_32 = sext i8 %i8 to i32
1475   %sl2_8_32 = sext i8 %i8 to i32
1476   %asl_8_32 = mul i32 %sl1_8_32, %sl2_8_32
1478   %zw_8_32 = zext i8 %i8 to i32
1479   %azw_8_32 = mul i32 %i32, %zw_8_32
1480   %zl1_8_32 = zext i8 %i8 to i32
1481   %zl2_8_32 = zext i8 %i8 to i32
1482   %azl_8_32 = mul i32 %zl1_8_32, %zl2_8_32
1484   %sw_8_64 = sext i8 %i8 to i64
1485   %asw_8_64 = mul i64 %i64, %sw_8_64
1486   %sl1_8_64 = sext i8 %i8 to i64
1487   %sl2_8_64 = sext i8 %i8 to i64
1488   %asl_8_64 = mul i64 %sl1_8_64, %sl2_8_64
1490   %zw_8_64 = zext i8 %i8 to i64
1491   %azw_8_64 = mul i64 %i64, %zw_8_64
1492   %zl1_8_64 = zext i8 %i8 to i64
1493   %zl2_8_64 = zext i8 %i8 to i64
1494   %azl_8_64 = mul i64 %zl1_8_64, %zl2_8_64
1496   %sw_16_32 = sext i16 %i16 to i32
1497   %asw_16_32 = mul i32 %i32, %sw_16_32
1498   %sl1_16_32 = sext i16 %i16 to i32
1499   %sl2_16_32 = sext i16 %i16 to i32
1500   %asl_16_32 = mul i32 %sl1_16_32, %sl2_16_32
1502   %zw_16_32 = zext i16 %i16 to i32
1503   %azw_16_32 = mul i32 %i32, %zw_16_32
1504   %zl1_16_32 = zext i16 %i16 to i32
1505   %zl2_16_32 = zext i16 %i16 to i32
1506   %azl_16_32 = mul i32 %zl1_16_32, %zl2_16_32
1508   %sw_16_64 = sext i16 %i16 to i64
1509   %asw_16_64 = mul i64 %i64, %sw_16_64
1510   %sl1_16_64 = sext i16 %i16 to i64
1511   %sl2_16_64 = sext i16 %i16 to i64
1512   %asl_16_64 = mul i64 %sl1_16_64, %sl2_16_64
1514   %zw_16_64 = zext i16 %i16 to i64
1515   %azw_16_64 = mul i64 %i64, %zw_16_64
1516   %zl1_16_64 = zext i16 %i16 to i64
1517   %zl2_16_64 = zext i16 %i16 to i64
1518   %azl_16_64 = mul i64 %zl1_16_64, %zl2_16_64
1520   %sw_32_64 = sext i32 %i32 to i64
1521   %asw_32_64 = mul i64 %i64, %sw_32_64
1522   %sl1_32_64 = sext i32 %i32 to i64
1523   %sl2_32_64 = sext i32 %i32 to i64
1524   %asl_32_64 = mul i64 %sl1_32_64, %sl2_32_64
1526   %zw_32_64 = zext i32 %i32 to i64
1527   %azw_32_64 = mul i64 %i64, %zw_32_64
1528   %zl1_32_64 = zext i32 %i32 to i64
1529   %zl2_32_64 = zext i32 %i32 to i64
1530   %azl_32_64 = mul i64 %zl1_32_64, %zl2_32_64
1532   ret void
1535 define void @extmulv2(<2 x i8> %i8, <2 x i16> %i16, <2 x i32> %i32, <2 x i64> %i64)  {
1536 ; CHECK-LABEL: 'extmulv2'
1537 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_16 = sext <2 x i8> %i8 to <2 x i16>
1538 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_16 = mul <2 x i16> %i16, %sw_8_16
1539 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_16 = sext <2 x i8> %i8 to <2 x i16>
1540 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_16 = sext <2 x i8> %i8 to <2 x i16>
1541 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_16 = mul <2 x i16> %sl1_8_16, %sl2_8_16
1542 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_16 = zext <2 x i8> %i8 to <2 x i16>
1543 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_16 = mul <2 x i16> %i16, %zw_8_16
1544 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_16 = zext <2 x i8> %i8 to <2 x i16>
1545 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_16 = zext <2 x i8> %i8 to <2 x i16>
1546 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_16 = mul <2 x i16> %zl1_8_16, %zl2_8_16
1547 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_32 = sext <2 x i8> %i8 to <2 x i32>
1548 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_32 = mul <2 x i32> %i32, %sw_8_32
1549 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_32 = sext <2 x i8> %i8 to <2 x i32>
1550 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_32 = sext <2 x i8> %i8 to <2 x i32>
1551 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_32 = mul <2 x i32> %sl1_8_32, %sl2_8_32
1552 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_32 = zext <2 x i8> %i8 to <2 x i32>
1553 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_32 = mul <2 x i32> %i32, %zw_8_32
1554 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_32 = zext <2 x i8> %i8 to <2 x i32>
1555 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_32 = zext <2 x i8> %i8 to <2 x i32>
1556 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_32 = mul <2 x i32> %zl1_8_32, %zl2_8_32
1557 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_64 = sext <2 x i8> %i8 to <2 x i64>
1558 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 14 for instruction: %asw_8_64 = mul <2 x i64> %i64, %sw_8_64
1559 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_64 = sext <2 x i8> %i8 to <2 x i64>
1560 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_64 = sext <2 x i8> %i8 to <2 x i64>
1561 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 14 for instruction: %asl_8_64 = mul <2 x i64> %sl1_8_64, %sl2_8_64
1562 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_64 = zext <2 x i8> %i8 to <2 x i64>
1563 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 14 for instruction: %azw_8_64 = mul <2 x i64> %i64, %zw_8_64
1564 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_64 = zext <2 x i8> %i8 to <2 x i64>
1565 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_64 = zext <2 x i8> %i8 to <2 x i64>
1566 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 14 for instruction: %azl_8_64 = mul <2 x i64> %zl1_8_64, %zl2_8_64
1567 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_16_32 = sext <2 x i16> %i16 to <2 x i32>
1568 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_32 = mul <2 x i32> %i32, %sw_16_32
1569 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_16_32 = sext <2 x i16> %i16 to <2 x i32>
1570 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_16_32 = sext <2 x i16> %i16 to <2 x i32>
1571 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_32 = mul <2 x i32> %sl1_16_32, %sl2_16_32
1572 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_16_32 = zext <2 x i16> %i16 to <2 x i32>
1573 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_32 = mul <2 x i32> %i32, %zw_16_32
1574 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_16_32 = zext <2 x i16> %i16 to <2 x i32>
1575 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_16_32 = zext <2 x i16> %i16 to <2 x i32>
1576 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_32 = mul <2 x i32> %zl1_16_32, %zl2_16_32
1577 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_16_64 = sext <2 x i16> %i16 to <2 x i64>
1578 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 14 for instruction: %asw_16_64 = mul <2 x i64> %i64, %sw_16_64
1579 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_16_64 = sext <2 x i16> %i16 to <2 x i64>
1580 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_16_64 = sext <2 x i16> %i16 to <2 x i64>
1581 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 14 for instruction: %asl_16_64 = mul <2 x i64> %sl1_16_64, %sl2_16_64
1582 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_16_64 = zext <2 x i16> %i16 to <2 x i64>
1583 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 14 for instruction: %azw_16_64 = mul <2 x i64> %i64, %zw_16_64
1584 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_16_64 = zext <2 x i16> %i16 to <2 x i64>
1585 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_16_64 = zext <2 x i16> %i16 to <2 x i64>
1586 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 14 for instruction: %azl_16_64 = mul <2 x i64> %zl1_16_64, %zl2_16_64
1587 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_32_64 = sext <2 x i32> %i32 to <2 x i64>
1588 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 14 for instruction: %asw_32_64 = mul <2 x i64> %i64, %sw_32_64
1589 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_32_64 = sext <2 x i32> %i32 to <2 x i64>
1590 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_32_64 = sext <2 x i32> %i32 to <2 x i64>
1591 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_32_64 = mul <2 x i64> %sl1_32_64, %sl2_32_64
1592 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_32_64 = zext <2 x i32> %i32 to <2 x i64>
1593 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 14 for instruction: %azw_32_64 = mul <2 x i64> %i64, %zw_32_64
1594 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext <2 x i32> %i32 to <2 x i64>
1595 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext <2 x i32> %i32 to <2 x i64>
1596 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_32_64 = mul <2 x i64> %zl1_32_64, %zl2_32_64
1597 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
1599   %sw_8_16 = sext <2 x i8> %i8 to <2 x i16>
1600   %asw_8_16 = mul <2 x i16> %i16, %sw_8_16
1601   %sl1_8_16 = sext <2 x i8> %i8 to <2 x i16>
1602   %sl2_8_16 = sext <2 x i8> %i8 to <2 x i16>
1603   %asl_8_16 = mul <2 x i16> %sl1_8_16, %sl2_8_16
1605   %zw_8_16 = zext <2 x i8> %i8 to <2 x i16>
1606   %azw_8_16 = mul <2 x i16> %i16, %zw_8_16
1607   %zl1_8_16 = zext <2 x i8> %i8 to <2 x i16>
1608   %zl2_8_16 = zext <2 x i8> %i8 to <2 x i16>
1609   %azl_8_16 = mul <2 x i16> %zl1_8_16, %zl2_8_16
1611   %sw_8_32 = sext <2 x i8> %i8 to <2 x i32>
1612   %asw_8_32 = mul <2 x i32> %i32, %sw_8_32
1613   %sl1_8_32 = sext <2 x i8> %i8 to <2 x i32>
1614   %sl2_8_32 = sext <2 x i8> %i8 to <2 x i32>
1615   %asl_8_32 = mul <2 x i32> %sl1_8_32, %sl2_8_32
1617   %zw_8_32 = zext <2 x i8> %i8 to <2 x i32>
1618   %azw_8_32 = mul <2 x i32> %i32, %zw_8_32
1619   %zl1_8_32 = zext <2 x i8> %i8 to <2 x i32>
1620   %zl2_8_32 = zext <2 x i8> %i8 to <2 x i32>
1621   %azl_8_32 = mul <2 x i32> %zl1_8_32, %zl2_8_32
1623   %sw_8_64 = sext <2 x i8> %i8 to <2 x i64>
1624   %asw_8_64 = mul <2 x i64> %i64, %sw_8_64
1625   %sl1_8_64 = sext <2 x i8> %i8 to <2 x i64>
1626   %sl2_8_64 = sext <2 x i8> %i8 to <2 x i64>
1627   %asl_8_64 = mul <2 x i64> %sl1_8_64, %sl2_8_64
1629   %zw_8_64 = zext <2 x i8> %i8 to <2 x i64>
1630   %azw_8_64 = mul <2 x i64> %i64, %zw_8_64
1631   %zl1_8_64 = zext <2 x i8> %i8 to <2 x i64>
1632   %zl2_8_64 = zext <2 x i8> %i8 to <2 x i64>
1633   %azl_8_64 = mul <2 x i64> %zl1_8_64, %zl2_8_64
1635   %sw_16_32 = sext <2 x i16> %i16 to <2 x i32>
1636   %asw_16_32 = mul <2 x i32> %i32, %sw_16_32
1637   %sl1_16_32 = sext <2 x i16> %i16 to <2 x i32>
1638   %sl2_16_32 = sext <2 x i16> %i16 to <2 x i32>
1639   %asl_16_32 = mul <2 x i32> %sl1_16_32, %sl2_16_32
1641   %zw_16_32 = zext <2 x i16> %i16 to <2 x i32>
1642   %azw_16_32 = mul <2 x i32> %i32, %zw_16_32
1643   %zl1_16_32 = zext <2 x i16> %i16 to <2 x i32>
1644   %zl2_16_32 = zext <2 x i16> %i16 to <2 x i32>
1645   %azl_16_32 = mul <2 x i32> %zl1_16_32, %zl2_16_32
1647   %sw_16_64 = sext <2 x i16> %i16 to <2 x i64>
1648   %asw_16_64 = mul <2 x i64> %i64, %sw_16_64
1649   %sl1_16_64 = sext <2 x i16> %i16 to <2 x i64>
1650   %sl2_16_64 = sext <2 x i16> %i16 to <2 x i64>
1651   %asl_16_64 = mul <2 x i64> %sl1_16_64, %sl2_16_64
1653   %zw_16_64 = zext <2 x i16> %i16 to <2 x i64>
1654   %azw_16_64 = mul <2 x i64> %i64, %zw_16_64
1655   %zl1_16_64 = zext <2 x i16> %i16 to <2 x i64>
1656   %zl2_16_64 = zext <2 x i16> %i16 to <2 x i64>
1657   %azl_16_64 = mul <2 x i64> %zl1_16_64, %zl2_16_64
1659   %sw_32_64 = sext <2 x i32> %i32 to <2 x i64>
1660   %asw_32_64 = mul <2 x i64> %i64, %sw_32_64
1661   %sl1_32_64 = sext <2 x i32> %i32 to <2 x i64>
1662   %sl2_32_64 = sext <2 x i32> %i32 to <2 x i64>
1663   %asl_32_64 = mul <2 x i64> %sl1_32_64, %sl2_32_64
1665   %zw_32_64 = zext <2 x i32> %i32 to <2 x i64>
1666   %azw_32_64 = mul <2 x i64> %i64, %zw_32_64
1667   %zl1_32_64 = zext <2 x i32> %i32 to <2 x i64>
1668   %zl2_32_64 = zext <2 x i32> %i32 to <2 x i64>
1669   %azl_32_64 = mul <2 x i64> %zl1_32_64, %zl2_32_64
1671   ret void
1674 define void @extmulv4(<4 x i8> %i8, <4 x i16> %i16, <4 x i32> %i32, <4 x i64> %i64)  {
1675 ; CHECK-LABEL: 'extmulv4'
1676 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_16 = sext <4 x i8> %i8 to <4 x i16>
1677 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_16 = mul <4 x i16> %i16, %sw_8_16
1678 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_16 = sext <4 x i8> %i8 to <4 x i16>
1679 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_16 = sext <4 x i8> %i8 to <4 x i16>
1680 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_16 = mul <4 x i16> %sl1_8_16, %sl2_8_16
1681 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_16 = zext <4 x i8> %i8 to <4 x i16>
1682 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_16 = mul <4 x i16> %i16, %zw_8_16
1683 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_16 = zext <4 x i8> %i8 to <4 x i16>
1684 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_16 = zext <4 x i8> %i8 to <4 x i16>
1685 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_16 = mul <4 x i16> %zl1_8_16, %zl2_8_16
1686 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_32 = sext <4 x i8> %i8 to <4 x i32>
1687 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_32 = mul <4 x i32> %i32, %sw_8_32
1688 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_32 = sext <4 x i8> %i8 to <4 x i32>
1689 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl2_8_32 = sext <4 x i8> %i8 to <4 x i32>
1690 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_32 = mul <4 x i32> %sl1_8_32, %sl2_8_32
1691 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_32 = zext <4 x i8> %i8 to <4 x i32>
1692 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_32 = mul <4 x i32> %i32, %zw_8_32
1693 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl1_8_32 = zext <4 x i8> %i8 to <4 x i32>
1694 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zl2_8_32 = zext <4 x i8> %i8 to <4 x i32>
1695 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_32 = mul <4 x i32> %zl1_8_32, %zl2_8_32
1696 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sw_8_64 = sext <4 x i8> %i8 to <4 x i64>
1697 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 28 for instruction: %asw_8_64 = mul <4 x i64> %i64, %sw_8_64
1698 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl1_8_64 = sext <4 x i8> %i8 to <4 x i64>
1699 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl2_8_64 = sext <4 x i8> %i8 to <4 x i64>
1700 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 28 for instruction: %asl_8_64 = mul <4 x i64> %sl1_8_64, %sl2_8_64
1701 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zw_8_64 = zext <4 x i8> %i8 to <4 x i64>
1702 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 28 for instruction: %azw_8_64 = mul <4 x i64> %i64, %zw_8_64
1703 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl1_8_64 = zext <4 x i8> %i8 to <4 x i64>
1704 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl2_8_64 = zext <4 x i8> %i8 to <4 x i64>
1705 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 28 for instruction: %azl_8_64 = mul <4 x i64> %zl1_8_64, %zl2_8_64
1706 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_16_32 = sext <4 x i16> %i16 to <4 x i32>
1707 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_16_32 = mul <4 x i32> %i32, %sw_16_32
1708 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_16_32 = sext <4 x i16> %i16 to <4 x i32>
1709 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_16_32 = sext <4 x i16> %i16 to <4 x i32>
1710 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_16_32 = mul <4 x i32> %sl1_16_32, %sl2_16_32
1711 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_16_32 = zext <4 x i16> %i16 to <4 x i32>
1712 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_16_32 = mul <4 x i32> %i32, %zw_16_32
1713 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_16_32 = zext <4 x i16> %i16 to <4 x i32>
1714 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_16_32 = zext <4 x i16> %i16 to <4 x i32>
1715 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_16_32 = mul <4 x i32> %zl1_16_32, %zl2_16_32
1716 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sw_16_64 = sext <4 x i16> %i16 to <4 x i64>
1717 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 28 for instruction: %asw_16_64 = mul <4 x i64> %i64, %sw_16_64
1718 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl1_16_64 = sext <4 x i16> %i16 to <4 x i64>
1719 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl2_16_64 = sext <4 x i16> %i16 to <4 x i64>
1720 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 28 for instruction: %asl_16_64 = mul <4 x i64> %sl1_16_64, %sl2_16_64
1721 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zw_16_64 = zext <4 x i16> %i16 to <4 x i64>
1722 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 28 for instruction: %azw_16_64 = mul <4 x i64> %i64, %zw_16_64
1723 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl1_16_64 = zext <4 x i16> %i16 to <4 x i64>
1724 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl2_16_64 = zext <4 x i16> %i16 to <4 x i64>
1725 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 28 for instruction: %azl_16_64 = mul <4 x i64> %zl1_16_64, %zl2_16_64
1726 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %sw_32_64 = sext <4 x i32> %i32 to <4 x i64>
1727 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 28 for instruction: %asw_32_64 = mul <4 x i64> %i64, %sw_32_64
1728 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_32_64 = sext <4 x i32> %i32 to <4 x i64>
1729 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_32_64 = sext <4 x i32> %i32 to <4 x i64>
1730 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_32_64 = mul <4 x i64> %sl1_32_64, %sl2_32_64
1731 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %zw_32_64 = zext <4 x i32> %i32 to <4 x i64>
1732 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 28 for instruction: %azw_32_64 = mul <4 x i64> %i64, %zw_32_64
1733 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext <4 x i32> %i32 to <4 x i64>
1734 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext <4 x i32> %i32 to <4 x i64>
1735 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_32_64 = mul <4 x i64> %zl1_32_64, %zl2_32_64
1736 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
1738   %sw_8_16 = sext <4 x i8> %i8 to <4 x i16>
1739   %asw_8_16 = mul <4 x i16> %i16, %sw_8_16
1740   %sl1_8_16 = sext <4 x i8> %i8 to <4 x i16>
1741   %sl2_8_16 = sext <4 x i8> %i8 to <4 x i16>
1742   %asl_8_16 = mul <4 x i16> %sl1_8_16, %sl2_8_16
1744   %zw_8_16 = zext <4 x i8> %i8 to <4 x i16>
1745   %azw_8_16 = mul <4 x i16> %i16, %zw_8_16
1746   %zl1_8_16 = zext <4 x i8> %i8 to <4 x i16>
1747   %zl2_8_16 = zext <4 x i8> %i8 to <4 x i16>
1748   %azl_8_16 = mul <4 x i16> %zl1_8_16, %zl2_8_16
1750   %sw_8_32 = sext <4 x i8> %i8 to <4 x i32>
1751   %asw_8_32 = mul <4 x i32> %i32, %sw_8_32
1752   %sl1_8_32 = sext <4 x i8> %i8 to <4 x i32>
1753   %sl2_8_32 = sext <4 x i8> %i8 to <4 x i32>
1754   %asl_8_32 = mul <4 x i32> %sl1_8_32, %sl2_8_32
1756   %zw_8_32 = zext <4 x i8> %i8 to <4 x i32>
1757   %azw_8_32 = mul <4 x i32> %i32, %zw_8_32
1758   %zl1_8_32 = zext <4 x i8> %i8 to <4 x i32>
1759   %zl2_8_32 = zext <4 x i8> %i8 to <4 x i32>
1760   %azl_8_32 = mul <4 x i32> %zl1_8_32, %zl2_8_32
1762   %sw_8_64 = sext <4 x i8> %i8 to <4 x i64>
1763   %asw_8_64 = mul <4 x i64> %i64, %sw_8_64
1764   %sl1_8_64 = sext <4 x i8> %i8 to <4 x i64>
1765   %sl2_8_64 = sext <4 x i8> %i8 to <4 x i64>
1766   %asl_8_64 = mul <4 x i64> %sl1_8_64, %sl2_8_64
1768   %zw_8_64 = zext <4 x i8> %i8 to <4 x i64>
1769   %azw_8_64 = mul <4 x i64> %i64, %zw_8_64
1770   %zl1_8_64 = zext <4 x i8> %i8 to <4 x i64>
1771   %zl2_8_64 = zext <4 x i8> %i8 to <4 x i64>
1772   %azl_8_64 = mul <4 x i64> %zl1_8_64, %zl2_8_64
1774   %sw_16_32 = sext <4 x i16> %i16 to <4 x i32>
1775   %asw_16_32 = mul <4 x i32> %i32, %sw_16_32
1776   %sl1_16_32 = sext <4 x i16> %i16 to <4 x i32>
1777   %sl2_16_32 = sext <4 x i16> %i16 to <4 x i32>
1778   %asl_16_32 = mul <4 x i32> %sl1_16_32, %sl2_16_32
1780   %zw_16_32 = zext <4 x i16> %i16 to <4 x i32>
1781   %azw_16_32 = mul <4 x i32> %i32, %zw_16_32
1782   %zl1_16_32 = zext <4 x i16> %i16 to <4 x i32>
1783   %zl2_16_32 = zext <4 x i16> %i16 to <4 x i32>
1784   %azl_16_32 = mul <4 x i32> %zl1_16_32, %zl2_16_32
1786   %sw_16_64 = sext <4 x i16> %i16 to <4 x i64>
1787   %asw_16_64 = mul <4 x i64> %i64, %sw_16_64
1788   %sl1_16_64 = sext <4 x i16> %i16 to <4 x i64>
1789   %sl2_16_64 = sext <4 x i16> %i16 to <4 x i64>
1790   %asl_16_64 = mul <4 x i64> %sl1_16_64, %sl2_16_64
1792   %zw_16_64 = zext <4 x i16> %i16 to <4 x i64>
1793   %azw_16_64 = mul <4 x i64> %i64, %zw_16_64
1794   %zl1_16_64 = zext <4 x i16> %i16 to <4 x i64>
1795   %zl2_16_64 = zext <4 x i16> %i16 to <4 x i64>
1796   %azl_16_64 = mul <4 x i64> %zl1_16_64, %zl2_16_64
1798   %sw_32_64 = sext <4 x i32> %i32 to <4 x i64>
1799   %asw_32_64 = mul <4 x i64> %i64, %sw_32_64
1800   %sl1_32_64 = sext <4 x i32> %i32 to <4 x i64>
1801   %sl2_32_64 = sext <4 x i32> %i32 to <4 x i64>
1802   %asl_32_64 = mul <4 x i64> %sl1_32_64, %sl2_32_64
1804   %zw_32_64 = zext <4 x i32> %i32 to <4 x i64>
1805   %azw_32_64 = mul <4 x i64> %i64, %zw_32_64
1806   %zl1_32_64 = zext <4 x i32> %i32 to <4 x i64>
1807   %zl2_32_64 = zext <4 x i32> %i32 to <4 x i64>
1808   %azl_32_64 = mul <4 x i64> %zl1_32_64, %zl2_32_64
1810   ret void
1813 define void @extmulv8(<8 x i8> %i8, <8 x i16> %i16, <8 x i32> %i32, <8 x i64> %i64)  {
1814 ; CHECK-LABEL: 'extmulv8'
1815 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sw_8_16 = sext <8 x i8> %i8 to <8 x i16>
1816 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asw_8_16 = mul <8 x i16> %i16, %sw_8_16
1817 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
1818 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_8_16 = sext <8 x i8> %i8 to <8 x i16>
1819 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_16 = mul <8 x i16> %sl1_8_16, %sl2_8_16
1820 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %zw_8_16 = zext <8 x i8> %i8 to <8 x i16>
1821 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azw_8_16 = mul <8 x i16> %i16, %zw_8_16
1822 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
1823 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_8_16 = zext <8 x i8> %i8 to <8 x i16>
1824 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_16 = mul <8 x i16> %zl1_8_16, %zl2_8_16
1825 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sw_8_32 = sext <8 x i8> %i8 to <8 x i32>
1826 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_8_32 = mul <8 x i32> %i32, %sw_8_32
1827 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl1_8_32 = sext <8 x i8> %i8 to <8 x i32>
1828 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %sl2_8_32 = sext <8 x i8> %i8 to <8 x i32>
1829 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_8_32 = mul <8 x i32> %sl1_8_32, %sl2_8_32
1830 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zw_8_32 = zext <8 x i8> %i8 to <8 x i32>
1831 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_8_32 = mul <8 x i32> %i32, %zw_8_32
1832 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl1_8_32 = zext <8 x i8> %i8 to <8 x i32>
1833 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %zl2_8_32 = zext <8 x i8> %i8 to <8 x i32>
1834 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_8_32 = mul <8 x i32> %zl1_8_32, %zl2_8_32
1835 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %sw_8_64 = sext <8 x i8> %i8 to <8 x i64>
1836 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 56 for instruction: %asw_8_64 = mul <8 x i64> %i64, %sw_8_64
1837 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %sl1_8_64 = sext <8 x i8> %i8 to <8 x i64>
1838 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %sl2_8_64 = sext <8 x i8> %i8 to <8 x i64>
1839 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 56 for instruction: %asl_8_64 = mul <8 x i64> %sl1_8_64, %sl2_8_64
1840 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %zw_8_64 = zext <8 x i8> %i8 to <8 x i64>
1841 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 56 for instruction: %azw_8_64 = mul <8 x i64> %i64, %zw_8_64
1842 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %zl1_8_64 = zext <8 x i8> %i8 to <8 x i64>
1843 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %zl2_8_64 = zext <8 x i8> %i8 to <8 x i64>
1844 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 56 for instruction: %azl_8_64 = mul <8 x i64> %zl1_8_64, %zl2_8_64
1845 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %sw_16_32 = sext <8 x i16> %i16 to <8 x i32>
1846 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_16_32 = mul <8 x i32> %i32, %sw_16_32
1847 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_16_32 = sext <8 x i16> %i16 to <8 x i32>
1848 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_16_32 = sext <8 x i16> %i16 to <8 x i32>
1849 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_16_32 = mul <8 x i32> %sl1_16_32, %sl2_16_32
1850 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %zw_16_32 = zext <8 x i16> %i16 to <8 x i32>
1851 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_16_32 = mul <8 x i32> %i32, %zw_16_32
1852 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_16_32 = zext <8 x i16> %i16 to <8 x i32>
1853 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_16_32 = zext <8 x i16> %i16 to <8 x i32>
1854 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_16_32 = mul <8 x i32> %zl1_16_32, %zl2_16_32
1855 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sw_16_64 = sext <8 x i16> %i16 to <8 x i64>
1856 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 56 for instruction: %asw_16_64 = mul <8 x i64> %i64, %sw_16_64
1857 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sl1_16_64 = sext <8 x i16> %i16 to <8 x i64>
1858 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sl2_16_64 = sext <8 x i16> %i16 to <8 x i64>
1859 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 56 for instruction: %asl_16_64 = mul <8 x i64> %sl1_16_64, %sl2_16_64
1860 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zw_16_64 = zext <8 x i16> %i16 to <8 x i64>
1861 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 56 for instruction: %azw_16_64 = mul <8 x i64> %i64, %zw_16_64
1862 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zl1_16_64 = zext <8 x i16> %i16 to <8 x i64>
1863 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zl2_16_64 = zext <8 x i16> %i16 to <8 x i64>
1864 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 56 for instruction: %azl_16_64 = mul <8 x i64> %zl1_16_64, %zl2_16_64
1865 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %sw_32_64 = sext <8 x i32> %i32 to <8 x i64>
1866 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 56 for instruction: %asw_32_64 = mul <8 x i64> %i64, %sw_32_64
1867 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_32_64 = sext <8 x i32> %i32 to <8 x i64>
1868 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_32_64 = sext <8 x i32> %i32 to <8 x i64>
1869 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asl_32_64 = mul <8 x i64> %sl1_32_64, %sl2_32_64
1870 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %zw_32_64 = zext <8 x i32> %i32 to <8 x i64>
1871 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 56 for instruction: %azw_32_64 = mul <8 x i64> %i64, %zw_32_64
1872 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext <8 x i32> %i32 to <8 x i64>
1873 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext <8 x i32> %i32 to <8 x i64>
1874 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azl_32_64 = mul <8 x i64> %zl1_32_64, %zl2_32_64
1875 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
1877   %sw_8_16 = sext <8 x i8> %i8 to <8 x i16>
1878   %asw_8_16 = mul <8 x i16> %i16, %sw_8_16
1879   %sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
1880   %sl2_8_16 = sext <8 x i8> %i8 to <8 x i16>
1881   %asl_8_16 = mul <8 x i16> %sl1_8_16, %sl2_8_16
1883   %zw_8_16 = zext <8 x i8> %i8 to <8 x i16>
1884   %azw_8_16 = mul <8 x i16> %i16, %zw_8_16
1885   %zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
1886   %zl2_8_16 = zext <8 x i8> %i8 to <8 x i16>
1887   %azl_8_16 = mul <8 x i16> %zl1_8_16, %zl2_8_16
1889   %sw_8_32 = sext <8 x i8> %i8 to <8 x i32>
1890   %asw_8_32 = mul <8 x i32> %i32, %sw_8_32
1891   %sl1_8_32 = sext <8 x i8> %i8 to <8 x i32>
1892   %sl2_8_32 = sext <8 x i8> %i8 to <8 x i32>
1893   %asl_8_32 = mul <8 x i32> %sl1_8_32, %sl2_8_32
1895   %zw_8_32 = zext <8 x i8> %i8 to <8 x i32>
1896   %azw_8_32 = mul <8 x i32> %i32, %zw_8_32
1897   %zl1_8_32 = zext <8 x i8> %i8 to <8 x i32>
1898   %zl2_8_32 = zext <8 x i8> %i8 to <8 x i32>
1899   %azl_8_32 = mul <8 x i32> %zl1_8_32, %zl2_8_32
1901   %sw_8_64 = sext <8 x i8> %i8 to <8 x i64>
1902   %asw_8_64 = mul <8 x i64> %i64, %sw_8_64
1903   %sl1_8_64 = sext <8 x i8> %i8 to <8 x i64>
1904   %sl2_8_64 = sext <8 x i8> %i8 to <8 x i64>
1905   %asl_8_64 = mul <8 x i64> %sl1_8_64, %sl2_8_64
1907   %zw_8_64 = zext <8 x i8> %i8 to <8 x i64>
1908   %azw_8_64 = mul <8 x i64> %i64, %zw_8_64
1909   %zl1_8_64 = zext <8 x i8> %i8 to <8 x i64>
1910   %zl2_8_64 = zext <8 x i8> %i8 to <8 x i64>
1911   %azl_8_64 = mul <8 x i64> %zl1_8_64, %zl2_8_64
1913   %sw_16_32 = sext <8 x i16> %i16 to <8 x i32>
1914   %asw_16_32 = mul <8 x i32> %i32, %sw_16_32
1915   %sl1_16_32 = sext <8 x i16> %i16 to <8 x i32>
1916   %sl2_16_32 = sext <8 x i16> %i16 to <8 x i32>
1917   %asl_16_32 = mul <8 x i32> %sl1_16_32, %sl2_16_32
1919   %zw_16_32 = zext <8 x i16> %i16 to <8 x i32>
1920   %azw_16_32 = mul <8 x i32> %i32, %zw_16_32
1921   %zl1_16_32 = zext <8 x i16> %i16 to <8 x i32>
1922   %zl2_16_32 = zext <8 x i16> %i16 to <8 x i32>
1923   %azl_16_32 = mul <8 x i32> %zl1_16_32, %zl2_16_32
1925   %sw_16_64 = sext <8 x i16> %i16 to <8 x i64>
1926   %asw_16_64 = mul <8 x i64> %i64, %sw_16_64
1927   %sl1_16_64 = sext <8 x i16> %i16 to <8 x i64>
1928   %sl2_16_64 = sext <8 x i16> %i16 to <8 x i64>
1929   %asl_16_64 = mul <8 x i64> %sl1_16_64, %sl2_16_64
1931   %zw_16_64 = zext <8 x i16> %i16 to <8 x i64>
1932   %azw_16_64 = mul <8 x i64> %i64, %zw_16_64
1933   %zl1_16_64 = zext <8 x i16> %i16 to <8 x i64>
1934   %zl2_16_64 = zext <8 x i16> %i16 to <8 x i64>
1935   %azl_16_64 = mul <8 x i64> %zl1_16_64, %zl2_16_64
1937   %sw_32_64 = sext <8 x i32> %i32 to <8 x i64>
1938   %asw_32_64 = mul <8 x i64> %i64, %sw_32_64
1939   %sl1_32_64 = sext <8 x i32> %i32 to <8 x i64>
1940   %sl2_32_64 = sext <8 x i32> %i32 to <8 x i64>
1941   %asl_32_64 = mul <8 x i64> %sl1_32_64, %sl2_32_64
1943   %zw_32_64 = zext <8 x i32> %i32 to <8 x i64>
1944   %azw_32_64 = mul <8 x i64> %i64, %zw_32_64
1945   %zl1_32_64 = zext <8 x i32> %i32 to <8 x i64>
1946   %zl2_32_64 = zext <8 x i32> %i32 to <8 x i64>
1947   %azl_32_64 = mul <8 x i64> %zl1_32_64, %zl2_32_64
1949   ret void
1952 define void @extmulv16(<16 x i8> %i8, <16 x i16> %i16, <16 x i32> %i32, <16 x i64> %i64)  {
1953 ; CHECK-LABEL: 'extmulv16'
1954 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %sw_8_16 = sext <16 x i8> %i8 to <16 x i16>
1955 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asw_8_16 = mul <16 x i16> %i16, %sw_8_16
1956 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_8_16 = sext <16 x i8> %i8 to <16 x i16>
1957 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_8_16 = sext <16 x i8> %i8 to <16 x i16>
1958 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %asl_8_16 = mul <16 x i16> %sl1_8_16, %sl2_8_16
1959 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %zw_8_16 = zext <16 x i8> %i8 to <16 x i16>
1960 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azw_8_16 = mul <16 x i16> %i16, %zw_8_16
1961 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_8_16 = zext <16 x i8> %i8 to <16 x i16>
1962 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_8_16 = zext <16 x i8> %i8 to <16 x i16>
1963 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %azl_8_16 = mul <16 x i16> %zl1_8_16, %zl2_8_16
1964 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sw_8_32 = sext <16 x i8> %i8 to <16 x i32>
1965 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asw_8_32 = mul <16 x i32> %i32, %sw_8_32
1966 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sl1_8_32 = sext <16 x i8> %i8 to <16 x i32>
1967 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %sl2_8_32 = sext <16 x i8> %i8 to <16 x i32>
1968 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asl_8_32 = mul <16 x i32> %sl1_8_32, %sl2_8_32
1969 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zw_8_32 = zext <16 x i8> %i8 to <16 x i32>
1970 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azw_8_32 = mul <16 x i32> %i32, %zw_8_32
1971 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zl1_8_32 = zext <16 x i8> %i8 to <16 x i32>
1972 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %zl2_8_32 = zext <16 x i8> %i8 to <16 x i32>
1973 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azl_8_32 = mul <16 x i32> %zl1_8_32, %zl2_8_32
1974 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %sw_8_64 = sext <16 x i8> %i8 to <16 x i64>
1975 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 112 for instruction: %asw_8_64 = mul <16 x i64> %i64, %sw_8_64
1976 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %sl1_8_64 = sext <16 x i8> %i8 to <16 x i64>
1977 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %sl2_8_64 = sext <16 x i8> %i8 to <16 x i64>
1978 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 112 for instruction: %asl_8_64 = mul <16 x i64> %sl1_8_64, %sl2_8_64
1979 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %zw_8_64 = zext <16 x i8> %i8 to <16 x i64>
1980 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 112 for instruction: %azw_8_64 = mul <16 x i64> %i64, %zw_8_64
1981 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %zl1_8_64 = zext <16 x i8> %i8 to <16 x i64>
1982 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %zl2_8_64 = zext <16 x i8> %i8 to <16 x i64>
1983 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 112 for instruction: %azl_8_64 = mul <16 x i64> %zl1_8_64, %zl2_8_64
1984 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %sw_16_32 = sext <16 x i16> %i16 to <16 x i32>
1985 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asw_16_32 = mul <16 x i32> %i32, %sw_16_32
1986 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_16_32 = sext <16 x i16> %i16 to <16 x i32>
1987 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_16_32 = sext <16 x i16> %i16 to <16 x i32>
1988 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %asl_16_32 = mul <16 x i32> %sl1_16_32, %sl2_16_32
1989 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %zw_16_32 = zext <16 x i16> %i16 to <16 x i32>
1990 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azw_16_32 = mul <16 x i32> %i32, %zw_16_32
1991 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_16_32 = zext <16 x i16> %i16 to <16 x i32>
1992 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_16_32 = zext <16 x i16> %i16 to <16 x i32>
1993 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %azl_16_32 = mul <16 x i32> %zl1_16_32, %zl2_16_32
1994 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %sw_16_64 = sext <16 x i16> %i16 to <16 x i64>
1995 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 112 for instruction: %asw_16_64 = mul <16 x i64> %i64, %sw_16_64
1996 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %sl1_16_64 = sext <16 x i16> %i16 to <16 x i64>
1997 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %sl2_16_64 = sext <16 x i16> %i16 to <16 x i64>
1998 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 112 for instruction: %asl_16_64 = mul <16 x i64> %sl1_16_64, %sl2_16_64
1999 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %zw_16_64 = zext <16 x i16> %i16 to <16 x i64>
2000 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 112 for instruction: %azw_16_64 = mul <16 x i64> %i64, %zw_16_64
2001 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %zl1_16_64 = zext <16 x i16> %i16 to <16 x i64>
2002 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %zl2_16_64 = zext <16 x i16> %i16 to <16 x i64>
2003 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 112 for instruction: %azl_16_64 = mul <16 x i64> %zl1_16_64, %zl2_16_64
2004 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %sw_32_64 = sext <16 x i32> %i32 to <16 x i64>
2005 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 112 for instruction: %asw_32_64 = mul <16 x i64> %i64, %sw_32_64
2006 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl1_32_64 = sext <16 x i32> %i32 to <16 x i64>
2007 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %sl2_32_64 = sext <16 x i32> %i32 to <16 x i64>
2008 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %asl_32_64 = mul <16 x i64> %sl1_32_64, %sl2_32_64
2009 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %zw_32_64 = zext <16 x i32> %i32 to <16 x i64>
2010 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 112 for instruction: %azw_32_64 = mul <16 x i64> %i64, %zw_32_64
2011 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_32_64 = zext <16 x i32> %i32 to <16 x i64>
2012 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl2_32_64 = zext <16 x i32> %i32 to <16 x i64>
2013 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %azl_32_64 = mul <16 x i64> %zl1_32_64, %zl2_32_64
2014 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
2016   %sw_8_16 = sext <16 x i8> %i8 to <16 x i16>
2017   %asw_8_16 = mul <16 x i16> %i16, %sw_8_16
2018   %sl1_8_16 = sext <16 x i8> %i8 to <16 x i16>
2019   %sl2_8_16 = sext <16 x i8> %i8 to <16 x i16>
2020   %asl_8_16 = mul <16 x i16> %sl1_8_16, %sl2_8_16
2022   %zw_8_16 = zext <16 x i8> %i8 to <16 x i16>
2023   %azw_8_16 = mul <16 x i16> %i16, %zw_8_16
2024   %zl1_8_16 = zext <16 x i8> %i8 to <16 x i16>
2025   %zl2_8_16 = zext <16 x i8> %i8 to <16 x i16>
2026   %azl_8_16 = mul <16 x i16> %zl1_8_16, %zl2_8_16
2028   %sw_8_32 = sext <16 x i8> %i8 to <16 x i32>
2029   %asw_8_32 = mul <16 x i32> %i32, %sw_8_32
2030   %sl1_8_32 = sext <16 x i8> %i8 to <16 x i32>
2031   %sl2_8_32 = sext <16 x i8> %i8 to <16 x i32>
2032   %asl_8_32 = mul <16 x i32> %sl1_8_32, %sl2_8_32
2034   %zw_8_32 = zext <16 x i8> %i8 to <16 x i32>
2035   %azw_8_32 = mul <16 x i32> %i32, %zw_8_32
2036   %zl1_8_32 = zext <16 x i8> %i8 to <16 x i32>
2037   %zl2_8_32 = zext <16 x i8> %i8 to <16 x i32>
2038   %azl_8_32 = mul <16 x i32> %zl1_8_32, %zl2_8_32
2040   %sw_8_64 = sext <16 x i8> %i8 to <16 x i64>
2041   %asw_8_64 = mul <16 x i64> %i64, %sw_8_64
2042   %sl1_8_64 = sext <16 x i8> %i8 to <16 x i64>
2043   %sl2_8_64 = sext <16 x i8> %i8 to <16 x i64>
2044   %asl_8_64 = mul <16 x i64> %sl1_8_64, %sl2_8_64
2046   %zw_8_64 = zext <16 x i8> %i8 to <16 x i64>
2047   %azw_8_64 = mul <16 x i64> %i64, %zw_8_64
2048   %zl1_8_64 = zext <16 x i8> %i8 to <16 x i64>
2049   %zl2_8_64 = zext <16 x i8> %i8 to <16 x i64>
2050   %azl_8_64 = mul <16 x i64> %zl1_8_64, %zl2_8_64
2052   %sw_16_32 = sext <16 x i16> %i16 to <16 x i32>
2053   %asw_16_32 = mul <16 x i32> %i32, %sw_16_32
2054   %sl1_16_32 = sext <16 x i16> %i16 to <16 x i32>
2055   %sl2_16_32 = sext <16 x i16> %i16 to <16 x i32>
2056   %asl_16_32 = mul <16 x i32> %sl1_16_32, %sl2_16_32
2058   %zw_16_32 = zext <16 x i16> %i16 to <16 x i32>
2059   %azw_16_32 = mul <16 x i32> %i32, %zw_16_32
2060   %zl1_16_32 = zext <16 x i16> %i16 to <16 x i32>
2061   %zl2_16_32 = zext <16 x i16> %i16 to <16 x i32>
2062   %azl_16_32 = mul <16 x i32> %zl1_16_32, %zl2_16_32
2064   %sw_16_64 = sext <16 x i16> %i16 to <16 x i64>
2065   %asw_16_64 = mul <16 x i64> %i64, %sw_16_64
2066   %sl1_16_64 = sext <16 x i16> %i16 to <16 x i64>
2067   %sl2_16_64 = sext <16 x i16> %i16 to <16 x i64>
2068   %asl_16_64 = mul <16 x i64> %sl1_16_64, %sl2_16_64
2070   %zw_16_64 = zext <16 x i16> %i16 to <16 x i64>
2071   %azw_16_64 = mul <16 x i64> %i64, %zw_16_64
2072   %zl1_16_64 = zext <16 x i16> %i16 to <16 x i64>
2073   %zl2_16_64 = zext <16 x i16> %i16 to <16 x i64>
2074   %azl_16_64 = mul <16 x i64> %zl1_16_64, %zl2_16_64
2076   %sw_32_64 = sext <16 x i32> %i32 to <16 x i64>
2077   %asw_32_64 = mul <16 x i64> %i64, %sw_32_64
2078   %sl1_32_64 = sext <16 x i32> %i32 to <16 x i64>
2079   %sl2_32_64 = sext <16 x i32> %i32 to <16 x i64>
2080   %asl_32_64 = mul <16 x i64> %sl1_32_64, %sl2_32_64
2082   %zw_32_64 = zext <16 x i32> %i32 to <16 x i64>
2083   %azw_32_64 = mul <16 x i64> %i64, %zw_32_64
2084   %zl1_32_64 = zext <16 x i32> %i32 to <16 x i64>
2085   %zl2_32_64 = zext <16 x i32> %i32 to <16 x i64>
2086   %azl_32_64 = mul <16 x i64> %zl1_32_64, %zl2_32_64
2088   ret void
2091 define void @extmul_const(<8 x i8> %i8, <8 x i16> %i16, <8 x i32> %i32, <8 x i64> %i64)  {
2092 ; CHECK-LABEL: 'extmul_const'
2093 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
2094 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %asl_8_16 = mul <8 x i16> %sl1_8_16, splat (i16 10)
2095 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
2096 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %azl_8_16 = mul <8 x i16> %zl1_8_16, splat (i16 10)
2097 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %zl1_8_16b = zext <8 x i8> %i8 to <8 x i16>
2098 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %and = and <8 x i16> %sl1_8_16, splat (i16 255)
2099 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %aal_8_16 = mul <8 x i16> %zl1_8_16b, %and
2100 ; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
2102   %sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
2103   %asl_8_16 = mul <8 x i16> %sl1_8_16, <i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10>
2105   %zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
2106   %azl_8_16 = mul <8 x i16> %zl1_8_16, <i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10>
2108   %zl1_8_16b = zext <8 x i8> %i8 to <8 x i16>
2109   %and = and <8 x i16> %sl1_8_16, <i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255>
2110   %aal_8_16 = mul <8 x i16> %zl1_8_16b, %and
2112   ret void