Skip to content

Commit 584fce9

Browse files
committed
Add V_SF_FNRCLIPXFQF and V_SF_FNRCLIP iterator
1 parent be28eaa commit 584fce9

File tree

3 files changed

+26
-7
lines changed

3 files changed

+26
-7
lines changed

gcc/config/riscv/riscv-vector-builtins-bases.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -710,7 +710,6 @@ class vfnrclip : public function_base
710710
{
711711
public:
712712
bool has_merge_operand_p () const override { return false; }
713-
bool may_require_qfrm_p () const override { return true; }
714713
bool can_be_overloaded_p (enum predication_type_index pred) const override
715714
{
716715
if (pred == PRED_TYPE_mu || pred == PRED_TYPE_tu || pred == PRED_TYPE_tumu)

gcc/config/riscv/sifive-vector.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,8 @@
144144

145145
;; CLIP
146146
(define_insn "@pred_fnr_clip<v_su><mode>"
147-
[(set (match_operand:<V_DOUBLE_TRUNC> 0 "register_operand" "=vd,vd, vr, vr,vd, vr, &vr, &vr, vd, vr, &vr, &vr")
148-
(if_then_else:<V_DOUBLE_TRUNC>
147+
[(set (match_operand:<V_SF_FNRCLIPXFQF> 0 "register_operand" "=vd,vd, vr, vr,vd, vr, &vr, &vr, vd, vr, &vr, &vr")
148+
(if_then_else:<V_SF_FNRCLIPXFQF>
149149
(unspec:<VM>
150150
[(match_operand:<VM> 1 "vector_mask_operand" " vm,vm,Wc1,Wc1,vm,Wc1,vmWc1,vmWc1, vm,Wc1,vmWc1,vmWc1")
151151
(match_operand 5 "vector_length_operand" " rK,rK, rK, rK,rK, rK, rK, rK, rK, rK, rK, rK")
@@ -156,14 +156,14 @@
156156
(reg:SI VL_REGNUM)
157157
(reg:SI VTYPE_REGNUM)
158158
(reg:SI VXRM_REGNUM)] UNSPEC_VPREDICATE)
159-
(unspec:<V_DOUBLE_TRUNC>
159+
(unspec:<V_SF_FNRCLIPXFQF>
160160
[(match_operand:VWEXTI 3 "register_operand" " vr,vr, vr, vr, 0, 0, vr, vr, 0, 0, vr, vr")
161-
(match_operand:<V_DOUBLE_TRUNC> 4 "vector_shift_operand" " 0, 0, 0, 0,vr, vr, vr, vr, vk, vk, vk, vk")] VNCLIP)
162-
(match_operand:<V_DOUBLE_TRUNC> 2 "vector_merge_operand" " 0,vu, 0, vu,vu, vu, vu, 0, vu, vu, vu, 0")))]
161+
(match_operand:<V_SF_FNRCLIPXFQF> 4 "vector_shift_operand" " 0, 0, 0, 0,vr, vr, vr, vr, vk, vk, vk, vk")] VNCLIP)
162+
(match_operand:<V_SF_FNRCLIPXFQF> 2 "vector_merge_operand" " 0,vu, 0, vu,vu, vu, vu, 0, vu, vu, vu, 0")))]
163163
"TARGET_VECTOR && TARGET_XSFVFNRCLIPXFQF"
164164
"sf.vfnrclip.x.f.qf%o4\t%0,%3,%v4%p1"
165165
[(set_attr "type" "vsfclip")
166-
(set_attr "mode" "<V_DOUBLE_TRUNC>")
166+
(set_attr "mode" "<V_SF_FNRCLIPXFQF>")
167167
(set_attr "spec_restriction" "thv,thv,thv,thv,thv,thv,none,none,thv,thv,none,none")])
168168

169169
(define_insn "@pred_fnr_clip<v_su><mode>_scalar"

gcc/config/riscv/vector-iterators.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4530,3 +4530,23 @@
45304530
(RVVM2SI "rvvm1qi")
45314531
(RVVM1SI "rvvmf2qi")
45324532
])
4533+
4534+
(define_mode_iterator V_SF_FNRCLIP [
4535+
RVVMF8QI RVVMF4QI RVVMF2QI RVVM1QI RVVM2QI
4536+
])
4537+
4538+
(define_mode_attr V_SF_FNRCLIPXFQF [
4539+
(RVVMF2SF "RVVMF8QI")
4540+
(RVVM1SF "RVVMF4QI")
4541+
(RVVM2SF "RVVMF2QI")
4542+
(RVVM4SF "RVVM1QI")
4543+
(RVVM8SF "RVVM2QI")
4544+
])
4545+
4546+
(define_mode_attr v_sf_fnrclipxfqf [
4547+
(RVVMF2SF "rvvmf8qi")
4548+
(RVVM1SF "rvvmf4qi")
4549+
(RVVM2SF "rvvmf2qi")
4550+
(RVVM4SF "rvvm1qi")
4551+
(RVVM8SF "rvvm2qi")
4552+
])

0 commit comments

Comments
 (0)