Skip to content

Commit 3d0a5bf

Browse files
committed
[RISCV] Add Zfa test cases for strict ONE and UEQ comparisons. NFC
These correspond to islessgreater and it inverse.
1 parent 09fd9ef commit 3d0a5bf

File tree

3 files changed

+75
-0
lines changed

3 files changed

+75
-0
lines changed

llvm/test/CodeGen/RISCV/double-zfa.ll

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,31 @@ define i32 @fcmp_ole_q(double %a, double %b) nounwind strictfp {
119119
ret i32 %2
120120
}
121121

122+
define i32 @fcmp_one_q(double %a, double %b) nounwind strictfp {
123+
; CHECK-LABEL: fcmp_one_q:
124+
; CHECK: # %bb.0:
125+
; CHECK-NEXT: fltq.d a0, fa0, fa1
126+
; CHECK-NEXT: fltq.d a1, fa1, fa0
127+
; CHECK-NEXT: or a0, a1, a0
128+
; CHECK-NEXT: ret
129+
%1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"one", metadata !"fpexcept.strict") strictfp
130+
%2 = zext i1 %1 to i32
131+
ret i32 %2
132+
}
133+
134+
define i32 @fcmp_ueq_q(double %a, double %b) nounwind strictfp {
135+
; CHECK-LABEL: fcmp_ueq_q:
136+
; CHECK: # %bb.0:
137+
; CHECK-NEXT: fltq.d a0, fa0, fa1
138+
; CHECK-NEXT: fltq.d a1, fa1, fa0
139+
; CHECK-NEXT: or a0, a1, a0
140+
; CHECK-NEXT: xori a0, a0, 1
141+
; CHECK-NEXT: ret
142+
%1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ueq", metadata !"fpexcept.strict") strictfp
143+
%2 = zext i1 %1 to i32
144+
ret i32 %2
145+
}
146+
122147
define i64 @fmvh_x_d(double %fa) {
123148
; RV32IDZFA-LABEL: fmvh_x_d:
124149
; RV32IDZFA: # %bb.0:

llvm/test/CodeGen/RISCV/float-zfa.ll

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,3 +119,28 @@ define i32 @fcmp_ole_q(float %a, float %b) nounwind strictfp {
119119
%2 = zext i1 %1 to i32
120120
ret i32 %2
121121
}
122+
123+
define i32 @fcmp_one_q(float %a, float %b) nounwind strictfp {
124+
; CHECK-LABEL: fcmp_one_q:
125+
; CHECK: # %bb.0:
126+
; CHECK-NEXT: fltq.s a0, fa0, fa1
127+
; CHECK-NEXT: fltq.s a1, fa1, fa0
128+
; CHECK-NEXT: or a0, a1, a0
129+
; CHECK-NEXT: ret
130+
%1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"one", metadata !"fpexcept.strict") strictfp
131+
%2 = zext i1 %1 to i32
132+
ret i32 %2
133+
}
134+
135+
define i32 @fcmp_ueq_q(float %a, float %b) nounwind strictfp {
136+
; CHECK-LABEL: fcmp_ueq_q:
137+
; CHECK: # %bb.0:
138+
; CHECK-NEXT: fltq.s a0, fa0, fa1
139+
; CHECK-NEXT: fltq.s a1, fa1, fa0
140+
; CHECK-NEXT: or a0, a1, a0
141+
; CHECK-NEXT: xori a0, a0, 1
142+
; CHECK-NEXT: ret
143+
%1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ueq", metadata !"fpexcept.strict") strictfp
144+
%2 = zext i1 %1 to i32
145+
ret i32 %2
146+
}

llvm/test/CodeGen/RISCV/half-zfa.ll

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,28 @@ define i32 @fcmp_ole_q(half %a, half %b) nounwind strictfp {
118118
%2 = zext i1 %1 to i32
119119
ret i32 %2
120120
}
121+
122+
define i32 @fcmp_one_q(half %a, half %b) nounwind strictfp {
123+
; CHECK-LABEL: fcmp_one_q:
124+
; CHECK: # %bb.0:
125+
; CHECK-NEXT: fltq.h a0, fa0, fa1
126+
; CHECK-NEXT: fltq.h a1, fa1, fa0
127+
; CHECK-NEXT: or a0, a1, a0
128+
; CHECK-NEXT: ret
129+
%1 = call i1 @llvm.experimental.constrained.fcmp.f16(half %a, half %b, metadata !"one", metadata !"fpexcept.strict") strictfp
130+
%2 = zext i1 %1 to i32
131+
ret i32 %2
132+
}
133+
134+
define i32 @fcmp_ueq_q(half %a, half %b) nounwind strictfp {
135+
; CHECK-LABEL: fcmp_ueq_q:
136+
; CHECK: # %bb.0:
137+
; CHECK-NEXT: fltq.h a0, fa0, fa1
138+
; CHECK-NEXT: fltq.h a1, fa1, fa0
139+
; CHECK-NEXT: or a0, a1, a0
140+
; CHECK-NEXT: xori a0, a0, 1
141+
; CHECK-NEXT: ret
142+
%1 = call i1 @llvm.experimental.constrained.fcmp.f16(half %a, half %b, metadata !"ueq", metadata !"fpexcept.strict") strictfp
143+
%2 = zext i1 %1 to i32
144+
ret i32 %2
145+
}

0 commit comments

Comments
 (0)