| 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 |