Lines Matching defs:zm

505     const ZRegister& zm,
509 // E.g. zd = zd / zm
511 (this->*fn)(zd, pg, zn, zm);
512 } else if (zd.Aliases(zm)) {
515 (this->*rev_fn)(zd, pg, zm, zn);
517 // E.g. zd = zn / zm
519 (this->*fn)(zd, pg, zd, zm);
527 const ZRegister& zm,
534 (this->*fn)(zd, pg, zd, zm);
535 } else if (zd.Aliases(zm)) {
550 (this->*fn)(scratch, pg, scratch, zm);
561 (this->*fn)(zd, pg, zd, zm);
565 // Instructions of the form "inst zda, zn, zm, #num", where they are
575 const ZRegister& zm, \
577 if ((zd.Aliases(zn) || zd.Aliases(zm)) && !zd.Aliases(za)) { \
579 VIXL_ASSERT(AreSameLaneSize(zn, zm)); \
581 Mov(ztmp, zd.Aliases(zn) ? zn : zm); \
585 (zd.Aliases(zm) ? ztmp : zm), \
589 ASMFN(zd, zn, zm, imm); \
595 // Instructions of the form "inst zda, zn, zm, #num, #num", where they are
601 // This doesn't handle zm when it's out of the range that can be encoded in
607 const ZRegister& zm, \
610 if ((zd.Aliases(zn) || zd.Aliases(zm)) && !zd.Aliases(za)) { \
615 ASMFN(ztmp, zn, zm, index, rot); \
620 ASMFN(zd, zn, zm, index, rot); \
648 const ZRegister& zm) { \
650 if (zd.Aliases(zm) && !zd.Aliases(zn)) { \
652 ZRegister scratch = temps.AcquireZ().WithSameLaneSizeAs(zm); \
653 Mov(scratch, zm); \
658 ASMFN(zd, pg, zd, zm); \
690 const ZRegister& zm) { \
695 zm, \
707 const ZRegister& zm,
713 zm,
722 const ZRegister& zm,
728 zm,
737 const ZRegister& zm,
743 zm,
752 const ZRegister& zm,
758 zm,
767 const ZRegister& zm,
773 zm,
782 const ZRegister& zm,
788 zm,
797 const ZRegister& zm,
803 zm,
812 const ZRegister& zm,
818 zm,
970 const ZRegister& zm) {
973 // zda = zda + (zn * zm)
975 mla(zd, pg, zn, zm);
977 // zdn = za + (zdn * zm)
979 mad(zd, pg, zm, za);
980 } else if (zd.Aliases(zm)) {
981 // Multiplication is commutative, so we can swap zn and zm.
986 // zd = za + (zn * zm)
989 mla(zd, pg, zn, zm);
997 const ZRegister& zm) {
1000 // zda = zda - (zn * zm)
1002 mls(zd, pg, zn, zm);
1004 // zdn = za - (zdn * zm)
1006 msb(zd, pg, zm, za);
1007 } else if (zd.Aliases(zm)) {
1008 // Multiplication is commutative, so we can swap zn and zm.
1013 // zd = za - (zn * zm)
1016 mls(zd, pg, zn, zm);
1026 ZRegister zm = temps.AcquireZ().WithLaneSize(zn.GetLaneSizeInBits());
1027 Dup(zm, imm);
1029 cmp(cond, pd, pg, zn, zm);
1092 const ZRegister& zm) {
1099 MovprfxHelperScope guard(this, zd, zm);
1103 ZRegister scratch = temps.AcquireZ().WithLaneSize(zm.GetLaneSizeInBits());
1107 sub(zd, scratch, zm);
1248 // In scatter-gather modes, zt and zn/zm have the same lane size. However,
1671 const ZRegister& zm,
1674 // zda = zda + (zn . zm)
1676 (this->*fn)(zd, zn, zm, index);
1678 } else if (zd.Aliases(zn) || zd.Aliases(zm)) {
1679 // zdn = za + (zdn . zm[index])
1686 (this->*fn)(scratch, zn, zm, index);
1691 // zd = za + (zn . zm)
1693 (this->*fn)(zd, zn, zm, index);
1701 const ZRegister& zm) {
1702 if (!zd.Aliases(za) && (zd.Aliases(zn) || zd.Aliases(zm))) {
1703 // zd = za . zd . zm
1710 (this->*fn)(scratch, zn, zm);
1716 (this->*fn)(zd, zn, zm);
1724 const ZRegister& zm) {
1725 if (!zd.Aliases(za) && (zd.Aliases(zn) || zd.Aliases(zm))) {
1726 // zd = za . zd . zm
1733 (this->*fn)(scratch, scratch, zn, zm);
1739 (this->*fn)(zd, zd, zn, zm);
1747 const ZRegister& zm,
1749 if (!zd.Aliases(za) && (zd.Aliases(zn) || zd.Aliases(zm))) {
1750 // zd = za . zd . zm[i]
1757 (this->*fn)(scratch, zn, zm, imm);
1762 // zd = za . zn . zm[i]
1764 (this->*fn)(zd, zn, zm, imm);
1772 const ZRegister& zm) {
1773 if (zn.Aliases(zm)) {
1774 // If zn == zm, the difference is zero.
1780 (this->*fn)(zd, zn, zm);
1786 (this->*fn)(zd, ztmp, zm);
1787 } else if (zd.Aliases(zm)) {
1790 Mov(ztmp, zm);
1795 (this->*fn)(zd, zn, zm);
1848 const ZRegister& zm) { \
1850 HELPER(&Assembler::ASMFN, zd, za, zn, zm); \
1883 const ZRegister& zm, \
1886 HELPER(&Assembler::ASMFN, zd, za, zn, zm, imm); \
1894 const ZRegister& zm,
1897 SVEDotIndexHelper(&Assembler::sdot, zd, za, zn, zm, index);
1903 const ZRegister& zm,
1906 SVEDotIndexHelper(&Assembler::udot, zd, za, zn, zm, index);
1912 const ZRegister& zm,
1915 SVEDotIndexHelper(&Assembler::sudot, zd, za, zn, zm, index);
1921 const ZRegister& zm,
1924 SVEDotIndexHelper(&Assembler::usdot, zd, za, zn, zm, index);
1930 const ZRegister& zm,
1933 // This doesn't handle zm when it's out of the range that can be encoded in
1935 if ((zd.Aliases(zn) || zd.Aliases(zm)) && !zd.Aliases(za)) {
1940 cdot(ztmp, zn, zm, index, rot);
1945 cdot(zd, zn, zm, index, rot);
1952 const ZRegister& zm,
1954 if ((zd.Aliases(zn) || zd.Aliases(zm)) && !zd.Aliases(za)) {
1956 VIXL_ASSERT(AreSameLaneSize(zn, zm));
1958 Mov(ztmp, zd.Aliases(zn) ? zn : zm);
1960 cdot(zd, (zd.Aliases(zn) ? ztmp : zn), (zd.Aliases(zm) ? ztmp : zm), rot);
1963 cdot(zd, zn, zm, rot);
1971 const ZRegister& zm,
1978 // zda = (-)zda + ((-)zn * zm) for fmla, fmls, fnmla and fnmls.
1980 (this->*fn_zda)(zd, pg, zn, zm);
1982 // zdn = (-)za + ((-)zdn * zm) for fmad, fmsb, fnmad and fnmsb.
1984 (this->*fn_zdn)(zd, pg, zm, za);
1985 } else if (zd.Aliases(zm)) {
1989 // swap zn and zm.
2002 // scratch = (-)za + ((-)zn * zm)
2003 (this->*fn_zda)(scratch, pg, zn, zm);
2013 // zd = (-)za + ((-)zn * zm) for fmla, fmls, fnmla and fnmls.
2015 (this->*fn_zda)(zd, pg, zn, zm);
2023 const ZRegister& zm,
2030 zm,
2040 const ZRegister& zm,
2047 zm,
2057 const ZRegister& zm,
2064 zm,
2074 const ZRegister& zm,
2081 zm,
2089 const ZRegister& zm,
2092 if (zd.Aliases(zm) && !zd.Aliases(zn)) {
2094 ZRegister scratch = temps.AcquireZ().WithSameLaneSizeAs(zm);
2095 Mov(scratch, zm);
2100 ftmad(zd, zd, zm, imm3);
2107 const ZRegister& zm,
2110 if (zd.Aliases(zm) && !zd.Aliases(zn)) {
2115 fcadd(scratch, pg, scratch, zm, rot);
2120 fcadd(zd, pg, zd, zm, rot);
2128 const ZRegister& zm,
2131 if ((zd.Aliases(zn) || zd.Aliases(zm)) && !zd.Aliases(za)) {
2136 fcmla(ztmp, pg, zn, zm, rot);
2141 fcmla(zd, pg, zn, zm, rot);
2148 const ZRegister& zm) {
2150 if (CPUHas(CPUFeatures::kSVE2) && AreConsecutive(zn, zm) && !zd.Aliases(zn)) {
2152 splice(zd, pg, zn, zm);
2153 } else if (zd.Aliases(zm) && !zd.Aliases(zn)) {
2158 splice(scratch, pg, scratch, zm);
2163 splice(zd, pg, zd, zm);
2170 const ZRegister& zm) {
2172 if (zd.Aliases(zm) && !zd.Aliases(zn)) {
2177 clasta(scratch, pg, scratch, zm);
2182 clasta(zd, pg, zd, zm);
2189 const ZRegister& zm) {
2191 if (zd.Aliases(zm) && !zd.Aliases(zn)) {
2196 clastb(scratch, pg, scratch, zm);
2201 clastb(zd, pg, zd, zm);
2256 const ZRegister& zm,
2259 if (!zd.Aliases(zn) && zd.Aliases(zm)) {
2261 ZRegister ztmp = temps.AcquireZ().WithSameLaneSizeAs(zm);
2262 Mov(ztmp, zm);
2269 (this->*fn)(zd, zd, zm, rot);
2275 const ZRegister& zm,
2277 ComplexAddition(&Assembler::cadd, zd, zn, zm, rot);
2282 const ZRegister& zm,
2284 ComplexAddition(&Assembler::sqcadd, zd, zn, zm, rot);