Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: tests_lit/llvm2ice_tests/convert.ll

Issue 647223004: emitIAS for movsx and movzx. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: rebase Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/assembler_ia32.cpp ('k') | tests_lit/llvm2ice_tests/test_i1.ll » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; Simple test of signed and unsigned integer conversions. 1 ; Simple test of signed and unsigned integer conversions.
2 2
3 ; TODO(jvoung): llvm-objdump doesn't symbolize global symbols well, so we 3 ; TODO(jvoung): llvm-objdump doesn't symbolize global symbols well, so we
4 ; have [0] == i8v, [2] == i16v, [4] == i32v, [8] == i64v, etc. 4 ; have [0] == i8v, [2] == i16v, [4] == i32v, [8] == i64v, etc.
5 5
6 ; RUN: %p2i -i %s --args -O2 --verbose none \ 6 ; RUN: %p2i -i %s --args -O2 --verbose none \
7 ; RUN: | llvm-mc -triple=i686-none-nacl -x86-asm-syntax=intel -filetype=obj \ 7 ; RUN: | llvm-mc -triple=i686-none-nacl -x86-asm-syntax=intel -filetype=obj \
8 ; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - | FileCheck %s 8 ; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - | FileCheck %s
9 ; RUN: %p2i -i %s --args -Om1 --verbose none \ 9 ; RUN: %p2i -i %s --args -Om1 --verbose none \
10 ; RUN: | llvm-mc -triple=i686-none-nacl -x86-asm-syntax=intel -filetype=obj \ 10 ; RUN: | llvm-mc -triple=i686-none-nacl -x86-asm-syntax=intel -filetype=obj \
(...skipping 19 matching lines...) Expand all
30 %v2 = sext i8 %v0 to i32 30 %v2 = sext i8 %v0 to i32
31 %__5 = bitcast [4 x i8]* @i32v to i32* 31 %__5 = bitcast [4 x i8]* @i32v to i32*
32 store i32 %v2, i32* %__5, align 1 32 store i32 %v2, i32* %__5, align 1
33 %v3 = sext i8 %v0 to i64 33 %v3 = sext i8 %v0 to i64
34 %__7 = bitcast [8 x i8]* @i64v to i64* 34 %__7 = bitcast [8 x i8]* @i64v to i64*
35 store i64 %v3, i64* %__7, align 1 35 store i64 %v3, i64* %__7, align 1
36 ret void 36 ret void
37 } 37 }
38 ; CHECK-LABEL: from_int8 38 ; CHECK-LABEL: from_int8
39 ; CHECK: mov {{.*}}, byte ptr [ 39 ; CHECK: mov {{.*}}, byte ptr [
40 ; CHECK: movsx 40 ; CHECK: movsx e{{.*}}, {{[a-d]l|byte ptr}}
41 ; CHECK: mov word ptr [ 41 ; CHECK: mov word ptr [
42 ; CHECK: movsx 42 ; CHECK: movsx
43 ; CHECK: mov dword ptr [ 43 ; CHECK: mov dword ptr [
44 ; CHECK: movsx 44 ; CHECK: movsx
45 ; CHECK: sar {{.*}}, 31 45 ; CHECK: sar {{.*}}, 31
46 ; This appears to be a bug in llvm-mc. It should be [8] and [12] to represent 46 ; This appears to be a bug in llvm-mc. It should be [8] and [12] to represent
47 ; i64v and i64+4. 47 ; i64v and i64+4.
48 ; CHECK-DAG: [8] 48 ; CHECK-DAG: [8]
49 ; CHECK-DAG: [8] 49 ; CHECK-DAG: [8]
50 50
51 define void @from_int16() { 51 define void @from_int16() {
52 entry: 52 entry:
53 %__0 = bitcast [2 x i8]* @i16v to i16* 53 %__0 = bitcast [2 x i8]* @i16v to i16*
54 %v0 = load i16* %__0, align 1 54 %v0 = load i16* %__0, align 1
55 %v1 = trunc i16 %v0 to i8 55 %v1 = trunc i16 %v0 to i8
56 %__3 = bitcast [1 x i8]* @i8v to i8* 56 %__3 = bitcast [1 x i8]* @i8v to i8*
57 store i8 %v1, i8* %__3, align 1 57 store i8 %v1, i8* %__3, align 1
58 %v2 = sext i16 %v0 to i32 58 %v2 = sext i16 %v0 to i32
59 %__5 = bitcast [4 x i8]* @i32v to i32* 59 %__5 = bitcast [4 x i8]* @i32v to i32*
60 store i32 %v2, i32* %__5, align 1 60 store i32 %v2, i32* %__5, align 1
61 %v3 = sext i16 %v0 to i64 61 %v3 = sext i16 %v0 to i64
62 %__7 = bitcast [8 x i8]* @i64v to i64* 62 %__7 = bitcast [8 x i8]* @i64v to i64*
63 store i64 %v3, i64* %__7, align 1 63 store i64 %v3, i64* %__7, align 1
64 ret void 64 ret void
65 } 65 }
66 ; CHECK-LABEL: from_int16 66 ; CHECK-LABEL: from_int16
67 ; CHECK: mov {{.*}}, word ptr [ 67 ; CHECK: mov {{.*}}, word ptr [
68 ; CHECK: [0] 68 ; CHECK: [0]
69 ; CHECK: movsx 69 ; CHECK: movsx e{{.*}}, {{.*x|[ds]i|bp|word ptr}}
70 ; CHECK: [4] 70 ; CHECK: [4]
71 ; CHECK: movsx 71 ; CHECK: movsx e{{.*}}, {{.*x|[ds]i|bp|word ptr}}
72 ; CHECK: sar {{.*}}, 31 72 ; CHECK: sar {{.*}}, 31
73 ; CHECK: [8] 73 ; CHECK: [8]
74 74
75 define void @from_int32() { 75 define void @from_int32() {
76 entry: 76 entry:
77 %__0 = bitcast [4 x i8]* @i32v to i32* 77 %__0 = bitcast [4 x i8]* @i32v to i32*
78 %v0 = load i32* %__0, align 1 78 %v0 = load i32* %__0, align 1
79 %v1 = trunc i32 %v0 to i8 79 %v1 = trunc i32 %v0 to i8
80 %__3 = bitcast [1 x i8]* @i8v to i8* 80 %__3 = bitcast [1 x i8]* @i8v to i8*
81 store i8 %v1, i8* %__3, align 1 81 store i8 %v1, i8* %__3, align 1
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 %v2 = zext i8 %v0 to i32 126 %v2 = zext i8 %v0 to i32
127 %__5 = bitcast [4 x i8]* @i32v to i32* 127 %__5 = bitcast [4 x i8]* @i32v to i32*
128 store i32 %v2, i32* %__5, align 1 128 store i32 %v2, i32* %__5, align 1
129 %v3 = zext i8 %v0 to i64 129 %v3 = zext i8 %v0 to i64
130 %__7 = bitcast [8 x i8]* @i64v to i64* 130 %__7 = bitcast [8 x i8]* @i64v to i64*
131 store i64 %v3, i64* %__7, align 1 131 store i64 %v3, i64* %__7, align 1
132 ret void 132 ret void
133 } 133 }
134 ; CHECK-LABEL: from_uint8 134 ; CHECK-LABEL: from_uint8
135 ; CHECK: [16] 135 ; CHECK: [16]
136 ; CHECK: movzx 136 ; CHECK: movzx e{{.*}}, {{[a-d]l|byte ptr}}
137 ; CHECK: [2] 137 ; CHECK: [2]
138 ; CHECK: movzx 138 ; CHECK: movzx
139 ; CHECK: [4] 139 ; CHECK: [4]
140 ; CHECK: movzx 140 ; CHECK: movzx
141 ; CHECK: mov {{.*}}, 0 141 ; CHECK: mov {{.*}}, 0
142 ; CHECK: [8] 142 ; CHECK: [8]
143 143
144 define void @from_uint16() { 144 define void @from_uint16() {
145 entry: 145 entry:
146 %__0 = bitcast [2 x i8]* @u16v to i16* 146 %__0 = bitcast [2 x i8]* @u16v to i16*
147 %v0 = load i16* %__0, align 1 147 %v0 = load i16* %__0, align 1
148 %v1 = trunc i16 %v0 to i8 148 %v1 = trunc i16 %v0 to i8
149 %__3 = bitcast [1 x i8]* @i8v to i8* 149 %__3 = bitcast [1 x i8]* @i8v to i8*
150 store i8 %v1, i8* %__3, align 1 150 store i8 %v1, i8* %__3, align 1
151 %v2 = zext i16 %v0 to i32 151 %v2 = zext i16 %v0 to i32
152 %__5 = bitcast [4 x i8]* @i32v to i32* 152 %__5 = bitcast [4 x i8]* @i32v to i32*
153 store i32 %v2, i32* %__5, align 1 153 store i32 %v2, i32* %__5, align 1
154 %v3 = zext i16 %v0 to i64 154 %v3 = zext i16 %v0 to i64
155 %__7 = bitcast [8 x i8]* @i64v to i64* 155 %__7 = bitcast [8 x i8]* @i64v to i64*
156 store i64 %v3, i64* %__7, align 1 156 store i64 %v3, i64* %__7, align 1
157 ret void 157 ret void
158 } 158 }
159 ; CHECK-LABEL: from_uint16 159 ; CHECK-LABEL: from_uint16
160 ; CHECK: [18] 160 ; CHECK: [18]
161 ; CHECK: [0] 161 ; CHECK: [0]
162 ; CHECK: movzx 162 ; CHECK: movzx e{{.*}}, {{.*x|[ds]i|bp|word ptr}}
163 ; CHECK: [4] 163 ; CHECK: [4]
164 ; CHECK: movzx 164 ; CHECK: movzx e{{.*}}, {{.*x|[ds]i|bp|word ptr}}
165 ; CHECK: mov {{.*}}, 0 165 ; CHECK: mov {{.*}}, 0
166 ; CHECK: [8] 166 ; CHECK: [8]
167 167
168 define void @from_uint32() { 168 define void @from_uint32() {
169 entry: 169 entry:
170 %__0 = bitcast [4 x i8]* @u32v to i32* 170 %__0 = bitcast [4 x i8]* @u32v to i32*
171 %v0 = load i32* %__0, align 1 171 %v0 = load i32* %__0, align 1
172 %v1 = trunc i32 %v0 to i8 172 %v1 = trunc i32 %v0 to i8
173 %__3 = bitcast [1 x i8]* @i8v to i8* 173 %__3 = bitcast [1 x i8]* @i8v to i8*
174 store i8 %v1, i8* %__3, align 1 174 store i8 %v1, i8* %__3, align 1
(...skipping 27 matching lines...) Expand all
202 store i32 %v3, i32* %__7, align 1 202 store i32 %v3, i32* %__7, align 1
203 ret void 203 ret void
204 } 204 }
205 ; CHECK-LABEL: from_uint64 205 ; CHECK-LABEL: from_uint64
206 ; CHECK: [24] 206 ; CHECK: [24]
207 ; CHECK: [0] 207 ; CHECK: [0]
208 ; CHECK: [2] 208 ; CHECK: [2]
209 ; CHECK: [4] 209 ; CHECK: [4]
210 210
211 ; ERRORS-NOT: ICE translation error 211 ; ERRORS-NOT: ICE translation error
OLDNEW
« no previous file with comments | « src/assembler_ia32.cpp ('k') | tests_lit/llvm2ice_tests/test_i1.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698