1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2; RUN: opt -cost-model -analyze -mtriple=aarch64-none-eabi < %s | FileCheck %s --check-prefix=RECIP
3; RUN: opt -cost-model -analyze -cost-kind=code-size -mtriple=aarch64-none-eabi < %s | FileCheck %s --check-prefix=SIZE
4
5declare i64        @llvm.sadd.sat.i64(i64, i64)
6declare <2 x i64>  @llvm.sadd.sat.v2i64(<2 x i64>, <2 x i64>)
7declare <4 x i64>  @llvm.sadd.sat.v4i64(<4 x i64>, <4 x i64>)
8declare <8 x i64>  @llvm.sadd.sat.v8i64(<8 x i64>, <8 x i64>)
9
10declare i32        @llvm.sadd.sat.i32(i32, i32)
11declare <2 x i32>  @llvm.sadd.sat.v2i32(<2 x i32>, <2 x i32>)
12declare <4 x i32>  @llvm.sadd.sat.v4i32(<4 x i32>, <4 x i32>)
13declare <8 x i32>  @llvm.sadd.sat.v8i32(<8 x i32>, <8 x i32>)
14declare <16 x i32> @llvm.sadd.sat.v16i32(<16 x i32>, <16 x i32>)
15
16declare i16        @llvm.sadd.sat.i16(i16, i16)
17declare <2 x i16>  @llvm.sadd.sat.v2i16(<2 x i16>, <2 x i16>)
18declare <4 x i16>  @llvm.sadd.sat.v4i16(<4 x i16>, <4 x i16>)
19declare <8 x i16>  @llvm.sadd.sat.v8i16(<8 x i16>, <8 x i16>)
20declare <16 x i16> @llvm.sadd.sat.v16i16(<16 x i16>, <16 x i16>)
21declare <32 x i16> @llvm.sadd.sat.v32i16(<32 x i16>, <32 x i16>)
22
23declare i8         @llvm.sadd.sat.i8(i8,  i8)
24declare <2 x i8>   @llvm.sadd.sat.v2i8(<2 x i8>, <2 x i8>)
25declare <4 x i8>   @llvm.sadd.sat.v4i8(<4 x i8>, <4 x i8>)
26declare <8 x i8>   @llvm.sadd.sat.v8i8(<8 x i8>, <8 x i8>)
27declare <16 x i8>  @llvm.sadd.sat.v16i8(<16 x i8>, <16 x i8>)
28declare <32 x i8>  @llvm.sadd.sat.v32i8(<32 x i8>, <32 x i8>)
29declare <64 x i8>  @llvm.sadd.sat.v64i8(<64 x i8>, <64 x i8>)
30
31define i32 @add(i32 %arg) {
32; RECIP-LABEL: 'add'
33; RECIP-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I64 = call i64 @llvm.sadd.sat.i64(i64 undef, i64 undef)
34; RECIP-NEXT:  Cost Model: Found an estimated cost of 26 for instruction: %V2I64 = call <2 x i64> @llvm.sadd.sat.v2i64(<2 x i64> undef, <2 x i64> undef)
35; RECIP-NEXT:  Cost Model: Found an estimated cost of 197 for instruction: %V4I64 = call <4 x i64> @llvm.sadd.sat.v4i64(<4 x i64> undef, <4 x i64> undef)
36; RECIP-NEXT:  Cost Model: Found an estimated cost of 399 for instruction: %V8I64 = call <8 x i64> @llvm.sadd.sat.v8i64(<8 x i64> undef, <8 x i64> undef)
37; RECIP-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I32 = call i32 @llvm.sadd.sat.i32(i32 undef, i32 undef)
38; RECIP-NEXT:  Cost Model: Found an estimated cost of 26 for instruction: %V2I32 = call <2 x i32> @llvm.sadd.sat.v2i32(<2 x i32> undef, <2 x i32> undef)
39; RECIP-NEXT:  Cost Model: Found an estimated cost of 58 for instruction: %V4I32 = call <4 x i32> @llvm.sadd.sat.v4i32(<4 x i32> undef, <4 x i32> undef)
40; RECIP-NEXT:  Cost Model: Found an estimated cost of 85 for instruction: %V8I32 = call <8 x i32> @llvm.sadd.sat.v8i32(<8 x i32> undef, <8 x i32> undef)
41; RECIP-NEXT:  Cost Model: Found an estimated cost of 175 for instruction: %V16I32 = call <16 x i32> @llvm.sadd.sat.v16i32(<16 x i32> undef, <16 x i32> undef)
42; RECIP-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I16 = call i16 @llvm.sadd.sat.i16(i16 undef, i16 undef)
43; RECIP-NEXT:  Cost Model: Found an estimated cost of 26 for instruction: %V2I16 = call <2 x i16> @llvm.sadd.sat.v2i16(<2 x i16> undef, <2 x i16> undef)
44; RECIP-NEXT:  Cost Model: Found an estimated cost of 58 for instruction: %V4I16 = call <4 x i16> @llvm.sadd.sat.v4i16(<4 x i16> undef, <4 x i16> undef)
45; RECIP-NEXT:  Cost Model: Found an estimated cost of 122 for instruction: %V8I16 = call <8 x i16> @llvm.sadd.sat.v8i16(<8 x i16> undef, <8 x i16> undef)
46; RECIP-NEXT:  Cost Model: Found an estimated cost of 165 for instruction: %V16I16 = call <16 x i16> @llvm.sadd.sat.v16i16(<16 x i16> undef, <16 x i16> undef)
47; RECIP-NEXT:  Cost Model: Found an estimated cost of 498 for instruction: %V32I16 = call <32 x i16> @llvm.sadd.sat.v32i16(<32 x i16> undef, <32 x i16> undef)
48; RECIP-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I8 = call i8 @llvm.sadd.sat.i8(i8 undef, i8 undef)
49; RECIP-NEXT:  Cost Model: Found an estimated cost of 26 for instruction: %V2I8 = call <2 x i8> @llvm.sadd.sat.v2i8(<2 x i8> undef, <2 x i8> undef)
50; RECIP-NEXT:  Cost Model: Found an estimated cost of 58 for instruction: %V4I8 = call <4 x i8> @llvm.sadd.sat.v4i8(<4 x i8> undef, <4 x i8> undef)
51; RECIP-NEXT:  Cost Model: Found an estimated cost of 122 for instruction: %V8I8 = call <8 x i8> @llvm.sadd.sat.v8i8(<8 x i8> undef, <8 x i8> undef)
52; RECIP-NEXT:  Cost Model: Found an estimated cost of 250 for instruction: %V16I8 = call <16 x i8> @llvm.sadd.sat.v16i8(<16 x i8> undef, <16 x i8> undef)
53; RECIP-NEXT:  Cost Model: Found an estimated cost of 500 for instruction: %V32I8 = call <32 x i8> @llvm.sadd.sat.v32i8(<32 x i8> undef, <32 x i8> undef)
54; RECIP-NEXT:  Cost Model: Found an estimated cost of 1000 for instruction: %V64I8 = call <64 x i8> @llvm.sadd.sat.v64i8(<64 x i8> undef, <64 x i8> undef)
55; RECIP-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef
56;
57; SIZE-LABEL: 'add'
58; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I64 = call i64 @llvm.sadd.sat.i64(i64 undef, i64 undef)
59; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V2I64 = call <2 x i64> @llvm.sadd.sat.v2i64(<2 x i64> undef, <2 x i64> undef)
60; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V4I64 = call <4 x i64> @llvm.sadd.sat.v4i64(<4 x i64> undef, <4 x i64> undef)
61; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V8I64 = call <8 x i64> @llvm.sadd.sat.v8i64(<8 x i64> undef, <8 x i64> undef)
62; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I32 = call i32 @llvm.sadd.sat.i32(i32 undef, i32 undef)
63; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V2I32 = call <2 x i32> @llvm.sadd.sat.v2i32(<2 x i32> undef, <2 x i32> undef)
64; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V4I32 = call <4 x i32> @llvm.sadd.sat.v4i32(<4 x i32> undef, <4 x i32> undef)
65; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V8I32 = call <8 x i32> @llvm.sadd.sat.v8i32(<8 x i32> undef, <8 x i32> undef)
66; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V16I32 = call <16 x i32> @llvm.sadd.sat.v16i32(<16 x i32> undef, <16 x i32> undef)
67; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I16 = call i16 @llvm.sadd.sat.i16(i16 undef, i16 undef)
68; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V2I16 = call <2 x i16> @llvm.sadd.sat.v2i16(<2 x i16> undef, <2 x i16> undef)
69; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V4I16 = call <4 x i16> @llvm.sadd.sat.v4i16(<4 x i16> undef, <4 x i16> undef)
70; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V8I16 = call <8 x i16> @llvm.sadd.sat.v8i16(<8 x i16> undef, <8 x i16> undef)
71; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V16I16 = call <16 x i16> @llvm.sadd.sat.v16i16(<16 x i16> undef, <16 x i16> undef)
72; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V32I16 = call <32 x i16> @llvm.sadd.sat.v32i16(<32 x i16> undef, <32 x i16> undef)
73; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I8 = call i8 @llvm.sadd.sat.i8(i8 undef, i8 undef)
74; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V2I8 = call <2 x i8> @llvm.sadd.sat.v2i8(<2 x i8> undef, <2 x i8> undef)
75; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V4I8 = call <4 x i8> @llvm.sadd.sat.v4i8(<4 x i8> undef, <4 x i8> undef)
76; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V8I8 = call <8 x i8> @llvm.sadd.sat.v8i8(<8 x i8> undef, <8 x i8> undef)
77; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V16I8 = call <16 x i8> @llvm.sadd.sat.v16i8(<16 x i8> undef, <16 x i8> undef)
78; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V32I8 = call <32 x i8> @llvm.sadd.sat.v32i8(<32 x i8> undef, <32 x i8> undef)
79; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V64I8 = call <64 x i8> @llvm.sadd.sat.v64i8(<64 x i8> undef, <64 x i8> undef)
80; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
81;
82  %I64 = call i64 @llvm.sadd.sat.i64(i64 undef, i64 undef)
83  %V2I64 = call <2 x i64> @llvm.sadd.sat.v2i64(<2 x i64> undef, <2 x i64> undef)
84  %V4I64 = call <4 x i64> @llvm.sadd.sat.v4i64(<4 x i64> undef, <4 x i64> undef)
85  %V8I64 = call <8 x i64> @llvm.sadd.sat.v8i64(<8 x i64> undef, <8 x i64> undef)
86
87  %I32 = call i32 @llvm.sadd.sat.i32(i32 undef, i32 undef)
88  %V2I32  = call <2 x i32>  @llvm.sadd.sat.v2i32(<2 x i32> undef, <2 x i32> undef)
89  %V4I32  = call <4 x i32>  @llvm.sadd.sat.v4i32(<4 x i32> undef, <4 x i32> undef)
90  %V8I32  = call <8 x i32>  @llvm.sadd.sat.v8i32(<8 x i32> undef, <8 x i32> undef)
91  %V16I32 = call <16 x i32> @llvm.sadd.sat.v16i32(<16 x i32> undef, <16 x i32> undef)
92
93  %I16 = call i16 @llvm.sadd.sat.i16(i16 undef, i16 undef)
94  %V2I16  = call <2 x i16>  @llvm.sadd.sat.v2i16(<2 x i16> undef, <2 x i16> undef)
95  %V4I16  = call <4 x i16>  @llvm.sadd.sat.v4i16(<4 x i16> undef, <4 x i16> undef)
96  %V8I16  = call <8 x i16>  @llvm.sadd.sat.v8i16(<8 x i16> undef, <8 x i16> undef)
97  %V16I16 = call <16 x i16> @llvm.sadd.sat.v16i16(<16 x i16> undef, <16 x i16> undef)
98  %V32I16 = call <32 x i16> @llvm.sadd.sat.v32i16(<32 x i16> undef, <32 x i16> undef)
99
100  %I8 = call i8 @llvm.sadd.sat.i8(i8 undef, i8 undef)
101  %V2I8  = call <2 x i8>  @llvm.sadd.sat.v2i8(<2 x i8> undef, <2 x i8> undef)
102  %V4I8  = call <4 x i8>  @llvm.sadd.sat.v4i8(<4 x i8> undef, <4 x i8> undef)
103  %V8I8  = call <8 x i8>  @llvm.sadd.sat.v8i8(<8 x i8> undef, <8 x i8> undef)
104  %V16I8 = call <16 x i8> @llvm.sadd.sat.v16i8(<16 x i8> undef, <16 x i8> undef)
105  %V32I8 = call <32 x i8> @llvm.sadd.sat.v32i8(<32 x i8> undef, <32 x i8> undef)
106  %V64I8 = call <64 x i8> @llvm.sadd.sat.v64i8(<64 x i8> undef, <64 x i8> undef)
107
108  ret i32 undef
109}
110
111declare i64        @llvm.ssub.sat.i64(i64, i64)
112declare <2 x i64>  @llvm.ssub.sat.v2i64(<2 x i64>, <2 x i64>)
113declare <4 x i64>  @llvm.ssub.sat.v4i64(<4 x i64>, <4 x i64>)
114declare <8 x i64>  @llvm.ssub.sat.v8i64(<8 x i64>, <8 x i64>)
115
116declare i32        @llvm.ssub.sat.i32(i32, i32)
117declare <2 x i32>  @llvm.ssub.sat.v2i32(<2 x i32>, <2 x i32>)
118declare <4 x i32>  @llvm.ssub.sat.v4i32(<4 x i32>, <4 x i32>)
119declare <8 x i32>  @llvm.ssub.sat.v8i32(<8 x i32>, <8 x i32>)
120declare <16 x i32> @llvm.ssub.sat.v16i32(<16 x i32>, <16 x i32>)
121
122declare i16        @llvm.ssub.sat.i16(i16, i16)
123declare <2 x i16>  @llvm.ssub.sat.v2i16(<2 x i16>, <2 x i16>)
124declare <4 x i16>  @llvm.ssub.sat.v4i16(<4 x i16>, <4 x i16>)
125declare <8 x i16>  @llvm.ssub.sat.v8i16(<8 x i16>, <8 x i16>)
126declare <16 x i16> @llvm.ssub.sat.v16i16(<16 x i16>, <16 x i16>)
127declare <32 x i16> @llvm.ssub.sat.v32i16(<32 x i16>, <32 x i16>)
128
129declare i8         @llvm.ssub.sat.i8(i8,  i8)
130declare <2 x i8>   @llvm.ssub.sat.v2i8(<2 x i8>, <2 x i8>)
131declare <4 x i8>   @llvm.ssub.sat.v4i8(<4 x i8>, <4 x i8>)
132declare <8 x i8>   @llvm.ssub.sat.v8i8(<8 x i8>, <8 x i8>)
133declare <16 x i8>  @llvm.ssub.sat.v16i8(<16 x i8>, <16 x i8>)
134declare <32 x i8>  @llvm.ssub.sat.v32i8(<32 x i8>, <32 x i8>)
135declare <64 x i8>  @llvm.ssub.sat.v64i8(<64 x i8>, <64 x i8>)
136
137define i32 @sub(i32 %arg) {
138; RECIP-LABEL: 'sub'
139; RECIP-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I64 = call i64 @llvm.ssub.sat.i64(i64 undef, i64 undef)
140; RECIP-NEXT:  Cost Model: Found an estimated cost of 26 for instruction: %V2I64 = call <2 x i64> @llvm.ssub.sat.v2i64(<2 x i64> undef, <2 x i64> undef)
141; RECIP-NEXT:  Cost Model: Found an estimated cost of 197 for instruction: %V4I64 = call <4 x i64> @llvm.ssub.sat.v4i64(<4 x i64> undef, <4 x i64> undef)
142; RECIP-NEXT:  Cost Model: Found an estimated cost of 399 for instruction: %V8I64 = call <8 x i64> @llvm.ssub.sat.v8i64(<8 x i64> undef, <8 x i64> undef)
143; RECIP-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I32 = call i32 @llvm.ssub.sat.i32(i32 undef, i32 undef)
144; RECIP-NEXT:  Cost Model: Found an estimated cost of 26 for instruction: %V2I32 = call <2 x i32> @llvm.ssub.sat.v2i32(<2 x i32> undef, <2 x i32> undef)
145; RECIP-NEXT:  Cost Model: Found an estimated cost of 58 for instruction: %V4I32 = call <4 x i32> @llvm.ssub.sat.v4i32(<4 x i32> undef, <4 x i32> undef)
146; RECIP-NEXT:  Cost Model: Found an estimated cost of 85 for instruction: %V8I32 = call <8 x i32> @llvm.ssub.sat.v8i32(<8 x i32> undef, <8 x i32> undef)
147; RECIP-NEXT:  Cost Model: Found an estimated cost of 175 for instruction: %V16I32 = call <16 x i32> @llvm.ssub.sat.v16i32(<16 x i32> undef, <16 x i32> undef)
148; RECIP-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I16 = call i16 @llvm.ssub.sat.i16(i16 undef, i16 undef)
149; RECIP-NEXT:  Cost Model: Found an estimated cost of 26 for instruction: %V2I16 = call <2 x i16> @llvm.ssub.sat.v2i16(<2 x i16> undef, <2 x i16> undef)
150; RECIP-NEXT:  Cost Model: Found an estimated cost of 58 for instruction: %V4I16 = call <4 x i16> @llvm.ssub.sat.v4i16(<4 x i16> undef, <4 x i16> undef)
151; RECIP-NEXT:  Cost Model: Found an estimated cost of 122 for instruction: %V8I16 = call <8 x i16> @llvm.ssub.sat.v8i16(<8 x i16> undef, <8 x i16> undef)
152; RECIP-NEXT:  Cost Model: Found an estimated cost of 165 for instruction: %V16I16 = call <16 x i16> @llvm.ssub.sat.v16i16(<16 x i16> undef, <16 x i16> undef)
153; RECIP-NEXT:  Cost Model: Found an estimated cost of 498 for instruction: %V32I16 = call <32 x i16> @llvm.ssub.sat.v32i16(<32 x i16> undef, <32 x i16> undef)
154; RECIP-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I8 = call i8 @llvm.ssub.sat.i8(i8 undef, i8 undef)
155; RECIP-NEXT:  Cost Model: Found an estimated cost of 26 for instruction: %V2I8 = call <2 x i8> @llvm.ssub.sat.v2i8(<2 x i8> undef, <2 x i8> undef)
156; RECIP-NEXT:  Cost Model: Found an estimated cost of 58 for instruction: %V4I8 = call <4 x i8> @llvm.ssub.sat.v4i8(<4 x i8> undef, <4 x i8> undef)
157; RECIP-NEXT:  Cost Model: Found an estimated cost of 122 for instruction: %V8I8 = call <8 x i8> @llvm.ssub.sat.v8i8(<8 x i8> undef, <8 x i8> undef)
158; RECIP-NEXT:  Cost Model: Found an estimated cost of 250 for instruction: %V16I8 = call <16 x i8> @llvm.ssub.sat.v16i8(<16 x i8> undef, <16 x i8> undef)
159; RECIP-NEXT:  Cost Model: Found an estimated cost of 500 for instruction: %V32I8 = call <32 x i8> @llvm.ssub.sat.v32i8(<32 x i8> undef, <32 x i8> undef)
160; RECIP-NEXT:  Cost Model: Found an estimated cost of 1000 for instruction: %V64I8 = call <64 x i8> @llvm.ssub.sat.v64i8(<64 x i8> undef, <64 x i8> undef)
161; RECIP-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef
162;
163; SIZE-LABEL: 'sub'
164; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I64 = call i64 @llvm.ssub.sat.i64(i64 undef, i64 undef)
165; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V2I64 = call <2 x i64> @llvm.ssub.sat.v2i64(<2 x i64> undef, <2 x i64> undef)
166; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V4I64 = call <4 x i64> @llvm.ssub.sat.v4i64(<4 x i64> undef, <4 x i64> undef)
167; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V8I64 = call <8 x i64> @llvm.ssub.sat.v8i64(<8 x i64> undef, <8 x i64> undef)
168; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I32 = call i32 @llvm.ssub.sat.i32(i32 undef, i32 undef)
169; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V2I32 = call <2 x i32> @llvm.ssub.sat.v2i32(<2 x i32> undef, <2 x i32> undef)
170; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V4I32 = call <4 x i32> @llvm.ssub.sat.v4i32(<4 x i32> undef, <4 x i32> undef)
171; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V8I32 = call <8 x i32> @llvm.ssub.sat.v8i32(<8 x i32> undef, <8 x i32> undef)
172; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V16I32 = call <16 x i32> @llvm.ssub.sat.v16i32(<16 x i32> undef, <16 x i32> undef)
173; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I16 = call i16 @llvm.ssub.sat.i16(i16 undef, i16 undef)
174; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V2I16 = call <2 x i16> @llvm.ssub.sat.v2i16(<2 x i16> undef, <2 x i16> undef)
175; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V4I16 = call <4 x i16> @llvm.ssub.sat.v4i16(<4 x i16> undef, <4 x i16> undef)
176; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V8I16 = call <8 x i16> @llvm.ssub.sat.v8i16(<8 x i16> undef, <8 x i16> undef)
177; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V16I16 = call <16 x i16> @llvm.ssub.sat.v16i16(<16 x i16> undef, <16 x i16> undef)
178; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V32I16 = call <32 x i16> @llvm.ssub.sat.v32i16(<32 x i16> undef, <32 x i16> undef)
179; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %I8 = call i8 @llvm.ssub.sat.i8(i8 undef, i8 undef)
180; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V2I8 = call <2 x i8> @llvm.ssub.sat.v2i8(<2 x i8> undef, <2 x i8> undef)
181; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V4I8 = call <4 x i8> @llvm.ssub.sat.v4i8(<4 x i8> undef, <4 x i8> undef)
182; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V8I8 = call <8 x i8> @llvm.ssub.sat.v8i8(<8 x i8> undef, <8 x i8> undef)
183; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V16I8 = call <16 x i8> @llvm.ssub.sat.v16i8(<16 x i8> undef, <16 x i8> undef)
184; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V32I8 = call <32 x i8> @llvm.ssub.sat.v32i8(<32 x i8> undef, <32 x i8> undef)
185; SIZE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V64I8 = call <64 x i8> @llvm.ssub.sat.v64i8(<64 x i8> undef, <64 x i8> undef)
186; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
187;
188  %I64 = call i64 @llvm.ssub.sat.i64(i64 undef, i64 undef)
189  %V2I64 = call <2 x i64> @llvm.ssub.sat.v2i64(<2 x i64> undef, <2 x i64> undef)
190  %V4I64 = call <4 x i64> @llvm.ssub.sat.v4i64(<4 x i64> undef, <4 x i64> undef)
191  %V8I64 = call <8 x i64> @llvm.ssub.sat.v8i64(<8 x i64> undef, <8 x i64> undef)
192
193  %I32 = call i32 @llvm.ssub.sat.i32(i32 undef, i32 undef)
194  %V2I32  = call <2 x i32>  @llvm.ssub.sat.v2i32(<2 x i32> undef, <2 x i32> undef)
195  %V4I32  = call <4 x i32>  @llvm.ssub.sat.v4i32(<4 x i32> undef, <4 x i32> undef)
196  %V8I32  = call <8 x i32>  @llvm.ssub.sat.v8i32(<8 x i32> undef, <8 x i32> undef)
197  %V16I32 = call <16 x i32> @llvm.ssub.sat.v16i32(<16 x i32> undef, <16 x i32> undef)
198
199  %I16 = call i16 @llvm.ssub.sat.i16(i16 undef, i16 undef)
200  %V2I16  = call <2 x i16>  @llvm.ssub.sat.v2i16(<2 x i16> undef, <2 x i16> undef)
201  %V4I16  = call <4 x i16>  @llvm.ssub.sat.v4i16(<4 x i16> undef, <4 x i16> undef)
202  %V8I16  = call <8 x i16>  @llvm.ssub.sat.v8i16(<8 x i16> undef, <8 x i16> undef)
203  %V16I16 = call <16 x i16> @llvm.ssub.sat.v16i16(<16 x i16> undef, <16 x i16> undef)
204  %V32I16 = call <32 x i16> @llvm.ssub.sat.v32i16(<32 x i16> undef, <32 x i16> undef)
205
206  %I8 = call i8 @llvm.ssub.sat.i8(i8 undef, i8 undef)
207  %V2I8  = call <2 x i8>  @llvm.ssub.sat.v2i8(<2 x i8> undef, <2 x i8> undef)
208  %V4I8  = call <4 x i8>  @llvm.ssub.sat.v4i8(<4 x i8> undef, <4 x i8> undef)
209  %V8I8  = call <8 x i8>  @llvm.ssub.sat.v8i8(<8 x i8> undef, <8 x i8> undef)
210  %V16I8 = call <16 x i8> @llvm.ssub.sat.v16i8(<16 x i8> undef, <16 x i8> undef)
211  %V32I8 = call <32 x i8> @llvm.ssub.sat.v32i8(<32 x i8> undef, <32 x i8> undef)
212  %V64I8 = call <64 x i8> @llvm.ssub.sat.v64i8(<64 x i8> undef, <64 x i8> undef)
213
214  ret i32 undef
215}
216