Jim Stichnoth | 5bc2b1d | 2014-05-22 13:38:48 -0700 | [diff] [blame] | 1 | ; Simple test of signed and unsigned integer conversions. |
| 2 | |
Jan Voung | 66c3d5e | 2015-06-04 17:02:31 -0700 | [diff] [blame] | 3 | ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
| 4 | ; RUN: --target x8632 -i %s --args -O2 \ |
| 5 | ; RUN: | %if --need=target_X8632 --command FileCheck %s |
| 6 | |
| 7 | ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
| 8 | ; RUN: --target x8632 -i %s --args -Om1 \ |
| 9 | ; RUN: | %if --need=target_X8632 --command FileCheck %s |
| 10 | |
| 11 | ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) |
| 12 | ; once enough infrastructure is in. Also, switch to --filetype=obj |
| 13 | ; when possible. |
Jim Stichnoth | c879968 | 2015-06-22 13:04:10 -0700 | [diff] [blame] | 14 | ; RUN: %if --need=target_ARM32 --need=allow_dump \ |
| 15 | ; RUN: --command %p2i --filetype=asm --assemble \ |
Jan Voung | 66c3d5e | 2015-06-04 17:02:31 -0700 | [diff] [blame] | 16 | ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ |
Jim Stichnoth | c879968 | 2015-06-22 13:04:10 -0700 | [diff] [blame] | 17 | ; RUN: | %if --need=target_ARM32 --need=allow_dump \ |
| 18 | ; RUN: --command FileCheck --check-prefix ARM32 %s |
Jan Voung | 66c3d5e | 2015-06-04 17:02:31 -0700 | [diff] [blame] | 19 | |
Jim Stichnoth | c879968 | 2015-06-22 13:04:10 -0700 | [diff] [blame] | 20 | ; RUN: %if --need=target_ARM32 --need=allow_dump \ |
| 21 | ; RUN: --command %p2i --filetype=asm --assemble \ |
Jan Voung | 66c3d5e | 2015-06-04 17:02:31 -0700 | [diff] [blame] | 22 | ; RUN: --disassemble --target arm32 -i %s --args -Om1 --skip-unimplemented \ |
Jim Stichnoth | c879968 | 2015-06-22 13:04:10 -0700 | [diff] [blame] | 23 | ; RUN: | %if --need=target_ARM32 --need=allow_dump \ |
| 24 | ; RUN: --command FileCheck --check-prefix ARM32 %s |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 25 | |
Jim Stichnoth | de4ca71 | 2014-06-29 08:13:48 -0700 | [diff] [blame] | 26 | @i8v = internal global [1 x i8] zeroinitializer, align 1 |
| 27 | @i16v = internal global [2 x i8] zeroinitializer, align 2 |
| 28 | @i32v = internal global [4 x i8] zeroinitializer, align 4 |
| 29 | @i64v = internal global [8 x i8] zeroinitializer, align 8 |
| 30 | @u8v = internal global [1 x i8] zeroinitializer, align 1 |
| 31 | @u16v = internal global [2 x i8] zeroinitializer, align 2 |
| 32 | @u32v = internal global [4 x i8] zeroinitializer, align 4 |
| 33 | @u64v = internal global [8 x i8] zeroinitializer, align 8 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 34 | |
| 35 | define void @from_int8() { |
| 36 | entry: |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 37 | %__0 = bitcast [1 x i8]* @i8v to i8* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 38 | %v0 = load i8, i8* %__0, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 39 | %v1 = sext i8 %v0 to i16 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 40 | %__3 = bitcast [2 x i8]* @i16v to i16* |
| 41 | store i16 %v1, i16* %__3, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 42 | %v2 = sext i8 %v0 to i32 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 43 | %__5 = bitcast [4 x i8]* @i32v to i32* |
| 44 | store i32 %v2, i32* %__5, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 45 | %v3 = sext i8 %v0 to i64 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 46 | %__7 = bitcast [8 x i8]* @i64v to i64* |
| 47 | store i64 %v3, i64* %__7, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 48 | ret void |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 49 | } |
Jan Voung | dddc306 | 2014-08-29 12:59:02 -0700 | [diff] [blame] | 50 | ; CHECK-LABEL: from_int8 |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 51 | ; CHECK: mov {{.*}},BYTE PTR |
| 52 | ; CHECK: movsx e{{.*}},{{[a-d]l|BYTE PTR}} |
| 53 | ; CHECK: mov WORD PTR |
Jim Stichnoth | d97c7df | 2014-06-04 11:57:08 -0700 | [diff] [blame] | 54 | ; CHECK: movsx |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 55 | ; CHECK: mov DWORD PTR |
Jim Stichnoth | d97c7df | 2014-06-04 11:57:08 -0700 | [diff] [blame] | 56 | ; CHECK: movsx |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 57 | ; CHECK: sar {{.*}},0x1f |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 58 | ; CHECK-DAG: ds:0x0,{{.*}}i64v |
| 59 | ; CHECK-DAG: ds:0x4,{{.*}}i64v |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 60 | |
Jan Voung | 66c3d5e | 2015-06-04 17:02:31 -0700 | [diff] [blame] | 61 | ; ARM32-LABEL: from_int8 |
| 62 | ; ARM32: movw {{.*}}i8v |
| 63 | ; ARM32: ldrb |
| 64 | ; ARM32: sxtb |
| 65 | ; ARM32: movw {{.*}}i16v |
| 66 | ; ARM32: strh |
| 67 | ; ARM32: sxtb |
| 68 | ; ARM32: movw {{.*}}i32v |
| 69 | ; ARM32: str r |
| 70 | ; ARM32: sxtb |
| 71 | ; ARM32: asr |
| 72 | ; ARM32: movw {{.*}}i64v |
| 73 | ; ARM32-DAG: str r{{.*}}, [r{{[0-9]+}}] |
| 74 | ; ARM32-DAG: str r{{.*}}, [{{.*}}, #4] |
| 75 | |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 76 | define void @from_int16() { |
| 77 | entry: |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 78 | %__0 = bitcast [2 x i8]* @i16v to i16* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 79 | %v0 = load i16, i16* %__0, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 80 | %v1 = trunc i16 %v0 to i8 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 81 | %__3 = bitcast [1 x i8]* @i8v to i8* |
| 82 | store i8 %v1, i8* %__3, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 83 | %v2 = sext i16 %v0 to i32 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 84 | %__5 = bitcast [4 x i8]* @i32v to i32* |
| 85 | store i32 %v2, i32* %__5, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 86 | %v3 = sext i16 %v0 to i64 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 87 | %__7 = bitcast [8 x i8]* @i64v to i64* |
| 88 | store i64 %v3, i64* %__7, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 89 | ret void |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 90 | } |
Jan Voung | dddc306 | 2014-08-29 12:59:02 -0700 | [diff] [blame] | 91 | ; CHECK-LABEL: from_int16 |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 92 | ; CHECK: mov {{.*}},WORD PTR |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 93 | ; CHECK: 0x0 {{.*}}i16v |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 94 | ; CHECK: movsx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}} |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 95 | ; CHECK: 0x0,{{.*}}i32v |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 96 | ; CHECK: movsx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}} |
| 97 | ; CHECK: sar {{.*}},0x1f |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 98 | ; CHECK: 0x0,{{.*}}i64v |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 99 | |
Jan Voung | 66c3d5e | 2015-06-04 17:02:31 -0700 | [diff] [blame] | 100 | ; ARM32-LABEL: from_int16 |
| 101 | ; ARM32: movw {{.*}}i16v |
| 102 | ; ARM32: ldrh |
| 103 | ; ARM32: movw {{.*}}i8v |
| 104 | ; ARM32: strb |
| 105 | ; ARM32: sxth |
| 106 | ; ARM32: movw {{.*}}i32v |
| 107 | ; ARM32: str r |
| 108 | ; ARM32: sxth |
| 109 | ; ARM32: asr |
| 110 | ; ARM32: movw {{.*}}i64v |
| 111 | ; ARM32: str r |
| 112 | |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 113 | define void @from_int32() { |
| 114 | entry: |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 115 | %__0 = bitcast [4 x i8]* @i32v to i32* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 116 | %v0 = load i32, i32* %__0, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 117 | %v1 = trunc i32 %v0 to i8 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 118 | %__3 = bitcast [1 x i8]* @i8v to i8* |
| 119 | store i8 %v1, i8* %__3, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 120 | %v2 = trunc i32 %v0 to i16 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 121 | %__5 = bitcast [2 x i8]* @i16v to i16* |
| 122 | store i16 %v2, i16* %__5, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 123 | %v3 = sext i32 %v0 to i64 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 124 | %__7 = bitcast [8 x i8]* @i64v to i64* |
| 125 | store i64 %v3, i64* %__7, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 126 | ret void |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 127 | } |
Jan Voung | dddc306 | 2014-08-29 12:59:02 -0700 | [diff] [blame] | 128 | ; CHECK-LABEL: from_int32 |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 129 | ; CHECK: 0x0 {{.*}} i32v |
| 130 | ; CHECK: 0x0,{{.*}} i8v |
| 131 | ; CHECK: 0x0,{{.*}} i16v |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 132 | ; CHECK: sar {{.*}},0x1f |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 133 | ; CHECK: 0x0,{{.*}} i64v |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 134 | |
Jan Voung | 66c3d5e | 2015-06-04 17:02:31 -0700 | [diff] [blame] | 135 | ; ARM32-LABEL: from_int32 |
| 136 | ; ARM32: movw {{.*}}i32v |
| 137 | ; ARM32: ldr r |
| 138 | ; ARM32: movw {{.*}}i8v |
| 139 | ; ARM32: strb |
| 140 | ; ARM32: movw {{.*}}i16v |
| 141 | ; ARM32: strh |
| 142 | ; ARM32: asr |
| 143 | ; ARM32: movw {{.*}}i64v |
| 144 | ; ARM32: str r |
| 145 | |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 146 | define void @from_int64() { |
| 147 | entry: |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 148 | %__0 = bitcast [8 x i8]* @i64v to i64* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 149 | %v0 = load i64, i64* %__0, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 150 | %v1 = trunc i64 %v0 to i8 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 151 | %__3 = bitcast [1 x i8]* @i8v to i8* |
| 152 | store i8 %v1, i8* %__3, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 153 | %v2 = trunc i64 %v0 to i16 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 154 | %__5 = bitcast [2 x i8]* @i16v to i16* |
| 155 | store i16 %v2, i16* %__5, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 156 | %v3 = trunc i64 %v0 to i32 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 157 | %__7 = bitcast [4 x i8]* @i32v to i32* |
| 158 | store i32 %v3, i32* %__7, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 159 | ret void |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 160 | } |
Jan Voung | dddc306 | 2014-08-29 12:59:02 -0700 | [diff] [blame] | 161 | ; CHECK-LABEL: from_int64 |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 162 | ; CHECK: 0x0 {{.*}} i64v |
| 163 | ; CHECK: 0x0,{{.*}} i8v |
| 164 | ; CHECK: 0x0,{{.*}} i16v |
| 165 | ; CHECK: 0x0,{{.*}} i32v |
Jan Voung | dddc306 | 2014-08-29 12:59:02 -0700 | [diff] [blame] | 166 | |
Jan Voung | 66c3d5e | 2015-06-04 17:02:31 -0700 | [diff] [blame] | 167 | ; ARM32-LABEL: from_int64 |
| 168 | ; ARM32: movw {{.*}}i64v |
| 169 | ; ARM32: ldr r |
| 170 | ; ARM32: movw {{.*}}i8v |
| 171 | ; ARM32: strb |
| 172 | ; ARM32: movw {{.*}}i16v |
| 173 | ; ARM32: strh |
| 174 | ; ARM32: movw {{.*}}i32v |
| 175 | ; ARM32: str r |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 176 | |
| 177 | define void @from_uint8() { |
| 178 | entry: |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 179 | %__0 = bitcast [1 x i8]* @u8v to i8* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 180 | %v0 = load i8, i8* %__0, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 181 | %v1 = zext i8 %v0 to i16 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 182 | %__3 = bitcast [2 x i8]* @i16v to i16* |
| 183 | store i16 %v1, i16* %__3, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 184 | %v2 = zext i8 %v0 to i32 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 185 | %__5 = bitcast [4 x i8]* @i32v to i32* |
| 186 | store i32 %v2, i32* %__5, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 187 | %v3 = zext i8 %v0 to i64 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 188 | %__7 = bitcast [8 x i8]* @i64v to i64* |
| 189 | store i64 %v3, i64* %__7, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 190 | ret void |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 191 | } |
Jan Voung | dddc306 | 2014-08-29 12:59:02 -0700 | [diff] [blame] | 192 | ; CHECK-LABEL: from_uint8 |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 193 | ; CHECK: 0x0 {{.*}} u8v |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 194 | ; CHECK: movzx e{{.*}},{{[a-d]l|BYTE PTR}} |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 195 | ; CHECK: 0x0,{{.*}} i16v |
Jim Stichnoth | d97c7df | 2014-06-04 11:57:08 -0700 | [diff] [blame] | 196 | ; CHECK: movzx |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 197 | ; CHECK: 0x0,{{.*}} i32v |
Jim Stichnoth | d97c7df | 2014-06-04 11:57:08 -0700 | [diff] [blame] | 198 | ; CHECK: movzx |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 199 | ; CHECK: mov {{.*}},0x0 |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 200 | ; CHECK: 0x0,{{.*}} i64v |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 201 | |
Jan Voung | 66c3d5e | 2015-06-04 17:02:31 -0700 | [diff] [blame] | 202 | ; ARM32-LABEL: from_uint8 |
| 203 | ; ARM32: movw {{.*}}u8v |
| 204 | ; ARM32: ldrb |
| 205 | ; ARM32: uxtb |
| 206 | ; ARM32: movw {{.*}}i16v |
| 207 | ; ARM32: strh |
| 208 | ; ARM32: uxtb |
| 209 | ; ARM32: movw {{.*}}i32v |
| 210 | ; ARM32: str r |
| 211 | ; ARM32: uxtb |
| 212 | ; ARM32: mov {{.*}}, #0 |
| 213 | ; ARM32: movw {{.*}}i64v |
| 214 | ; ARM32: str r |
| 215 | |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 216 | define void @from_uint16() { |
| 217 | entry: |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 218 | %__0 = bitcast [2 x i8]* @u16v to i16* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 219 | %v0 = load i16, i16* %__0, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 220 | %v1 = trunc i16 %v0 to i8 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 221 | %__3 = bitcast [1 x i8]* @i8v to i8* |
| 222 | store i8 %v1, i8* %__3, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 223 | %v2 = zext i16 %v0 to i32 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 224 | %__5 = bitcast [4 x i8]* @i32v to i32* |
| 225 | store i32 %v2, i32* %__5, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 226 | %v3 = zext i16 %v0 to i64 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 227 | %__7 = bitcast [8 x i8]* @i64v to i64* |
| 228 | store i64 %v3, i64* %__7, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 229 | ret void |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 230 | } |
Jan Voung | dddc306 | 2014-08-29 12:59:02 -0700 | [diff] [blame] | 231 | ; CHECK-LABEL: from_uint16 |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 232 | ; CHECK: 0x0 {{.*}} u16v |
| 233 | ; CHECK: 0x0,{{.*}} i8v |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 234 | ; CHECK: movzx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}} |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 235 | ; CHECK: 0x0,{{.*}} i32v |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 236 | ; CHECK: movzx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}} |
| 237 | ; CHECK: mov {{.*}},0x0 |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 238 | ; CHECK: 0x0,{{.*}} i64v |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 239 | |
Jan Voung | 66c3d5e | 2015-06-04 17:02:31 -0700 | [diff] [blame] | 240 | ; ARM32-LABEL: from_uint16 |
| 241 | ; ARM32: movw {{.*}}u16v |
| 242 | ; ARM32: ldrh |
| 243 | ; ARM32: movw {{.*}}i8v |
| 244 | ; ARM32: strb |
| 245 | ; ARM32: uxth |
| 246 | ; ARM32: movw {{.*}}i32v |
| 247 | ; ARM32: str r |
| 248 | ; ARM32: uxth |
| 249 | ; ARM32: mov {{.*}}, #0 |
| 250 | ; ARM32: movw {{.*}}i64v |
| 251 | ; ARM32: str r |
| 252 | |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 253 | define void @from_uint32() { |
| 254 | entry: |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 255 | %__0 = bitcast [4 x i8]* @u32v to i32* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 256 | %v0 = load i32, i32* %__0, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 257 | %v1 = trunc i32 %v0 to i8 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 258 | %__3 = bitcast [1 x i8]* @i8v to i8* |
| 259 | store i8 %v1, i8* %__3, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 260 | %v2 = trunc i32 %v0 to i16 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 261 | %__5 = bitcast [2 x i8]* @i16v to i16* |
| 262 | store i16 %v2, i16* %__5, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 263 | %v3 = zext i32 %v0 to i64 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 264 | %__7 = bitcast [8 x i8]* @i64v to i64* |
| 265 | store i64 %v3, i64* %__7, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 266 | ret void |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 267 | } |
Jan Voung | dddc306 | 2014-08-29 12:59:02 -0700 | [diff] [blame] | 268 | ; CHECK-LABEL: from_uint32 |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 269 | ; CHECK: 0x0 {{.*}} u32v |
| 270 | ; CHECK: 0x0,{{.*}} i8v |
| 271 | ; CHECK: 0x0,{{.*}} i16v |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 272 | ; CHECK: mov {{.*}},0x0 |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 273 | ; CHECK: 0x0,{{.*}} i64v |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 274 | |
Jan Voung | 66c3d5e | 2015-06-04 17:02:31 -0700 | [diff] [blame] | 275 | ; ARM32-LABEL: from_uint32 |
| 276 | ; ARM32: movw {{.*}}u32v |
| 277 | ; ARM32: ldr r |
| 278 | ; ARM32: movw {{.*}}i8v |
| 279 | ; ARM32: strb |
| 280 | ; ARM32: movw {{.*}}i16v |
| 281 | ; ARM32: strh |
| 282 | ; ARM32: mov {{.*}}, #0 |
| 283 | ; ARM32: movw {{.*}}i64v |
| 284 | ; ARM32: str r |
| 285 | |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 286 | define void @from_uint64() { |
| 287 | entry: |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 288 | %__0 = bitcast [8 x i8]* @u64v to i64* |
Jim Stichnoth | e5b58fb | 2015-06-01 15:17:20 -0700 | [diff] [blame] | 289 | %v0 = load i64, i64* %__0, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 290 | %v1 = trunc i64 %v0 to i8 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 291 | %__3 = bitcast [1 x i8]* @i8v to i8* |
| 292 | store i8 %v1, i8* %__3, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 293 | %v2 = trunc i64 %v0 to i16 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 294 | %__5 = bitcast [2 x i8]* @i16v to i16* |
| 295 | store i16 %v2, i16* %__5, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 296 | %v3 = trunc i64 %v0 to i32 |
Karl Schimpf | a667fb8 | 2014-05-19 14:56:51 -0700 | [diff] [blame] | 297 | %__7 = bitcast [4 x i8]* @i32v to i32* |
| 298 | store i32 %v3, i32* %__7, align 1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 299 | ret void |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 300 | } |
Jan Voung | dddc306 | 2014-08-29 12:59:02 -0700 | [diff] [blame] | 301 | ; CHECK-LABEL: from_uint64 |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 302 | ; CHECK: 0x0 {{.*}} u64v |
| 303 | ; CHECK: 0x0,{{.*}} i8v |
| 304 | ; CHECK: 0x0,{{.*}} i16v |
| 305 | ; CHECK: 0x0,{{.*}} i32v |
Jan Voung | 66c3d5e | 2015-06-04 17:02:31 -0700 | [diff] [blame] | 306 | |
| 307 | ; ARM32-LABEL: from_uint64 |
| 308 | ; ARM32: movw {{.*}}u64v |
| 309 | ; ARM32: ldr r |
| 310 | ; ARM32: movw {{.*}}i8v |
| 311 | ; ARM32: strb |
| 312 | ; ARM32: movw {{.*}}i16v |
| 313 | ; ARM32: strh |
| 314 | ; ARM32: movw {{.*}}i32v |
| 315 | ; ARM32: str r |