1 ; RUN: llc < %s -asm-verbose=false | FileCheck %s 2 3 ; DAGCombiner oddly folds casts into the rhs of copysign. Test that they get 4 ; unfolded. 5 6 target datalayout = "e-p:32:32-i64:64-n32:64-S128" 7 target triple = "wasm32-unknown-unknown" 8 9 declare double @copysign(double, double) nounwind readnone 10 declare float @copysignf(float, float) nounwind readnone 11 12 ; CHECK-LABEL: fold_promote: 13 ; CHECK: f64.promote/f32 $push0=, $1{{$}} 14 ; CHECK: f64.copysign $push1=, $0, $pop0{{$}} 15 define double @fold_promote(double %a, float %b) { 16 %c = fpext float %b to double 17 %t = call double @copysign(double %a, double %c) 18 ret double %t 19 } 20 21 ; CHECK-LABEL: fold_demote:{{$}} 22 ; CHECK: f32.demote/f64 $push0=, $1{{$}} 23 ; CHECK: f32.copysign $push1=, $0, $pop0{{$}} 24 define float @fold_demote(float %a, double %b) { 25 %c = fptrunc double %b to float 26 %t = call float @copysignf(float %a, float %c) 27 ret float %t 28 } 29