| Index: test/NaCl/Bitcode/pnacl-bcdis/casts.ll
|
| diff --git a/test/NaCl/Bitcode/pnacl-bcdis/casts.ll b/test/NaCl/Bitcode/pnacl-bcdis/casts.ll
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d62c002f22f0f518f2c4c81551397d9a263ba13b
|
| --- /dev/null
|
| +++ b/test/NaCl/Bitcode/pnacl-bcdis/casts.ll
|
| @@ -0,0 +1,422 @@
|
| +; Test dumping cast operations.
|
| +
|
| +; RUN: llvm-as < %s | pnacl-freeze | pnacl-bccompress --remove-abbreviations \
|
| +; RUN: | pnacl-bcdis | FileCheck %s
|
| +
|
| +
|
| +; Test integer to integer casts.
|
| +define internal void @Int2IntCasts() {
|
| +
|
| +; CHECK: | | %b0:
|
| +
|
| + ; Test truncation to i1.
|
| + %v0 = trunc i8 1 to i1
|
| + %v1 = trunc i16 2 to i1
|
| + %v2 = trunc i32 3 to i1
|
| + %v3 = trunc i64 4 to i1
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 3, 6, 0> | %v0 = trunc i8 %c2 to i1;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 3, 6, 0> | %v1 = trunc i16 %c3 to i1;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 7, 6, 0> | %v2 = trunc i32 %c0 to i1;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 7, 6, 0> | %v3 = trunc i64 %c1 to i1;
|
| +
|
| + ; Verify i1 generated.
|
| + %v4 = and i1 %v0, %v1
|
| + %v5 = and i1 %v2, %v3
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 10> | %v4 = and i1 %v0, %v1;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 10> | %v5 = and i1 %v2, %v3;
|
| +
|
| + ; Test truncation to i8.
|
| + %v6 = trunc i16 2 to i8
|
| + %v7 = trunc i32 3 to i8
|
| + %v8 = trunc i64 4 to i8
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 8, 4, 0> | %v6 = trunc i16 %c3 to i8;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 12, 4, 0> | %v7 = trunc i32 %c0 to i8;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 12, 4, 0> | %v8 = trunc i64 %c1 to i8;
|
| +
|
| + ; Verify i8 generated.
|
| + %v9 = add i8 %v6, %v7
|
| + %v10 = add i8 %v8, %v8
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v9 = add i8 %v6, %v7;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 2, 0> | %v10 = add i8 %v8, %v8;
|
| +
|
| + ; Test trunction to i16.
|
| + %v11 = trunc i32 3 to i16
|
| + %v12 = trunc i64 4 to i16
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 16, 5, 0> | %v11 = trunc i32 %c0 to i16;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 16, 5, 0> | %v12 = trunc i64 %c1 to i16;
|
| +
|
| + ; Verify i16 generated.
|
| + %v13 = add i16 %v11, %v12
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v13 = add i16 %v11, %v12;
|
| +
|
| + ; Test truncation to i32.
|
| + %v14 = trunc i64 4 to i32
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 18, 2, 0> | %v14 = trunc i64 %c1 to i32;
|
| +
|
| + ; Verify i32 generated.
|
| + %v15 = add i32 %v14, %v14
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v15 = add i32 %v14, %v14;
|
| +
|
| + ; Test zero extend to i8.
|
| + %v16 = zext i1 0 to i8
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 17, 4, 1> | %v16 = zext i1 %c4 to i8;
|
| +
|
| + ; Verify i8 generated.
|
| + %v17 = add i8 %v16, %v16
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v17 = add i8 %v16, %v16;
|
| +
|
| + ; Test zero extend to i16.
|
| + %v18 = zext i1 0 to i16
|
| + %v19 = zext i8 1 to i16
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 19, 5, 1> | %v18 = zext i1 %c4 to i16;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 22, 5, 1> | %v19 = zext i8 %c2 to i16;
|
| +
|
| + ; Verify i16 generated.
|
| + %v20 = add i16 %v18, %v19
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v20 = add i16 %v18, %v19;
|
| +
|
| + ; Test zero extend to i32.
|
| + %v21 = zext i1 0 to i32
|
| + %v22 = zext i8 1 to i32
|
| + %v23 = zext i16 2 to i32
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 22, 2, 1> | %v21 = zext i1 %c4 to i32;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 25, 2, 1> | %v22 = zext i8 %c2 to i32;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 25, 2, 1> | %v23 = zext i16 %c3 to i32;
|
| +
|
| + ; Verify i32 generated.
|
| + %v24 = add i32 %v21, %v22
|
| + %v25 = add i32 %v23, %v24
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v24 = add i32 %v21, %v22;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v25 = add i32 %v23, %v24;
|
| +
|
| + ; Test zero extend to i64.
|
| + %v26 = zext i1 0 to i64
|
| + %v27 = zext i8 1 to i64
|
| + %v28 = zext i16 2 to i64
|
| + %v29 = zext i32 3 to i64
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 27, 3, 1> | %v26 = zext i1 %c4 to i64;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 30, 3, 1> | %v27 = zext i8 %c2 to i64;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 30, 3, 1> | %v28 = zext i16 %c3 to i64;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 34, 3, 1> | %v29 = zext i32 %c0 to i64;
|
| +
|
| + ; Verify i64 generated.
|
| + %v30 = add i64 %v26, %v27
|
| + %v31 = add i64 %v28, %v29
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 0> | %v30 = add i64 %v26, %v27;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v31 = add i64 %v28, %v29;
|
| +
|
| + ; Test sign extend to i8.
|
| + %v32 = sext i1 0 to i8
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 33, 4, 2> | %v32 = sext i1 %c4 to i8;
|
| +
|
| + ; Verify i8 generated.
|
| + %v33 = add i8 %v32, %v32
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v33 = add i8 %v32, %v32;
|
| +
|
| + ; Test sign extend to i16
|
| + %v34 = sext i1 0 to i16
|
| + %v35 = sext i8 1 to i16
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 35, 5, 2> | %v34 = sext i1 %c4 to i16;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 38, 5, 2> | %v35 = sext i8 %c2 to i16;
|
| +
|
| + ; Verify i16 generated.
|
| + %v36 = add i16 %v34, %v35
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v36 = add i16 %v34, %v35;
|
| +
|
| + ; Test sign extend to i32.
|
| + %v37 = sext i1 0 to i32
|
| + %v38 = sext i8 1 to i32
|
| + %v39 = sext i16 2 to i32
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 38, 2, 2> | %v37 = sext i1 %c4 to i32;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 41, 2, 2> | %v38 = sext i8 %c2 to i32;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 41, 2, 2> | %v39 = sext i16 %c3 to i32;
|
| +
|
| + ; Verify i32 generated.
|
| + %v40 = add i32 %v37, %v38
|
| + %v41 = add i32 %v39, %v40
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v40 = add i32 %v37, %v38;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v41 = add i32 %v39, %v40;
|
| +
|
| + ; Test sign extend to i64.
|
| + %v42 = sext i1 0 to i64
|
| + %v43 = sext i8 1 to i64
|
| + %v44 = sext i16 2 to i64
|
| + %v45 = sext i32 3 to i64
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 43, 3, 2> | %v42 = sext i1 %c4 to i64;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 46, 3, 2> | %v43 = sext i8 %c2 to i64;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 46, 3, 2> | %v44 = sext i16 %c3 to i64;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 50, 3, 2> | %v45 = sext i32 %c0 to i64;
|
| +
|
| + ; Verify i64 generated.
|
| + %v46 = add i64 %v42, %v43
|
| + %v47 = add i64 %v44, %v45
|
| + ret void
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 0> | %v46 = add i64 %v42, %v43;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v47 = add i64 %v44, %v45;
|
| +; CHECK-NEXT: {{.*}}| 3: <10> | ret void;
|
| +
|
| +}
|
| +
|
| +
|
| +
|
| +; Test float to float casts.
|
| +define internal void @Float2FloatCasts(float %p0, double %p1) {
|
| +
|
| +; CHECK: | | %b0:
|
| +
|
| + ; Test and verify truncation to float.
|
| + %v0 = fptrunc double %p1 to float
|
| + %v1 = fadd float %v0, %v0
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 1, 0, 7> | %v0 = fptrunc double %p1 to float;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v1 = fadd float %v0, %v0;
|
| +
|
| + ; Test and verify extending to double.
|
| + %v2 = fpext float %p0 to double
|
| + %v3 = fadd double %v2, %v2
|
| + ret void
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 4, 1, 8> | %v2 = fpext float %p0 to double;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v3 = fadd double %v2, %v2;
|
| +; CHECK-NEXT: {{.*}}| 3: <10> | ret void;
|
| +
|
| +}
|
| +
|
| +
|
| +
|
| +; Test float to int casts.
|
| +define internal void @Float2IntCasts(float %p0, double %p1) {
|
| +
|
| +; CHECK: | | %b0:
|
| +
|
| + ; Test and verify fptoui for i1.
|
| + %v0 = fptoui float %p0 to i1
|
| + %v1 = fptoui double %p1 to i1
|
| + %v2 = and i1 %v0, %v1
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 2, 6, 3> | %v0 = fptoui float %p0 to i1;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 2, 6, 3> | %v1 = fptoui double %p1 to i1;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 10> | %v2 = and i1 %v0, %v1;
|
| +
|
| + ; Test and verify fptoui for i8.
|
| + %v3 = fptoui float %p0 to i8
|
| + %v4 = fptoui double %p1 to i8
|
| + %v5 = add i8 %v3, %v4
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 5, 4, 3> | %v3 = fptoui float %p0 to i8;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 5, 4, 3> | %v4 = fptoui double %p1 to i8;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v5 = add i8 %v3, %v4;
|
| +
|
| + ; Test and verify fptoui for i16.
|
| + %v6 = fptoui float %p0 to i16
|
| + %v7 = fptoui double %p1 to i16
|
| + %v8 = add i16 %v6, %v7
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 8, 5, 3> | %v6 = fptoui float %p0 to i16;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 8, 5, 3> | %v7 = fptoui double %p1 to i16;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v8 = add i16 %v6, %v7;
|
| +
|
| + ; Test and verify fptoui for i32.
|
| + %v9 = fptoui float %p0 to i32
|
| + %v10 = fptoui double %p1 to i32
|
| + %v11 = and i32 %v9, %v10
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 11, 2, 3> | %v9 = fptoui float %p0 to i32;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 11, 2, 3> | %v10 = fptoui double %p1 to i32;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 10> | %v11 = and i32 %v9, %v10;
|
| +
|
| + ; Test and verify fptoui for i64
|
| + %v12 = fptoui float %p0 to i64
|
| + %v13 = fptoui double %p1 to i64
|
| + %v14 = and i64 %v12, %v13
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 14, 3, 3> | %v12 = fptoui float %p0 to i64;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 14, 3, 3> | %v13 = fptoui double %p1 to i64;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 10> | %v14 = and i64 %v12, %v13;
|
| +
|
| + ; Test and verify fptosi for i1.
|
| + %v15 = fptosi float %p0 to i1
|
| + %v16 = fptosi double %p1 to i1
|
| + %v17 = and i1 %v15, %v16
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 17, 6, 4> | %v15 = fptosi float %p0 to i1;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 17, 6, 4> | %v16 = fptosi double %p1 to i1;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 10> | %v17 = and i1 %v15, %v16;
|
| +
|
| + ; Test and verify fptosi for i8.
|
| + %v18 = fptosi float %p0 to i8
|
| + %v19 = fptosi double %p1 to i8
|
| + %v20 = add i8 %v18, %v19
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 20, 4, 4> | %v18 = fptosi float %p0 to i8;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 20, 4, 4> | %v19 = fptosi double %p1 to i8;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v20 = add i8 %v18, %v19;
|
| +
|
| + ; Test and verify fptosi for i16.
|
| + %v21 = fptosi float %p0 to i16
|
| + %v22 = fptosi double %p1 to i16
|
| + %v23 = add i16 %v21, %v22
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 23, 5, 4> | %v21 = fptosi float %p0 to i16;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 23, 5, 4> | %v22 = fptosi double %p1 to i16;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v23 = add i16 %v21, %v22;
|
| +
|
| + ; Test and verify fptosi for i32.
|
| + %v24 = fptosi float %p0 to i32
|
| + %v25 = fptosi double %p1 to i32
|
| + %v26 = and i32 %v24, %v25
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 26, 2, 4> | %v24 = fptosi float %p0 to i32;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 26, 2, 4> | %v25 = fptosi double %p1 to i32;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 10> | %v26 = and i32 %v24, %v25;
|
| +
|
| + ; Test and verify fptosi for i64
|
| + %v27 = fptosi float %p0 to i64
|
| + %v28 = fptosi double %p1 to i64
|
| + %v29 = and i64 %v27, %v28
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 29, 3, 4> | %v27 = fptosi float %p0 to i64;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 29, 3, 4> | %v28 = fptosi double %p1 to i64;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 10> | %v29 = and i64 %v27, %v28;
|
| +
|
| + ; Test and verify bitcast to i32.
|
| + %v30 = bitcast float %p0 to i32
|
| + %v31 = add i32 %v30, %v30
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 32, 2, 11> | %v30 = bitcast float %p0 to i32;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v31 = add i32 %v30, %v30;
|
| +
|
| + ; Test and verify bitcast to i64.
|
| + %v32 = bitcast double %p1 to i64
|
| + %v33 = add i64 %v32, %v32
|
| + ret void
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 33, 3, 11> | %v32 = bitcast double %p1 to i64;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v33 = add i64 %v32, %v32;
|
| +; CHECK-NEXT: {{.*}}| 3: <10> | ret void;
|
| +
|
| +}
|
| +
|
| +
|
| +
|
| +; Test int to float casts.
|
| +define internal void @Int2FloatCasts() {
|
| +
|
| +; CHECK: | | %b0:
|
| +
|
| + ; Test uitofp conversions to float.
|
| + %v0 = uitofp i1 0 to float
|
| + %v1 = uitofp i8 1 to float
|
| + %v2 = uitofp i16 2 to float
|
| + %v3 = uitofp i32 3 to float
|
| + %v4 = uitofp i64 4 to float
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 1, 0, 5> | %v0 = uitofp i1 %c4 to float;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 4, 0, 5> | %v1 = uitofp i8 %c2 to float;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 4, 0, 5> | %v2 = uitofp i16 %c3 to float;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 8, 0, 5> | %v3 = uitofp i32 %c0 to float;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 8, 0, 5> | %v4 = uitofp i64 %c1 to float;
|
| +
|
| + ; Verify floats generated.
|
| + %v5 = fadd float %v0, %v1
|
| + %v6 = fadd float %v2, %v3
|
| + %v7 = fadd float %v4, %v5
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 5, 4, 0> | %v5 = fadd float %v0, %v1;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 0> | %v6 = fadd float %v2, %v3;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v7 = fadd float %v4, %v5;
|
| +
|
| + ; Test uitofp conversions to double
|
| + %v8 = uitofp i1 0 to double
|
| + %v9 = uitofp i8 1 to double
|
| + %v10 = uitofp i16 2 to double
|
| + %v11 = uitofp i32 3 to double
|
| + %v12 = uitofp i64 4 to double
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 9, 1, 5> | %v8 = uitofp i1 %c4 to double;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 12, 1, 5> | %v9 = uitofp i8 %c2 to double;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 12, 1, 5> | %v10 = uitofp i16 %c3 to double;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 16, 1, 5> | %v11 = uitofp i32 %c0 to double;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 16, 1, 5> | %v12 = uitofp i64 %c1 to double;
|
| +
|
| + ; Verify doubles generated.
|
| + %v13 = fadd double %v8, %v9
|
| + %v14 = fadd double %v10, %v11
|
| + %v15 = fadd double %v12, %v13
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 5, 4, 0> | %v13 = fadd double %v8, %v9;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 0> | %v14 = fadd double %v10, %v11;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v15 = fadd double %v12, %v13;
|
| +
|
| + ; Test sitofp conversions to float.
|
| + %v16 = sitofp i1 0 to float
|
| + %v17 = sitofp i8 1 to float
|
| + %v18 = sitofp i16 2 to float
|
| + %v19 = sitofp i32 3 to float
|
| + %v20 = sitofp i64 4 to float
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 17, 0, 6> | %v16 = sitofp i1 %c4 to float;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 20, 0, 6> | %v17 = sitofp i8 %c2 to float;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 20, 0, 6> | %v18 = sitofp i16 %c3 to float;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 24, 0, 6> | %v19 = sitofp i32 %c0 to float;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 24, 0, 6> | %v20 = sitofp i64 %c1 to float;
|
| +
|
| + ; Verify floats generated.
|
| + %v21 = fadd float %v16, %v17
|
| + %v22 = fadd float %v18, %v19
|
| + %v23 = fadd float %v20, %v21
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 5, 4, 0> | %v21 = fadd float %v16, %v17;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 0> | %v22 = fadd float %v18, %v19;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 3, 2, 0> | %v23 = fadd float %v20, %v21;
|
| +
|
| + ; Test sitofp conversions to double
|
| + %v24 = sitofp i1 0 to double
|
| + %v25 = sitofp i8 1 to double
|
| + %v26 = sitofp i16 2 to double
|
| + %v27 = sitofp i32 3 to double
|
| + %v28 = sitofp i64 4 to double
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 25, 1, 6> | %v24 = sitofp i1 %c4 to double;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 28, 1, 6> | %v25 = sitofp i8 %c2 to double;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 28, 1, 6> | %v26 = sitofp i16 %c3 to double;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 32, 1, 6> | %v27 = sitofp i32 %c0 to double;
|
| +; CHECK-NEXT: {{.*}}| 3: <3, 32, 1, 6> | %v28 = sitofp i64 %c1 to double;
|
| +
|
| + ; Verify doubles generated.
|
| + %v29 = fadd double %v24, %v25
|
| + %v30 = fadd double %v26, %v27
|
| + %v31 = fadd double %v29, %v30
|
| + ret void
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 5, 4, 0> | %v29 = fadd double %v24, %v25;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 4, 3, 0> | %v30 = fadd double %v26, %v27;
|
| +; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v31 = fadd double %v29, %v30;
|
| +; CHECK-NEXT: {{.*}}| 3: <10> | ret void;
|
| +
|
| +}
|
| +
|
|
|