Lines Matching defs:Va
969 OpRef concats(OpRef Va, OpRef Vb, ResultStack &Results);
970 OpRef funnels(OpRef Va, OpRef Vb, int Amount, ResultStack &Results);
972 OpRef packs(ShuffleMask SM, OpRef Va, OpRef Vb, ResultStack &Results,
974 OpRef packp(ShuffleMask SM, OpRef Va, OpRef Vb, ResultStack &Results,
976 OpRef vmuxs(ArrayRef<uint8_t> Bytes, OpRef Va, OpRef Vb,
978 OpRef vmuxp(ArrayRef<uint8_t> Bytes, OpRef Va, OpRef Vb,
981 OpRef shuffs1(ShuffleMask SM, OpRef Va, ResultStack &Results);
982 OpRef shuffs2(ShuffleMask SM, OpRef Va, OpRef Vb, ResultStack &Results);
983 OpRef shuffp1(ShuffleMask SM, OpRef Va, ResultStack &Results);
984 OpRef shuffp2(ShuffleMask SM, OpRef Va, OpRef Vb, ResultStack &Results);
986 OpRef butterfly(ShuffleMask SM, OpRef Va, ResultStack &Results);
987 OpRef contracting(ShuffleMask SM, OpRef Va, OpRef Vb, ResultStack &Results);
988 OpRef expanding(ShuffleMask SM, OpRef Va, ResultStack &Results);
989 OpRef perfect(ShuffleMask SM, OpRef Va, ResultStack &Results);
993 SDValue Va, SDValue Vb, SDNode *N);
1227 OpRef HvxSelector::funnels(OpRef Va, OpRef Vb, int Amount,
1235 return Va;
1246 std::swap(Va, Vb);
1251 Results.push(Hexagon::V6_valignbi, Ty, {Vb, Va, A});
1254 Results.push(Hexagon::V6_vlalignbi, Ty, {Vb, Va, A});
1258 Results.push(Hexagon::V6_valignb, Ty, {Vb, Va, OpRef::res(-1)});
1263 // Va, Vb are single vectors. If SM only uses two vector halves from Va/Vb,
1266 OpRef HvxSelector::packs(ShuffleMask SM, OpRef Va, OpRef Vb,
1270 if (!Va.isValid() || !Vb.isValid())
1275 return Va;
1277 if (Va.isUndef()) {
1285 OpRef Inp[2] = {Va, Vb};
1327 // distinct entries!), the segments 1 and 3 of Va/Vb will be packaged into
1385 // Va = AB, Vb = CD
1389 Va = Inp[Seg0 / 2];
1393 Va = OpRef::res(Results.top());
1400 auto Vs = (Seg0 == 0 || Seg0 == 1) ? std::make_pair(Vb, Va) // AC or BD
1401 : std::make_pair(Va, Vb); // CA or DB
1404 Va = (Seg0 == 0 || Seg0 == 2) ? OpRef::lo(P) : OpRef::hi(P);
1411 // V = V6_vmux Q, (Va, Vb) or (Vb, Va)
1414 auto Vs = (Seg0 == 0) ? std::make_pair(Va, Vb) // AD
1415 : std::make_pair(Vb, Va); // CB
1417 Va = OpRef::res(Results.top());
1428 // Check if the arguments can be packed by valign(Va,Vb) or valign(Vb,Va).
1435 // valign(Lo=Va,Hi=Vb) won't work. Try swapping Va/Vb.
1441 std::swap(Va, Vb);
1450 Va = Vb;
1454 OpRef RetVal = valign(Va, Vb, ShiftR, Ty, Results);
1467 // Note: since this is using the original mask, Va and Vb must not have been
1471 // If elements picked from Va and Vb have all different (source) indexes
1491 return vmuxs(MuxBytes, Va, Vb, Results);
1496 // Va, Vb are vector pairs. If SM only uses two single vectors from Va/Vb,
1499 OpRef HvxSelector::packp(ShuffleMask SM, OpRef Va, OpRef Vb,
1514 OpRef Inp[2] = { Va, Vb };
1536 OpRef HvxSelector::vmuxs(ArrayRef<uint8_t> Bytes, OpRef Va, OpRef Vb,
1545 Results.push(Hexagon::V6_vmux, ByteTy, {OpRef::res(-1), Vb, Va});
1549 OpRef HvxSelector::vmuxp(ArrayRef<uint8_t> Bytes, OpRef Va, OpRef Vb,
1553 OpRef L = vmuxs(Bytes.take_front(S), OpRef::lo(Va), OpRef::lo(Vb), Results);
1554 OpRef H = vmuxs(Bytes.drop_front(S), OpRef::hi(Va), OpRef::hi(Vb), Results);
1558 OpRef HvxSelector::shuffs1(ShuffleMask SM, OpRef Va, ResultStack &Results) {
1566 return Va;
1572 OpRef Rotate = funnels(Va, Va, *Dist, Results);
1580 // repeated twice, i.e. if Va = AB, then handle the output of AA or BB.
1589 {Va, Va, OpRef::res(Results.top())});
1595 OpRef P = perfect(SM, Va, Results);
1598 return butterfly(SM, Va, Results);
1601 OpRef HvxSelector::shuffs2(ShuffleMask SM, OpRef Va, OpRef Vb,
1607 OpRef C = contracting(SM, Va, Vb, Results);
1613 OpRef P = packs(SM, Va, Vb, Results, PackedMask);
1623 OpRef L = shuffs1(ShuffleMask(MaskL), Va, Results);
1636 OpRef HvxSelector::shuffp1(ShuffleMask SM, OpRef Va, ResultStack &Results) {
1641 return Va;
1646 OpRef P = packs(SM, OpRef::lo(Va), OpRef::hi(Va), Results, PackedMask);
1665 OpRef R = perfect(SM, Va, Results);
1671 OpRef L = shuffs2(SM.lo(), OpRef::lo(Va), OpRef::hi(Va), Results);
1672 OpRef H = shuffs2(SM.hi(), OpRef::lo(Va), OpRef::hi(Va), Results);
1679 OpRef HvxSelector::shuffp2(ShuffleMask SM, OpRef Va, OpRef Vb,
1687 OpRef P = packp(SM, Va, Vb, Results, PackedMask);
1694 OpRef L = shuffp1(ShuffleMask(MaskL), Va, Results);
1843 MVT ResTy, SDValue Va, SDValue Vb,
1876 Vec = Va;
2064 OpRef HvxSelector::contracting(ShuffleMask SM, OpRef Va, OpRef Vb,
2067 if (!Va.isValid() || !Vb.isValid())
2083 OpRef Funnel = funnels(Va, Vb, *Dist, Results);
2113 Results.push(Opcodes[i], SingleTy, {Vb, Va});
2129 Results.push(Opcodes[i], SingleTy, {Vb, Va});
2151 Results.push(Hexagon::V6_vdealvdd, PairTy, {Vb, Va, OpRef::res(-1)});
2161 Results.push(Hexagon::V6_vdealb4w, SingleTy, {Vb, Va});
2168 OpRef HvxSelector::expanding(ShuffleMask SM, OpRef Va, ResultStack &Results) {
2218 Results.push(Opc, getPairVT(MVT::i8), {Va});
2222 OpRef HvxSelector::perfect(ShuffleMask SM, OpRef Va, ResultStack &Results) {
2435 Results.push(SingleOpc, SingleTy, {Va});
2470 OpRef Arg = HavePairs ? Va : concats(Va, OpRef::undef(SingleTy), Results);
2498 OpRef HvxSelector::butterfly(ShuffleMask SM, OpRef Va, ResultStack &Results) {
2524 Results.push(Hexagon::V6_vdelta, ResTy, {Va, OpRef(Ctl)});
2532 Results.push(Hexagon::V6_vrdelta, ResTy, {Va, OpRef(Ctl)});
2541 Results.push(Hexagon::V6_vdelta, ResTy, {Va, OpRef(CtlF)});
2603 // Vd = vector_shuffle Va, Vb, Mask
2634 OpRef Va = OpRef::undef(ResTy);
2639 Va = OpRef::OpRef::res(Results.top());
2646 OpRef Res = !HavePairs ? shuffs2(ShuffleMask(Mask), Va, Vb, Results)
2647 : shuffp2(ShuffleMask(Mask), Va, Vb, Results);