1 ; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 -enable-unsafe-fp-math | FileCheck %s 2 ; RUN: llc < %s -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 -enable-unsafe-fp-math | FileCheck %s 3 @a = global float 3.000000e+00, align 4 4 @b = global float 4.000000e+00, align 4 5 @c = global double 3.000000e+00, align 8 6 @d = global double 4.000000e+00, align 8 7 8 ; Function Attrs: nounwind 9 define float @emit_xsresp() { 10 entry: 11 %0 = load float, float* @a, align 4 12 %1 = load float, float* @b, align 4 13 %div = fdiv fast float %0, %1 14 ret float %div 15 ; CHECK-LABEL: @emit_xsresp 16 ; CHECK: xsresp {{[0-9]+}} 17 } 18 19 ; Function Attrs: nounwind 20 define float @emit_xsrsqrtesp(float %f) { 21 entry: 22 %f.addr = alloca float, align 4 23 store float %f, float* %f.addr, align 4 24 %0 = load float, float* %f.addr, align 4 25 %1 = load float, float* @b, align 4 26 %2 = call float @llvm.sqrt.f32(float %1) 27 %div = fdiv fast float %0, %2 28 ret float %div 29 ; CHECK-LABEL: @emit_xsrsqrtesp 30 ; CHECK: xsrsqrtesp {{[0-9]+}} 31 } 32 33 ; Function Attrs: nounwind readnone 34 declare float @llvm.sqrt.f32(float) 35 36 ; Function Attrs: nounwind 37 define double @emit_xsredp() { 38 entry: 39 %0 = load double, double* @c, align 8 40 %1 = load double, double* @d, align 8 41 %div = fdiv fast double %0, %1 42 ret double %div 43 ; CHECK-LABEL: @emit_xsredp 44 ; CHECK: xsredp {{[0-9]+}} 45 } 46 47 ; Function Attrs: nounwind 48 define double @emit_xsrsqrtedp(double %f) { 49 entry: 50 %f.addr = alloca double, align 8 51 store double %f, double* %f.addr, align 8 52 %0 = load double, double* %f.addr, align 8 53 %1 = load double, double* @d, align 8 54 %2 = call double @llvm.sqrt.f64(double %1) 55 %div = fdiv fast double %0, %2 56 ret double %div 57 ; CHECK-LABEL: @emit_xsrsqrtedp 58 ; CHECK: xsrsqrtedp {{[0-9]+}} 59 } 60 61 ; Function Attrs: nounwind readnone 62 declare double @llvm.sqrt.f64(double) #1 63