Lines Matching defs:Vb
973 OpRef concats(OpRef Va, OpRef Vb, ResultStack &Results);
974 OpRef funnels(OpRef Va, OpRef Vb, int Amount, ResultStack &Results);
976 OpRef packs(ShuffleMask SM, OpRef Va, OpRef Vb, ResultStack &Results,
978 OpRef packp(ShuffleMask SM, OpRef Va, OpRef Vb, ResultStack &Results,
980 OpRef vmuxs(ArrayRef<uint8_t> Bytes, OpRef Va, OpRef Vb,
982 OpRef vmuxp(ArrayRef<uint8_t> Bytes, OpRef Va, OpRef Vb,
986 OpRef shuffs2(ShuffleMask SM, OpRef Va, OpRef Vb, ResultStack &Results);
988 OpRef shuffp2(ShuffleMask SM, OpRef Va, OpRef Vb, ResultStack &Results);
991 OpRef contracting(ShuffleMask SM, OpRef Va, OpRef Vb, ResultStack &Results);
997 SDValue Va, SDValue Vb, SDNode *N);
1231 OpRef HvxSelector::funnels(OpRef Va, OpRef Vb, int Amount,
1241 return Vb;
1250 std::swap(Va, Vb);
1255 Results.push(Hexagon::V6_valignbi, Ty, {Vb, Va, A});
1258 Results.push(Hexagon::V6_vlalignbi, Ty, {Vb, Va, A});
1262 Results.push(Hexagon::V6_valignb, Ty, {Vb, Va, OpRef::res(-1)});
1267 // Va, Vb are single vectors. If SM only uses two vector halves from Va/Vb,
1270 OpRef HvxSelector::packs(ShuffleMask SM, OpRef Va, OpRef Vb,
1274 if (!Va.isValid() || !Vb.isValid())
1277 if (Vb.isUndef()) {
1284 return Vb;
1289 OpRef Inp[2] = {Va, Vb};
1331 // distinct entries!), the segments 1 and 3 of Va/Vb will be packaged into
1389 // Va = AB, Vb = CD
1404 auto Vs = (Seg0 == 0 || Seg0 == 1) ? std::make_pair(Vb, Va) // AC or BD
1405 : std::make_pair(Va, Vb); // CA or DB
1415 // V = V6_vmux Q, (Va, Vb) or (Vb, Va)
1418 auto Vs = (Seg0 == 0) ? std::make_pair(Va, Vb) // AD
1419 : std::make_pair(Vb, Va); // CB
1432 // Check if the arguments can be packed by valign(Va,Vb) or valign(Vb,Va).
1439 // valign(Lo=Va,Hi=Vb) won't work. Try swapping Va/Vb.
1445 std::swap(Va, Vb);
1454 Va = Vb;
1455 Vb = OpRef::undef(Ty);
1458 OpRef RetVal = valign(Va, Vb, ShiftR, Ty, Results);
1471 // Note: since this is using the original mask, Va and Vb must not have been
1475 // If elements picked from Va and Vb have all different (source) indexes
1495 return vmuxs(MuxBytes, Va, Vb, Results);
1500 // Va, Vb are vector pairs. If SM only uses two single vectors from Va/Vb,
1503 OpRef HvxSelector::packp(ShuffleMask SM, OpRef Va, OpRef Vb,
1518 OpRef Inp[2] = { Va, Vb };
1540 OpRef HvxSelector::vmuxs(ArrayRef<uint8_t> Bytes, OpRef Va, OpRef Vb,
1549 Results.push(Hexagon::V6_vmux, ByteTy, {OpRef::res(-1), Vb, Va});
1553 OpRef HvxSelector::vmuxp(ArrayRef<uint8_t> Bytes, OpRef Va, OpRef Vb,
1557 OpRef L = vmuxs(Bytes.take_front(S), OpRef::lo(Va), OpRef::lo(Vb), Results);
1558 OpRef H = vmuxs(Bytes.drop_front(S), OpRef::hi(Va), OpRef::hi(Vb), Results);
1605 OpRef HvxSelector::shuffs2(ShuffleMask SM, OpRef Va, OpRef Vb,
1611 OpRef C = contracting(SM, Va, Vb, Results);
1617 OpRef P = packs(SM, Va, Vb, Results, PackedMask);
1628 OpRef R = shuffs1(ShuffleMask(MaskR), Vb, Results);
1683 OpRef HvxSelector::shuffp2(ShuffleMask SM, OpRef Va, OpRef Vb,
1691 OpRef P = packp(SM, Va, Vb, Results, PackedMask);
1699 OpRef R = shuffp1(ShuffleMask(MaskR), Vb, Results);
1847 MVT ResTy, SDValue Va, SDValue Vb,
1882 Vec = Vb;
2071 OpRef HvxSelector::contracting(ShuffleMask SM, OpRef Va, OpRef Vb,
2074 if (!Va.isValid() || !Vb.isValid())
2090 OpRef Funnel = funnels(Va, Vb, *Dist, Results);
2120 Results.push(Opcodes[i], SingleTy, {Vb, Va});
2136 Results.push(Opcodes[i], SingleTy, {Vb, Va});
2158 Results.push(Hexagon::V6_vdealvdd, PairTy, {Vb, Va, OpRef::res(-1)});
2168 Results.push(Hexagon::V6_vdealb4w, SingleTy, {Vb, Va});
2610 // Vd = vector_shuffle Va, Vb, Mask
2642 OpRef Vb = OpRef::undef(ResTy);
2650 Vb = OpRef::res(Results.top());
2653 OpRef Res = !HavePairs ? shuffs2(ShuffleMask(Mask), Va, Vb, Results)
2654 : shuffp2(ShuffleMask(Mask), Va, Vb, Results);