Lines Matching defs:perm

22094   unsigned char perm[MAX_VECT_LEN];
22211 vec[i] = GEN_INT (d->perm[i]);
47093 /* Construct (set target (vec_select op0 (parallel perm))) and
47097 expand_vselect (rtx target, rtx op0, const unsigned char *perm,
47110 XVECEXP (x, 0, i) = GEN_INT (perm[i]);
47131 const unsigned char *perm, unsigned nelt,
47146 ok = expand_vselect (target, x, perm, nelt, testing_p);
47182 unsigned e = d->perm[i];
47213 mask |= (d->perm[i] >= nelt) << i;
47218 mask |= (d->perm[i] >= 2 ? 15 : 0) << (i * 4);
47224 mask |= (d->perm[i] >= 4 ? 3 : 0) << (i * 2);
47233 if (d->perm[i] + 1 != d->perm[i + 1])
47237 rperm[i] = (d->perm[i] < nelt ? const0_rtx : constm1_rtx);
47253 mask |= (d->perm[i * 2] >= 16) << i;
47266 if (d->perm[i] + 1 != d->perm[i + 1])
47271 if (d->perm[i] + 2 != d->perm[i + 2])
47278 if (d->perm[i] + 16 != d->perm[i + 16])
47283 mask |= (d->perm[i * 2] >= 32) << i;
47290 mask |= (d->perm[i * 4] >= 32) << i;
47297 if (d->perm[i] + 1 != d->perm[i + 1])
47304 if (d->perm[i] + 8 != d->perm[i + 8])
47308 rperm[i] = (d->perm[i / 2] < 16 ? const0_rtx : constm1_rtx);
47320 mask |= (d->perm[i] >= 16) << i;
47326 mask |= (d->perm[i * 2] >= 16) << i;
47333 mask |= (d->perm[i] >= 4 ? 3 : 0) << (i * 2);
47395 unsigned e = d->perm[i];
47405 unsigned e = d->perm[i];
47442 if (d->perm[i] & (chunk - 1))
47446 if (d->perm[i] + j != d->perm[i + j])
47459 unsigned char perm[64];
47483 = GEN_INT ((d->perm[0] / (nelt / 2))
47484 | ((d->perm[nelt / 2] / (nelt / 2)) * 16));
47519 perm[i] = (d->perm[i * nelt / 4] * 4 / nelt) & 3;
47524 perm, 4, false))
47546 if ((d->perm[i] ^ i) & (nelt / 2))
47569 perm[i] = (d->perm[i * nelt / 8] * 8 / nelt) & 7;
47574 perm, 8, false))
47595 if ((d->perm[i] ^ i) & (nelt / 4))
47608 rperm[i] = GEN_INT ((d->perm[i * nelt / 8] * 8 / nelt) & 7);
47611 rperm[i] = GEN_INT ((d->perm[i * nelt / 16] * 16 / nelt) & 15);
47626 unsigned j, e = d->perm[i] & mask;
47690 perm2[i] = d->perm[i] & mask;
47773 perm2[i] = d->perm[i] & mask;
47774 perm2[i + 1] = (d->perm[i + 1] & mask) + nelt;
47785 perm2[i + 0] = d->perm[i + 0] & mask;
47786 perm2[i + 1] = d->perm[i + 1] & mask;
47787 perm2[i + 2] = (d->perm[i + 2] & mask) + nelt;
47788 perm2[i + 3] = (d->perm[i + 3] & mask) + nelt;
47798 if (expand_vselect_vconcat (d->target, d->op0, d->op1, d->perm, nelt,
47807 unsigned e = d->perm[i];
47859 if (d->perm[i] >= 4)
47862 if (d->perm[i] < 4)
47869 memcpy (perm2, d->perm, 4);
47876 memcpy (perm2 + 4, d->perm + 4, 4);
47913 unsigned e = d->perm[i];
47914 unsigned eswap = d->perm[i] ^ nelt;
47955 dcopy.perm[i] ^= nelt;
47961 unsigned e = dcopy.perm[i];
47970 dcopy.perm[i] = e;
48046 unsigned e = d->perm[i];
48074 dcopy.perm[i] = d->perm[i] & (nelt - 1);
48092 dcopy1.perm[i] = ((d->perm[i] >= nelt) ? (nelt + i) : i);
48146 contents |= ((unsigned HOST_WIDE_INT) 1) << d->perm[i];
48171 dremap.perm[i * 2] = i;
48172 dremap.perm[i * 2 + 1] = i + nelt;
48184 dremap.perm[i * 2] = i + nelt2;
48185 dremap.perm[i * 2 + 1] = i + nelt + nelt2;
48197 dremap.perm[i] = i;
48198 dremap.perm[i + nelt2] = i + nelt + nelt2;
48205 dremap.perm[0] = 0;
48206 dremap.perm[1] = 3;
48216 dremap.perm[i] = i + nelt2;
48217 dremap.perm[i + nelt2] = i + nelt;
48224 dremap.perm[0] = 1;
48225 dremap.perm[1] = 2;
48262 if (d->perm[0] / nelt2 == nonzero_halves[1])
48276 dremap.perm[i + nelt2] = i + nonzero_halves[1] * nelt2;
48277 dremap.perm[i] = i + nonzero_halves[0] * nelt2;
48288 dremap.perm[i] = i + nonzero_halves[0] * 4;
48289 dremap.perm[i + 4] = i + nonzero_halves[1] * 4;
48305 dremap.perm[i * 2] = i;
48306 dremap.perm[i * 2 + 1] = i + nelt;
48307 dremap.perm[i * 2 + nelt2] = i + nelt2;
48308 dremap.perm[i * 2 + nelt2 + 1] = i + nelt + nelt2;
48321 dremap.perm[i * 2] = i + nelt4;
48322 dremap.perm[i * 2 + 1] = i + nelt + nelt4;
48323 dremap.perm[i * 2 + nelt2] = i + nelt2 + nelt4;
48324 dremap.perm[i * 2 + nelt2 + 1] = i + nelt + nelt2 + nelt4;
48336 unsigned e = remap[d->perm[i]];
48343 dfinal.perm[i] = e + nelt2;
48346 dfinal.perm[i] = e;
48403 contents[0] |= 1u << (d->perm[i] / nelt4);
48404 contents[1] |= 1u << (d->perm[i + nelt2] / nelt4);
48430 dremap.perm[2 * i + cnt++] = j;
48432 dremap.perm[2 * i + cnt] = 0;
48443 dfinal.perm[i] = (d->perm[i] & (nelt4 - 1)) | (j ? nelt2 : 0);
48444 if ((d->perm[i] / nelt4) == dremap.perm[j])
48446 else if ((d->perm[i] / nelt4) == dremap.perm[j + 1])
48447 dfinal.perm[i] |= nelt4;
48469 unsigned i, j, nelt = d->nelt, nelt2 = nelt / 2, perm;
48481 /* ((perm << 2)|perm) & 0x33 is the vperm2[fi]128
48482 immediate. For perm < 16 the second permutation uses
48483 d->op0 as first operand, for perm >= 16 it uses d->op1
48486 for (perm = 0; perm < 32; perm++)
48489 if (perm < 16)
48495 if ((perm & 0xc) == (1 << 2)) continue;
48498 if ((perm & 3) == 0) continue;
48501 if ((perm & 0xf) == ((3 << 2) | 2)) continue;
48509 if ((perm & 0xc) == (3 << 2)) continue;
48512 if ((perm & 3) == 2) continue;
48515 if ((perm & 0xf) == (1 << 2)) continue;
48520 j = d->perm[i] / nelt2;
48521 if (j == ((perm >> (2 * (i >= nelt2))) & 3))
48522 dsecond.perm[i] = nelt + (i & nelt2) + (d->perm[i] & (nelt2 - 1));
48523 else if (j == (unsigned) (i >= nelt2) + 2 * (perm >= 16))
48524 dsecond.perm[i] = d->perm[i] & (nelt - 1);
48549 dfirst.perm[i] = (i & (nelt2 - 1))
48550 + ((perm >> (2 * (i >= nelt2))) & 3) * nelt2;
48557 d->op0 and result of vperm2f128 (if perm < 16) or
48559 if (perm >= 16)
48598 if (d->perm[0] != 0 && d->perm[0] != nelt / 2)
48601 if (d->perm[i] != d->perm[0] + i / 2
48602 || d->perm[i + 1] != d->perm[0] + i / 2 + nelt)
48611 if (d->perm[0])
48617 if (d->perm[0])
48623 if (d->perm[0])
48629 if (d->perm[0])
48635 if (d->perm[0])
48641 if (d->perm[0])
48676 dfirst.perm[i] = 0xff;
48679 j = (d->perm[i] & nelt2) ? i | nelt2 : i & ~nelt2;
48680 if (dfirst.perm[j] != 0xff && dfirst.perm[j] != d->perm[i])
48682 dfirst.perm[j] = d->perm[i];
48687 if (dfirst.perm[i] == 0xff)
48688 dfirst.perm[i] = i;
48712 dsecond.perm[i] = i ^ nelt2;
48742 dfirst.perm[0] = (d->perm[0] & ~1);
48743 dfirst.perm[1] = (d->perm[0] & ~1) + 1;
48744 dfirst.perm[2] = (d->perm[2] & ~1);
48745 dfirst.perm[3] = (d->perm[2] & ~1) + 1;
48746 dsecond.perm[0] = (d->perm[1] & ~1);
48747 dsecond.perm[1] = (d->perm[1] & ~1) + 1;
48748 dsecond.perm[2] = (d->perm[3] & ~1);
48749 dsecond.perm[3] = (d->perm[3] & ~1) + 1;
48750 dthird.perm[0] = (d->perm[0] % 2);
48751 dthird.perm[1] = (d->perm[1] % 2) + 4;
48752 dthird.perm[2] = (d->perm[2] % 2) + 2;
48753 dthird.perm[3] = (d->perm[3] % 2) + 6;
48800 unsigned j, e = d->perm[i];
48867 unsigned j, e = d->perm[i] & (nelt / 2 - 1);
48868 unsigned which = ((d->perm[i] ^ i) & (nelt / 2)) * eltsz;
48924 if ((d->perm[i] ^ (i * 2)) & (3 * d->nelt / 2))
48949 unsigned j, e = d->perm[i] & (nelt / 2 - 1);
48950 unsigned which = d->perm[i] >= nelt;
49057 odd = d->perm[0];
49062 if (d->perm[i] != 2 * i + odd)
49126 odd = d->perm[0];
49131 if (d->perm[i] != 2 * i + odd)
49381 odd = d->perm[0];
49386 if (d->perm[i] != 2 * i + odd)
49398 unsigned elt = d->perm[0], nelt2 = d->nelt / 2;
49463 gcc_assert (!TARGET_AVX2 || d->perm[0]);
49482 elt = d->perm[0];
49484 if (d->perm[i] != elt)
49527 ds[i & 1].perm[i / 2] = d->perm[i] / 2;
49531 rperm[i + 64] = GEN_INT ((i & 14) + (d->perm[i] & 1));
49535 rperm[i] = GEN_INT ((i & 14) + (d->perm[i] & 1));
49605 unsigned j, e = d->perm[i] & (nelt / 2 - 1);
49606 unsigned xlane = ((d->perm[i] ^ i) & (nelt / 2)) * eltsz;
49607 unsigned int which = ((d->perm[i] & nelt) ? 2 : 0) + (xlane ? 1 : 0);
49770 which |= (d->perm[i] < nelt ? 1 : 2);
49792 d->perm[i] &= nelt - 1;
49808 unsigned char perm[MAX_VECT_LEN];
49825 gcc_checking_assert (sizeof (d.perm) == sizeof (perm));
49831 d.perm[i] = ei;
49832 perm[i] = ei;
49847 memcpy (d.perm, perm, sizeof (perm));
49929 memcpy (d.perm, sel, nelt);
49932 unsigned char e = d.perm[i];
49940 d.perm[i] -= nelt;
49978 d.perm[i] = i * 2 + odd;
50006 d.perm[i * 2] = i + base;
50007 d.perm[i * 2 + 1] = i + base + nelt;
50110 d.perm[i] = i * 2;
50126 d.perm[i] = ((i * 2) & 14) + ((i & 8) ? d.nelt : 0) + (i & ~15);