|  | ; Ensure that floating point operations are lowered to function calls when the | 
|  | ; FPU is not available in the hardware and that function calls are not used | 
|  | ; when the FPU is available in the hardware. | 
|  | ; | 
|  | ; RUN: llc < %s -march=mblaze | FileCheck -check-prefix=FUN %s | 
|  | ; RUN: llc < %s -march=mblaze -mattr=+fpu | FileCheck -check-prefix=FPU %s | 
|  |  | 
|  | define float @test_add(float %a, float %b) { | 
|  | ; FUN:        test_add: | 
|  | ; FPU:        test_add: | 
|  |  | 
|  | %tmp.1 = fadd float %a, %b | 
|  | ; FUN:        brlid | 
|  | ; FPU-NOT:    brlid | 
|  |  | 
|  | ret float %tmp.1 | 
|  | ; FUN:        rtsd | 
|  | ; FPU:        rtsd | 
|  | ; FUN-NOT:    fadd | 
|  | ; FPU-NEXT:   fadd | 
|  | } | 
|  |  | 
|  | define float @test_sub(float %a, float %b) { | 
|  | ; FUN:        test_sub: | 
|  | ; FPU:        test_sub: | 
|  |  | 
|  | %tmp.1 = fsub float %a, %b | 
|  | ; FUN:        brlid | 
|  | ; FPU-NOT:    brlid | 
|  |  | 
|  | ret float %tmp.1 | 
|  | ; FUN:        rtsd | 
|  | ; FPU:        rtsd | 
|  | ; FUN-NOT:    frsub | 
|  | ; FPU-NEXT:   frsub | 
|  | } | 
|  |  | 
|  | define float @test_mul(float %a, float %b) { | 
|  | ; FUN:        test_mul: | 
|  | ; FPU:        test_mul: | 
|  |  | 
|  | %tmp.1 = fmul float %a, %b | 
|  | ; FUN:        brlid | 
|  | ; FPU-NOT:    brlid | 
|  |  | 
|  | ret float %tmp.1 | 
|  | ; FUN:        rtsd | 
|  | ; FPU:        rtsd | 
|  | ; FUN-NOT:    fmul | 
|  | ; FPU-NEXT:   fmul | 
|  | } | 
|  |  | 
|  | define float @test_div(float %a, float %b) { | 
|  | ; FUN:        test_div: | 
|  | ; FPU:        test_div: | 
|  |  | 
|  | %tmp.1 = fdiv float %a, %b | 
|  | ; FUN:        brlid | 
|  | ; FPU-NOT:    brlid | 
|  |  | 
|  | ret float %tmp.1 | 
|  | ; FUN:        rtsd | 
|  | ; FPU:        rtsd | 
|  | ; FUN-NOT:    fdiv | 
|  | ; FPU-NEXT:   fdiv | 
|  | } |