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

Side by Side Diff: tests_lit/llvm2ice_tests/fp.pnacl.ll

Issue 700263003: Rearrange emit vs emitIAS. Wait till function is done before dumping text. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: remove comment... might end up using the iterator Created 6 years, 1 month 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/arith-opt.ll ('k') | tests_lit/llvm2ice_tests/ias-multi-reloc.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 ; This tries to be a comprehensive test of f32 and f64 operations. 1 ; This tries to be a comprehensive test of f32 and f64 operations.
2 ; The CHECK lines are only checking for basic instruction patterns 2 ; The CHECK lines are only checking for basic instruction patterns
3 ; that should be present regardless of the optimization level, so 3 ; that should be present regardless of the optimization level, so
4 ; there are no special OPTM1 match lines. 4 ; there are no special OPTM1 match lines.
5 5
6 ; TODO(jvoung): fix extra "CALLTARGETS" run. The llvm-objdump symbolizer 6 ; TODO(jvoung): fix extra "CALLTARGETS" run. The llvm-objdump symbolizer
7 ; doesn't know how to symbolize non-section-local functions. 7 ; doesn't know how to symbolize non-section-local functions.
8 ; The newer LLVM 3.6 one does work, but watch out for other bugs. 8 ; The newer LLVM 3.6 one does work, but watch out for other bugs.
9 9
10 ; RUN: %p2i -i %s --args -O2 --verbose none \ 10 ; RUN: %p2i -i %s --args -O2 --verbose none \
(...skipping 29 matching lines...) Expand all
40 define internal i32 @passFpArgs(float %a, double %b, float %c, double %d, float %e, double %f) { 40 define internal i32 @passFpArgs(float %a, double %b, float %c, double %d, float %e, double %f) {
41 entry: 41 entry:
42 %call = call i32 @ignoreFpArgsNoInline(float %a, i32 123, double %b) 42 %call = call i32 @ignoreFpArgsNoInline(float %a, i32 123, double %b)
43 %call1 = call i32 @ignoreFpArgsNoInline(float %c, i32 123, double %d) 43 %call1 = call i32 @ignoreFpArgsNoInline(float %c, i32 123, double %d)
44 %call2 = call i32 @ignoreFpArgsNoInline(float %e, i32 123, double %f) 44 %call2 = call i32 @ignoreFpArgsNoInline(float %e, i32 123, double %f)
45 %add = add i32 %call1, %call 45 %add = add i32 %call1, %call
46 %add3 = add i32 %add, %call2 46 %add3 = add i32 %add, %call2
47 ret i32 %add3 47 ret i32 %add3
48 } 48 }
49 ; CHECK-LABEL: passFpArgs 49 ; CHECK-LABEL: passFpArgs
50 ; CALLTARGETS-LABEL: passFpArgs
50 ; CHECK: mov dword ptr [esp + 4], 123 51 ; CHECK: mov dword ptr [esp + 4], 123
51 ; CHECK: call ignoreFpArgsNoInline 52 ; CHECK: call -4
53 ; CALLTARGETS: .long ignoreFpArgsNoInline
52 ; CHECK: mov dword ptr [esp + 4], 123 54 ; CHECK: mov dword ptr [esp + 4], 123
53 ; CHECK: call ignoreFpArgsNoInline 55 ; CHECK: call -4
56 ; CALLTARGETS: .long ignoreFpArgsNoInline
54 ; CHECK: mov dword ptr [esp + 4], 123 57 ; CHECK: mov dword ptr [esp + 4], 123
55 ; CHECK: call ignoreFpArgsNoInline 58 ; CHECK: call -4
59 ; CALLTARGETS: .long ignoreFpArgsNoInline
56 60
57 define i32 @ignoreFpArgsNoInline(float %x, i32 %y, double %z) { 61 declare i32 @ignoreFpArgsNoInline(float %x, i32 %y, double %z)
58 entry:
59 ret i32 %y
60 }
61 62
62 define internal i32 @passFpConstArg(float %a, double %b) { 63 define internal i32 @passFpConstArg(float %a, double %b) {
63 entry: 64 entry:
64 %call = call i32 @ignoreFpArgsNoInline(float %a, i32 123, double 2.340000e+00) 65 %call = call i32 @ignoreFpArgsNoInline(float %a, i32 123, double 2.340000e+00)
65 ret i32 %call 66 ret i32 %call
66 } 67 }
67 ; CHECK-LABEL: passFpConstArg 68 ; CHECK-LABEL: passFpConstArg
69 ; CALLTARGETS-LABEL: passFpConstArg
68 ; CHECK: mov dword ptr [esp + 4], 123 70 ; CHECK: mov dword ptr [esp + 4], 123
69 ; CHECK: call ignoreFpArgsNoInline 71 ; CHECK: call -4
72 ; CALLTARGETS: .long ignoreFpArgsNoInline
70 73
71 define internal i32 @passFp32ConstArg(float %a) { 74 define internal i32 @passFp32ConstArg(float %a) {
72 entry: 75 entry:
73 %call = call i32 @ignoreFp32ArgsNoInline(float %a, i32 123, float 2.0) 76 %call = call i32 @ignoreFp32ArgsNoInline(float %a, i32 123, float 2.0)
74 ret i32 %call 77 ret i32 %call
75 } 78 }
76 ; CHECK-LABEL: passFp32ConstArg 79 ; CHECK-LABEL: passFp32ConstArg
77 ; CHECK: mov dword ptr [esp + 4], 123 80 ; CHECK: mov dword ptr [esp + 4], 123
78 ; CHECK: movss dword ptr [esp + 8] 81 ; CHECK: movss dword ptr [esp + 8]
79 ; CHECK: call ignoreFp32ArgsNoInline 82 ; CHECK: call ignoreFp32ArgsNoInline
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 ; CHECK: fld 187 ; CHECK: fld
185 188
186 define internal float @remFloat(float %a, float %b) { 189 define internal float @remFloat(float %a, float %b) {
187 entry: 190 entry:
188 %div = frem float %a, %b 191 %div = frem float %a, %b
189 ret float %div 192 ret float %div
190 } 193 }
191 ; CHECK-LABEL: remFloat 194 ; CHECK-LABEL: remFloat
192 ; CALLTARGETS-LABEL: remFloat 195 ; CALLTARGETS-LABEL: remFloat
193 ; CHECK: call -4 196 ; CHECK: call -4
194 ; CALLTARGETS: call fmodf 197 ; CALLTARGETS: .long fmodf
195 198
196 define internal double @remDouble(double %a, double %b) { 199 define internal double @remDouble(double %a, double %b) {
197 entry: 200 entry:
198 %div = frem double %a, %b 201 %div = frem double %a, %b
199 ret double %div 202 ret double %div
200 } 203 }
201 ; CHECK-LABEL: remDouble 204 ; CHECK-LABEL: remDouble
202 ; CALLTARGETS-LABEL: remDouble 205 ; CALLTARGETS-LABEL: remDouble
203 ; CHECK: call -4 206 ; CHECK: call -4
204 ; CALLTARGETS: call fmod 207 ; CALLTARGETS: .long fmod
205 208
206 define internal float @fptrunc(double %a) { 209 define internal float @fptrunc(double %a) {
207 entry: 210 entry:
208 %conv = fptrunc double %a to float 211 %conv = fptrunc double %a to float
209 ret float %conv 212 ret float %conv
210 } 213 }
211 ; CHECK-LABEL: fptrunc 214 ; CHECK-LABEL: fptrunc
212 ; CHECK: cvtsd2ss 215 ; CHECK: cvtsd2ss
213 ; CHECK: fld 216 ; CHECK: fld
214 217
215 define internal double @fpext(float %a) { 218 define internal double @fpext(float %a) {
216 entry: 219 entry:
217 %conv = fpext float %a to double 220 %conv = fpext float %a to double
218 ret double %conv 221 ret double %conv
219 } 222 }
220 ; CHECK-LABEL: fpext 223 ; CHECK-LABEL: fpext
221 ; CHECK: cvtss2sd 224 ; CHECK: cvtss2sd
222 ; CHECK: fld 225 ; CHECK: fld
223 226
224 define internal i64 @doubleToSigned64(double %a) { 227 define internal i64 @doubleToSigned64(double %a) {
225 entry: 228 entry:
226 %conv = fptosi double %a to i64 229 %conv = fptosi double %a to i64
227 ret i64 %conv 230 ret i64 %conv
228 } 231 }
229 ; CHECK-LABEL: doubleToSigned64 232 ; CHECK-LABEL: doubleToSigned64
230 ; CALLTARGETS-LABEL: doubleToSigned64 233 ; CALLTARGETS-LABEL: doubleToSigned64
231 ; CHECK: call -4 234 ; CHECK: call -4
232 ; CALLTARGETS: call cvtdtosi64 235 ; CALLTARGETS: .long cvtdtosi64
233 236
234 define internal i64 @floatToSigned64(float %a) { 237 define internal i64 @floatToSigned64(float %a) {
235 entry: 238 entry:
236 %conv = fptosi float %a to i64 239 %conv = fptosi float %a to i64
237 ret i64 %conv 240 ret i64 %conv
238 } 241 }
239 ; CHECK-LABEL: floatToSigned64 242 ; CHECK-LABEL: floatToSigned64
240 ; CALLTARGETS-LABEL: floatToSigned64 243 ; CALLTARGETS-LABEL: floatToSigned64
241 ; CHECK: call -4 244 ; CHECK: call -4
242 ; CALLTARGETS: call cvtftosi64 245 ; CALLTARGETS: .long cvtftosi64
243 246
244 define internal i64 @doubleToUnsigned64(double %a) { 247 define internal i64 @doubleToUnsigned64(double %a) {
245 entry: 248 entry:
246 %conv = fptoui double %a to i64 249 %conv = fptoui double %a to i64
247 ret i64 %conv 250 ret i64 %conv
248 } 251 }
249 ; CHECK-LABEL: doubleToUnsigned64 252 ; CHECK-LABEL: doubleToUnsigned64
250 ; CALLTARGETS-LABEL: doubleToUnsigned64 253 ; CALLTARGETS-LABEL: doubleToUnsigned64
251 ; CHECK: call -4 254 ; CHECK: call -4
252 ; CALLTARGETS: call cvtdtoui64 255 ; CALLTARGETS: .long cvtdtoui64
253 256
254 define internal i64 @floatToUnsigned64(float %a) { 257 define internal i64 @floatToUnsigned64(float %a) {
255 entry: 258 entry:
256 %conv = fptoui float %a to i64 259 %conv = fptoui float %a to i64
257 ret i64 %conv 260 ret i64 %conv
258 } 261 }
259 ; CHECK-LABEL: floatToUnsigned64 262 ; CHECK-LABEL: floatToUnsigned64
260 ; CALLTARGETS-LABEL: floatToUnsigned64 263 ; CALLTARGETS-LABEL: floatToUnsigned64
261 ; CHECK: call -4 264 ; CHECK: call -4
262 ; CALLTARGETS: call cvtftoui64 265 ; CALLTARGETS: .long cvtftoui64
263 266
264 define internal i32 @doubleToSigned32(double %a) { 267 define internal i32 @doubleToSigned32(double %a) {
265 entry: 268 entry:
266 %conv = fptosi double %a to i32 269 %conv = fptosi double %a to i32
267 ret i32 %conv 270 ret i32 %conv
268 } 271 }
269 ; CHECK-LABEL: doubleToSigned32 272 ; CHECK-LABEL: doubleToSigned32
270 ; CHECK: cvttsd2si 273 ; CHECK: cvttsd2si
271 274
272 define internal i32 @doubleToSigned32Const() { 275 define internal i32 @doubleToSigned32Const() {
(...skipping 13 matching lines...) Expand all
286 ; CHECK: cvttss2si 289 ; CHECK: cvttss2si
287 290
288 define internal i32 @doubleToUnsigned32(double %a) { 291 define internal i32 @doubleToUnsigned32(double %a) {
289 entry: 292 entry:
290 %conv = fptoui double %a to i32 293 %conv = fptoui double %a to i32
291 ret i32 %conv 294 ret i32 %conv
292 } 295 }
293 ; CHECK-LABEL: doubleToUnsigned32 296 ; CHECK-LABEL: doubleToUnsigned32
294 ; CALLTARGETS-LABEL: doubleToUnsigned32 297 ; CALLTARGETS-LABEL: doubleToUnsigned32
295 ; CHECK: call -4 298 ; CHECK: call -4
296 ; CALLTARGETS: call cvtdtoui32 299 ; CALLTARGETS: .long cvtdtoui32
297 300
298 define internal i32 @floatToUnsigned32(float %a) { 301 define internal i32 @floatToUnsigned32(float %a) {
299 entry: 302 entry:
300 %conv = fptoui float %a to i32 303 %conv = fptoui float %a to i32
301 ret i32 %conv 304 ret i32 %conv
302 } 305 }
303 ; CHECK-LABEL: floatToUnsigned32 306 ; CHECK-LABEL: floatToUnsigned32
304 ; CALLTARGETS-LABEL: floatToUnsigned32 307 ; CALLTARGETS-LABEL: floatToUnsigned32
305 ; CHECK: call -4 308 ; CHECK: call -4
306 ; CALLTARGETS: call cvtftoui32 309 ; CALLTARGETS: .long cvtftoui32
307 310
308 311
309 define internal i32 @doubleToSigned16(double %a) { 312 define internal i32 @doubleToSigned16(double %a) {
310 entry: 313 entry:
311 %conv = fptosi double %a to i16 314 %conv = fptosi double %a to i16
312 %conv.ret_ext = sext i16 %conv to i32 315 %conv.ret_ext = sext i16 %conv to i32
313 ret i32 %conv.ret_ext 316 ret i32 %conv.ret_ext
314 } 317 }
315 ; CHECK-LABEL: doubleToSigned16 318 ; CHECK-LABEL: doubleToSigned16
316 ; CHECK: cvttsd2si 319 ; CHECK: cvttsd2si
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 ; CHECK: and eax, 1 410 ; CHECK: and eax, 1
408 411
409 define internal double @signed64ToDouble(i64 %a) { 412 define internal double @signed64ToDouble(i64 %a) {
410 entry: 413 entry:
411 %conv = sitofp i64 %a to double 414 %conv = sitofp i64 %a to double
412 ret double %conv 415 ret double %conv
413 } 416 }
414 ; CHECK-LABEL: signed64ToDouble 417 ; CHECK-LABEL: signed64ToDouble
415 ; CALLTARGETS-LABEL: signed64ToDouble 418 ; CALLTARGETS-LABEL: signed64ToDouble
416 ; CHECK: call -4 419 ; CHECK: call -4
417 ; CALLTARGETS: call cvtsi64tod 420 ; CALLTARGETS: .long cvtsi64tod
418 ; CHECK: fstp qword 421 ; CHECK: fstp qword
419 422
420 define internal float @signed64ToFloat(i64 %a) { 423 define internal float @signed64ToFloat(i64 %a) {
421 entry: 424 entry:
422 %conv = sitofp i64 %a to float 425 %conv = sitofp i64 %a to float
423 ret float %conv 426 ret float %conv
424 } 427 }
425 ; CHECK-LABEL: signed64ToFloat 428 ; CHECK-LABEL: signed64ToFloat
426 ; CALLTARGETS-LABEL: signed64ToFloat 429 ; CALLTARGETS-LABEL: signed64ToFloat
427 ; CHECK: call -4 430 ; CHECK: call -4
428 ; CALLTARGETS: call cvtsi64tof 431 ; CALLTARGETS: .long cvtsi64tof
429 ; CHECK: fstp dword 432 ; CHECK: fstp dword
430 433
431 define internal double @unsigned64ToDouble(i64 %a) { 434 define internal double @unsigned64ToDouble(i64 %a) {
432 entry: 435 entry:
433 %conv = uitofp i64 %a to double 436 %conv = uitofp i64 %a to double
434 ret double %conv 437 ret double %conv
435 } 438 }
436 ; CHECK-LABEL: unsigned64ToDouble 439 ; CHECK-LABEL: unsigned64ToDouble
437 ; CALLTARGETS-LABEL: unsigned64ToDouble 440 ; CALLTARGETS-LABEL: unsigned64ToDouble
438 ; CHECK: call -4 441 ; CHECK: call -4
439 ; CALLTARGETS: call cvtui64tod 442 ; CALLTARGETS: .long cvtui64tod
440 ; CHECK: fstp 443 ; CHECK: fstp
441 444
442 define internal float @unsigned64ToFloat(i64 %a) { 445 define internal float @unsigned64ToFloat(i64 %a) {
443 entry: 446 entry:
444 %conv = uitofp i64 %a to float 447 %conv = uitofp i64 %a to float
445 ret float %conv 448 ret float %conv
446 } 449 }
447 ; CHECK-LABEL: unsigned64ToFloat 450 ; CHECK-LABEL: unsigned64ToFloat
448 ; CALLTARGETS-LABEL: unsigned64ToFloat 451 ; CALLTARGETS-LABEL: unsigned64ToFloat
449 ; CHECK: call -4 452 ; CHECK: call -4
450 ; CALLTARGETS: call cvtui64tof 453 ; CALLTARGETS: .long cvtui64tof
451 ; CHECK: fstp 454 ; CHECK: fstp
452 455
453 define internal double @unsigned64ToDoubleConst() { 456 define internal double @unsigned64ToDoubleConst() {
454 entry: 457 entry:
455 %conv = uitofp i64 12345678901234 to double 458 %conv = uitofp i64 12345678901234 to double
456 ret double %conv 459 ret double %conv
457 } 460 }
458 ; CHECK-LABEL: unsigned64ToDouble 461 ; CHECK-LABEL: unsigned64ToDouble
459 ; CALLTARGETS-LABEL: unsigned64ToDouble 462 ; CALLTARGETS-LABEL: unsigned64ToDouble
460 ; CHECK: mov dword ptr [esp + 4], 2874 463 ; CHECK: mov dword ptr [esp + 4], 2874
461 ; CHECK: mov dword ptr [esp], 1942892530 464 ; CHECK: mov dword ptr [esp], 1942892530
462 ; CHECK: call -4 465 ; CHECK: call -4
463 ; CALLTARGETS: call cvtui64tod 466 ; CALLTARGETS: .long cvtui64tod
464 ; CHECK: fstp 467 ; CHECK: fstp
465 468
466 define internal double @signed32ToDouble(i32 %a) { 469 define internal double @signed32ToDouble(i32 %a) {
467 entry: 470 entry:
468 %conv = sitofp i32 %a to double 471 %conv = sitofp i32 %a to double
469 ret double %conv 472 ret double %conv
470 } 473 }
471 ; CHECK-LABEL: signed32ToDouble 474 ; CHECK-LABEL: signed32ToDouble
472 ; CHECK: cvtsi2sd 475 ; CHECK: cvtsi2sd
473 ; CHECK: fld 476 ; CHECK: fld
(...skipping 17 matching lines...) Expand all
491 ; CHECK: fld 494 ; CHECK: fld
492 495
493 define internal double @unsigned32ToDouble(i32 %a) { 496 define internal double @unsigned32ToDouble(i32 %a) {
494 entry: 497 entry:
495 %conv = uitofp i32 %a to double 498 %conv = uitofp i32 %a to double
496 ret double %conv 499 ret double %conv
497 } 500 }
498 ; CHECK-LABEL: unsigned32ToDouble 501 ; CHECK-LABEL: unsigned32ToDouble
499 ; CALLTARGETS-LABEL: unsigned32ToDouble 502 ; CALLTARGETS-LABEL: unsigned32ToDouble
500 ; CHECK: call -4 503 ; CHECK: call -4
501 ; CALLTARGETS: call cvtui32tod 504 ; CALLTARGETS: .long cvtui32tod
502 ; CHECK: fstp qword 505 ; CHECK: fstp qword
503 506
504 define internal float @unsigned32ToFloat(i32 %a) { 507 define internal float @unsigned32ToFloat(i32 %a) {
505 entry: 508 entry:
506 %conv = uitofp i32 %a to float 509 %conv = uitofp i32 %a to float
507 ret float %conv 510 ret float %conv
508 } 511 }
509 ; CHECK-LABEL: unsigned32ToFloat 512 ; CHECK-LABEL: unsigned32ToFloat
510 ; CALLTARGETS-LABEL: unsigned32ToFloat 513 ; CALLTARGETS-LABEL: unsigned32ToFloat
511 ; CHECK: call -4 514 ; CHECK: call -4
512 ; CALLTARGETS: call cvtui32tof 515 ; CALLTARGETS: .long cvtui32tof
513 ; CHECK: fstp dword 516 ; CHECK: fstp dword
514 517
515 define internal double @signed16ToDouble(i32 %a) { 518 define internal double @signed16ToDouble(i32 %a) {
516 entry: 519 entry:
517 %a.arg_trunc = trunc i32 %a to i16 520 %a.arg_trunc = trunc i32 %a to i16
518 %conv = sitofp i16 %a.arg_trunc to double 521 %conv = sitofp i16 %a.arg_trunc to double
519 ret double %conv 522 ret double %conv
520 } 523 }
521 ; CHECK-LABEL: signed16ToDouble 524 ; CHECK-LABEL: signed16ToDouble
522 ; CHECK: cvtsi2sd 525 ; CHECK: cvtsi2sd
(...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after
1224 define internal double @selectDoubleVarVar(double %a, double %b) { 1227 define internal double @selectDoubleVarVar(double %a, double %b) {
1225 entry: 1228 entry:
1226 %cmp = fcmp olt double %a, %b 1229 %cmp = fcmp olt double %a, %b
1227 %cond = select i1 %cmp, double %a, double %b 1230 %cond = select i1 %cmp, double %a, double %b
1228 ret double %cond 1231 ret double %cond
1229 } 1232 }
1230 ; CHECK-LABEL: selectDoubleVarVar 1233 ; CHECK-LABEL: selectDoubleVarVar
1231 ; CHECK: ucomisd 1234 ; CHECK: ucomisd
1232 ; CHECK: ja {{[0-9]}} 1235 ; CHECK: ja {{[0-9]}}
1233 ; CHECK: fld 1236 ; CHECK: fld
OLDNEW
« no previous file with comments | « tests_lit/llvm2ice_tests/arith-opt.ll ('k') | tests_lit/llvm2ice_tests/ias-multi-reloc.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698