@@ -82,14 +82,34 @@ define float @not_known_positive_sign_arg(float %x, float %y) {
82
82
83
83
define float @copysign_sign_arg (float %x , float %y , float %z ) {
84
84
; CHECK-LABEL: @copysign_sign_arg(
85
- ; CHECK-NEXT: [[R:%.*]] = call ninf float @llvm.copysign.f32(float [[X:%.*]], float [[Z:%.*]])
85
+ ; CHECK-NEXT: [[R:%.*]] = call float @llvm.copysign.f32(float [[X:%.*]], float [[Z:%.*]])
86
86
; CHECK-NEXT: ret float [[R]]
87
87
;
88
88
%s = call reassoc float @llvm.copysign.f32 (float %y , float %z )
89
89
%r = call ninf float @llvm.copysign.f32 (float %x , float %s )
90
90
ret float %r
91
91
}
92
92
93
+ define float @copysign_sign_arg_nnan (float %x , float %y , float %z ) {
94
+ ; CHECK-LABEL: @copysign_sign_arg_nnan(
95
+ ; CHECK-NEXT: [[R:%.*]] = call nnan float @llvm.copysign.f32(float [[X:%.*]], float [[Z:%.*]])
96
+ ; CHECK-NEXT: ret float [[R]]
97
+ ;
98
+ %s = call nnan float @llvm.copysign.f32 (float %y , float %z )
99
+ %r = call nnan float @llvm.copysign.f32 (float %x , float %s )
100
+ ret float %r
101
+ }
102
+
103
+ define float @copysign_sign_arg_mixed (float %x , float %y , float %z ) {
104
+ ; CHECK-LABEL: @copysign_sign_arg_mixed(
105
+ ; CHECK-NEXT: [[R:%.*]] = call nsz float @llvm.copysign.f32(float [[X:%.*]], float [[Z:%.*]])
106
+ ; CHECK-NEXT: ret float [[R]]
107
+ ;
108
+ %s = call ninf nsz float @llvm.copysign.f32 (float %y , float %z )
109
+ %r = call nnan nsz float @llvm.copysign.f32 (float %x , float %s )
110
+ ret float %r
111
+ }
112
+
93
113
define float @fneg_mag (float %x , float %y ) {
94
114
; CHECK-LABEL: @fneg_mag(
95
115
; CHECK-NEXT: [[R:%.*]] = call float @llvm.copysign.f32(float [[X:%.*]], float [[Y:%.*]])
0 commit comments