@@ -103,8 +103,8 @@ define float @brcc_olt(float %a, float %b) nounwind {
103103; CHECK: # %bb.0:
104104; CHECK-NEXT: wfr f8, a3
105105; CHECK-NEXT: wfr f9, a2
106- ; CHECK-NEXT: ule .s b0, f8, f9
107- ; CHECK-NEXT: bt b0, .LBB3_2
106+ ; CHECK-NEXT: olt .s b0, f9, f8
107+ ; CHECK-NEXT: bf b0, .LBB3_2
108108; CHECK-NEXT: # %bb.1: # %t1
109109; CHECK-NEXT: l32r a8, .LCPI3_1
110110; CHECK-NEXT: wfr f8, a8
@@ -135,8 +135,8 @@ define float @brcc_ole(float %a, float %b) nounwind {
135135; CHECK: # %bb.0:
136136; CHECK-NEXT: wfr f8, a3
137137; CHECK-NEXT: wfr f9, a2
138- ; CHECK-NEXT: ult .s b0, f8, f9
139- ; CHECK-NEXT: bt b0, .LBB4_2
138+ ; CHECK-NEXT: ole .s b0, f9, f8
139+ ; CHECK-NEXT: bf b0, .LBB4_2
140140; CHECK-NEXT: # %bb.1: # %t1
141141; CHECK-NEXT: l32r a8, .LCPI4_1
142142; CHECK-NEXT: wfr f8, a8
@@ -232,7 +232,7 @@ define float @brcc_ueq(float %a, float %b) nounwind {
232232; CHECK-NEXT: wfr f8, a3
233233; CHECK-NEXT: wfr f9, a2
234234; CHECK-NEXT: ueq.s b0, f9, f8
235- ; CHECK-NEXT: bt b0, .LBB7_2
235+ ; CHECK-NEXT: bf b0, .LBB7_2
236236; CHECK-NEXT: # %bb.1: # %t1
237237; CHECK-NEXT: l32r a8, .LCPI7_1
238238; CHECK-NEXT: wfr f8, a8
@@ -327,8 +327,8 @@ define float @brcc_ult(float %a, float %b) nounwind {
327327; CHECK: # %bb.0:
328328; CHECK-NEXT: wfr f8, a3
329329; CHECK-NEXT: wfr f9, a2
330- ; CHECK-NEXT: ole .s b0, f8, f9
331- ; CHECK-NEXT: bt b0, .LBB10_2
330+ ; CHECK-NEXT: ult .s b0, f9, f8
331+ ; CHECK-NEXT: bf b0, .LBB10_2
332332; CHECK-NEXT: # %bb.1: # %t1
333333; CHECK-NEXT: l32r a8, .LCPI10_1
334334; CHECK-NEXT: wfr f8, a8
@@ -359,8 +359,8 @@ define float @brcc_ule(float %a, float %b) nounwind {
359359; CHECK: # %bb.0:
360360; CHECK-NEXT: wfr f8, a3
361361; CHECK-NEXT: wfr f9, a2
362- ; CHECK-NEXT: olt .s b0, f8, f9
363- ; CHECK-NEXT: bt b0, .LBB11_2
362+ ; CHECK-NEXT: ule .s b0, f9, f8
363+ ; CHECK-NEXT: bf b0, .LBB11_2
364364; CHECK-NEXT: # %bb.1: # %t1
365365; CHECK-NEXT: l32r a8, .LCPI11_1
366366; CHECK-NEXT: wfr f8, a8
@@ -451,6 +451,21 @@ exit:
451451}
452452
453453define float @copysign_f32 (float %a , float %b ) {
454+ ; CHECK-LABEL: copysign_f32:
455+ ; CHECK: .cfi_startproc
456+ ; CHECK-NEXT: # %bb.0: # %entry
457+ ; CHECK-NEXT: l32r a8, .LCPI14_0
458+ ; CHECK-NEXT: and a8, a3, a8
459+ ; CHECK-NEXT: l32r a9, .LCPI14_1
460+ ; CHECK-NEXT: and a9, a2, a9
461+ ; CHECK-NEXT: wfr f8, a9
462+ ; CHECK-NEXT: movi a9, 0
463+ ; CHECK-NEXT: beq a8, a9, .LBB14_2
464+ ; CHECK-NEXT: # %bb.1:
465+ ; CHECK-NEXT: neg.s f8, f8
466+ ; CHECK-NEXT: .LBB14_2: # %entry
467+ ; CHECK-NEXT: rfr a2, f8
468+ ; CHECK-NEXT: ret
454469entry:
455470 %c = call float @llvm.copysign.f32 (float %a , float %b )
456471 ret float %c
0 commit comments