|
926 | 926 | ;; ------------------------------------------------------------------------- |
927 | 927 | ;; Includes: |
928 | 928 | ;; - ADD |
| 929 | +;; - FADD |
| 930 | +;; - FSUB |
| 931 | +;; - SUB |
929 | 932 | ;; ------------------------------------------------------------------------- |
930 | 933 |
|
931 | 934 | (define_insn "@aarch64_sme_<optab><mode>" |
|
954 | 957 | ) |
955 | 958 |
|
956 | 959 | (define_insn "@aarch64_sme_<optab><mode>" |
957 | | - [(set (reg:SME_ZA_SDFx24 ZA_REGNUM) |
958 | | - (unspec:SME_ZA_SDFx24 |
959 | | - [(reg:SME_ZA_SDFx24 ZA_REGNUM) |
| 960 | + [(set (reg:SME_ZA_HSDFx24 ZA_REGNUM) |
| 961 | + (unspec:SME_ZA_HSDFx24 |
| 962 | + [(reg:SME_ZA_HSDFx24 ZA_REGNUM) |
960 | 963 | (reg:DI SME_STATE_REGNUM) |
961 | 964 | (match_operand:SI 0 "register_operand" "Uci") |
962 | | - (match_operand:SME_ZA_SDFx24 1 "aligned_register_operand" "Uw<vector_count>")] |
963 | | - SME_BINARY_SLICE_SDF))] |
| 965 | + (match_operand:SME_ZA_HSDFx24 1 "aligned_register_operand" "Uw<vector_count>")] |
| 966 | + SME_BINARY_SLICE_HSDF))] |
964 | 967 | "TARGET_STREAMING_SME2" |
965 | 968 | "<optab>\tza.<Vetype>[%w0, 0, vgx<vector_count>], %1" |
966 | 969 | ) |
967 | 970 |
|
968 | 971 | (define_insn "*aarch64_sme_<optab><mode>_plus" |
969 | | - [(set (reg:SME_ZA_SDFx24 ZA_REGNUM) |
970 | | - (unspec:SME_ZA_SDFx24 |
971 | | - [(reg:SME_ZA_SDFx24 ZA_REGNUM) |
| 972 | + [(set (reg:SME_ZA_HSDFx24 ZA_REGNUM) |
| 973 | + (unspec:SME_ZA_HSDFx24 |
| 974 | + [(reg:SME_ZA_HSDFx24 ZA_REGNUM) |
972 | 975 | (reg:DI SME_STATE_REGNUM) |
973 | 976 | (plus:SI (match_operand:SI 0 "register_operand" "Uci") |
974 | 977 | (match_operand:SI 1 "const_0_to_7_operand")) |
975 | | - (match_operand:SME_ZA_SDFx24 2 "aligned_register_operand" "Uw<vector_count>")] |
976 | | - SME_BINARY_SLICE_SDF))] |
| 978 | + (match_operand:SME_ZA_HSDFx24 2 "aligned_register_operand" "Uw<vector_count>")] |
| 979 | + SME_BINARY_SLICE_HSDF))] |
977 | 980 | "TARGET_STREAMING_SME2" |
978 | 981 | "<optab>\tza.<Vetype>[%w0, %1, vgx<vector_count>], %2" |
979 | 982 | ) |
|
1634 | 1637 | ;; ------------------------------------------------------------------------- |
1635 | 1638 |
|
1636 | 1639 | (define_insn "@aarch64_sme_<optab><mode><mode>" |
1637 | | - [(set (reg:SME_ZA_SDFx24 ZA_REGNUM) |
1638 | | - (unspec:SME_ZA_SDFx24 |
1639 | | - [(reg:SME_ZA_SDFx24 ZA_REGNUM) |
| 1640 | + [(set (reg:SME_ZA_HSDFx24 ZA_REGNUM) |
| 1641 | + (unspec:SME_ZA_HSDFx24 |
| 1642 | + [(reg:SME_ZA_HSDFx24 ZA_REGNUM) |
1640 | 1643 | (reg:DI SME_STATE_REGNUM) |
1641 | 1644 | (match_operand:SI 0 "register_operand" "Uci") |
1642 | | - (match_operand:SME_ZA_SDFx24 1 "aligned_register_operand" "Uw<vector_count>") |
1643 | | - (match_operand:SME_ZA_SDFx24 2 "aligned_register_operand" "Uw<vector_count>")] |
| 1645 | + (match_operand:SME_ZA_HSDFx24 1 "aligned_register_operand" "Uw<vector_count>") |
| 1646 | + (match_operand:SME_ZA_HSDFx24 2 "aligned_register_operand" "Uw<vector_count>")] |
1644 | 1647 | SME_FP_TERNARY_SLICE))] |
1645 | 1648 | "TARGET_STREAMING_SME2" |
1646 | 1649 | "<optab>\tza.<Vetype>[%w0, 0, vgx<vector_count>], %1, %2" |
1647 | 1650 | ) |
1648 | 1651 |
|
1649 | 1652 | (define_insn "*aarch64_sme_<optab><mode><mode>_plus" |
1650 | | - [(set (reg:SME_ZA_SDFx24 ZA_REGNUM) |
1651 | | - (unspec:SME_ZA_SDFx24 |
1652 | | - [(reg:SME_ZA_SDFx24 ZA_REGNUM) |
| 1653 | + [(set (reg:SME_ZA_HSDFx24 ZA_REGNUM) |
| 1654 | + (unspec:SME_ZA_HSDFx24 |
| 1655 | + [(reg:SME_ZA_HSDFx24 ZA_REGNUM) |
1653 | 1656 | (reg:DI SME_STATE_REGNUM) |
1654 | 1657 | (plus:SI (match_operand:SI 0 "register_operand" "Uci") |
1655 | 1658 | (match_operand:SI 1 "const_0_to_7_operand")) |
1656 | | - (match_operand:SME_ZA_SDFx24 2 "aligned_register_operand" "Uw<vector_count>") |
1657 | | - (match_operand:SME_ZA_SDFx24 3 "aligned_register_operand" "Uw<vector_count>")] |
| 1659 | + (match_operand:SME_ZA_HSDFx24 2 "aligned_register_operand" "Uw<vector_count>") |
| 1660 | + (match_operand:SME_ZA_HSDFx24 3 "aligned_register_operand" "Uw<vector_count>")] |
1658 | 1661 | SME_FP_TERNARY_SLICE))] |
1659 | 1662 | "TARGET_STREAMING_SME2" |
1660 | 1663 | "<optab>\tza.<Vetype>[%w0, %1, vgx<vector_count>], %2, %3" |
1661 | 1664 | ) |
1662 | 1665 |
|
1663 | 1666 | (define_insn "@aarch64_sme_single_<optab><mode><mode>" |
1664 | | - [(set (reg:SME_ZA_SDFx24 ZA_REGNUM) |
1665 | | - (unspec:SME_ZA_SDFx24 |
1666 | | - [(reg:SME_ZA_SDFx24 ZA_REGNUM) |
| 1667 | + [(set (reg:SME_ZA_HSDFx24 ZA_REGNUM) |
| 1668 | + (unspec:SME_ZA_HSDFx24 |
| 1669 | + [(reg:SME_ZA_HSDFx24 ZA_REGNUM) |
1667 | 1670 | (reg:DI SME_STATE_REGNUM) |
1668 | 1671 | (match_operand:SI 0 "register_operand" "Uci") |
1669 | | - (match_operand:SME_ZA_SDFx24 1 "register_operand" "w") |
1670 | | - (vec_duplicate:SME_ZA_SDFx24 |
1671 | | - (match_operand:<VSINGLE> 2 "register_operand" "x"))] |
| 1672 | + (match_operand:SME_ZA_HSDFx24 1 "register_operand" "w") |
| 1673 | + (vec_duplicate:SME_ZA_HSDFx24 |
| 1674 | + (match_operand:<SME_ZA_HSDFx24:VSINGLE> 2 "register_operand" "x"))] |
1672 | 1675 | SME_FP_TERNARY_SLICE))] |
1673 | 1676 | "TARGET_STREAMING_SME2" |
1674 | 1677 | "<optab>\tza.<Vetype>[%w0, 0, vgx<vector_count>], %1, %2.<Vetype>" |
1675 | 1678 | ) |
1676 | 1679 |
|
1677 | 1680 | (define_insn "*aarch64_sme_single_<optab><mode><mode>_plus" |
1678 | | - [(set (reg:SME_ZA_SDFx24 ZA_REGNUM) |
1679 | | - (unspec:SME_ZA_SDFx24 |
1680 | | - [(reg:SME_ZA_SDFx24 ZA_REGNUM) |
| 1681 | + [(set (reg:SME_ZA_HSDFx24 ZA_REGNUM) |
| 1682 | + (unspec:SME_ZA_HSDFx24 |
| 1683 | + [(reg:SME_ZA_HSDFx24 ZA_REGNUM) |
1681 | 1684 | (reg:DI SME_STATE_REGNUM) |
1682 | 1685 | (plus:SI (match_operand:SI 0 "register_operand" "Uci") |
1683 | 1686 | (match_operand:SI 1 "const_0_to_7_operand")) |
1684 | | - (match_operand:SME_ZA_SDFx24 2 "register_operand" "w") |
1685 | | - (vec_duplicate:SME_ZA_SDFx24 |
1686 | | - (match_operand:<VSINGLE> 3 "register_operand" "x"))] |
| 1687 | + (match_operand:SME_ZA_HSDFx24 2 "register_operand" "w") |
| 1688 | + (vec_duplicate:SME_ZA_HSDFx24 |
| 1689 | + (match_operand:<SME_ZA_HSDFx24:VSINGLE> 3 "register_operand" "x"))] |
1687 | 1690 | SME_FP_TERNARY_SLICE))] |
1688 | 1691 | "TARGET_STREAMING_SME2" |
1689 | 1692 | "<optab>\tza.<Vetype>[%w0, %1, vgx<vector_count>], %2, %3.<Vetype>" |
1690 | 1693 | ) |
1691 | 1694 |
|
1692 | 1695 | (define_insn "@aarch64_sme_lane_<optab><mode><mode>" |
1693 | | - [(set (reg:SME_ZA_SDFx24 ZA_REGNUM) |
1694 | | - (unspec:SME_ZA_SDFx24 |
1695 | | - [(reg:SME_ZA_SDFx24 ZA_REGNUM) |
| 1696 | + [(set (reg:SME_ZA_HSDFx24 ZA_REGNUM) |
| 1697 | + (unspec:SME_ZA_HSDFx24 |
| 1698 | + [(reg:SME_ZA_HSDFx24 ZA_REGNUM) |
1696 | 1699 | (reg:DI SME_STATE_REGNUM) |
1697 | 1700 | (match_operand:SI 0 "register_operand" "Uci") |
1698 | | - (match_operand:SME_ZA_SDFx24 1 "aligned_register_operand" "Uw<vector_count>") |
1699 | | - (unspec:SME_ZA_SDFx24 |
1700 | | - [(match_operand:<VSINGLE> 2 "register_operand" "x") |
| 1701 | + (match_operand:SME_ZA_HSDFx24 1 "aligned_register_operand" "Uw<vector_count>") |
| 1702 | + (unspec:SME_ZA_HSDFx24 |
| 1703 | + [(match_operand:<SME_ZA_HSDFx24:VSINGLE> 2 "register_operand" "x") |
1701 | 1704 | (match_operand:SI 3 "const_int_operand")] |
1702 | 1705 | UNSPEC_SVE_LANE_SELECT)] |
1703 | 1706 | SME_FP_TERNARY_SLICE))] |
|
1706 | 1709 | ) |
1707 | 1710 |
|
1708 | 1711 | (define_insn "*aarch64_sme_lane_<optab><mode><mode>" |
1709 | | - [(set (reg:SME_ZA_SDFx24 ZA_REGNUM) |
1710 | | - (unspec:SME_ZA_SDFx24 |
1711 | | - [(reg:SME_ZA_SDFx24 ZA_REGNUM) |
| 1712 | + [(set (reg:SME_ZA_HSDFx24 ZA_REGNUM) |
| 1713 | + (unspec:SME_ZA_HSDFx24 |
| 1714 | + [(reg:SME_ZA_HSDFx24 ZA_REGNUM) |
1712 | 1715 | (reg:DI SME_STATE_REGNUM) |
1713 | 1716 | (plus:SI (match_operand:SI 0 "register_operand" "Uci") |
1714 | 1717 | (match_operand:SI 1 "const_0_to_7_operand")) |
1715 | | - (match_operand:SME_ZA_SDFx24 2 "aligned_register_operand" "Uw<vector_count>") |
1716 | | - (unspec:SME_ZA_SDFx24 |
1717 | | - [(match_operand:<VSINGLE> 3 "register_operand" "x") |
| 1718 | + (match_operand:SME_ZA_HSDFx24 2 "aligned_register_operand" "Uw<vector_count>") |
| 1719 | + (unspec:SME_ZA_HSDFx24 |
| 1720 | + [(match_operand:<SME_ZA_HSDFx24:VSINGLE> 3 "register_operand" "x") |
1718 | 1721 | (match_operand:SI 4 "const_int_operand")] |
1719 | 1722 | UNSPEC_SVE_LANE_SELECT)] |
1720 | 1723 | SME_FP_TERNARY_SLICE))] |
|
1871 | 1874 | ;; ------------------------------------------------------------------------- |
1872 | 1875 |
|
1873 | 1876 | (define_insn "@aarch64_sme_<optab><mode><mode>" |
1874 | | - [(set (reg:SME_MOP_SDF ZA_REGNUM) |
1875 | | - (unspec:SME_MOP_SDF |
1876 | | - [(reg:SME_MOP_SDF ZA_REGNUM) |
| 1877 | + [(set (reg:SME_MOP_HSDF ZA_REGNUM) |
| 1878 | + (unspec:SME_MOP_HSDF |
| 1879 | + [(reg:SME_MOP_HSDF ZA_REGNUM) |
1877 | 1880 | (reg:DI SME_STATE_REGNUM) |
1878 | 1881 | (match_operand:DI 0 "const_int_operand") |
1879 | 1882 | (match_operand:<VPRED> 1 "register_operand" "Upl") |
1880 | 1883 | (match_operand:<VPRED> 2 "register_operand" "Upl") |
1881 | | - (match_operand:SME_MOP_SDF 3 "register_operand" "w") |
1882 | | - (match_operand:SME_MOP_SDF 4 "register_operand" "w")] |
| 1884 | + (match_operand:SME_MOP_HSDF 3 "register_operand" "w") |
| 1885 | + (match_operand:SME_MOP_HSDF 4 "register_operand" "w")] |
1883 | 1886 | SME_FP_MOP))] |
1884 | 1887 | "TARGET_STREAMING" |
1885 | 1888 | "<b><optab>\tza%0.<Vetype>, %1/m, %2/m, %3.<Vetype>, %4.<Vetype>" |
|
0 commit comments