https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114714

--- Comment #2 from Li Pan <pan2.li at intel dot com> ---
The vzext.vf2 has earlyclobber dest operand, and then it cannot allocated to
the source operand, like vzext.vf2 v0, v0.  Thus we will fail when check_rtl.

(define_insn "@pred_<optab><mode>_vf2"
  [(set (match_operand:VWEXTI 0 "register_operand"                 "=vd, vr,
vd, vr, vd, vr, vd, vr, vd, vr, vd, vr, ?&vr, ?&vr")
........(if_then_else:VWEXTI
........  (unspec:<VM>
........    [(match_operand:<VM> 1 "vector_mask_operand"           " vm,Wc1,
vm,Wc1, vm,Wc1, vm,Wc1, vm,Wc1, vm,Wc1,vmWc1,vmWc1")
........     (match_operand 4 "vector_length_operand"              " rK, rK,
rK, rK, rK, rK, rK, rK, rK, rK, rK, rK,   rK,   rK")
........     (match_operand 5 "const_int_operand"                  "i,  i,  i, 
i,  i,  i,  i,  i,  i,  i,  i,  i,    i,    i")
........     (match_operand 6 "const_int_operand"                  "i,  i,  i, 
i,  i,  i,  i,  i,  i,  i,  i,  i,    i,    i")
........     (match_operand 7 "const_int_operand"                  "i,  i,  i, 
i,  i,  i,  i,  i,  i,  i,  i,  i,    i,    i")
........     (reg:SI VL_REGNUM)
........     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
........  (any_extend:VWEXTI
........    (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand"  
"W21,W21,W21,W21,W42,W42,W42,W42,W84,W84,W84,W84,   vr,   vr"))
........  (match_operand:VWEXTI 2 "vector_merge_operand"           " vu, vu, 
0,  0, vu, vu,  0,  0, vu, vu,  0,  0,   vu,    0")))]
  "TARGET_VECTOR"
  "v<sz>ext.vf2\t%0,%3%p1"
  [(set_attr "type" "vext")
   (set_attr "mode" "<MODE>")
   (set_attr "group_overlap"
"W21,W21,W21,W21,W42,W42,W42,W42,W84,W84,W84,W84,none,none")])

----------------------------------------------------------------------------------------------------

insn 1205 1214 5405 70 (set (reg:RVVM1SI 97 v1 [orig:687 _1177 ] [687])
        (if_then_else:RVVM1SI (unspec:RVVMF32BI [
                    (const_vector:RVVMF32BI repeat [
                            (const_int 1 [0x1])
                        ])
                    (reg:DI 25 s9 [orig:539 _889 ] [539])
                    (const_int 2 [0x2]) repeated x2
                    (const_int 0 [0])
                    (reg:SI 66 vl)
                    (reg:SI 67 vtype)
                ] UNSPEC_VPREDICATE)
            (zero_extend:RVVM1SI (reg:RVVMF2HI 97 v1 [orig:654 _1100 ] [654]))
            (unspec:RVVM1SI [
                    (reg:DI 0 zero)
                ] UNSPEC_VUNDEF))) "../hwy/ops/rvv-inl.h":1964:386 discrim 1
8452 {pred_zero_extendrvvm1si_vf2}
     (nil))
during RTL pass: reload

Reply via email to