Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 1 | ; Test if we can read load instructions. |
| 2 | |
Karl Schimpf | 2a5324a | 2014-09-25 09:37:49 -0700 | [diff] [blame] | 3 | ; RUN: %p2i --no-local-syms -i %s --insts | FileCheck %s |
Karl Schimpf | 6fcbddd | 2014-11-06 09:49:24 -0800 | [diff] [blame] | 4 | ; RUN: %if --need=allow_disable_ir_gen --command \ |
| 5 | ; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \ |
| 6 | ; RUN: | %if --need=allow_disable_ir_gen --command \ |
| 7 | ; RUN: FileCheck --check-prefix=NOIR %s |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 8 | |
| 9 | define i32 @load_i8(i32 %addr) { |
| 10 | entry: |
| 11 | %addr_i8 = inttoptr i32 %addr to i8* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 12 | %v = load i8, i8* %addr_i8, align 1 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 13 | %r = sext i8 %v to i32 |
| 14 | ret i32 %r |
| 15 | |
| 16 | ; CHECK: __0: |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 17 | ; CHECK-NEXT: %__1 = load i8, i8* %__0, align 1 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 18 | ; CHECK-NEXT: %__2 = sext i8 %__1 to i32 |
| 19 | ; CHECK-NEXT: ret i32 %__2 |
| 20 | } |
| 21 | |
| 22 | define i32 @load_i16(i32 %addr) { |
| 23 | entry: |
| 24 | %addr_i16 = inttoptr i32 %addr to i16* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 25 | %v = load i16, i16* %addr_i16, align 1 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 26 | %r = sext i16 %v to i32 |
| 27 | ret i32 %r |
| 28 | |
| 29 | ; CHECK: __0: |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 30 | ; CHECK-NEXT: %__1 = load i16, i16* %__0, align 1 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 31 | ; CHECK-NEXT: %__2 = sext i16 %__1 to i32 |
| 32 | ; CHECK-NEXT: ret i32 %__2 |
| 33 | } |
| 34 | |
| 35 | define i32 @load_i32(i32 %addr) { |
| 36 | entry: |
| 37 | %addr_i32 = inttoptr i32 %addr to i32* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 38 | %v = load i32, i32* %addr_i32, align 1 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 39 | ret i32 %v |
| 40 | |
| 41 | ; CHECK: __0: |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 42 | ; CHECK-NEXT: %__1 = load i32, i32* %__0, align 1 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 43 | ; CHECK-NEXT: ret i32 %__1 |
| 44 | } |
| 45 | |
| 46 | define i64 @load_i64(i32 %addr) { |
| 47 | entry: |
| 48 | %addr_i64 = inttoptr i32 %addr to i64* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 49 | %v = load i64, i64* %addr_i64, align 1 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 50 | ret i64 %v |
| 51 | |
| 52 | ; CHECK: __0: |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 53 | ; CHECK-NEXT: %__1 = load i64, i64* %__0, align 1 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 54 | ; CHECK-NEXT: ret i64 %__1 |
| 55 | } |
| 56 | |
| 57 | define float @load_float_a1(i32 %addr) { |
| 58 | entry: |
| 59 | %addr_float = inttoptr i32 %addr to float* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 60 | %v = load float, float* %addr_float, align 1 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 61 | ret float %v |
| 62 | |
| 63 | ; TODO(kschimpf) Fix load alignment in ICE to allow non-default. |
| 64 | |
| 65 | ; CHECK: __0: |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 66 | ; CHECK-NEXT: %__1 = load float, float* %__0, align 4 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 67 | ; CHECK-NEXT: ret float %__1 |
| 68 | } |
| 69 | |
| 70 | |
| 71 | define float @load_float_a4(i32 %addr) { |
| 72 | entry: |
| 73 | %addr_float = inttoptr i32 %addr to float* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 74 | %v = load float, float* %addr_float, align 4 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 75 | ret float %v |
| 76 | |
| 77 | ; CHECK: __0: |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 78 | ; CHECK-NEXT: %__1 = load float, float* %__0, align 4 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 79 | ; CHECK-NEXT: ret float %__1 |
| 80 | } |
| 81 | |
| 82 | define double @load_double_a1(i32 %addr) { |
| 83 | entry: |
| 84 | %addr_double = inttoptr i32 %addr to double* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 85 | %v = load double, double* %addr_double, align 1 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 86 | ret double %v |
| 87 | |
| 88 | ; TODO(kschimpf) Fix load alignment in ICE to allow non-default. |
| 89 | |
| 90 | ; CHECK: __0: |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 91 | ; CHECK-NEXT: %__1 = load double, double* %__0, align 8 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 92 | ; CHECK-NEXT: ret double %__1 |
| 93 | } |
| 94 | |
| 95 | |
| 96 | define double @load_double_a8(i32 %addr) { |
| 97 | entry: |
| 98 | %addr_double = inttoptr i32 %addr to double* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 99 | %v = load double, double* %addr_double, align 8 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 100 | ret double %v |
| 101 | |
| 102 | ; CHECK: __0: |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 103 | ; CHECK-NEXT: %__1 = load double, double* %__0, align 8 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 104 | ; CHECK-NEXT: ret double %__1 |
| 105 | } |
| 106 | |
| 107 | define <16 x i8> @load_v16xI8(i32 %addr) { |
| 108 | entry: |
| 109 | %addr_v16xI8 = inttoptr i32 %addr to <16 x i8>* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 110 | %v = load <16 x i8>, <16 x i8>* %addr_v16xI8, align 1 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 111 | ret <16 x i8> %v |
| 112 | |
| 113 | ; CHECK: __0: |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 114 | ; CHECK-NEXT: %__1 = load <16 x i8>, <16 x i8>* %__0, align 1 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 115 | ; CHECK-NEXT: ret <16 x i8> %__1 |
| 116 | } |
| 117 | |
| 118 | define <8 x i16> @load_v8xI16(i32 %addr) { |
| 119 | entry: |
| 120 | %addr_v8xI16 = inttoptr i32 %addr to <8 x i16>* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 121 | %v = load <8 x i16>, <8 x i16>* %addr_v8xI16, align 2 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 122 | ret <8 x i16> %v |
| 123 | |
| 124 | ; CHECK: __0: |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 125 | ; CHECK-NEXT: %__1 = load <8 x i16>, <8 x i16>* %__0, align 2 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 126 | ; CHECK-NEXT: ret <8 x i16> %__1 |
| 127 | } |
| 128 | |
| 129 | define <4 x i32> @load_v4xI32(i32 %addr) { |
| 130 | entry: |
| 131 | %addr_v4xI32 = inttoptr i32 %addr to <4 x i32>* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 132 | %v = load <4 x i32>, <4 x i32>* %addr_v4xI32, align 4 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 133 | ret <4 x i32> %v |
| 134 | |
| 135 | ; CHECK: __0: |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 136 | ; CHECK-NEXT: %__1 = load <4 x i32>, <4 x i32>* %__0, align 4 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 137 | ; CHECK-NEXT: ret <4 x i32> %__1 |
| 138 | } |
| 139 | |
| 140 | define <4 x float> @load_v4xFloat(i32 %addr) { |
| 141 | entry: |
| 142 | %addr_v4xFloat = inttoptr i32 %addr to <4 x float>* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 143 | %v = load <4 x float>, <4 x float>* %addr_v4xFloat, align 4 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 144 | ret <4 x float> %v |
| 145 | |
| 146 | ; CHECK: __0: |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 147 | ; CHECK-NEXT: %__1 = load <4 x float>, <4 x float>* %__0, align 4 |
Karl Schimpf | 41689df | 2014-09-10 14:36:07 -0700 | [diff] [blame] | 148 | ; CHECK-NEXT: ret <4 x float> %__1 |
| 149 | } |
| 150 | |
Karl Schimpf | 6fcbddd | 2014-11-06 09:49:24 -0800 | [diff] [blame] | 151 | ; NOIR: Total across all functions |