| # RUN: llc -march=nvptx -mcpu=sm_20 -run-pass none -o - %s | FileCheck %s |
| # This test ensures that the MIR parser parses floating point constant operands |
| # correctly. |
| |
| --- | |
| |
| define float @test(float %k, i32 %i) { |
| entry: |
| %0 = fpext float %k to double |
| %1 = fadd double %0, 3.250000e+00 |
| %2 = fptrunc double %1 to float |
| %3 = sitofp i32 %i to float |
| %4 = fadd float %3, 6.250000e+00 |
| %5 = fmul float %4, %2 |
| ret float %5 |
| } |
| |
| define float @test2(float %k, i32 %i) { |
| entry: |
| %0 = fpext float %k to double |
| %1 = fadd double %0, 0x7FF8000000000000 |
| %2 = fptrunc double %1 to float |
| %3 = sitofp i32 %i to float |
| %4 = fadd float %3, 0x7FF8000000000000 |
| %5 = fmul float %4, %2 |
| ret float %5 |
| } |
| |
| ... |
| --- |
| name: test |
| registers: |
| - { id: 0, class: float32regs } |
| - { id: 1, class: float64regs } |
| - { id: 2, class: int32regs } |
| - { id: 3, class: float64regs } |
| - { id: 4, class: float32regs } |
| - { id: 5, class: float32regs } |
| - { id: 6, class: float32regs } |
| - { id: 7, class: float32regs } |
| body: | |
| bb.0.entry: |
| %0 = LD_f32_avar 0, 4, 1, 2, 32, &test_param_0 |
| %1 = CVT_f64_f32 %0, 0 |
| %2 = LD_i32_avar 0, 4, 1, 0, 32, &test_param_1 |
| ; CHECK: %3:float64regs = FADD_rnf64ri %1, double 3.250000e+00 |
| %3 = FADD_rnf64ri %1, double 3.250000e+00 |
| %4 = CVT_f32_f64 %3, 5 |
| %5 = CVT_f32_s32 %2, 5 |
| ; CHECK: %6:float32regs = FADD_rnf32ri %5, float 6.250000e+00 |
| %6 = FADD_rnf32ri %5, float 6.250000e+00 |
| %7 = FMUL_rnf32rr %6, %4 |
| StoreRetvalF32 %7, 0 |
| Return |
| ... |
| --- |
| name: test2 |
| registers: |
| - { id: 0, class: float32regs } |
| - { id: 1, class: float64regs } |
| - { id: 2, class: int32regs } |
| - { id: 3, class: float64regs } |
| - { id: 4, class: float32regs } |
| - { id: 5, class: float32regs } |
| - { id: 6, class: float32regs } |
| - { id: 7, class: float32regs } |
| body: | |
| bb.0.entry: |
| %0 = LD_f32_avar 0, 4, 1, 2, 32, &test2_param_0 |
| %1 = CVT_f64_f32 %0, 0 |
| %2 = LD_i32_avar 0, 4, 1, 0, 32, &test2_param_1 |
| ; CHECK: %3:float64regs = FADD_rnf64ri %1, double 0x7FF8000000000000 |
| %3 = FADD_rnf64ri %1, double 0x7FF8000000000000 |
| %4 = CVT_f32_f64 %3, 5 |
| %5 = CVT_f32_s32 %2, 5 |
| ; CHECK: %6:float32regs = FADD_rnf32ri %5, float 0x7FF8000000000000 |
| %6 = FADD_rnf32ri %5, float 0x7FF8000000000000 |
| %7 = FMUL_rnf32rr %6, %4 |
| StoreRetvalF32 %7, 0 |
| Return |
| ... |