Lines Matching refs:VR128

46   : Pat<(i32 (z_vector_extract (type VR128:$vec), shift12only:$index)),
47 (EXTRACT_SUBREG (insn VR128:$vec, shift12only:$index), subreg_l32)>;
168 def : Pat<(z_vlef32 (v4f32 VR128:$val), bdxaddr12only:$addr, imm32zx2:$index),
169 (VLEF VR128:$val, bdxaddr12only:$addr, imm32zx2:$index)>;
170 def : Pat<(z_vlef64 (v2f64 VR128:$val), bdxaddr12only:$addr, imm32zx1:$index),
171 (VLEG VR128:$val, bdxaddr12only:$addr, imm32zx1:$index)>;
227 def : Pat<(z_vstef32 (v4f32 VR128:$val), bdxaddr12only:$addr,
229 (VSTEF VR128:$val, bdxaddr12only:$addr, imm32zx2:$index)>;
230 def : Pat<(z_vstef64 (v2f64 VR128:$val), bdxaddr12only:$addr,
232 (VSTEG VR128:$val, bdxaddr12only:$addr, imm32zx1:$index)>;
255 def : Pat<(int_s390_vstrl VR128:$val, imm32zx4:$len, bdaddr12only:$addr),
256 (VSTRL VR128:$val, bdaddr12only:$addr, imm32zx4:$len)>;
295 (VLLEBRZE VR128:$V1, bdxaddr12only:$XBD2), 0>;
297 (VLLEBRZG VR128:$V1, bdxaddr12only:$XBD2), 0>;
317 def : Pat<(z_storeeswap (v4f32 VR128:$val), bdxaddr12only:$addr),
318 (VSTERF VR128:$val, bdxaddr12only:$addr)>;
319 def : Pat<(z_storeeswap (v2f64 VR128:$val), bdxaddr12only:$addr),
320 (VSTERG VR128:$val, bdxaddr12only:$addr)>;
321 def : Pat<(z_storeeswap (v16i8 VR128:$val), bdxaddr12only:$addr),
322 (VSTBRQ VR128:$val, bdxaddr12only:$addr)>;
329 (VSTEBRF VR128:$V1, bdxaddr12only:$XBD2, 0), 0>;
331 (VSTEBRG VR128:$V1, bdxaddr12only:$XBD2, 0), 0>;
345 def : BinaryRRWithType<VMRHF, VR128, z_merge_high, v4f32>;
346 def : BinaryRRWithType<VMRHG, VR128, z_merge_high, v2f64>;
354 def : BinaryRRWithType<VMRLF, VR128, z_merge_low, v4f32>;
355 def : BinaryRRWithType<VMRLG, VR128, z_merge_low, v2f64>;
373 def : Pat<(v4f32 (z_splat VR128:$vec, imm32zx16_timm:$index)),
374 (VREPF VR128:$vec, imm32zx16:$index)>;
375 def : Pat<(v2f64 (z_splat VR128:$vec, imm32zx16_timm:$index)),
376 (VREPG VR128:$vec, imm32zx16:$index)>;
416 def : Pat<(z_vsei8_by_parts (v16i8 VR128:$src)), (VSEGB VR128:$src)>;
417 def : Pat<(z_vsei16_by_parts (v8i16 VR128:$src)), (VSEGH VR128:$src)>;
418 def : Pat<(z_vsei32_by_parts (v4i32 VR128:$src)), (VSEGF VR128:$src)>;
453 def : Pat<(store (type VR128:$src), bdxaddr12only:$addr),
454 (VST VR128:$src, bdxaddr12only:$addr)>;
455 def : Pat<(type (vselect (inttype VR128:$x), VR128:$y, VR128:$z)),
456 (VSEL VR128:$y, VR128:$z, VR128:$x)>;
457 def : Pat<(type (vselect (inttype (z_vnot VR128:$x)), VR128:$y, VR128:$z)),
458 (VSEL VR128:$z, VR128:$y, VR128:$x)>;
713 def : InstAlias<"vnot\t$V1, $V2", (VNO VR128:$V1, VR128:$V2, VR128:$V2), 0>;
725 def : Pat<(v16i8 (z_popcnt VR128:$x)), (VPOPCT VR128:$x, 0)>;
804 def : Pat<(int_s390_vsldb VR128:$x, VR128:$y, imm32zx8_timm:$z),
805 (VSLDB VR128:$x, VR128:$y, imm32zx8:$z)>;
870 def : Pat<(type (and VR128:$x, VR128:$y)), (VN VR128:$x, VR128:$y)>;
871 def : Pat<(type (and VR128:$x, (not_op VR128:$y))),
872 (VNC VR128:$x, VR128:$y)>;
873 def : Pat<(type (or VR128:$x, VR128:$y)), (VO VR128:$x, VR128:$y)>;
874 def : Pat<(type (xor VR128:$x, VR128:$y)), (VX VR128:$x, VR128:$y)>;
875 def : Pat<(type (or (and VR128:$x, VR128:$z),
876 (and VR128:$y, (not_op VR128:$z)))),
877 (VSEL VR128:$x, VR128:$y, VR128:$z)>;
878 def : Pat<(type (not_op (or VR128:$x, VR128:$y))),
879 (VNO VR128:$x, VR128:$y)>;
880 def : Pat<(type (not_op VR128:$x)), (VNO VR128:$x, VR128:$x)>;
883 def : Pat<(type (not_op (xor VR128:$x, VR128:$y))),
884 (VNX VR128:$x, VR128:$y)>;
885 def : Pat<(type (not_op (and VR128:$x, VR128:$y))),
886 (VNN VR128:$x, VR128:$y)>;
887 def : Pat<(type (or VR128:$x, (not_op VR128:$y))),
888 (VOC VR128:$x, VR128:$y)>;
904 def : Pat<(type (vselect (type (z_vicmph_zero VR128:$x)),
905 (z_vneg VR128:$x), VR128:$x)),
906 (lc (lp VR128:$x))>;
907 def : Pat<(type (vselect (type (z_vnot (z_vicmph_zero VR128:$x))),
908 VR128:$x, (z_vneg VR128:$x))),
909 (lc (lp VR128:$x))>;
910 def : Pat<(type (vselect (type (z_vicmpl_zero VR128:$x)),
911 VR128:$x, (z_vneg VR128:$x))),
912 (lc (lp VR128:$x))>;
913 def : Pat<(type (vselect (type (z_vnot (z_vicmpl_zero VR128:$x))),
914 (z_vneg VR128:$x), VR128:$x)),
915 (lc (lp VR128:$x))>;
916 def : Pat<(type (or (and (z_vsra_by_scalar VR128:$x, (i32 shift)),
917 (z_vneg VR128:$x)),
918 (and (z_vnot (z_vsra_by_scalar VR128:$x, (i32 shift))),
919 VR128:$x))),
920 (lp VR128:$x)>;
921 def : Pat<(type (or (and (z_vsra_by_scalar VR128:$x, (i32 shift)),
922 VR128:$x),
923 (and (z_vnot (z_vsra_by_scalar VR128:$x, (i32 shift))),
924 (z_vneg VR128:$x)))),
925 (lc (lp VR128:$x))>;
940 def : Pat<(type (vselect (cmph VR128:$x, VR128:$y), VR128:$x, VR128:$y)),
941 (max VR128:$x, VR128:$y)>;
942 def : Pat<(type (vselect (cmph VR128:$x, VR128:$y), VR128:$y, VR128:$x)),
943 (min VR128:$x, VR128:$y)>;
944 def : Pat<(type (vselect (z_vnot (cmph VR128:$x, VR128:$y)),
945 VR128:$x, VR128:$y)),
946 (min VR128:$x, VR128:$y)>;
947 def : Pat<(type (vselect (z_vnot (cmph VR128:$x, VR128:$y)),
948 VR128:$y, VR128:$x)),
949 (max VR128:$x, VR128:$y)>;
969 def : Pat<(shift (i128 VR128:$x), imm32nobytes:$amt),
970 (sbit VR128:$x, (VREPIB (UIMM8 imm:$amt)))>;
971 def : Pat<(shift (i128 VR128:$x), imm32nobits:$amt),
972 (sbyte VR128:$x, (VREPIB (UIMM8 imm:$amt)))>;
973 def : Pat<(shift (i128 VR128:$x), imm32:$amt),
974 (sbit (sbyte VR128:$x, (VREPIB (UIMM8 imm:$amt))),
976 def : Pat<(shift (i128 VR128:$x), GR32:$amt),
977 (sbit (sbyte VR128:$x, (VREPB (VLVGP32 GR32:$amt, GR32:$amt), 15)),
1207 def : Pat<(v4f32 (z_any_vround (v2f64 VR128:$src))), (VLEDB VR128:$src, 0, 0)>;
1219 def : Pat<(f32 (any_fpround (f128 VR128:$src))),
1220 (WLEDB (WFLRX VR128:$src, 0, 3), 0, 0)>;
1547 def : Pat<(store (i128 VR128:$src), bdxaddr12only:$addr),
1548 (VST VR128:$src, bdxaddr12only:$addr)>;
1576 def : Pat<(i32 (trunc (i128 VR128:$vec))),
1577 (EXTRACT_SUBREG (VLGVF VR128:$vec, zero_reg, 3), subreg_l32)>;
1578 def : Pat<(i32 (trunc (srl (i128 VR128:$vec), (i32 32)))),
1579 (EXTRACT_SUBREG (VLGVF VR128:$vec, zero_reg, 2), subreg_l32)>;
1580 def : Pat<(i32 (trunc (srl (i128 VR128:$vec), (i32 64)))),
1581 (EXTRACT_SUBREG (VLGVF VR128:$vec, zero_reg, 1), subreg_l32)>;
1582 def : Pat<(i32 (trunc (srl (i128 VR128:$vec), (i32 96)))),
1583 (EXTRACT_SUBREG (VLGVF VR128:$vec, zero_reg, 0), subreg_l32)>;
1584 def : Pat<(i64 (trunc (i128 VR128:$vec))),
1585 (VLGVG VR128:$vec, zero_reg, 1)>;
1586 def : Pat<(i64 (trunc (srl (i128 VR128:$vec), (i32 64)))),
1587 (VLGVG VR128:$vec, zero_reg, 0)>;
1592 def : Pat<(truncstorei8 (i128 VR128:$x), bdxaddr12only:$addr),
1593 (VSTEB VR128:$x, bdxaddr12only:$addr, 15)>;
1594 def : Pat<(truncstorei16 (i128 VR128:$x), bdxaddr12only:$addr),
1595 (VSTEH VR128:$x, bdxaddr12only:$addr, 7)>;
1596 def : Pat<(truncstorei32 (i128 VR128:$x), bdxaddr12only:$addr),
1597 (VSTEF VR128:$x, bdxaddr12only:$addr, 3)>;
1598 def : Pat<(truncstorei32 (srl (i128 VR128:$x), (i32 32)), bdxaddr12only:$addr),
1599 (VSTEF VR128:$x, bdxaddr12only:$addr, 2)>;
1600 def : Pat<(truncstorei32 (srl (i128 VR128:$x), (i32 64)), bdxaddr12only:$addr),
1601 (VSTEF VR128:$x, bdxaddr12only:$addr, 1)>;
1602 def : Pat<(truncstorei32 (srl (i128 VR128:$x), (i32 96)), bdxaddr12only:$addr),
1603 (VSTEF VR128:$x, bdxaddr12only:$addr, 0)>;
1604 def : Pat<(truncstorei64 (i128 VR128:$x), bdxaddr12only:$addr),
1605 (VSTEG VR128:$x, bdxaddr12only:$addr, 1)>;
1606 def : Pat<(truncstorei64 (srl (i128 VR128:$x), (i32 64)), bdxaddr12only:$addr),
1607 (VSTEG VR128:$x, bdxaddr12only:$addr, 0)>;
1636 def : Pat<(i128 (sext_inreg VR128:$x, i8)),
1637 (VSRAB (VREPB VR128:$x, 15), (VREPIB 120))>;
1638 def : Pat<(i128 (sext_inreg VR128:$x, i16)),
1639 (VSRAB (VREPH VR128:$x, 7), (VREPIB 112))>;
1640 def : Pat<(i128 (sext_inreg VR128:$x, i32)),
1641 (VSRAB (VREPF VR128:$x, 3), (VREPIB 96))>;
1642 def : Pat<(i128 (sext_inreg VR128:$x, i64)),
1643 (VSRAB (VREPG VR128:$x, 1), (VREPIB 64))>;
1679 def SCmp128Hi : Pseudo<(outs), (ins VR128:$src1, VR128:$src2),
1680 [(set CC, (z_scmp128hi (i128 VR128:$src1),
1681 (i128 VR128:$src2)))]>;
1682 def UCmp128Hi : Pseudo<(outs), (ins VR128:$src1, VR128:$src2),
1683 [(set CC, (z_ucmp128hi (i128 VR128:$src1),
1684 (i128 VR128:$src2)))]>;
1689 def Select128 : SelectWrapper<i128, VR128>;
1695 def : Pat<(v16i8 (bitconvert (v8i16 VR128:$src))), (v16i8 VR128:$src)>;
1696 def : Pat<(v16i8 (bitconvert (v4i32 VR128:$src))), (v16i8 VR128:$src)>;
1697 def : Pat<(v16i8 (bitconvert (v2i64 VR128:$src))), (v16i8 VR128:$src)>;
1698 def : Pat<(v16i8 (bitconvert (i128 VR128:$src))), (v16i8 VR128:$src)>;
1699 def : Pat<(v16i8 (bitconvert (v4f32 VR128:$src))), (v16i8 VR128:$src)>;
1700 def : Pat<(v16i8 (bitconvert (v2f64 VR128:$src))), (v16i8 VR128:$src)>;
1701 def : Pat<(v16i8 (bitconvert (f128 VR128:$src))), (v16i8 VR128:$src)>;
1703 def : Pat<(v8i16 (bitconvert (v16i8 VR128:$src))), (v8i16 VR128:$src)>;
1704 def : Pat<(v8i16 (bitconvert (v4i32 VR128:$src))), (v8i16 VR128:$src)>;
1705 def : Pat<(v8i16 (bitconvert (v2i64 VR128:$src))), (v8i16 VR128:$src)>;
1706 def : Pat<(v8i16 (bitconvert (i128 VR128:$src))), (v8i16 VR128:$src)>;
1707 def : Pat<(v8i16 (bitconvert (v4f32 VR128:$src))), (v8i16 VR128:$src)>;
1708 def : Pat<(v8i16 (bitconvert (v2f64 VR128:$src))), (v8i16 VR128:$src)>;
1709 def : Pat<(v8i16 (bitconvert (f128 VR128:$src))), (v8i16 VR128:$src)>;
1711 def : Pat<(v4i32 (bitconvert (v16i8 VR128:$src))), (v4i32 VR128:$src)>;
1712 def : Pat<(v4i32 (bitconvert (v8i16 VR128:$src))), (v4i32 VR128:$src)>;
1713 def : Pat<(v4i32 (bitconvert (v2i64 VR128:$src))), (v4i32 VR128:$src)>;
1714 def : Pat<(v4i32 (bitconvert (i128 VR128:$src))), (v4i32 VR128:$src)>;
1715 def : Pat<(v4i32 (bitconvert (v4f32 VR128:$src))), (v4i32 VR128:$src)>;
1716 def : Pat<(v4i32 (bitconvert (v2f64 VR128:$src))), (v4i32 VR128:$src)>;
1717 def : Pat<(v4i32 (bitconvert (f128 VR128:$src))), (v4i32 VR128:$src)>;
1719 def : Pat<(v2i64 (bitconvert (v16i8 VR128:$src))), (v2i64 VR128:$src)>;
1720 def : Pat<(v2i64 (bitconvert (v8i16 VR128:$src))), (v2i64 VR128:$src)>;
1721 def : Pat<(v2i64 (bitconvert (v4i32 VR128:$src))), (v2i64 VR128:$src)>;
1722 def : Pat<(v2i64 (bitconvert (i128 VR128:$src))), (v2i64 VR128:$src)>;
1723 def : Pat<(v2i64 (bitconvert (v4f32 VR128:$src))), (v2i64 VR128:$src)>;
1724 def : Pat<(v2i64 (bitconvert (v2f64 VR128:$src))), (v2i64 VR128:$src)>;
1725 def : Pat<(v2i64 (bitconvert (f128 VR128:$src))), (v2i64 VR128:$src)>;
1727 def : Pat<(v4f32 (bitconvert (v16i8 VR128:$src))), (v4f32 VR128:$src)>;
1728 def : Pat<(v4f32 (bitconvert (v8i16 VR128:$src))), (v4f32 VR128:$src)>;
1729 def : Pat<(v4f32 (bitconvert (v4i32 VR128:$src))), (v4f32 VR128:$src)>;
1730 def : Pat<(v4f32 (bitconvert (i128 VR128:$src))), (v4f32 VR128:$src)>;
1731 def : Pat<(v4f32 (bitconvert (v2i64 VR128:$src))), (v4f32 VR128:$src)>;
1732 def : Pat<(v4f32 (bitconvert (v2f64 VR128:$src))), (v4f32 VR128:$src)>;
1733 def : Pat<(v4f32 (bitconvert (f128 VR128:$src))), (v4f32 VR128:$src)>;
1735 def : Pat<(v2f64 (bitconvert (v16i8 VR128:$src))), (v2f64 VR128:$src)>;
1736 def : Pat<(v2f64 (bitconvert (v8i16 VR128:$src))), (v2f64 VR128:$src)>;
1737 def : Pat<(v2f64 (bitconvert (v4i32 VR128:$src))), (v2f64 VR128:$src)>;
1738 def : Pat<(v2f64 (bitconvert (i128 VR128:$src))), (v2f64 VR128:$src)>;
1739 def : Pat<(v2f64 (bitconvert (v2i64 VR128:$src))), (v2f64 VR128:$src)>;
1740 def : Pat<(v2f64 (bitconvert (v4f32 VR128:$src))), (v2f64 VR128:$src)>;
1741 def : Pat<(v2f64 (bitconvert (f128 VR128:$src))), (v2f64 VR128:$src)>;
1743 def : Pat<(f128 (bitconvert (v16i8 VR128:$src))), (f128 VR128:$src)>;
1744 def : Pat<(f128 (bitconvert (v8i16 VR128:$src))), (f128 VR128:$src)>;
1745 def : Pat<(f128 (bitconvert (v4i32 VR128:$src))), (f128 VR128:$src)>;
1746 def : Pat<(f128 (bitconvert (v2i64 VR128:$src))), (f128 VR128:$src)>;
1747 def : Pat<(f128 (bitconvert (i128 VR128:$src))), (f128 VR128:$src)>;
1748 def : Pat<(f128 (bitconvert (v4f32 VR128:$src))), (f128 VR128:$src)>;
1749 def : Pat<(f128 (bitconvert (v2f64 VR128:$src))), (f128 VR128:$src)>;
1751 def : Pat<(i128 (bitconvert (v16i8 VR128:$src))), (i128 VR128:$src)>;
1752 def : Pat<(i128 (bitconvert (v8i16 VR128:$src))), (i128 VR128:$src)>;
1753 def : Pat<(i128 (bitconvert (v4i32 VR128:$src))), (i128 VR128:$src)>;
1754 def : Pat<(i128 (bitconvert (v2i64 VR128:$src))), (i128 VR128:$src)>;
1755 def : Pat<(i128 (bitconvert (v4f32 VR128:$src))), (i128 VR128:$src)>;
1756 def : Pat<(i128 (bitconvert (v2f64 VR128:$src))), (i128 VR128:$src)>;
1757 def : Pat<(i128 (bitconvert (f128 VR128:$src))), (i128 VR128:$src)>;
1809 def : Pat<(z_vector_insert (v2f64 VR128:$vec), FP64:$elt, 0),
1811 subreg_h64), VR128:$vec, 1)>;
1812 def : Pat<(z_vector_insert (v2f64 VR128:$vec), FP64:$elt, 1),
1813 (VPDI VR128:$vec, (INSERT_SUBREG (v2f64 (IMPLICIT_DEF)), FP64:$elt,
1822 def : Pat<(f32 (z_vector_extract (v4f32 VR128:$vec), 0)),
1823 (EXTRACT_SUBREG VR128:$vec, subreg_h32)>;
1824 def : Pat<(f32 (z_vector_extract (v4f32 VR128:$vec), imm32zx2:$index)),
1825 (EXTRACT_SUBREG (VREPF VR128:$vec, imm32zx2:$index), subreg_h32)>;
1827 def : Pat<(f64 (z_vector_extract (v2f64 VR128:$vec), 0)),
1828 (EXTRACT_SUBREG VR128:$vec, subreg_h64)>;
1829 def : Pat<(f64 (z_vector_extract (v2f64 VR128:$vec), imm32zx1:$index)),
1830 (EXTRACT_SUBREG (VREPG VR128:$vec, imm32zx1:$index), subreg_h64)>;
1840 def : Pat<(store (f128 VR128:$src), bdxaddr12only:$addr),
1841 (VST VR128:$src, bdxaddr12only:$addr)>;
1942 def : Pat<(int_s390_vcfn VR128:$x, imm32zx4_timm:$m),
1943 (VCFN VR128:$x, 1, imm32zx4:$m)>;
1947 def : Pat<(int_s390_vclfnls VR128:$x, imm32zx4_timm:$m),
1948 (VCLFNL VR128:$x, 2, imm32zx4:$m)>;
1952 def : Pat<(int_s390_vclfnhs VR128:$x, imm32zx4_timm:$m),
1953 (VCLFNH VR128:$x, 2, imm32zx4:$m)>;
1957 def : Pat<(int_s390_vcnf VR128:$x, imm32zx4_timm:$m),
1958 (VCNF VR128:$x, imm32zx4:$m, 1)>;
1962 def : Pat<(int_s390_vcrnfs VR128:$x, VR128:$y, imm32zx4_timm:$m),
1963 (VCRNF VR128:$x, VR128:$y, imm32zx4:$m, 2)>;