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 6target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" 7target triple = "wasm32-unknown-unknown" 8 9declare double @copysign(double, double) nounwind readnone 10declare 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{{$}} 15define 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{{$}} 24define 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