|
141 | 141 | "sf.vqmaccus.4x8x4\t%0,%3,%4" |
142 | 142 | [(set_attr "type" "vsfmuladd") |
143 | 143 | (set_attr "mode" "<MODE>")]) |
| 144 | + |
| 145 | +;; CLIP |
| 146 | +(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> |
| 149 | + (unspec:<VM> |
| 150 | + [(match_operand:<VM> 1 "vector_mask_operand" " vm,vm,Wc1,Wc1,vm,Wc1,vmWc1,vmWc1, vm,Wc1,vmWc1,vmWc1") |
| 151 | + (match_operand 5 "vector_length_operand" " rK,rK, rK, rK,rK, rK, rK, rK, rK, rK, rK, rK") |
| 152 | + (match_operand 6 "const_int_operand" " i, i, i, i, i, i, i, i, i, i, i, i") |
| 153 | + (match_operand 7 "const_int_operand" " i, i, i, i, i, i, i, i, i, i, i, i") |
| 154 | + (match_operand 8 "const_int_operand" " i, i, i, i, i, i, i, i, i, i, i, i") |
| 155 | + (match_operand 9 "const_int_operand" " i, i, i, i, i, i, i, i, i, i, i, i") |
| 156 | + (reg:SI VL_REGNUM) |
| 157 | + (reg:SI VTYPE_REGNUM) |
| 158 | + (reg:SI VXRM_REGNUM)] UNSPEC_VPREDICATE) |
| 159 | + (unspec:<V_DOUBLE_TRUNC> |
| 160 | + [(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")))] |
| 163 | + "TARGET_VECTOR && TARGET_XSFVFNRCLIPXFQF" |
| 164 | + "sf.vfnrclip.x.f.qf%o4\t%0,%3,%v4%p1" |
| 165 | + [(set_attr "type" "vsfclip") |
| 166 | + (set_attr "mode" "<V_DOUBLE_TRUNC>") |
| 167 | + (set_attr "spec_restriction" "thv,thv,thv,thv,thv,thv,none,none,thv,thv,none,none")]) |
| 168 | + |
| 169 | +(define_insn "@pred_fnr_clip<v_su><mode>_scalar" |
| 170 | + [(set (match_operand:<V_DOUBLE_TRUNC> 0 "register_operand" "=vd, vd, vr, vr, &vr, &vr") |
| 171 | + (if_then_else:<V_DOUBLE_TRUNC> |
| 172 | + (unspec:<VM> |
| 173 | + [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,Wc1,vmWc1,vmWc1") |
| 174 | + (match_operand 5 "vector_length_operand" " rK, rK, rK, rK, rK, rK") |
| 175 | + (match_operand 6 "const_int_operand" " i, i, i, i, i, i") |
| 176 | + (match_operand 7 "const_int_operand" " i, i, i, i, i, i") |
| 177 | + (match_operand 8 "const_int_operand" " i, i, i, i, i, i") |
| 178 | + (match_operand 9 "const_int_operand" " i, i, i, i, i, i") |
| 179 | + (reg:SI VL_REGNUM) |
| 180 | + (reg:SI VTYPE_REGNUM) |
| 181 | + (reg:SI VXRM_REGNUM)] UNSPEC_VPREDICATE) |
| 182 | + (unspec:<V_DOUBLE_TRUNC> |
| 183 | + [(match_operand:VWEXTI 3 "register_operand" " 0, 0, 0, 0, vr, vr") |
| 184 | + (match_operand 4 "pmode_reg_or_uimm5_operand" " rK, rK, rK, rK, rK, rK")] VNCLIP) |
| 185 | + (match_operand:<V_DOUBLE_TRUNC> 2 "vector_merge_operand" " vu, 0, vu, 0, vu, 0")))] |
| 186 | + "TARGET_VECTOR && TARGET_XSFVFNRCLIPXFQF" |
| 187 | + "sf.vfnrclip.xu.f.qf%o4\t%0,%3,%4%p1" |
| 188 | + [(set_attr "type" "vsfclip") |
| 189 | + (set_attr "mode" "<V_DOUBLE_TRUNC>") |
| 190 | + (set_attr "spec_restriction" "thv,thv,thv,thv,none,none")]) |
0 commit comments