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

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

Issue 634333002: emitIAS for fld and fstp (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: handle st(0) 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') | 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 ; 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 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 409
410 define internal double @signed64ToDouble(i64 %a) { 410 define internal double @signed64ToDouble(i64 %a) {
411 entry: 411 entry:
412 %conv = sitofp i64 %a to double 412 %conv = sitofp i64 %a to double
413 ret double %conv 413 ret double %conv
414 } 414 }
415 ; CHECK-LABEL: signed64ToDouble 415 ; CHECK-LABEL: signed64ToDouble
416 ; CALLTARGETS-LABEL: signed64ToDouble 416 ; CALLTARGETS-LABEL: signed64ToDouble
417 ; CHECK: call -4 417 ; CHECK: call -4
418 ; CALLTARGETS: call cvtsi64tod 418 ; CALLTARGETS: call cvtsi64tod
419 ; CHECK: fstp 419 ; CHECK: fstp qword
420 420
421 define internal float @signed64ToFloat(i64 %a) { 421 define internal float @signed64ToFloat(i64 %a) {
422 entry: 422 entry:
423 %conv = sitofp i64 %a to float 423 %conv = sitofp i64 %a to float
424 ret float %conv 424 ret float %conv
425 } 425 }
426 ; CHECK-LABEL: signed64ToFloat 426 ; CHECK-LABEL: signed64ToFloat
427 ; CALLTARGETS-LABEL: signed64ToFloat 427 ; CALLTARGETS-LABEL: signed64ToFloat
428 ; CHECK: call -4 428 ; CHECK: call -4
429 ; CALLTARGETS: call cvtsi64tof 429 ; CALLTARGETS: call cvtsi64tof
430 ; CHECK: fstp 430 ; CHECK: fstp dword
431 431
432 define internal double @unsigned64ToDouble(i64 %a) { 432 define internal double @unsigned64ToDouble(i64 %a) {
433 entry: 433 entry:
434 %conv = uitofp i64 %a to double 434 %conv = uitofp i64 %a to double
435 ret double %conv 435 ret double %conv
436 } 436 }
437 ; CHECK-LABEL: unsigned64ToDouble 437 ; CHECK-LABEL: unsigned64ToDouble
438 ; CALLTARGETS-LABEL: unsigned64ToDouble 438 ; CALLTARGETS-LABEL: unsigned64ToDouble
439 ; CHECK: call -4 439 ; CHECK: call -4
440 ; CALLTARGETS: call cvtui64tod 440 ; CALLTARGETS: call cvtui64tod
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 493
494 define internal double @unsigned32ToDouble(i32 %a) { 494 define internal double @unsigned32ToDouble(i32 %a) {
495 entry: 495 entry:
496 %conv = uitofp i32 %a to double 496 %conv = uitofp i32 %a to double
497 ret double %conv 497 ret double %conv
498 } 498 }
499 ; CHECK-LABEL: unsigned32ToDouble 499 ; CHECK-LABEL: unsigned32ToDouble
500 ; CALLTARGETS-LABEL: unsigned32ToDouble 500 ; CALLTARGETS-LABEL: unsigned32ToDouble
501 ; CHECK: call -4 501 ; CHECK: call -4
502 ; CALLTARGETS: call cvtui32tod 502 ; CALLTARGETS: call cvtui32tod
503 ; CHECK: fstp 503 ; CHECK: fstp qword
504 504
505 define internal float @unsigned32ToFloat(i32 %a) { 505 define internal float @unsigned32ToFloat(i32 %a) {
506 entry: 506 entry:
507 %conv = uitofp i32 %a to float 507 %conv = uitofp i32 %a to float
508 ret float %conv 508 ret float %conv
509 } 509 }
510 ; CHECK-LABEL: unsigned32ToFloat 510 ; CHECK-LABEL: unsigned32ToFloat
511 ; CALLTARGETS-LABEL: unsigned32ToFloat 511 ; CALLTARGETS-LABEL: unsigned32ToFloat
512 ; CHECK: call -4 512 ; CHECK: call -4
513 ; CALLTARGETS: call cvtui32tof 513 ; CALLTARGETS: call cvtui32tof
514 ; CHECK: fstp 514 ; CHECK: fstp dword
515 515
516 define internal double @signed16ToDouble(i32 %a) { 516 define internal double @signed16ToDouble(i32 %a) {
517 entry: 517 entry:
518 %a.arg_trunc = trunc i32 %a to i16 518 %a.arg_trunc = trunc i32 %a to i16
519 %conv = sitofp i16 %a.arg_trunc to double 519 %conv = sitofp i16 %a.arg_trunc to double
520 ret double %conv 520 ret double %conv
521 } 521 }
522 ; CHECK-LABEL: signed16ToDouble 522 ; CHECK-LABEL: signed16ToDouble
523 ; CHECK: cvtsi2sd 523 ; CHECK: cvtsi2sd
524 ; CHECK: fld 524 ; CHECK: fld qword
525 525
526 define internal float @signed16ToFloat(i32 %a) { 526 define internal float @signed16ToFloat(i32 %a) {
527 entry: 527 entry:
528 %a.arg_trunc = trunc i32 %a to i16 528 %a.arg_trunc = trunc i32 %a to i16
529 %conv = sitofp i16 %a.arg_trunc to float 529 %conv = sitofp i16 %a.arg_trunc to float
530 ret float %conv 530 ret float %conv
531 } 531 }
532 ; CHECK-LABEL: signed16ToFloat 532 ; CHECK-LABEL: signed16ToFloat
533 ; CHECK: cvtsi2ss 533 ; CHECK: cvtsi2ss
534 ; CHECK: fld 534 ; CHECK: fld dword
535 535
536 define internal double @unsigned16ToDouble(i32 %a) { 536 define internal double @unsigned16ToDouble(i32 %a) {
537 entry: 537 entry:
538 %a.arg_trunc = trunc i32 %a to i16 538 %a.arg_trunc = trunc i32 %a to i16
539 %conv = uitofp i16 %a.arg_trunc to double 539 %conv = uitofp i16 %a.arg_trunc to double
540 ret double %conv 540 ret double %conv
541 } 541 }
542 ; CHECK-LABEL: unsigned16ToDouble 542 ; CHECK-LABEL: unsigned16ToDouble
543 ; CHECK: cvtsi2sd 543 ; CHECK: cvtsi2sd
544 ; CHECK: fld 544 ; CHECK: fld
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after
1227 %cmp = fcmp olt double %a, %b 1227 %cmp = fcmp olt double %a, %b
1228 %cond = select i1 %cmp, double %a, double %b 1228 %cond = select i1 %cmp, double %a, double %b
1229 ret double %cond 1229 ret double %cond
1230 } 1230 }
1231 ; CHECK-LABEL: selectDoubleVarVar 1231 ; CHECK-LABEL: selectDoubleVarVar
1232 ; CHECK: ucomisd 1232 ; CHECK: ucomisd
1233 ; CHECK: ja {{[0-9]}} 1233 ; CHECK: ja {{[0-9]}}
1234 ; CHECK: fld 1234 ; CHECK: fld
1235 1235
1236 ; ERRORS-NOT: ICE translation error 1236 ; ERRORS-NOT: ICE translation error
OLDNEW
« no previous file with comments | « src/assembler_ia32.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698