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