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

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

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

Powered by Google App Engine
This is Rietveld 408576698