OLD | NEW |
1 ; This test checks that undef values are represented as zero. | 1 ; This test checks that undef values are represented as zero. |
2 | 2 |
3 ; RUN: %llvm2ice --verbose none %s | FileCheck %s | 3 ; RUN: %llvm2ice --verbose none %s | FileCheck %s |
4 ; RUN: %llvm2ice -O2 --verbose none %s | FileCheck %s | 4 ; RUN: %llvm2ice -O2 --verbose none %s | FileCheck %s |
5 ; RUN: %llvm2ice --verbose none %s | FileCheck --check-prefix=ERRORS %s | 5 ; RUN: %llvm2ice --verbose none %s | FileCheck --check-prefix=ERRORS %s |
6 ; RUN: %llvm2iceinsts %s | %szdiff %s | FileCheck --check-prefix=DUMP %s | 6 ; RUN: %llvm2iceinsts %s | %szdiff %s | FileCheck --check-prefix=DUMP %s |
7 ; RUN: %llvm2iceinsts --pnacl %s | %szdiff %s \ | 7 ; RUN: %llvm2iceinsts --pnacl %s | %szdiff %s \ |
8 ; RUN: | FileCheck --check-prefix=DUMP %s | 8 ; RUN: | FileCheck --check-prefix=DUMP %s |
9 | 9 |
10 define i32 @undefi32() { | 10 define i32 @undef_i32() { |
11 entry: | 11 entry: |
12 ; CHECK-LABEL: undefi32: | |
13 ret i32 undef | 12 ret i32 undef |
| 13 ; CHECK-LABEL: undef_i32: |
14 ; CHECK: mov eax, 0 | 14 ; CHECK: mov eax, 0 |
15 ; CHECK: ret | 15 ; CHECK: ret |
16 } | 16 } |
17 | 17 |
18 define i64 @undefi64() { | 18 define i64 @undef_i64() { |
19 entry: | 19 entry: |
20 ; CHECK-LABEL: undefi64: | |
21 ret i64 undef | 20 ret i64 undef |
| 21 ; CHECK-LABEL: undef_i64: |
22 ; CHECK-DAG: mov eax, 0 | 22 ; CHECK-DAG: mov eax, 0 |
23 ; CHECK-DAG: mov edx, 0 | 23 ; CHECK-DAG: mov edx, 0 |
24 ; CHECK: ret | 24 ; CHECK: ret |
25 } | 25 } |
26 | 26 |
27 define float @undeffloat() { | 27 define float @undef_float() { |
28 entry: | 28 entry: |
29 ; CHECK-LABEL: undeffloat: | |
30 ret float undef | 29 ret float undef |
| 30 ; CHECK-LABEL: undef_float: |
31 ; CHECK-NOT: sub esp | 31 ; CHECK-NOT: sub esp |
32 ; CHECK: fld | 32 ; CHECK: fld |
33 ; CHECK: ret | 33 ; CHECK: ret |
34 } | 34 } |
35 | 35 |
| 36 define <4 x i1> @undef_v4i1() { |
| 37 entry: |
| 38 ret <4 x i1> undef |
| 39 ; CHECK-LABEL: undef_v4i1: |
| 40 ; CHECK: pxor |
| 41 ; CHECK: ret |
| 42 } |
| 43 |
| 44 define <8 x i1> @undef_v8i1() { |
| 45 entry: |
| 46 ret <8 x i1> undef |
| 47 ; CHECK-LABEL: undef_v8i1: |
| 48 ; CHECK: pxor |
| 49 ; CHECK: ret |
| 50 } |
| 51 |
| 52 define <16 x i1> @undef_v16i1() { |
| 53 entry: |
| 54 ret <16 x i1> undef |
| 55 ; CHECK-LABEL: undef_v16i1: |
| 56 ; CHECK: pxor |
| 57 ; CHECK: ret |
| 58 } |
| 59 |
| 60 define <16 x i8> @undef_v16i8() { |
| 61 entry: |
| 62 ret <16 x i8> undef |
| 63 ; CHECK-LABEL: undef_v16i8: |
| 64 ; CHECK: pxor |
| 65 ; CHECK: ret |
| 66 } |
| 67 |
| 68 define <8 x i16> @undef_v8i16() { |
| 69 entry: |
| 70 ret <8 x i16> undef |
| 71 ; CHECK-LABEL: undef_v8i16: |
| 72 ; CHECK: pxor |
| 73 ; CHECK: ret |
| 74 } |
| 75 |
| 76 define <4 x i32> @undef_v4i32() { |
| 77 entry: |
| 78 ret <4 x i32> undef |
| 79 ; CHECK-LABEL: undef_v4i32: |
| 80 ; CHECK: pxor |
| 81 ; CHECK: ret |
| 82 } |
| 83 |
| 84 define <4 x float> @undef_v4f32() { |
| 85 entry: |
| 86 ret <4 x float> undef |
| 87 ; CHECK-LABEL: undef_v4f32: |
| 88 ; CHECK: pxor |
| 89 ; CHECK: ret |
| 90 } |
| 91 |
36 ; ERRORS-NOT: ICE translation error | 92 ; ERRORS-NOT: ICE translation error |
37 ; DUMP-NOT: SZ | 93 ; DUMP-NOT: SZ |
OLD | NEW |