Home | History | Annotate | Download | only in PowerPC
      1 ; RUN: llc -mcpu=pwr7 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s
      2 target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
      3 target triple = "powerpc64-unknown-linux-gnu"
      4 
      5 define double @foo_d_ll(ppc_fp128 %a, ppc_fp128 %b) #0 {
      6 entry:
      7   %call = tail call ppc_fp128 @copysignl(ppc_fp128 %a, ppc_fp128 %b) #0
      8   %conv = fptrunc ppc_fp128 %call to double
      9   ret double %conv
     10 
     11 ; CHECK-LABEL: @foo_d_ll
     12 ; CHECK: fcpsgn 1, 3, 1
     13 ; CHECK: blr
     14 }
     15 
     16 declare ppc_fp128 @copysignl(ppc_fp128, ppc_fp128) #0
     17 
     18 define double @foo_dl(double %a, ppc_fp128 %b) #0 {
     19 entry:
     20   %conv = fptrunc ppc_fp128 %b to double
     21   %call = tail call double @copysign(double %a, double %conv) #0
     22   ret double %call
     23 
     24 ; CHECK-LABEL: @foo_dl
     25 ; CHECK: fcpsgn 1, 2, 1
     26 ; CHECK: blr
     27 }
     28 
     29 declare double @copysign(double, double) #0
     30 
     31 define ppc_fp128 @foo_ll(double %a, ppc_fp128 %b) #0 {
     32 entry:
     33   %conv = fpext double %a to ppc_fp128
     34   %call = tail call ppc_fp128 @copysignl(ppc_fp128 %conv, ppc_fp128 %b) #0
     35   ret ppc_fp128 %call
     36 
     37 ; CHECK-LABEL: @foo_ll
     38 ; CHECK: bl copysignl
     39 ; CHECK: blr
     40 }
     41 
     42 define ppc_fp128 @foo_ld(double %a, double %b) #0 {
     43 entry:
     44   %conv = fpext double %a to ppc_fp128
     45   %conv1 = fpext double %b to ppc_fp128
     46   %call = tail call ppc_fp128 @copysignl(ppc_fp128 %conv, ppc_fp128 %conv1) #0
     47   ret ppc_fp128 %call
     48 
     49 ; CHECK-LABEL: @foo_ld
     50 ; CHECK: bl copysignl
     51 ; CHECK: blr
     52 }
     53 
     54 define ppc_fp128 @foo_lf(double %a, float %b) #0 {
     55 entry:
     56   %conv = fpext double %a to ppc_fp128
     57   %conv1 = fpext float %b to ppc_fp128
     58   %call = tail call ppc_fp128 @copysignl(ppc_fp128 %conv, ppc_fp128 %conv1) #0
     59   ret ppc_fp128 %call
     60 
     61 ; CHECK-LABEL: @foo_lf
     62 ; CHECK: bl copysignl
     63 ; CHECK: blr
     64 }
     65 
     66 attributes #0 = { nounwind readnone }
     67 
     68