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

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

Issue 2339323004: [SubZero] Use DIV instruction instead of TargetHelperCall (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Addressed review comments Created 4 years, 3 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/IceTargetLoweringMIPS32.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; Assembly test for simple arithmetic operations. 1 ; Assembly test for simple arithmetic operations.
2 2
3 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 3 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
4 ; RUN: --target x8632 -i %s --args -O2 \ 4 ; RUN: --target x8632 -i %s --args -O2 \
5 ; RUN: | %if --need=target_X8632 --command FileCheck %s 5 ; RUN: | %if --need=target_X8632 --command FileCheck %s
6 6
7 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) 7 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented)
8 ; once enough infrastructure is in. Also, switch to --filetype=obj 8 ; once enough infrastructure is in. Also, switch to --filetype=obj
9 ; when possible. 9 ; when possible.
10 ; RUN: %if --need=target_ARM32 --need=allow_dump \ 10 ; RUN: %if --need=target_ARM32 --need=allow_dump \
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 ; ARM32: bne 164 ; ARM32: bne
165 ; The following instruction is ".word 0xe7fedef0 = udf #60896 ; 0xede0". 165 ; The following instruction is ".word 0xe7fedef0 = udf #60896 ; 0xede0".
166 ; ARM32: e7fedef0 166 ; ARM32: e7fedef0
167 ; ARM32: bl {{.*}} __divsi3 167 ; ARM32: bl {{.*}} __divsi3
168 ; ARM32HWDIV-LABEL: Sdiv 168 ; ARM32HWDIV-LABEL: Sdiv
169 ; ARM32HWDIV: tst 169 ; ARM32HWDIV: tst
170 ; ARM32HWDIV: bne 170 ; ARM32HWDIV: bne
171 ; ARM32HWDIV: sdiv 171 ; ARM32HWDIV: sdiv
172 172
173 ; MIPS32-LABEL: Sdiv 173 ; MIPS32-LABEL: Sdiv
174 ; MIPS32: jal {{.*}} __divsi3 174 ; MIPS32: div zero,{{.*}},[[REG:.*]]
175 ; MIPS32: teq [[REG]],zero,0x7
176 ; MIPS32: mflo
175 177
176 define internal i32 @SdivConst(i32 %a) { 178 define internal i32 @SdivConst(i32 %a) {
177 entry: 179 entry:
178 %div = sdiv i32 %a, 219 180 %div = sdiv i32 %a, 219
179 ret i32 %div 181 ret i32 %div
180 } 182 }
181 ; CHECK-LABEL: SdivConst 183 ; CHECK-LABEL: SdivConst
182 ; CHECK: cdq 184 ; CHECK: cdq
183 ; CHECK: idiv e 185 ; CHECK: idiv e
184 ; 186 ;
185 ; ARM32-LABEL: SdivConst 187 ; ARM32-LABEL: SdivConst
186 ; ARM32-NOT: tst 188 ; ARM32-NOT: tst
187 ; ARM32: bl {{.*}} __divsi3 189 ; ARM32: bl {{.*}} __divsi3
188 ; ARM32HWDIV-LABEL: SdivConst 190 ; ARM32HWDIV-LABEL: SdivConst
189 ; ARM32HWDIV-NOT: tst 191 ; ARM32HWDIV-NOT: tst
190 ; ARM32HWDIV: sdiv 192 ; ARM32HWDIV: sdiv
191 193
192 ; MIPS32-LABEL: SdivConst 194 ; MIPS32-LABEL: SdivConst
193 ; MIPS32: jal {{.*}} __divsi3 195 ; MIPS32: div zero,{{.*}},[[REG:.*]]
196 ; MIPS32: teq [[REG]],zero,0x7
197 ; MIPS32: mflo
194 198
195 define internal i32 @Srem(i32 %a, i32 %b) { 199 define internal i32 @Srem(i32 %a, i32 %b) {
196 entry: 200 entry:
197 %rem = srem i32 %a, %b 201 %rem = srem i32 %a, %b
198 ret i32 %rem 202 ret i32 %rem
199 } 203 }
200 ; CHECK-LABEL: Srem 204 ; CHECK-LABEL: Srem
201 ; CHECK: cdq 205 ; CHECK: cdq
202 ; CHECK: idiv e 206 ; CHECK: idiv e
203 ; 207 ;
204 ; ARM32-LABEL: Srem 208 ; ARM32-LABEL: Srem
205 ; ARM32: tst [[DENOM:r.*]], [[DENOM]] 209 ; ARM32: tst [[DENOM:r.*]], [[DENOM]]
206 ; ARM32: bne 210 ; ARM32: bne
207 ; ARM32: bl {{.*}} __modsi3 211 ; ARM32: bl {{.*}} __modsi3
208 ; ARM32HWDIV-LABEL: Srem 212 ; ARM32HWDIV-LABEL: Srem
209 ; ARM32HWDIV: tst 213 ; ARM32HWDIV: tst
210 ; ARM32HWDIV: bne 214 ; ARM32HWDIV: bne
211 ; ARM32HWDIV: sdiv 215 ; ARM32HWDIV: sdiv
212 ; ARM32HWDIV: mls 216 ; ARM32HWDIV: mls
213 217
214 ; MIPS32-LABEL: Srem 218 ; MIPS32-LABEL: Srem
215 ; MIPS32: jal {{.*}} __modsi3 219 ; MIPS32: div zero,{{.*}},[[REG:.*]]
220 ; MIPS32: teq [[REG]],zero,0x7
221 ; MIPS32: mfhi
216 222
217 define internal i32 @Udiv(i32 %a, i32 %b) { 223 define internal i32 @Udiv(i32 %a, i32 %b) {
218 entry: 224 entry:
219 %div = udiv i32 %a, %b 225 %div = udiv i32 %a, %b
220 ret i32 %div 226 ret i32 %div
221 } 227 }
222 ; CHECK-LABEL: Udiv 228 ; CHECK-LABEL: Udiv
223 ; CHECK: div e 229 ; CHECK: div e
224 ; 230 ;
225 ; ARM32-LABEL: Udiv 231 ; ARM32-LABEL: Udiv
226 ; ARM32: tst [[DENOM:r.*]], [[DENOM]] 232 ; ARM32: tst [[DENOM:r.*]], [[DENOM]]
227 ; ARM32: bne 233 ; ARM32: bne
228 ; ARM32: bl {{.*}} __udivsi3 234 ; ARM32: bl {{.*}} __udivsi3
229 ; ARM32HWDIV-LABEL: Udiv 235 ; ARM32HWDIV-LABEL: Udiv
230 ; ARM32HWDIV: tst 236 ; ARM32HWDIV: tst
231 ; ARM32HWDIV: bne 237 ; ARM32HWDIV: bne
232 ; ARM32HWDIV: udiv 238 ; ARM32HWDIV: udiv
233 239
234 ; MIPS32-LABEL: Udiv 240 ; MIPS32-LABEL: Udiv
235 ; MIPS32: jal {{.*}} __udivsi3 241 ; MIPS32: divu zero,{{.*}},[[REG:.*]]
242 ; MIPS32: teq [[REG]],zero,0x7
243 ; MIPS32: mflo
236 244
237 define internal i32 @Urem(i32 %a, i32 %b) { 245 define internal i32 @Urem(i32 %a, i32 %b) {
238 entry: 246 entry:
239 %rem = urem i32 %a, %b 247 %rem = urem i32 %a, %b
240 ret i32 %rem 248 ret i32 %rem
241 } 249 }
242 ; CHECK-LABEL: Urem 250 ; CHECK-LABEL: Urem
243 ; CHECK: div e 251 ; CHECK: div e
244 ; 252 ;
245 ; ARM32-LABEL: Urem 253 ; ARM32-LABEL: Urem
246 ; ARM32: tst [[DENOM:r.*]], [[DENOM]] 254 ; ARM32: tst [[DENOM:r.*]], [[DENOM]]
247 ; ARM32: bne 255 ; ARM32: bne
248 ; ARM32: bl {{.*}} __umodsi3 256 ; ARM32: bl {{.*}} __umodsi3
249 ; ARM32HWDIV-LABEL: Urem 257 ; ARM32HWDIV-LABEL: Urem
250 ; ARM32HWDIV: tst 258 ; ARM32HWDIV: tst
251 ; ARM32HWDIV: bne 259 ; ARM32HWDIV: bne
252 ; ARM32HWDIV: udiv 260 ; ARM32HWDIV: udiv
253 ; ARM32HWDIV: mls 261 ; ARM32HWDIV: mls
254 262
255 ; MIPS32-LABEL: Urem 263 ; MIPS32-LABEL: Urem
256 ; MIPS32: jal {{.*}} __umodsi3 264 ; MIPS32: divu zero,{{.*}},[[REG:.*]]
265 ; MIPS32: teq [[REG]],zero,0x7
266 ; MIPS32: mfhi
257 267
258 ; The following tests check that shift instructions don't try to use a 268 ; The following tests check that shift instructions don't try to use a
259 ; ConstantRelocatable as an immediate operand. 269 ; ConstantRelocatable as an immediate operand.
260 270
261 @G = internal global [4 x i8] zeroinitializer, align 4 271 @G = internal global [4 x i8] zeroinitializer, align 4
262 272
263 define internal i32 @ShlReloc(i32 %a) { 273 define internal i32 @ShlReloc(i32 %a) {
264 entry: 274 entry:
265 %opnd = ptrtoint [4 x i8]* @G to i32 275 %opnd = ptrtoint [4 x i8]* @G to i32
266 %result = shl i32 %a, %opnd 276 %result = shl i32 %a, %opnd
(...skipping 12 matching lines...) Expand all
279 ; CHECK: shr {{.*}},cl 289 ; CHECK: shr {{.*}},cl
280 290
281 define internal i32 @AshrReloc(i32 %a) { 291 define internal i32 @AshrReloc(i32 %a) {
282 entry: 292 entry:
283 %opnd = ptrtoint [4 x i8]* @G to i32 293 %opnd = ptrtoint [4 x i8]* @G to i32
284 %result = ashr i32 %a, %opnd 294 %result = ashr i32 %a, %opnd
285 ret i32 %result 295 ret i32 %result
286 } 296 }
287 ; CHECK-LABEL: AshrReloc 297 ; CHECK-LABEL: AshrReloc
288 ; CHECK: sar {{.*}},cl 298 ; CHECK: sar {{.*}},cl
OLDNEW
« no previous file with comments | « src/IceTargetLoweringMIPS32.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698