Lines Matching refs:Vector
10 /// support code generation for the standard 'V' (Vector) extension, version
367 vti.Vector, vti.Vector, vti.Vector, vti.Mask,
370 vti.Vector, vti.Vector, vti.Vector, vti.Mask,
380 vti.Vector, vti.Vector, vti.Vector, vti.Mask,
392 wti.Vector, vti.Vector, vti.Vector, vti.Mask,
395 wti.Vector, vti.Vector, vti.Vector, vti.Mask,
406 wti.Vector, wti.Vector, vti.Vector, vti.Mask,
409 wti.Vector, wti.Vector, vti.Vector, vti.Mask,
437 vti.Vector, vti.Vector, vti.Vector, vti.Mask,
440 vti.Vector, vti.Vector, vti.Mask, vti.Log2SEW,
447 def : Pat<(fvti.Vector (vop (SplatFPOp fvti.ScalarRegClass:$rs2),
452 (fvti.Vector (IMPLICIT_DEF)),
460 def : Pat<(vti.Mask (riscv_setcc_vl (vti.Vector vti.RegClass:$rs1),
475 def : Pat<(vti.Mask (riscv_setcc_vl (vti.Vector vti.RegClass:$rs2),
487 def : Pat<(vti.Mask (riscv_setcc_vl (vti.Vector vti.RegClass:$rs1),
494 (vti.Vector vti.RegClass:$rs1), invcc,
504 def : Pat<(vti.Mask (riscv_setcc_vl (vti.Vector vti.RegClass:$rs1),
514 (vti.Vector vti.RegClass:$rs1), invcc,
527 def : Pat<(vti.Mask (riscv_setcc_vl (vti.Vector vti.RegClass:$rs1),
537 (vti.Vector vti.RegClass:$rs1), invcc,
549 def : Pat<(fvti.Mask (riscv_setcc_vl (fvti.Vector fvti.RegClass:$rs1),
558 def : Pat<(fvti.Mask (riscv_setcc_vl (fvti.Vector fvti.RegClass:$rs1),
568 (fvti.Vector fvti.RegClass:$rs1),
584 def : Pat<(vti.Vector (vop (fti.Vector fti.RegClass:$rs2),
587 (vti.Vector (IMPLICIT_DEF)),
596 def : Pat<(ivti.Vector (vop (fvti.Vector fvti.RegClass:$rs1),
600 (ivti.Vector (IMPLICIT_DEF)), fvti.RegClass:$rs1,
608 def : Pat<(fvti.Vector (vop (ivti.Vector ivti.RegClass:$rs1),
612 (fvti.Vector (IMPLICIT_DEF)), ivti.RegClass:$rs1,
621 def : Pat<(iwti.Vector (vop (fvti.Vector fvti.RegClass:$rs1),
625 (iwti.Vector (IMPLICIT_DEF)), fvti.RegClass:$rs1,
634 def : Pat<(fwti.Vector (vop (ivti.Vector ivti.RegClass:$rs1),
638 (fwti.Vector (IMPLICIT_DEF)), ivti.RegClass:$rs1,
647 def : Pat<(vti.Vector (vop (fwti.Vector fwti.RegClass:$rs1),
651 (vti.Vector (IMPLICIT_DEF)), fwti.RegClass:$rs1,
660 def : Pat<(fvti.Vector (vop (iwti.Vector iwti.RegClass:$rs1),
664 (fvti.Vector (IMPLICIT_DEF)), iwti.RegClass:$rs1,
672 def: Pat<(vti_m1.Vector (vop (vti_m1.Vector VR:$merge), (vti.Vector vti.RegClass:$rs1), VR:$rs2,
676 (vti_m1.Vector VR:$merge),
677 (vti.Vector vti.RegClass:$rs1),
678 (vti_m1.Vector VR:$rs2),
681 def: Pat<(vti_m1.Vector (vop (vti_m1.Vector VR:$merge), (vti.Vector vti.RegClass:$rs1), VR:$rs2,
684 (vti_m1.Vector VR:$merge),
685 (vti.Vector vti.RegClass:$rs1),
686 (vti_m1.Vector VR:$rs2),
696 (vti.Vector
698 (op (wti.Vector wti.RegClass:$rs2),
699 (wti.Vector (extop (vti.Vector vti.RegClass:$rs1)))),
705 (vti.Vector
707 (op (wti.Vector wti.RegClass:$rs2),
708 (wti.Vector (extop (vti.Vector (SplatPat GPR:$rs1))))),
723 (vti.Vector
725 (op (wti.Vector wti.RegClass:$rs2),
726 (wti.Vector (SplatPat_uimm5 uimm5:$rs1))), (vti.Mask true_mask),
738 def: Pat<(wti_m1.Vector (vop (wti_m1.Vector VR:$merge),
739 (wti.Vector (extop (vti.Vector vti.RegClass:$rs1))),
742 (wti_m1.Vector VR:$merge), (vti.Vector vti.RegClass:$rs1),
743 (wti_m1.Vector VR:$rs2), GPR:$vl, vti.Log2SEW)>;
744 def: Pat<(wti_m1.Vector (vop (wti_m1.Vector VR:$merge),
745 (wti.Vector (extop (vti.Vector vti.RegClass:$rs1))),
748 (wti_m1.Vector VR:$merge), (vti.Vector vti.RegClass:$rs1),
749 (wti_m1.Vector VR:$rs2), (vti.Mask V0), GPR:$vl, vti.Log2SEW)>;
758 def: Pat<(wti_m1.Vector (vop (wti_m1.Vector VR:$merge),
759 … (wti.Vector (extop (vti.Vector vti.RegClass:$rs1), (vti.Mask true_mask), VLOpFrag)),
762 (wti_m1.Vector VR:$merge), (vti.Vector vti.RegClass:$rs1),
763 (wti_m1.Vector VR:$rs2), GPR:$vl, vti.Log2SEW)>;
764 def: Pat<(wti_m1.Vector (vop (wti_m1.Vector VR:$merge),
765 … (wti.Vector (extop (vti.Vector vti.RegClass:$rs1), (vti.Mask true_mask), VLOpFrag)),
768 (wti_m1.Vector VR:$merge), (vti.Vector vti.RegClass:$rs1),
769 (wti_m1.Vector VR:$rs2), (vti.Mask V0), GPR:$vl, vti.Log2SEW)>;
777 def : Pat<(fwti.Vector (op (fwti.Vector (extop (fvti.Vector fvti.RegClass:$rs2),
779 (fwti.Vector (extop (fvti.Vector fvti.RegClass:$rs1),
785 def : Pat<(fwti.Vector (op (fwti.Vector (extop (fvti.Vector fvti.RegClass:$rs2),
787 … (fwti.Vector (extop (fvti.Vector (SplatFPOp fvti.ScalarRegClass:$rs1)),
800 def : Pat<(fwti.Vector (op (fwti.Vector fwti.RegClass:$rs2),
801 (fwti.Vector (extop (fvti.Vector fvti.RegClass:$rs1),
807 def : Pat<(fwti.Vector (op (fwti.Vector fwti.RegClass:$rs2),
808 … (fwti.Vector (extop (fvti.Vector (SplatFPOp fvti.ScalarRegClass:$rs1)),
827 (vti.Vector
829 (op (wti.Vector wti.RegClass:$rs2),
830 (wti.Vector (extop (vti.Vector (SplatPat GPR:$rs1)),
844 def : Pat<(vti.Vector
855 def : Pat<(vti.Vector
871 def : Pat<(wti.Vector
874 (vti.Vector vti.RegClass:$rs2),
880 def : Pat<(wti.Vector
883 (vti.Vector vti.RegClass:$rs2),
896 def : Pat<(vti.Vector (riscv_trunc_vector_vl
897 (wti.Vector (op wti.RegClass:$rs1, (SplatPat XLenVT:$rs2),
901 def : Pat<(vti.Vector (riscv_trunc_vector_vl
902 (wti.Vector (op wti.RegClass:$rs1, (SplatPat_uimm5 uimm5:$rs2),
912 def : Pat<(vti.Vector (vop vti.RegClass:$rs1, vti.RegClass:$rd,
918 def : Pat<(vti.Vector (vop vti.RegClass:$rs1, vti.RegClass:$rd,
925 def : Pat<(vti.Vector (vop (SplatFPOp vti.ScalarRegClass:$rs1),
932 def : Pat<(vti.Vector (vop (SplatFPOp vti.ScalarRegClass:$rs1),
947 (wti.Vector (riscv_fpextend_vl_oneuse
948 (vti.Vector vti.RegClass:$rs1),
950 (wti.Vector (riscv_fpextend_vl_oneuse
951 (vti.Vector vti.RegClass:$rs2),
953 (wti.Vector wti.RegClass:$rd), (vti.Mask true_mask),
959 (wti.Vector (riscv_fpextend_vl_oneuse
960 (vti.Vector (SplatFPOp vti.ScalarRegClass:$rs1)),
962 (wti.Vector (riscv_fpextend_vl_oneuse
963 (vti.Vector vti.RegClass:$rs2),
965 (wti.Vector wti.RegClass:$rd), (vti.Mask true_mask),
979 // 12.1. Vector Single-Width Integer Add and Subtract
985 def : Pat<(riscv_sub_vl (vti.Vector (SplatPat (XLenVT GPR:$rs2))),
986 (vti.Vector vti.RegClass:$rs1), (vti.Mask V0),
989 (vti.Vector (IMPLICIT_DEF)), vti.RegClass:$rs1, GPR:$rs2,
991 def : Pat<(riscv_sub_vl (vti.Vector (SplatPat_simm5 simm5:$rs2)),
992 (vti.Vector vti.RegClass:$rs1), (vti.Mask V0),
995 (vti.Vector (IMPLICIT_DEF)), vti.RegClass:$rs1, simm5:$rs2,
999 // 12.2. Vector Widening Integer Add/Subtract
1005 // 12.3. Vector Integer Extension
1019 // 12.5. Vector Bitwise Logical Instructions
1024 // 12.6. Vector Single-Width Bit Shift Instructions
1031 def : Pat<(riscv_shl_vl (vti.Vector vti.RegClass:$rs1),
1032 (riscv_vmv_v_x_vl (vti.Vector undef), 1, (XLenVT srcvalue)),
1039 // 12.7. Vector Narrowing Integer Right Shift Instructions
1053 def : Pat<(vti.Vector (riscv_trunc_vector_vl (wti.Vector wti.RegClass:$rs1),
1057 (vti.Vector (IMPLICIT_DEF)), wti.RegClass:$rs1, X0,
1061 // 12.8. Vector Integer Comparison Instructions
1098 // 12.9. Vector Integer Min/Max Instructions
1104 // 12.10. Vector Single-Width Integer Multiply Instructions
1109 // 12.11. Vector Integer Divide Instructions
1115 // 12.12. Vector Widening Integer Multiply Instructions
1120 // 12.13 Vector Single-Width Integer Multiply-Add Instructions
1124 // 12.14. Vector Widening Integer Multiply-Add Instructions
1131 def : Pat<(wti.Vector
1133 (riscv_vwmulsu_vl_oneuse (vti.Vector vti.RegClass:$rs1),
1142 // 12.15. Vector Integer Merge Instructions
1144 def : Pat<(vti.Vector (riscv_vselect_vl (vti.Mask V0),
1152 def : Pat<(vti.Vector (riscv_vselect_vl (vti.Mask V0),
1159 def : Pat<(vti.Vector (riscv_vselect_vl (vti.Mask V0),
1166 def : Pat<(vti.Vector (riscv_vp_merge_vl (vti.Mask V0),
1174 def : Pat<(vti.Vector (riscv_vp_merge_vl (vti.Mask V0),
1182 def : Pat<(vti.Vector (riscv_vp_merge_vl (vti.Mask V0),
1191 // 12.16. Vector Integer Move Instructions
1193 def : Pat<(vti.Vector (riscv_vmv_v_x_vl (vti.Vector undef), GPR:$rs2, VLOpFrag)),
1196 def : Pat<(vti.Vector (riscv_vmv_v_x_vl vti.Vector:$passthru, GPR:$rs2, VLOpFrag)),
1200 def : Pat<(vti.Vector (riscv_vmv_v_x_vl (vti.Vector undef), (ImmPat XLenVT:$imm5),
1204 def : Pat<(vti.Vector (riscv_vmv_v_x_vl vti.Vector:$passthru, (ImmPat XLenVT:$imm5),
1210 // 12.1. Vector Single-Width Saturating Add and Subtract
1218 // 15.1. Vector Single-Width Integer Reduction Instructions
1229 // 15.2. Vector Widening Integer Reduction Instructions
1237 // 15.3. Vector Single-Width Floating-Point Reduction Instructions
1244 // 15.4. Vector Widening Floating-Point Reduction Instructions
1253 // 14.2. Vector Single-Width Floating-Point Add/Subtract Instructions
1258 // 14.3. Vector Widening Floating-Point Add/Subtract Instructions
1262 // 14.4. Vector Single-Width Floating-Point Multiply/Divide Instructions
1267 // 14.5. Vector Widening Floating-Point Multiply Instructions
1270 // 14.6 Vector Single-Width Floating-Point Fused Multiply-Add Instructions.
1276 // 14.7. Vector Widening Floating-Point Fused Multiply-Add Instructions
1282 // 14.11. Vector Floating-Point MIN/MAX Instructions
1286 // 14.13. Vector Floating-Point Compare Instructions
1300 // 14.8. Vector Floating-Point Square-Root Instruction
1301 def : Pat<(riscv_fsqrt_vl (vti.Vector vti.RegClass:$rs2), (vti.Mask true_mask),
1306 // 14.12. Vector Floating-Point Sign-Injection Instructions
1307 def : Pat<(riscv_fabs_vl (vti.Vector vti.RegClass:$rs), (vti.Mask true_mask),
1312 def : Pat<(riscv_fneg_vl (vti.Vector vti.RegClass:$rs), (vti.Mask V0),
1315 (vti.Vector (IMPLICIT_DEF)), vti.RegClass:$rs,
1319 def : Pat<(riscv_fcopysign_vl (vti.Vector vti.RegClass:$rs1),
1320 (vti.Vector vti.RegClass:$rs2),
1325 def : Pat<(riscv_fcopysign_vl (vti.Vector vti.RegClass:$rs1),
1334 def : Pat<(riscv_fcopysign_vl (vti.Vector vti.RegClass:$rs1),
1344 // 12.15. Vector Integer Merge Instructions
1345 // 14.15. Vector Floating-Point Merge Instruction
1346 def : Pat<(fvti.Vector (riscv_vselect_vl (fvti.Mask V0),
1354 def : Pat<(fvti.Vector (riscv_vselect_vl (fvti.Mask V0),
1363 def : Pat<(fvti.Vector (riscv_vselect_vl (fvti.Mask V0),
1370 def : Pat<(fvti.Vector (riscv_vp_merge_vl (fvti.Mask V0),
1378 def : Pat<(fvti.Vector (riscv_vp_merge_vl (fvti.Mask V0),
1387 def : Pat<(fvti.Vector (riscv_vp_merge_vl (fvti.Mask V0),
1395 // 14.16. Vector Floating-Point Move Instruction
1397 def : Pat<(fvti.Vector (riscv_vfmv_v_f_vl
1398 (fvti.Vector undef), (fvti.Scalar (fpimm0)), VLOpFrag)),
1401 def : Pat<(fvti.Vector (riscv_vfmv_v_f_vl
1402 fvti.Vector:$passthru, (fvti.Scalar (fpimm0)), VLOpFrag)),
1406 def : Pat<(fvti.Vector (riscv_vfmv_v_f_vl
1407 (fvti.Vector undef), (fvti.Scalar fvti.ScalarRegClass:$rs2), VLOpFrag)),
1412 def : Pat<(fvti.Vector (riscv_vfmv_v_f_vl
1413 fvti.Vector:$passthru, (fvti.Scalar fvti.ScalarRegClass:$rs2), VLOpFrag)),
1419 // 14.17. Vector Single-Width Floating-Point/Integer Type-Convert Instructions
1433 def : Pat<(fwti.Vector (riscv_fpextend_vl (fvti.Vector fvti.RegClass:$rs1),
1437 (fwti.Vector (IMPLICIT_DEF)), fvti.RegClass:$rs1,
1449 def : Pat<(fvti.Vector (riscv_fpround_vl (fwti.Vector fwti.RegClass:$rs1),
1453 (fvti.Vector (IMPLICIT_DEF)), fwti.RegClass:$rs1,
1456 def : Pat<(fvti.Vector (riscv_fncvt_rod_vl (fwti.Vector fwti.RegClass:$rs1),
1460 (fvti.Vector (IMPLICIT_DEF)), fwti.RegClass:$rs1,
1470 // 16.1 Vector Mask-Register Logical Instructions
1524 // 16.2 Vector count population in mask vcpop.m
1539 // 17.4. Vector Register Gather Instruction
1541 def : Pat<(vti.Vector (riscv_vmv_s_x_vl (vti.Vector vti.RegClass:$merge),
1548 def : Pat<(vti.Vector (riscv_vrgather_vv_vl vti.RegClass:$rs2,
1556 def : Pat<(vti.Vector (riscv_vrgather_vx_vl vti.RegClass:$rs2, GPR:$rs1,
1563 def : Pat<(vti.Vector (riscv_vrgather_vx_vl vti.RegClass:$rs2,
1581 def : Pat<(vti.Vector
1583 (ivti.Vector ivti.RegClass:$rs1),
1599 def : Pat<(vti.Vector (riscv_vfmv_s_f_vl (vti.Vector vti.RegClass:$merge),
1604 def : Pat<(vti.Vector (riscv_vfmv_s_f_vl (vti.Vector vti.RegClass:$merge),
1612 def : Pat<(vti.Vector
1614 (ivti.Vector vti.RegClass:$rs1),
1621 def : Pat<(vti.Vector (riscv_vrgather_vx_vl vti.RegClass:$rs2, GPR:$rs1,
1628 def : Pat<(vti.Vector
1646 def : Pat<(vti.Vector
1648 (ivti.Vector ivti.RegClass:$rs1),
1686 def : Pat<(vti.Vector (riscv_vid_vl (vti.Mask true_mask),
1690 def : Pat<(vti.Vector (riscv_slide1up_vl (vti.Vector undef),
1691 (vti.Vector vti.RegClass:$rs1),
1696 def : Pat<(vti.Vector (riscv_slide1up_vl (vti.Vector vti.RegClass:$rd),
1697 (vti.Vector vti.RegClass:$rs1),
1702 def : Pat<(vti.Vector (riscv_slide1down_vl (vti.Vector undef),
1703 (vti.Vector vti.RegClass:$rs1),
1708 def : Pat<(vti.Vector (riscv_slide1down_vl (vti.Vector vti.RegClass:$rd),
1709 (vti.Vector vti.RegClass:$rs1),
1717 def : Pat<(vti.Vector (riscv_slideup_vl (vti.Vector vti.RegClass:$rs3),
1718 (vti.Vector vti.RegClass:$rs1),
1725 def : Pat<(vti.Vector (riscv_slideup_vl (vti.Vector vti.RegClass:$rs3),
1726 (vti.Vector vti.RegClass:$rs1),
1733 def : Pat<(vti.Vector (riscv_slidedown_vl (vti.Vector vti.RegClass:$rs3),
1734 (vti.Vector vti.RegClass:$rs1),
1740 def : Pat<(vti.Vector (riscv_slidedown_vl (vti.Vector undef),
1741 (vti.Vector vti.RegClass:$rs1),
1745 (vti.Vector (IMPLICIT_DEF)), vti.RegClass:$rs1, uimm5:$rs2,
1748 def : Pat<(vti.Vector (riscv_slidedown_vl (vti.Vector vti.RegClass:$rs3),
1749 (vti.Vector vti.RegClass:$rs1),
1755 def : Pat<(vti.Vector (riscv_slidedown_vl (vti.Vector undef),
1756 (vti.Vector vti.RegClass:$rs1),
1760 (vti.Vector (IMPLICIT_DEF)), vti.RegClass:$rs1, GPR:$rs2,