OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |