1# RUN: llc -march=nvptx -mcpu=sm_20 -run-pass none -o - %s | FileCheck %s 2# This test ensures that the MIR parser parses floating point constant operands 3# correctly. 4 5--- | 6 7 define float @test(float %k, i32 %i) { 8 entry: 9 %0 = fpext float %k to double 10 %1 = fadd double %0, 3.250000e+00 11 %2 = fptrunc double %1 to float 12 %3 = sitofp i32 %i to float 13 %4 = fadd float %3, 6.250000e+00 14 %5 = fmul float %4, %2 15 ret float %5 16 } 17 18 define float @test2(float %k, i32 %i) { 19 entry: 20 %0 = fpext float %k to double 21 %1 = fadd double %0, 0x7FF8000000000000 22 %2 = fptrunc double %1 to float 23 %3 = sitofp i32 %i to float 24 %4 = fadd float %3, 0x7FF8000000000000 25 %5 = fmul float %4, %2 26 ret float %5 27 } 28 29... 30--- 31name: test 32registers: 33 - { id: 0, class: float32regs } 34 - { id: 1, class: float64regs } 35 - { id: 2, class: int32regs } 36 - { id: 3, class: float64regs } 37 - { id: 4, class: float32regs } 38 - { id: 5, class: float32regs } 39 - { id: 6, class: float32regs } 40 - { id: 7, class: float32regs } 41body: | 42 bb.0.entry: 43 %0 = LD_f32_avar 0, 4, 1, 2, 32, &test_param_0 44 %1 = CVT_f64_f32 %0, 0 45 %2 = LD_i32_avar 0, 4, 1, 0, 32, &test_param_1 46 ; CHECK: %3:float64regs = FADD_rnf64ri %1, double 3.250000e+00 47 %3 = FADD_rnf64ri %1, double 3.250000e+00 48 %4 = CVT_f32_f64 %3, 5 49 %5 = CVT_f32_s32 %2, 5 50 ; CHECK: %6:float32regs = FADD_rnf32ri %5, float 6.250000e+00 51 %6 = FADD_rnf32ri %5, float 6.250000e+00 52 %7 = FMUL_rnf32rr %6, %4 53 StoreRetvalF32 %7, 0 54 Return 55... 56--- 57name: test2 58registers: 59 - { id: 0, class: float32regs } 60 - { id: 1, class: float64regs } 61 - { id: 2, class: int32regs } 62 - { id: 3, class: float64regs } 63 - { id: 4, class: float32regs } 64 - { id: 5, class: float32regs } 65 - { id: 6, class: float32regs } 66 - { id: 7, class: float32regs } 67body: | 68 bb.0.entry: 69 %0 = LD_f32_avar 0, 4, 1, 2, 32, &test2_param_0 70 %1 = CVT_f64_f32 %0, 0 71 %2 = LD_i32_avar 0, 4, 1, 0, 32, &test2_param_1 72 ; CHECK: %3:float64regs = FADD_rnf64ri %1, double 0x7FF8000000000000 73 %3 = FADD_rnf64ri %1, double 0x7FF8000000000000 74 %4 = CVT_f32_f64 %3, 5 75 %5 = CVT_f32_s32 %2, 5 76 ; CHECK: %6:float32regs = FADD_rnf32ri %5, float 0x7FF8000000000000 77 %6 = FADD_rnf32ri %5, float 0x7FF8000000000000 78 %7 = FMUL_rnf32rr %6, %4 79 StoreRetvalF32 %7, 0 80 Return 81... 82