OLD | NEW |
(Empty) | |
| 1 ; Test the select instruction. |
| 2 |
| 3 ; RUN: llvm-as < %s | pnacl-freeze | pnacl-bccompress --remove-abbreviations \ |
| 4 ; RUN: | pnacl-bcdis | FileCheck %s |
| 5 |
| 6 ; Test selecting integer types. |
| 7 define void @TestIntTypes() { |
| 8 |
| 9 ; CHECK: | | %b0: |
| 10 |
| 11 %v0 = select i1 0, i1 0, i1 0 |
| 12 %v1 = select i1 %v0, i8 1, i8 1 |
| 13 %v2 = select i1 %v0, i16 2, i16 2 |
| 14 %v3 = select i1 %v0, i32 3, i32 3 |
| 15 %v4 = select i1 %v0, i64 4, i64 4 |
| 16 |
| 17 ; CHECK-NEXT: {{.*}}| 3: <29, 5, 5, 5> | %v0 = select i1 %c0, i
1 %c0, |
| 18 ; CHECK-NEXT: | | i1 %c0; |
| 19 ; CHECK-NEXT: {{.*}}| 3: <29, 4, 4, 1> | %v1 = select i1 %v0, i
8 %c2, |
| 20 ; CHECK-NEXT: | | i8 %c2; |
| 21 ; CHECK-NEXT: {{.*}}| 3: <29, 4, 4, 2> | %v2 = select i1 %v0, i
16 %c3, |
| 22 ; CHECK-NEXT: | | i16 %c3; |
| 23 ; CHECK-NEXT: {{.*}}| 3: <29, 7, 7, 3> | %v3 = select i1 %v0, i
32 %c1, |
| 24 ; CHECK-NEXT: | | i32 %c1; |
| 25 ; CHECK-NEXT: {{.*}}| 3: <29, 5, 5, 4> | %v4 = select i1 %v0, i
64 %c4, |
| 26 ; CHECK-NEXT: | | i64 %c4; |
| 27 |
| 28 ; Verify computed results of right size. |
| 29 %v5 = and i1 %v0, %v0 |
| 30 %v6 = add i8 %v1, %v1 |
| 31 %v7 = add i16 %v2, %v2 |
| 32 %v8 = add i32 %v3, %v3 |
| 33 %v9 = add i64 %v4, %v4 |
| 34 ret void |
| 35 |
| 36 ; CHECK-NEXT: {{.*}}| 3: <2, 5, 5, 10> | %v5 = and i1 %v0, %v0; |
| 37 ; CHECK-NEXT: {{.*}}| 3: <2, 5, 5, 0> | %v6 = add i8 %v1, %v1; |
| 38 ; CHECK-NEXT: {{.*}}| 3: <2, 5, 5, 0> | %v7 = add i16 %v2, %v2
; |
| 39 ; CHECK-NEXT: {{.*}}| 3: <2, 5, 5, 0> | %v8 = add i32 %v3, %v3
; |
| 40 ; CHECK-NEXT: {{.*}}| 3: <2, 5, 5, 0> | %v9 = add i64 %v4, %v4
; |
| 41 ; CHECK-NEXT: {{.*}}| 3: <10> | ret void; |
| 42 |
| 43 } |
| 44 |
| 45 ; Test selecting floating types. |
| 46 define void @TestFloatTypes(float %p0, double %p1) { |
| 47 |
| 48 ; CHECK: | | %b0: |
| 49 |
| 50 %v0 = select i1 0, float %p0, float %p0 |
| 51 %v1 = select i1 0, double %p1, double %p1 |
| 52 |
| 53 ; CHECK-NEXT: {{.*}}| 3: <29, 3, 3, 1> | %v0 = select i1 %c0, f
loat %p0, |
| 54 ; CHECK-NEXT: | | float %p0; |
| 55 ; CHECK-NEXT: {{.*}}| 3: <29, 3, 3, 2> | %v1 = select i1 %c0, d
ouble %p1, |
| 56 ; CHECK-NEXT: | | double %p1; |
| 57 |
| 58 ; Verify computed results are of right size. |
| 59 %v2 = fadd float %v0, %v0 |
| 60 %v3 = fadd double %v1, %v1 |
| 61 ret void |
| 62 |
| 63 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 2, 0> | %v2 = fadd float %v0,
%v0; |
| 64 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 2, 0> | %v3 = fadd double %v1,
%v1; |
| 65 ; CHECK-NEXT: {{.*}}| 3: <10> | ret void; |
| 66 |
| 67 } |
| 68 |
| 69 ; Test select on integer vectors |
| 70 define void @TestVecIntTypes(i32 %p0, <16 x i8> %p1, <8 x i16> %p2, <4 x i32> %p
3) { |
| 71 |
| 72 %v0 = trunc i32 %p0 to i1; |
| 73 %v1 = select i1 %v0, <16 x i8> %p1, <16 x i8> %p1 |
| 74 %v2 = select i1 %v0, <8 x i16> %p2, <8 x i16> %p2 |
| 75 %v3 = select i1 %v0, <4 x i32> %p3, <4 x i32> %p3 |
| 76 |
| 77 ; CHECK: {{.*}}| {{.*}} | {{.*}} trunc |
| 78 |
| 79 ; CHECK-NEXT: {{.*}}| 3: <29, 4, 4, 1> | %v1 = select i1 %v0, <
16 x i8> %p1, |
| 80 ; CHECK-NEXT: | | <16 x i8> %p1; |
| 81 ; CHECK-NEXT: {{.*}}| 3: <29, 4, 4, 2> | %v2 = select i1 %v0, <
8 x i16> %p2, |
| 82 ; CHECK-NEXT: | | <8 x i16> %p2; |
| 83 ; CHECK-NEXT: {{.*}}| 3: <29, 4, 4, 3> | %v3 = select i1 %v0, <
4 x i32> %p3, |
| 84 ; CHECK-NEXT: | | <4 x i32> %p3; |
| 85 |
| 86 ; Verify computed results are of right type. |
| 87 %v4 = and <16 x i8> %v1, %v1 |
| 88 %v5 = add <8 x i16> %v2, %v2 |
| 89 %v6 = add <4 x i32> %v3, %v3 |
| 90 ret void |
| 91 |
| 92 ; CHECK-NEXT: {{.*}}| 3: <2, 3, 3, 10> | %v4 = and <16 x i8> %v
1, %v1; |
| 93 ; CHECK-NEXT: {{.*}}| 3: <2, 3, 3, 0> | %v5 = add <8 x i16> %v
2, %v2; |
| 94 ; CHECK-NEXT: {{.*}}| 3: <2, 3, 3, 0> | %v6 = add <4 x i32> %v
3, %v3; |
| 95 ; CHECK-NEXT: {{.*}}| 3: <10> | ret void; |
| 96 |
| 97 } |
| 98 |
| 99 |
| 100 ; Test select on floating vectors |
| 101 define void @TestVecFloatTypes(i32 %p0, <4 x float> %p1) { |
| 102 |
| 103 %v0 = trunc i32 %p0 to i1; |
| 104 %v1 = select i1 %v0, <4 x float> %p1, <4 x float> %p1 |
| 105 |
| 106 ; CHECK: {{.*}}| {{.*}} | {{.*}} trunc |
| 107 ; CHECK-NEXT: {{.*}}| 3: <29, 2, 2, 1> | %v1 = select i1 %v0, |
| 108 ; CHECK-NEXT: | | <4 x float> %p1, |
| 109 ; CHECK-NEXT: | | <4 x float> %p1; |
| 110 |
| 111 ; Verify computed results are of right type. |
| 112 %v2 = fadd <4 x float> %v1, %v1 |
| 113 ret void |
| 114 |
| 115 ; CHECK-NEXT: {{.*}}| 3: <2, 1, 1, 0> | %v2 = fadd <4 x float>
%v1, %v1; |
| 116 ; CHECK-NEXT: {{.*}}| 3: <10> | ret void; |
| 117 |
| 118 } |
OLD | NEW |