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

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

Issue 1161543005: Subzero: Changes needed for LLVM 3.7 integration. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 5 years, 6 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 | « tests_lit/llvm2ice_tests/callindirect.pnacl.ll ('k') | tests_lit/llvm2ice_tests/fp.pnacl.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 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s 3 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s
4 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 | FileCheck %s 4 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 | FileCheck %s
5 5
6 @i8v = internal global [1 x i8] zeroinitializer, align 1 6 @i8v = internal global [1 x i8] zeroinitializer, align 1
7 @i16v = internal global [2 x i8] zeroinitializer, align 2 7 @i16v = internal global [2 x i8] zeroinitializer, align 2
8 @i32v = internal global [4 x i8] zeroinitializer, align 4 8 @i32v = internal global [4 x i8] zeroinitializer, align 4
9 @i64v = internal global [8 x i8] zeroinitializer, align 8 9 @i64v = internal global [8 x i8] zeroinitializer, align 8
10 @u8v = internal global [1 x i8] zeroinitializer, align 1 10 @u8v = internal global [1 x i8] zeroinitializer, align 1
11 @u16v = internal global [2 x i8] zeroinitializer, align 2 11 @u16v = internal global [2 x i8] zeroinitializer, align 2
12 @u32v = internal global [4 x i8] zeroinitializer, align 4 12 @u32v = internal global [4 x i8] zeroinitializer, align 4
13 @u64v = internal global [8 x i8] zeroinitializer, align 8 13 @u64v = internal global [8 x i8] zeroinitializer, align 8
14 14
15 define void @from_int8() { 15 define void @from_int8() {
16 entry: 16 entry:
17 %__0 = bitcast [1 x i8]* @i8v to i8* 17 %__0 = bitcast [1 x i8]* @i8v to i8*
18 %v0 = load i8* %__0, align 1 18 %v0 = load i8, i8* %__0, align 1
19 %v1 = sext i8 %v0 to i16 19 %v1 = sext i8 %v0 to i16
20 %__3 = bitcast [2 x i8]* @i16v to i16* 20 %__3 = bitcast [2 x i8]* @i16v to i16*
21 store i16 %v1, i16* %__3, align 1 21 store i16 %v1, i16* %__3, align 1
22 %v2 = sext i8 %v0 to i32 22 %v2 = sext i8 %v0 to i32
23 %__5 = bitcast [4 x i8]* @i32v to i32* 23 %__5 = bitcast [4 x i8]* @i32v to i32*
24 store i32 %v2, i32* %__5, align 1 24 store i32 %v2, i32* %__5, align 1
25 %v3 = sext i8 %v0 to i64 25 %v3 = sext i8 %v0 to i64
26 %__7 = bitcast [8 x i8]* @i64v to i64* 26 %__7 = bitcast [8 x i8]* @i64v to i64*
27 store i64 %v3, i64* %__7, align 1 27 store i64 %v3, i64* %__7, align 1
28 ret void 28 ret void
29 } 29 }
30 ; CHECK-LABEL: from_int8 30 ; CHECK-LABEL: from_int8
31 ; CHECK: mov {{.*}},BYTE PTR 31 ; CHECK: mov {{.*}},BYTE PTR
32 ; CHECK: movsx e{{.*}},{{[a-d]l|BYTE PTR}} 32 ; CHECK: movsx e{{.*}},{{[a-d]l|BYTE PTR}}
33 ; CHECK: mov WORD PTR 33 ; CHECK: mov WORD PTR
34 ; CHECK: movsx 34 ; CHECK: movsx
35 ; CHECK: mov DWORD PTR 35 ; CHECK: mov DWORD PTR
36 ; CHECK: movsx 36 ; CHECK: movsx
37 ; CHECK: sar {{.*}},0x1f 37 ; CHECK: sar {{.*}},0x1f
38 ; CHECK-DAG: ds:0x0,{{.*}}i64v 38 ; CHECK-DAG: ds:0x0,{{.*}}i64v
39 ; CHECK-DAG: ds:0x4,{{.*}}i64v 39 ; CHECK-DAG: ds:0x4,{{.*}}i64v
40 40
41 define void @from_int16() { 41 define void @from_int16() {
42 entry: 42 entry:
43 %__0 = bitcast [2 x i8]* @i16v to i16* 43 %__0 = bitcast [2 x i8]* @i16v to i16*
44 %v0 = load i16* %__0, align 1 44 %v0 = load i16, i16* %__0, align 1
45 %v1 = trunc i16 %v0 to i8 45 %v1 = trunc i16 %v0 to i8
46 %__3 = bitcast [1 x i8]* @i8v to i8* 46 %__3 = bitcast [1 x i8]* @i8v to i8*
47 store i8 %v1, i8* %__3, align 1 47 store i8 %v1, i8* %__3, align 1
48 %v2 = sext i16 %v0 to i32 48 %v2 = sext i16 %v0 to i32
49 %__5 = bitcast [4 x i8]* @i32v to i32* 49 %__5 = bitcast [4 x i8]* @i32v to i32*
50 store i32 %v2, i32* %__5, align 1 50 store i32 %v2, i32* %__5, align 1
51 %v3 = sext i16 %v0 to i64 51 %v3 = sext i16 %v0 to i64
52 %__7 = bitcast [8 x i8]* @i64v to i64* 52 %__7 = bitcast [8 x i8]* @i64v to i64*
53 store i64 %v3, i64* %__7, align 1 53 store i64 %v3, i64* %__7, align 1
54 ret void 54 ret void
55 } 55 }
56 ; CHECK-LABEL: from_int16 56 ; CHECK-LABEL: from_int16
57 ; CHECK: mov {{.*}},WORD PTR 57 ; CHECK: mov {{.*}},WORD PTR
58 ; CHECK: 0x0 {{.*}}i16v 58 ; CHECK: 0x0 {{.*}}i16v
59 ; CHECK: movsx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}} 59 ; CHECK: movsx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}}
60 ; CHECK: 0x0,{{.*}}i32v 60 ; CHECK: 0x0,{{.*}}i32v
61 ; CHECK: movsx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}} 61 ; CHECK: movsx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}}
62 ; CHECK: sar {{.*}},0x1f 62 ; CHECK: sar {{.*}},0x1f
63 ; CHECK: 0x0,{{.*}}i64v 63 ; CHECK: 0x0,{{.*}}i64v
64 64
65 define void @from_int32() { 65 define void @from_int32() {
66 entry: 66 entry:
67 %__0 = bitcast [4 x i8]* @i32v to i32* 67 %__0 = bitcast [4 x i8]* @i32v to i32*
68 %v0 = load i32* %__0, align 1 68 %v0 = load i32, i32* %__0, align 1
69 %v1 = trunc i32 %v0 to i8 69 %v1 = trunc i32 %v0 to i8
70 %__3 = bitcast [1 x i8]* @i8v to i8* 70 %__3 = bitcast [1 x i8]* @i8v to i8*
71 store i8 %v1, i8* %__3, align 1 71 store i8 %v1, i8* %__3, align 1
72 %v2 = trunc i32 %v0 to i16 72 %v2 = trunc i32 %v0 to i16
73 %__5 = bitcast [2 x i8]* @i16v to i16* 73 %__5 = bitcast [2 x i8]* @i16v to i16*
74 store i16 %v2, i16* %__5, align 1 74 store i16 %v2, i16* %__5, align 1
75 %v3 = sext i32 %v0 to i64 75 %v3 = sext i32 %v0 to i64
76 %__7 = bitcast [8 x i8]* @i64v to i64* 76 %__7 = bitcast [8 x i8]* @i64v to i64*
77 store i64 %v3, i64* %__7, align 1 77 store i64 %v3, i64* %__7, align 1
78 ret void 78 ret void
79 } 79 }
80 ; CHECK-LABEL: from_int32 80 ; CHECK-LABEL: from_int32
81 ; CHECK: 0x0 {{.*}} i32v 81 ; CHECK: 0x0 {{.*}} i32v
82 ; CHECK: 0x0,{{.*}} i8v 82 ; CHECK: 0x0,{{.*}} i8v
83 ; CHECK: 0x0,{{.*}} i16v 83 ; CHECK: 0x0,{{.*}} i16v
84 ; CHECK: sar {{.*}},0x1f 84 ; CHECK: sar {{.*}},0x1f
85 ; CHECK: 0x0,{{.*}} i64v 85 ; CHECK: 0x0,{{.*}} i64v
86 86
87 define void @from_int64() { 87 define void @from_int64() {
88 entry: 88 entry:
89 %__0 = bitcast [8 x i8]* @i64v to i64* 89 %__0 = bitcast [8 x i8]* @i64v to i64*
90 %v0 = load i64* %__0, align 1 90 %v0 = load i64, i64* %__0, align 1
91 %v1 = trunc i64 %v0 to i8 91 %v1 = trunc i64 %v0 to i8
92 %__3 = bitcast [1 x i8]* @i8v to i8* 92 %__3 = bitcast [1 x i8]* @i8v to i8*
93 store i8 %v1, i8* %__3, align 1 93 store i8 %v1, i8* %__3, align 1
94 %v2 = trunc i64 %v0 to i16 94 %v2 = trunc i64 %v0 to i16
95 %__5 = bitcast [2 x i8]* @i16v to i16* 95 %__5 = bitcast [2 x i8]* @i16v to i16*
96 store i16 %v2, i16* %__5, align 1 96 store i16 %v2, i16* %__5, align 1
97 %v3 = trunc i64 %v0 to i32 97 %v3 = trunc i64 %v0 to i32
98 %__7 = bitcast [4 x i8]* @i32v to i32* 98 %__7 = bitcast [4 x i8]* @i32v to i32*
99 store i32 %v3, i32* %__7, align 1 99 store i32 %v3, i32* %__7, align 1
100 ret void 100 ret void
101 } 101 }
102 ; CHECK-LABEL: from_int64 102 ; CHECK-LABEL: from_int64
103 ; CHECK: 0x0 {{.*}} i64v 103 ; CHECK: 0x0 {{.*}} i64v
104 ; CHECK: 0x0,{{.*}} i8v 104 ; CHECK: 0x0,{{.*}} i8v
105 ; CHECK: 0x0,{{.*}} i16v 105 ; CHECK: 0x0,{{.*}} i16v
106 ; CHECK: 0x0,{{.*}} i32v 106 ; CHECK: 0x0,{{.*}} i32v
107 107
108 108
109 define void @from_uint8() { 109 define void @from_uint8() {
110 entry: 110 entry:
111 %__0 = bitcast [1 x i8]* @u8v to i8* 111 %__0 = bitcast [1 x i8]* @u8v to i8*
112 %v0 = load i8* %__0, align 1 112 %v0 = load i8, i8* %__0, align 1
113 %v1 = zext i8 %v0 to i16 113 %v1 = zext i8 %v0 to i16
114 %__3 = bitcast [2 x i8]* @i16v to i16* 114 %__3 = bitcast [2 x i8]* @i16v to i16*
115 store i16 %v1, i16* %__3, align 1 115 store i16 %v1, i16* %__3, align 1
116 %v2 = zext i8 %v0 to i32 116 %v2 = zext i8 %v0 to i32
117 %__5 = bitcast [4 x i8]* @i32v to i32* 117 %__5 = bitcast [4 x i8]* @i32v to i32*
118 store i32 %v2, i32* %__5, align 1 118 store i32 %v2, i32* %__5, align 1
119 %v3 = zext i8 %v0 to i64 119 %v3 = zext i8 %v0 to i64
120 %__7 = bitcast [8 x i8]* @i64v to i64* 120 %__7 = bitcast [8 x i8]* @i64v to i64*
121 store i64 %v3, i64* %__7, align 1 121 store i64 %v3, i64* %__7, align 1
122 ret void 122 ret void
123 } 123 }
124 ; CHECK-LABEL: from_uint8 124 ; CHECK-LABEL: from_uint8
125 ; CHECK: 0x0 {{.*}} u8v 125 ; CHECK: 0x0 {{.*}} u8v
126 ; CHECK: movzx e{{.*}},{{[a-d]l|BYTE PTR}} 126 ; CHECK: movzx e{{.*}},{{[a-d]l|BYTE PTR}}
127 ; CHECK: 0x0,{{.*}} i16v 127 ; CHECK: 0x0,{{.*}} i16v
128 ; CHECK: movzx 128 ; CHECK: movzx
129 ; CHECK: 0x0,{{.*}} i32v 129 ; CHECK: 0x0,{{.*}} i32v
130 ; CHECK: movzx 130 ; CHECK: movzx
131 ; CHECK: mov {{.*}},0x0 131 ; CHECK: mov {{.*}},0x0
132 ; CHECK: 0x0,{{.*}} i64v 132 ; CHECK: 0x0,{{.*}} i64v
133 133
134 define void @from_uint16() { 134 define void @from_uint16() {
135 entry: 135 entry:
136 %__0 = bitcast [2 x i8]* @u16v to i16* 136 %__0 = bitcast [2 x i8]* @u16v to i16*
137 %v0 = load i16* %__0, align 1 137 %v0 = load i16, i16* %__0, align 1
138 %v1 = trunc i16 %v0 to i8 138 %v1 = trunc i16 %v0 to i8
139 %__3 = bitcast [1 x i8]* @i8v to i8* 139 %__3 = bitcast [1 x i8]* @i8v to i8*
140 store i8 %v1, i8* %__3, align 1 140 store i8 %v1, i8* %__3, align 1
141 %v2 = zext i16 %v0 to i32 141 %v2 = zext i16 %v0 to i32
142 %__5 = bitcast [4 x i8]* @i32v to i32* 142 %__5 = bitcast [4 x i8]* @i32v to i32*
143 store i32 %v2, i32* %__5, align 1 143 store i32 %v2, i32* %__5, align 1
144 %v3 = zext i16 %v0 to i64 144 %v3 = zext i16 %v0 to i64
145 %__7 = bitcast [8 x i8]* @i64v to i64* 145 %__7 = bitcast [8 x i8]* @i64v to i64*
146 store i64 %v3, i64* %__7, align 1 146 store i64 %v3, i64* %__7, align 1
147 ret void 147 ret void
148 } 148 }
149 ; CHECK-LABEL: from_uint16 149 ; CHECK-LABEL: from_uint16
150 ; CHECK: 0x0 {{.*}} u16v 150 ; CHECK: 0x0 {{.*}} u16v
151 ; CHECK: 0x0,{{.*}} i8v 151 ; CHECK: 0x0,{{.*}} i8v
152 ; CHECK: movzx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}} 152 ; CHECK: movzx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}}
153 ; CHECK: 0x0,{{.*}} i32v 153 ; CHECK: 0x0,{{.*}} i32v
154 ; CHECK: movzx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}} 154 ; CHECK: movzx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}}
155 ; CHECK: mov {{.*}},0x0 155 ; CHECK: mov {{.*}},0x0
156 ; CHECK: 0x0,{{.*}} i64v 156 ; CHECK: 0x0,{{.*}} i64v
157 157
158 define void @from_uint32() { 158 define void @from_uint32() {
159 entry: 159 entry:
160 %__0 = bitcast [4 x i8]* @u32v to i32* 160 %__0 = bitcast [4 x i8]* @u32v to i32*
161 %v0 = load i32* %__0, align 1 161 %v0 = load i32, i32* %__0, align 1
162 %v1 = trunc i32 %v0 to i8 162 %v1 = trunc i32 %v0 to i8
163 %__3 = bitcast [1 x i8]* @i8v to i8* 163 %__3 = bitcast [1 x i8]* @i8v to i8*
164 store i8 %v1, i8* %__3, align 1 164 store i8 %v1, i8* %__3, align 1
165 %v2 = trunc i32 %v0 to i16 165 %v2 = trunc i32 %v0 to i16
166 %__5 = bitcast [2 x i8]* @i16v to i16* 166 %__5 = bitcast [2 x i8]* @i16v to i16*
167 store i16 %v2, i16* %__5, align 1 167 store i16 %v2, i16* %__5, align 1
168 %v3 = zext i32 %v0 to i64 168 %v3 = zext i32 %v0 to i64
169 %__7 = bitcast [8 x i8]* @i64v to i64* 169 %__7 = bitcast [8 x i8]* @i64v to i64*
170 store i64 %v3, i64* %__7, align 1 170 store i64 %v3, i64* %__7, align 1
171 ret void 171 ret void
172 } 172 }
173 ; CHECK-LABEL: from_uint32 173 ; CHECK-LABEL: from_uint32
174 ; CHECK: 0x0 {{.*}} u32v 174 ; CHECK: 0x0 {{.*}} u32v
175 ; CHECK: 0x0,{{.*}} i8v 175 ; CHECK: 0x0,{{.*}} i8v
176 ; CHECK: 0x0,{{.*}} i16v 176 ; CHECK: 0x0,{{.*}} i16v
177 ; CHECK: mov {{.*}},0x0 177 ; CHECK: mov {{.*}},0x0
178 ; CHECK: 0x0,{{.*}} i64v 178 ; CHECK: 0x0,{{.*}} i64v
179 179
180 define void @from_uint64() { 180 define void @from_uint64() {
181 entry: 181 entry:
182 %__0 = bitcast [8 x i8]* @u64v to i64* 182 %__0 = bitcast [8 x i8]* @u64v to i64*
183 %v0 = load i64* %__0, align 1 183 %v0 = load i64, i64* %__0, align 1
184 %v1 = trunc i64 %v0 to i8 184 %v1 = trunc i64 %v0 to i8
185 %__3 = bitcast [1 x i8]* @i8v to i8* 185 %__3 = bitcast [1 x i8]* @i8v to i8*
186 store i8 %v1, i8* %__3, align 1 186 store i8 %v1, i8* %__3, align 1
187 %v2 = trunc i64 %v0 to i16 187 %v2 = trunc i64 %v0 to i16
188 %__5 = bitcast [2 x i8]* @i16v to i16* 188 %__5 = bitcast [2 x i8]* @i16v to i16*
189 store i16 %v2, i16* %__5, align 1 189 store i16 %v2, i16* %__5, align 1
190 %v3 = trunc i64 %v0 to i32 190 %v3 = trunc i64 %v0 to i32
191 %__7 = bitcast [4 x i8]* @i32v to i32* 191 %__7 = bitcast [4 x i8]* @i32v to i32*
192 store i32 %v3, i32* %__7, align 1 192 store i32 %v3, i32* %__7, align 1
193 ret void 193 ret void
194 } 194 }
195 ; CHECK-LABEL: from_uint64 195 ; CHECK-LABEL: from_uint64
196 ; CHECK: 0x0 {{.*}} u64v 196 ; CHECK: 0x0 {{.*}} u64v
197 ; CHECK: 0x0,{{.*}} i8v 197 ; CHECK: 0x0,{{.*}} i8v
198 ; CHECK: 0x0,{{.*}} i16v 198 ; CHECK: 0x0,{{.*}} i16v
199 ; CHECK: 0x0,{{.*}} i32v 199 ; CHECK: 0x0,{{.*}} i32v
OLDNEW
« no previous file with comments | « tests_lit/llvm2ice_tests/callindirect.pnacl.ll ('k') | tests_lit/llvm2ice_tests/fp.pnacl.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698