OLD | NEW |
(Empty) | |
| 1 ; Test dumping cast operations. |
| 2 |
| 3 ; RUN: llvm-as < %s | pnacl-freeze | pnacl-bccompress --remove-abbreviations \ |
| 4 ; RUN: | pnacl-bcdis | FileCheck %s |
| 5 |
| 6 |
| 7 ; Test integer to integer casts. |
| 8 define internal void @Int2IntCasts() { |
| 9 |
| 10 ; CHECK: | | %b0: |
| 11 |
| 12 ; Test truncation to i1. |
| 13 %v0 = trunc i8 1 to i1 |
| 14 %v1 = trunc i16 2 to i1 |
| 15 %v2 = trunc i32 3 to i1 |
| 16 %v3 = trunc i64 4 to i1 |
| 17 |
| 18 ; CHECK-NEXT: {{.*}}| 3: <3, 3, 6, 0> | %v0 = trunc i8 %c2 to
i1; |
| 19 ; CHECK-NEXT: {{.*}}| 3: <3, 3, 6, 0> | %v1 = trunc i16 %c3 to
i1; |
| 20 ; CHECK-NEXT: {{.*}}| 3: <3, 7, 6, 0> | %v2 = trunc i32 %c0 to
i1; |
| 21 ; CHECK-NEXT: {{.*}}| 3: <3, 7, 6, 0> | %v3 = trunc i64 %c1 to
i1; |
| 22 |
| 23 ; Verify i1 generated. |
| 24 %v4 = and i1 %v0, %v1 |
| 25 %v5 = and i1 %v2, %v3 |
| 26 |
| 27 ; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 10> | %v4 = and i1 %v0, %v1; |
| 28 ; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 10> | %v5 = and i1 %v2, %v3; |
| 29 |
| 30 ; Test truncation to i8. |
| 31 %v6 = trunc i16 2 to i8 |
| 32 %v7 = trunc i32 3 to i8 |
| 33 %v8 = trunc i64 4 to i8 |
| 34 |
| 35 ; CHECK-NEXT: {{.*}}| 3: <3, 8, 4, 0> | %v6 = trunc i16 %c3 to
i8; |
| 36 ; CHECK-NEXT: {{.*}}| 3: <3, 12, 4, 0> | %v7 = trunc i32 %c0 to
i8; |
| 37 ; CHECK-NEXT: {{.*}}| 3: <3, 12, 4, 0> | %v8 = trunc i64 %c1 to
i8; |
| 38 |
| 39 ; Verify i8 generated. |
| 40 %v9 = add i8 %v6, %v7 |
| 41 %v10 = add i8 %v8, %v8 |
| 42 |
| 43 ; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v9 = add i8 %v6, %v7; |
| 44 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 2, 0> | %v10 = add i8 %v8, %v8
; |
| 45 |
| 46 ; Test trunction to i16. |
| 47 %v11 = trunc i32 3 to i16 |
| 48 %v12 = trunc i64 4 to i16 |
| 49 |
| 50 ; CHECK-NEXT: {{.*}}| 3: <3, 16, 5, 0> | %v11 = trunc i32 %c0 t
o i16; |
| 51 ; CHECK-NEXT: {{.*}}| 3: <3, 16, 5, 0> | %v12 = trunc i64 %c1 t
o i16; |
| 52 |
| 53 ; Verify i16 generated. |
| 54 %v13 = add i16 %v11, %v12 |
| 55 |
| 56 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v13 = add i16 %v11, %
v12; |
| 57 |
| 58 ; Test truncation to i32. |
| 59 %v14 = trunc i64 4 to i32 |
| 60 |
| 61 ; CHECK-NEXT: {{.*}}| 3: <3, 18, 2, 0> | %v14 = trunc i64 %c1 t
o i32; |
| 62 |
| 63 ; Verify i32 generated. |
| 64 %v15 = add i32 %v14, %v14 |
| 65 |
| 66 ; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v15 = add i32 %v14, %
v14; |
| 67 |
| 68 ; Test zero extend to i8. |
| 69 %v16 = zext i1 0 to i8 |
| 70 |
| 71 ; CHECK-NEXT: {{.*}}| 3: <3, 17, 4, 1> | %v16 = zext i1 %c4 to
i8; |
| 72 |
| 73 ; Verify i8 generated. |
| 74 %v17 = add i8 %v16, %v16 |
| 75 |
| 76 ; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v17 = add i8 %v16, %v
16; |
| 77 |
| 78 ; Test zero extend to i16. |
| 79 %v18 = zext i1 0 to i16 |
| 80 %v19 = zext i8 1 to i16 |
| 81 |
| 82 ; CHECK-NEXT: {{.*}}| 3: <3, 19, 5, 1> | %v18 = zext i1 %c4 to
i16; |
| 83 ; CHECK-NEXT: {{.*}}| 3: <3, 22, 5, 1> | %v19 = zext i8 %c2 to
i16; |
| 84 |
| 85 ; Verify i16 generated. |
| 86 %v20 = add i16 %v18, %v19 |
| 87 |
| 88 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v20 = add i16 %v18, %
v19; |
| 89 |
| 90 ; Test zero extend to i32. |
| 91 %v21 = zext i1 0 to i32 |
| 92 %v22 = zext i8 1 to i32 |
| 93 %v23 = zext i16 2 to i32 |
| 94 |
| 95 ; CHECK-NEXT: {{.*}}| 3: <3, 22, 2, 1> | %v21 = zext i1 %c4 to
i32; |
| 96 ; CHECK-NEXT: {{.*}}| 3: <3, 25, 2, 1> | %v22 = zext i8 %c2 to
i32; |
| 97 ; CHECK-NEXT: {{.*}}| 3: <3, 25, 2, 1> | %v23 = zext i16 %c3 to
i32; |
| 98 |
| 99 ; Verify i32 generated. |
| 100 %v24 = add i32 %v21, %v22 |
| 101 %v25 = add i32 %v23, %v24 |
| 102 |
| 103 ; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v24 = add i32 %v21, %
v22; |
| 104 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v25 = add i32 %v23, %
v24; |
| 105 |
| 106 ; Test zero extend to i64. |
| 107 %v26 = zext i1 0 to i64 |
| 108 %v27 = zext i8 1 to i64 |
| 109 %v28 = zext i16 2 to i64 |
| 110 %v29 = zext i32 3 to i64 |
| 111 |
| 112 ; CHECK-NEXT: {{.*}}| 3: <3, 27, 3, 1> | %v26 = zext i1 %c4 to
i64; |
| 113 ; CHECK-NEXT: {{.*}}| 3: <3, 30, 3, 1> | %v27 = zext i8 %c2 to
i64; |
| 114 ; CHECK-NEXT: {{.*}}| 3: <3, 30, 3, 1> | %v28 = zext i16 %c3 to
i64; |
| 115 ; CHECK-NEXT: {{.*}}| 3: <3, 34, 3, 1> | %v29 = zext i32 %c0 to
i64; |
| 116 |
| 117 ; Verify i64 generated. |
| 118 %v30 = add i64 %v26, %v27 |
| 119 %v31 = add i64 %v28, %v29 |
| 120 |
| 121 ; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 0> | %v30 = add i64 %v26, %
v27; |
| 122 ; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v31 = add i64 %v28, %
v29; |
| 123 |
| 124 ; Test sign extend to i8. |
| 125 %v32 = sext i1 0 to i8 |
| 126 |
| 127 ; CHECK-NEXT: {{.*}}| 3: <3, 33, 4, 2> | %v32 = sext i1 %c4 to
i8; |
| 128 |
| 129 ; Verify i8 generated. |
| 130 %v33 = add i8 %v32, %v32 |
| 131 |
| 132 ; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v33 = add i8 %v32, %v
32; |
| 133 |
| 134 ; Test sign extend to i16 |
| 135 %v34 = sext i1 0 to i16 |
| 136 %v35 = sext i8 1 to i16 |
| 137 |
| 138 ; CHECK-NEXT: {{.*}}| 3: <3, 35, 5, 2> | %v34 = sext i1 %c4 to
i16; |
| 139 ; CHECK-NEXT: {{.*}}| 3: <3, 38, 5, 2> | %v35 = sext i8 %c2 to
i16; |
| 140 |
| 141 ; Verify i16 generated. |
| 142 %v36 = add i16 %v34, %v35 |
| 143 |
| 144 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v36 = add i16 %v34, %
v35; |
| 145 |
| 146 ; Test sign extend to i32. |
| 147 %v37 = sext i1 0 to i32 |
| 148 %v38 = sext i8 1 to i32 |
| 149 %v39 = sext i16 2 to i32 |
| 150 |
| 151 ; CHECK-NEXT: {{.*}}| 3: <3, 38, 2, 2> | %v37 = sext i1 %c4 to
i32; |
| 152 ; CHECK-NEXT: {{.*}}| 3: <3, 41, 2, 2> | %v38 = sext i8 %c2 to
i32; |
| 153 ; CHECK-NEXT: {{.*}}| 3: <3, 41, 2, 2> | %v39 = sext i16 %c3 to
i32; |
| 154 |
| 155 ; Verify i32 generated. |
| 156 %v40 = add i32 %v37, %v38 |
| 157 %v41 = add i32 %v39, %v40 |
| 158 |
| 159 ; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v40 = add i32 %v37, %
v38; |
| 160 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v41 = add i32 %v39, %
v40; |
| 161 |
| 162 ; Test sign extend to i64. |
| 163 %v42 = sext i1 0 to i64 |
| 164 %v43 = sext i8 1 to i64 |
| 165 %v44 = sext i16 2 to i64 |
| 166 %v45 = sext i32 3 to i64 |
| 167 |
| 168 ; CHECK-NEXT: {{.*}}| 3: <3, 43, 3, 2> | %v42 = sext i1 %c4 to
i64; |
| 169 ; CHECK-NEXT: {{.*}}| 3: <3, 46, 3, 2> | %v43 = sext i8 %c2 to
i64; |
| 170 ; CHECK-NEXT: {{.*}}| 3: <3, 46, 3, 2> | %v44 = sext i16 %c3 to
i64; |
| 171 ; CHECK-NEXT: {{.*}}| 3: <3, 50, 3, 2> | %v45 = sext i32 %c0 to
i64; |
| 172 |
| 173 ; Verify i64 generated. |
| 174 %v46 = add i64 %v42, %v43 |
| 175 %v47 = add i64 %v44, %v45 |
| 176 ret void |
| 177 |
| 178 ; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 0> | %v46 = add i64 %v42, %
v43; |
| 179 ; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v47 = add i64 %v44, %
v45; |
| 180 ; CHECK-NEXT: {{.*}}| 3: <10> | ret void; |
| 181 |
| 182 } |
| 183 |
| 184 |
| 185 |
| 186 ; Test float to float casts. |
| 187 define internal void @Float2FloatCasts(float %p0, double %p1) { |
| 188 |
| 189 ; CHECK: | | %b0: |
| 190 |
| 191 ; Test and verify truncation to float. |
| 192 %v0 = fptrunc double %p1 to float |
| 193 %v1 = fadd float %v0, %v0 |
| 194 |
| 195 ; CHECK-NEXT: {{.*}}| 3: <3, 1, 0, 7> | %v0 = fptrunc double %
p1 to float; |
| 196 ; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v1 = fadd float %v0,
%v0; |
| 197 |
| 198 ; Test and verify extending to double. |
| 199 %v2 = fpext float %p0 to double |
| 200 %v3 = fadd double %v2, %v2 |
| 201 ret void |
| 202 |
| 203 ; CHECK-NEXT: {{.*}}| 3: <3, 4, 1, 8> | %v2 = fpext float %p0
to double; |
| 204 ; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v3 = fadd double %v2,
%v2; |
| 205 ; CHECK-NEXT: {{.*}}| 3: <10> | ret void; |
| 206 |
| 207 } |
| 208 |
| 209 |
| 210 |
| 211 ; Test float to int casts. |
| 212 define internal void @Float2IntCasts(float %p0, double %p1) { |
| 213 |
| 214 ; CHECK: | | %b0: |
| 215 |
| 216 ; Test and verify fptoui for i1. |
| 217 %v0 = fptoui float %p0 to i1 |
| 218 %v1 = fptoui double %p1 to i1 |
| 219 %v2 = and i1 %v0, %v1 |
| 220 |
| 221 ; CHECK-NEXT: {{.*}}| 3: <3, 2, 6, 3> | %v0 = fptoui float %p0
to i1; |
| 222 ; CHECK-NEXT: {{.*}}| 3: <3, 2, 6, 3> | %v1 = fptoui double %p
1 to i1; |
| 223 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 10> | %v2 = and i1 %v0, %v1; |
| 224 |
| 225 ; Test and verify fptoui for i8. |
| 226 %v3 = fptoui float %p0 to i8 |
| 227 %v4 = fptoui double %p1 to i8 |
| 228 %v5 = add i8 %v3, %v4 |
| 229 |
| 230 ; CHECK-NEXT: {{.*}}| 3: <3, 5, 4, 3> | %v3 = fptoui float %p0
to i8; |
| 231 ; CHECK-NEXT: {{.*}}| 3: <3, 5, 4, 3> | %v4 = fptoui double %p
1 to i8; |
| 232 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v5 = add i8 %v3, %v4; |
| 233 |
| 234 ; Test and verify fptoui for i16. |
| 235 %v6 = fptoui float %p0 to i16 |
| 236 %v7 = fptoui double %p1 to i16 |
| 237 %v8 = add i16 %v6, %v7 |
| 238 |
| 239 ; CHECK-NEXT: {{.*}}| 3: <3, 8, 5, 3> | %v6 = fptoui float %p0
to i16; |
| 240 ; CHECK-NEXT: {{.*}}| 3: <3, 8, 5, 3> | %v7 = fptoui double %p
1 to i16; |
| 241 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v8 = add i16 %v6, %v7
; |
| 242 |
| 243 ; Test and verify fptoui for i32. |
| 244 %v9 = fptoui float %p0 to i32 |
| 245 %v10 = fptoui double %p1 to i32 |
| 246 %v11 = and i32 %v9, %v10 |
| 247 |
| 248 ; CHECK-NEXT: {{.*}}| 3: <3, 11, 2, 3> | %v9 = fptoui float %p0
to i32; |
| 249 ; CHECK-NEXT: {{.*}}| 3: <3, 11, 2, 3> | %v10 = fptoui double %
p1 to i32; |
| 250 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 10> | %v11 = and i32 %v9, %v
10; |
| 251 |
| 252 ; Test and verify fptoui for i64 |
| 253 %v12 = fptoui float %p0 to i64 |
| 254 %v13 = fptoui double %p1 to i64 |
| 255 %v14 = and i64 %v12, %v13 |
| 256 |
| 257 ; CHECK-NEXT: {{.*}}| 3: <3, 14, 3, 3> | %v12 = fptoui float %p
0 to i64; |
| 258 ; CHECK-NEXT: {{.*}}| 3: <3, 14, 3, 3> | %v13 = fptoui double %
p1 to i64; |
| 259 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 10> | %v14 = and i64 %v12, %
v13; |
| 260 |
| 261 ; Test and verify fptosi for i1. |
| 262 %v15 = fptosi float %p0 to i1 |
| 263 %v16 = fptosi double %p1 to i1 |
| 264 %v17 = and i1 %v15, %v16 |
| 265 |
| 266 ; CHECK-NEXT: {{.*}}| 3: <3, 17, 6, 4> | %v15 = fptosi float %p
0 to i1; |
| 267 ; CHECK-NEXT: {{.*}}| 3: <3, 17, 6, 4> | %v16 = fptosi double %
p1 to i1; |
| 268 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 10> | %v17 = and i1 %v15, %v
16; |
| 269 |
| 270 ; Test and verify fptosi for i8. |
| 271 %v18 = fptosi float %p0 to i8 |
| 272 %v19 = fptosi double %p1 to i8 |
| 273 %v20 = add i8 %v18, %v19 |
| 274 |
| 275 ; CHECK-NEXT: {{.*}}| 3: <3, 20, 4, 4> | %v18 = fptosi float %p
0 to i8; |
| 276 ; CHECK-NEXT: {{.*}}| 3: <3, 20, 4, 4> | %v19 = fptosi double %
p1 to i8; |
| 277 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v20 = add i8 %v18, %v
19; |
| 278 |
| 279 ; Test and verify fptosi for i16. |
| 280 %v21 = fptosi float %p0 to i16 |
| 281 %v22 = fptosi double %p1 to i16 |
| 282 %v23 = add i16 %v21, %v22 |
| 283 |
| 284 ; CHECK-NEXT: {{.*}}| 3: <3, 23, 5, 4> | %v21 = fptosi float %p
0 to i16; |
| 285 ; CHECK-NEXT: {{.*}}| 3: <3, 23, 5, 4> | %v22 = fptosi double %
p1 to i16; |
| 286 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v23 = add i16 %v21, %
v22; |
| 287 |
| 288 ; Test and verify fptosi for i32. |
| 289 %v24 = fptosi float %p0 to i32 |
| 290 %v25 = fptosi double %p1 to i32 |
| 291 %v26 = and i32 %v24, %v25 |
| 292 |
| 293 ; CHECK-NEXT: {{.*}}| 3: <3, 26, 2, 4> | %v24 = fptosi float %p
0 to i32; |
| 294 ; CHECK-NEXT: {{.*}}| 3: <3, 26, 2, 4> | %v25 = fptosi double %
p1 to i32; |
| 295 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 10> | %v26 = and i32 %v24, %
v25; |
| 296 |
| 297 ; Test and verify fptosi for i64 |
| 298 %v27 = fptosi float %p0 to i64 |
| 299 %v28 = fptosi double %p1 to i64 |
| 300 %v29 = and i64 %v27, %v28 |
| 301 |
| 302 ; CHECK-NEXT: {{.*}}| 3: <3, 29, 3, 4> | %v27 = fptosi float %p
0 to i64; |
| 303 ; CHECK-NEXT: {{.*}}| 3: <3, 29, 3, 4> | %v28 = fptosi double %
p1 to i64; |
| 304 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 10> | %v29 = and i64 %v27, %
v28; |
| 305 |
| 306 ; Test and verify bitcast to i32. |
| 307 %v30 = bitcast float %p0 to i32 |
| 308 %v31 = add i32 %v30, %v30 |
| 309 |
| 310 ; CHECK-NEXT: {{.*}}| 3: <3, 32, 2, 11> | %v30 = bitcast float %
p0 to i32; |
| 311 ; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v31 = add i32 %v30, %
v30; |
| 312 |
| 313 ; Test and verify bitcast to i64. |
| 314 %v32 = bitcast double %p1 to i64 |
| 315 %v33 = add i64 %v32, %v32 |
| 316 ret void |
| 317 |
| 318 ; CHECK-NEXT: {{.*}}| 3: <3, 33, 3, 11> | %v32 = bitcast double
%p1 to i64; |
| 319 ; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v33 = add i64 %v32, %
v32; |
| 320 ; CHECK-NEXT: {{.*}}| 3: <10> | ret void; |
| 321 |
| 322 } |
| 323 |
| 324 |
| 325 |
| 326 ; Test int to float casts. |
| 327 define internal void @Int2FloatCasts() { |
| 328 |
| 329 ; CHECK: | | %b0: |
| 330 |
| 331 ; Test uitofp conversions to float. |
| 332 %v0 = uitofp i1 0 to float |
| 333 %v1 = uitofp i8 1 to float |
| 334 %v2 = uitofp i16 2 to float |
| 335 %v3 = uitofp i32 3 to float |
| 336 %v4 = uitofp i64 4 to float |
| 337 |
| 338 ; CHECK-NEXT: {{.*}}| 3: <3, 1, 0, 5> | %v0 = uitofp i1 %c4 to
float; |
| 339 ; CHECK-NEXT: {{.*}}| 3: <3, 4, 0, 5> | %v1 = uitofp i8 %c2 to
float; |
| 340 ; CHECK-NEXT: {{.*}}| 3: <3, 4, 0, 5> | %v2 = uitofp i16 %c3 t
o float; |
| 341 ; CHECK-NEXT: {{.*}}| 3: <3, 8, 0, 5> | %v3 = uitofp i32 %c0 t
o float; |
| 342 ; CHECK-NEXT: {{.*}}| 3: <3, 8, 0, 5> | %v4 = uitofp i64 %c1 t
o float; |
| 343 |
| 344 ; Verify floats generated. |
| 345 %v5 = fadd float %v0, %v1 |
| 346 %v6 = fadd float %v2, %v3 |
| 347 %v7 = fadd float %v4, %v5 |
| 348 |
| 349 ; CHECK-NEXT: {{.*}}| 3: <2, 5, 4, 0> | %v5 = fadd float %v0,
%v1; |
| 350 ; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 0> | %v6 = fadd float %v2,
%v3; |
| 351 ; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v7 = fadd float %v4,
%v5; |
| 352 |
| 353 ; Test uitofp conversions to double |
| 354 %v8 = uitofp i1 0 to double |
| 355 %v9 = uitofp i8 1 to double |
| 356 %v10 = uitofp i16 2 to double |
| 357 %v11 = uitofp i32 3 to double |
| 358 %v12 = uitofp i64 4 to double |
| 359 |
| 360 ; CHECK-NEXT: {{.*}}| 3: <3, 9, 1, 5> | %v8 = uitofp i1 %c4 to
double; |
| 361 ; CHECK-NEXT: {{.*}}| 3: <3, 12, 1, 5> | %v9 = uitofp i8 %c2 to
double; |
| 362 ; CHECK-NEXT: {{.*}}| 3: <3, 12, 1, 5> | %v10 = uitofp i16 %c3
to double; |
| 363 ; CHECK-NEXT: {{.*}}| 3: <3, 16, 1, 5> | %v11 = uitofp i32 %c0
to double; |
| 364 ; CHECK-NEXT: {{.*}}| 3: <3, 16, 1, 5> | %v12 = uitofp i64 %c1
to double; |
| 365 |
| 366 ; Verify doubles generated. |
| 367 %v13 = fadd double %v8, %v9 |
| 368 %v14 = fadd double %v10, %v11 |
| 369 %v15 = fadd double %v12, %v13 |
| 370 |
| 371 ; CHECK-NEXT: {{.*}}| 3: <2, 5, 4, 0> | %v13 = fadd double %v8
, %v9; |
| 372 ; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 0> | %v14 = fadd double %v1
0, %v11; |
| 373 ; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v15 = fadd double %v1
2, %v13; |
| 374 |
| 375 ; Test sitofp conversions to float. |
| 376 %v16 = sitofp i1 0 to float |
| 377 %v17 = sitofp i8 1 to float |
| 378 %v18 = sitofp i16 2 to float |
| 379 %v19 = sitofp i32 3 to float |
| 380 %v20 = sitofp i64 4 to float |
| 381 |
| 382 ; CHECK-NEXT: {{.*}}| 3: <3, 17, 0, 6> | %v16 = sitofp i1 %c4 t
o float; |
| 383 ; CHECK-NEXT: {{.*}}| 3: <3, 20, 0, 6> | %v17 = sitofp i8 %c2 t
o float; |
| 384 ; CHECK-NEXT: {{.*}}| 3: <3, 20, 0, 6> | %v18 = sitofp i16 %c3
to float; |
| 385 ; CHECK-NEXT: {{.*}}| 3: <3, 24, 0, 6> | %v19 = sitofp i32 %c0
to float; |
| 386 ; CHECK-NEXT: {{.*}}| 3: <3, 24, 0, 6> | %v20 = sitofp i64 %c1
to float; |
| 387 |
| 388 ; Verify floats generated. |
| 389 %v21 = fadd float %v16, %v17 |
| 390 %v22 = fadd float %v18, %v19 |
| 391 %v23 = fadd float %v20, %v21 |
| 392 |
| 393 ; CHECK-NEXT: {{.*}}| 3: <2, 5, 4, 0> | %v21 = fadd float %v16
, %v17; |
| 394 ; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 0> | %v22 = fadd float %v18
, %v19; |
| 395 ; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v23 = fadd float %v20
, %v21; |
| 396 |
| 397 ; Test sitofp conversions to double |
| 398 %v24 = sitofp i1 0 to double |
| 399 %v25 = sitofp i8 1 to double |
| 400 %v26 = sitofp i16 2 to double |
| 401 %v27 = sitofp i32 3 to double |
| 402 %v28 = sitofp i64 4 to double |
| 403 |
| 404 ; CHECK-NEXT: {{.*}}| 3: <3, 25, 1, 6> | %v24 = sitofp i1 %c4 t
o double; |
| 405 ; CHECK-NEXT: {{.*}}| 3: <3, 28, 1, 6> | %v25 = sitofp i8 %c2 t
o double; |
| 406 ; CHECK-NEXT: {{.*}}| 3: <3, 28, 1, 6> | %v26 = sitofp i16 %c3
to double; |
| 407 ; CHECK-NEXT: {{.*}}| 3: <3, 32, 1, 6> | %v27 = sitofp i32 %c0
to double; |
| 408 ; CHECK-NEXT: {{.*}}| 3: <3, 32, 1, 6> | %v28 = sitofp i64 %c1
to double; |
| 409 |
| 410 ; Verify doubles generated. |
| 411 %v29 = fadd double %v24, %v25 |
| 412 %v30 = fadd double %v26, %v27 |
| 413 %v31 = fadd double %v29, %v30 |
| 414 ret void |
| 415 |
| 416 ; CHECK-NEXT: {{.*}}| 3: <2, 5, 4, 0> | %v29 = fadd double %v2
4, %v25; |
| 417 ; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 0> | %v30 = fadd double %v2
6, %v27; |
| 418 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v31 = fadd double %v2
9, %v30; |
| 419 ; CHECK-NEXT: {{.*}}| 3: <10> | ret void; |
| 420 |
| 421 } |
| 422 |
OLD | NEW |