[InstCombine] Signed saturation patterns
[llvm-core.git] / test / Analysis / CostModel / SystemZ / int-cast.ll
blob7764c6ff756f71c7df64abd9a9e4babe221efea0
1 ; RUN: opt < %s -cost-model -analyze -mtriple=systemz-unknown -mcpu=z13 | FileCheck %s
3 define void @sext() {
4   %v0 = sext i8 undef to i16
5   %v1 = sext i8 undef to i32
6   %v2 = sext i8 undef to i64
7   %v3 = sext i16 undef to i32
8   %v4 = sext i16 undef to i64
9   %v5 = sext i32 undef to i64
10   %v6 = sext <2 x i8> undef to <2 x i16>
11   %v7 = sext <2 x i8> undef to <2 x i32>
12   %v8 = sext <2 x i8> undef to <2 x i64>
13   %v9 = sext <2 x i16> undef to <2 x i32>
14   %v10 = sext <2 x i16> undef to <2 x i64>
15   %v11 = sext <2 x i32> undef to <2 x i64>
16   %v12 = sext <4 x i8> undef to <4 x i16>
17   %v13 = sext <4 x i8> undef to <4 x i32>
18   %v14 = sext <4 x i8> undef to <4 x i64>
19   %v15 = sext <4 x i16> undef to <4 x i32>
20   %v16 = sext <4 x i16> undef to <4 x i64>
21   %v17 = sext <4 x i32> undef to <4 x i64>
22   %v18 = sext <8 x i8> undef to <8 x i16>
23   %v19 = sext <8 x i8> undef to <8 x i32>
24   %v20 = sext <8 x i8> undef to <8 x i64>
25   %v21 = sext <8 x i16> undef to <8 x i32>
26   %v22 = sext <8 x i16> undef to <8 x i64>
27   %v23 = sext <8 x i32> undef to <8 x i64>
28   %v24 = sext <16 x i8> undef to <16 x i16>
29   %v25 = sext <16 x i8> undef to <16 x i32>
30   %v26 = sext <16 x i8> undef to <16 x i64>
31   %v27 = sext <16 x i16> undef to <16 x i32>
32   %v28 = sext <16 x i16> undef to <16 x i64>
33   %v29 = sext <16 x i32> undef to <16 x i64>
35 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v0 = sext i8 undef to i16
36 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v1 = sext i8 undef to i32
37 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v2 = sext i8 undef to i64
38 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v3 = sext i16 undef to i32
39 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v4 = sext i16 undef to i64
40 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v5 = sext i32 undef to i64
41 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v6 = sext <2 x i8> undef to <2 x i16>
42 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %v7 = sext <2 x i8> undef to <2 x i32>
43 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction:   %v8 = sext <2 x i8> undef to <2 x i64>
44 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v9 = sext <2 x i16> undef to <2 x i32>
45 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %v10 = sext <2 x i16> undef to <2 x i64>
46 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v11 = sext <2 x i32> undef to <2 x i64>
47 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v12 = sext <4 x i8> undef to <4 x i16>
48 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %v13 = sext <4 x i8> undef to <4 x i32>
49 ; CHECK: Cost Model: Found an estimated cost of 7 for instruction:   %v14 = sext <4 x i8> undef to <4 x i64>
50 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v15 = sext <4 x i16> undef to <4 x i32>
51 ; CHECK: Cost Model: Found an estimated cost of 5 for instruction:   %v16 = sext <4 x i16> undef to <4 x i64>
52 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction:   %v17 = sext <4 x i32> undef to <4 x i64>
53 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v18 = sext <8 x i8> undef to <8 x i16>
54 ; CHECK: Cost Model: Found an estimated cost of 5 for instruction:   %v19 = sext <8 x i8> undef to <8 x i32>
55 ; CHECK: Cost Model: Found an estimated cost of 15 for instruction:   %v20 = sext <8 x i8> undef to <8 x i64>
56 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction:   %v21 = sext <8 x i16> undef to <8 x i32>
57 ; CHECK: Cost Model: Found an estimated cost of 11 for instruction:   %v22 = sext <8 x i16> undef to <8 x i64>
58 ; CHECK: Cost Model: Found an estimated cost of 6 for instruction:   %v23 = sext <8 x i32> undef to <8 x i64>
59 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction:   %v24 = sext <16 x i8> undef to <16 x i16>
60 ; CHECK: Cost Model: Found an estimated cost of 11 for instruction:   %v25 = sext <16 x i8> undef to <16 x i32>
61 ; CHECK: Cost Model: Found an estimated cost of 31 for instruction:   %v26 = sext <16 x i8> undef to <16 x i64>
62 ; CHECK: Cost Model: Found an estimated cost of 6 for instruction:   %v27 = sext <16 x i16> undef to <16 x i32>
63 ; CHECK: Cost Model: Found an estimated cost of 22 for instruction:   %v28 = sext <16 x i16> undef to <16 x i64>
64 ; CHECK: Cost Model: Found an estimated cost of 12 for instruction:   %v29 = sext <16 x i32> undef to <16 x i64>
66  ret void
69 define void @zext() {
70   %v0 = zext i8 undef to i16
71   %v1 = zext i8 undef to i32
72   %v2 = zext i8 undef to i64
73   %v3 = zext i16 undef to i32
74   %v4 = zext i16 undef to i64
75   %v5 = zext i32 undef to i64
76   %v6 = zext <2 x i8> undef to <2 x i16>
77   %v7 = zext <2 x i8> undef to <2 x i32>
78   %v8 = zext <2 x i8> undef to <2 x i64>
79   %v9 = zext <2 x i16> undef to <2 x i32>
80   %v10 = zext <2 x i16> undef to <2 x i64>
81   %v11 = zext <2 x i32> undef to <2 x i64>
82   %v12 = zext <4 x i8> undef to <4 x i16>
83   %v13 = zext <4 x i8> undef to <4 x i32>
84   %v14 = zext <4 x i8> undef to <4 x i64>
85   %v15 = zext <4 x i16> undef to <4 x i32>
86   %v16 = zext <4 x i16> undef to <4 x i64>
87   %v17 = zext <4 x i32> undef to <4 x i64>
88   %v18 = zext <8 x i8> undef to <8 x i16>
89   %v19 = zext <8 x i8> undef to <8 x i32>
90   %v20 = zext <8 x i8> undef to <8 x i64>
91   %v21 = zext <8 x i16> undef to <8 x i32>
92   %v22 = zext <8 x i16> undef to <8 x i64>
93   %v23 = zext <8 x i32> undef to <8 x i64>
94   %v24 = zext <16 x i8> undef to <16 x i16>
95   %v25 = zext <16 x i8> undef to <16 x i32>
96   %v26 = zext <16 x i8> undef to <16 x i64>
97   %v27 = zext <16 x i16> undef to <16 x i32>
98   %v28 = zext <16 x i16> undef to <16 x i64>
99   %v29 = zext <16 x i32> undef to <16 x i64>
101 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v0 = zext i8 undef to i16
102 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v1 = zext i8 undef to i32
103 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v2 = zext i8 undef to i64
104 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v3 = zext i16 undef to i32
105 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v4 = zext i16 undef to i64
106 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v5 = zext i32 undef to i64
107 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v6 = zext <2 x i8> undef to <2 x i16>
108 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %v7 = zext <2 x i8> undef to <2 x i32>
109 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction:   %v8 = zext <2 x i8> undef to <2 x i64>
110 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v9 = zext <2 x i16> undef to <2 x i32>
111 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %v10 = zext <2 x i16> undef to <2 x i64>
112 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v11 = zext <2 x i32> undef to <2 x i64>
113 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v12 = zext <4 x i8> undef to <4 x i16>
114 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %v13 = zext <4 x i8> undef to <4 x i32>
115 ; CHECK: Cost Model: Found an estimated cost of 7 for instruction:   %v14 = zext <4 x i8> undef to <4 x i64>
116 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v15 = zext <4 x i16> undef to <4 x i32>
117 ; CHECK: Cost Model: Found an estimated cost of 5 for instruction:   %v16 = zext <4 x i16> undef to <4 x i64>
118 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction:   %v17 = zext <4 x i32> undef to <4 x i64>
119 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v18 = zext <8 x i8> undef to <8 x i16>
120 ; CHECK: Cost Model: Found an estimated cost of 5 for instruction:   %v19 = zext <8 x i8> undef to <8 x i32>
121 ; CHECK: Cost Model: Found an estimated cost of 15 for instruction:   %v20 = zext <8 x i8> undef to <8 x i64>
122 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction:   %v21 = zext <8 x i16> undef to <8 x i32>
123 ; CHECK: Cost Model: Found an estimated cost of 11 for instruction:   %v22 = zext <8 x i16> undef to <8 x i64>
124 ; CHECK: Cost Model: Found an estimated cost of 6 for instruction:   %v23 = zext <8 x i32> undef to <8 x i64>
125 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction:   %v24 = zext <16 x i8> undef to <16 x i16>
126 ; CHECK: Cost Model: Found an estimated cost of 11 for instruction:   %v25 = zext <16 x i8> undef to <16 x i32>
127 ; CHECK: Cost Model: Found an estimated cost of 31 for instruction:   %v26 = zext <16 x i8> undef to <16 x i64>
128 ; CHECK: Cost Model: Found an estimated cost of 6 for instruction:   %v27 = zext <16 x i16> undef to <16 x i32>
129 ; CHECK: Cost Model: Found an estimated cost of 22 for instruction:   %v28 = zext <16 x i16> undef to <16 x i64>
130 ; CHECK: Cost Model: Found an estimated cost of 12 for instruction:   %v29 = zext <16 x i32> undef to <16 x i64>
132  ret void
135 define void @trunc() {
136   %v0 = trunc i16 undef to i8
137   %v1 = trunc i32 undef to i16
138   %v2 = trunc i32 undef to i8
139   %v3 = trunc i64 undef to i32
140   %v4 = trunc i64 undef to i16
141   %v5 = trunc i64 undef to i8
142   %v6 = trunc <2 x i16> undef to <2 x i8>
143   %v7 = trunc <2 x i32> undef to <2 x i16>
144   %v8 = trunc <2 x i32> undef to <2 x i8>
145   %v9 = trunc <2 x i64> undef to <2 x i32>
146   %v10 = trunc <2 x i64> undef to <2 x i16>
147   %v11 = trunc <2 x i64> undef to <2 x i8>
148   %v12 = trunc <4 x i16> undef to <4 x i8>
149   %v13 = trunc <4 x i32> undef to <4 x i16>
150   %v14 = trunc <4 x i32> undef to <4 x i8>
151   %v15 = trunc <4 x i64> undef to <4 x i32>
152   %v16 = trunc <4 x i64> undef to <4 x i16>
153   %v17 = trunc <4 x i64> undef to <4 x i8>
154   %v18 = trunc <8 x i16> undef to <8 x i8>
155   %v19 = trunc <8 x i32> undef to <8 x i16>
156   %v20 = trunc <8 x i32> undef to <8 x i8>
157   %v21 = trunc <8 x i64> undef to <8 x i32>
158   %v22 = trunc <8 x i64> undef to <8 x i16>
159   %v23 = trunc <8 x i64> undef to <8 x i8>
160   %v24 = trunc <16 x i16> undef to <16 x i8>
161   %v25 = trunc <16 x i32> undef to <16 x i16>
162   %v26 = trunc <16 x i32> undef to <16 x i8>
163   %v27 = trunc <16 x i64> undef to <16 x i32>
164   %v28 = trunc <16 x i64> undef to <16 x i16>
165   %v29 = trunc <16 x i64> undef to <16 x i8>
167 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction:   %v0 = trunc i16 undef to i8
168 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction:   %v1 = trunc i32 undef to i16
169 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction:   %v2 = trunc i32 undef to i8
170 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction:   %v3 = trunc i64 undef to i32
171 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction:   %v4 = trunc i64 undef to i16
172 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction:   %v5 = trunc i64 undef to i8
173 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v6 = trunc <2 x i16> undef to <2 x i8>
174 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v7 = trunc <2 x i32> undef to <2 x i16>
175 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v8 = trunc <2 x i32> undef to <2 x i8>
176 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v9 = trunc <2 x i64> undef to <2 x i32>
177 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v10 = trunc <2 x i64> undef to <2 x i16>
178 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v11 = trunc <2 x i64> undef to <2 x i8>
179 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v12 = trunc <4 x i16> undef to <4 x i8>
180 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v13 = trunc <4 x i32> undef to <4 x i16>
181 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v14 = trunc <4 x i32> undef to <4 x i8>
182 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v15 = trunc <4 x i64> undef to <4 x i32>
183 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v16 = trunc <4 x i64> undef to <4 x i16>
184 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v17 = trunc <4 x i64> undef to <4 x i8>
185 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v18 = trunc <8 x i16> undef to <8 x i8>
186 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v19 = trunc <8 x i32> undef to <8 x i16>
187 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v20 = trunc <8 x i32> undef to <8 x i8>
188 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %v21 = trunc <8 x i64> undef to <8 x i32>
189 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction:   %v22 = trunc <8 x i64> undef to <8 x i16>
190 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction:   %v23 = trunc <8 x i64> undef to <8 x i8>
191 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %v24 = trunc <16 x i16> undef to <16 x i8>
192 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %v25 = trunc <16 x i32> undef to <16 x i16>
193 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction:   %v26 = trunc <16 x i32> undef to <16 x i8>
194 ; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %v27 = trunc <16 x i64> undef to <16 x i32>
195 ; CHECK: Cost Model: Found an estimated cost of 6 for instruction:   %v28 = trunc <16 x i64> undef to <16 x i16>
196 ; CHECK: Cost Model: Found an estimated cost of 7 for instruction:   %v29 = trunc <16 x i64> undef to <16 x i8>
198  ret void