Lines Matching refs:Results

964     void materialize(const ResultStack &Results);
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,
981 ResultStack &Results);
983 ResultStack &Results);
985 OpRef shuffs1(ShuffleMask SM, OpRef Va, ResultStack &Results);
986 OpRef shuffs2(ShuffleMask SM, OpRef Va, OpRef Vb, ResultStack &Results);
987 OpRef shuffp1(ShuffleMask SM, OpRef Va, ResultStack &Results);
988 OpRef shuffp2(ShuffleMask SM, OpRef Va, OpRef Vb, ResultStack &Results);
990 OpRef butterfly(ShuffleMask SM, OpRef Va, ResultStack &Results);
991 OpRef contracting(ShuffleMask SM, OpRef Va, OpRef Vb, ResultStack &Results);
992 OpRef expanding(ShuffleMask SM, OpRef Va, ResultStack &Results);
993 OpRef perfect(ShuffleMask SM, OpRef Va, ResultStack &Results);
1158 void HvxSelector::materialize(const ResultStack &Results) {
1161 Results.print(dbgs(), DAG);
1163 if (Results.empty())
1165 const SDLoc &dl(Results.InpNode);
1168 for (unsigned I = 0, E = Results.size(); I != E; ++I) {
1169 const NodeTemplate &Node = Results[I];
1199 } // for (Node : Results)
1209 SDNode *InpN = Results.InpNode;
1220 OpRef HvxSelector::concats(OpRef Lo, OpRef Hi, ResultStack &Results) {
1222 const SDLoc &dl(Results.InpNode);
1223 Results.push(TargetOpcode::REG_SEQUENCE, getPairVT(MVT::i8), {
1228 return OpRef::res(Results.top());
1232 ResultStack &Results) {
1244 const SDLoc &dl(Results.InpNode);
1255 Results.push(Hexagon::V6_valignbi, Ty, {Vb, Va, A});
1258 Results.push(Hexagon::V6_vlalignbi, Ty, {Vb, Va, A});
1261 Results.push(Hexagon::A2_tfrsi, Ty, {A});
1262 Results.push(Hexagon::V6_valignb, Ty, {Vb, Va, OpRef::res(-1)});
1264 return OpRef::res(Results.top());
1271 ResultStack &Results, MutableArrayRef<int> NewMask,
1293 ResultStack &Results) {
1296 const SDLoc &dl(Results.InpNode);
1301 Results.push(Opc, Ty, {Hi, Lo, S});
1302 return OpRef::res(Results.top());
1304 Results.push(Hexagon::A2_tfrsi, MVT::i32, {getConst32(Amt, dl)});
1305 OpRef A = OpRef::res(Results.top());
1306 Results.push(Hexagon::V6_valignb, Ty, {Hi, Lo, A});
1307 return OpRef::res(Results.top());
1385 const SDLoc &dl(Results.InpNode);
1386 Results.push(Hexagon::A2_tfrsi, MVT::i32, {getConst32(SegLen, dl)});
1387 OpRef HL = OpRef::res(Results.top());
1396 Results.push(Hexagon::V6_vror, Ty, {Inp[Seg0 / 2], HL});
1397 Va = OpRef::res(Results.top());
1406 Results.push(Hexagon::V6_vshuffvdd, PairTy, {Vs.first, Vs.second, HL});
1407 OpRef P = OpRef::res(Results.top());
1416 Results.push(Hexagon::V6_pred_scalar2, getBoolVT(), {HL});
1417 OpRef Qt = OpRef::res(Results.top());
1420 Results.push(Hexagon::V6_vmux, Ty, {Qt, Vs.first, Vs.second});
1421 Va = OpRef::res(Results.top());
1458 OpRef RetVal = valign(Va, Vb, ShiftR, Ty, Results);
1495 return vmuxs(MuxBytes, Va, Vb, Results);
1504 ResultStack &Results, MutableArrayRef<int> NewMask) {
1537 return concats(Out[0], Out[1], Results);
1541 ResultStack &Results) {
1545 const SDLoc &dl(Results.InpNode);
1547 Results.push(Hexagon::V6_vd0, ByteTy, {});
1548 Results.push(Hexagon::V6_veqb, BoolTy, {OpRef(B), OpRef::res(-1)});
1549 Results.push(Hexagon::V6_vmux, ByteTy, {OpRef::res(-1), Vb, Va});
1550 return OpRef::res(Results.top());
1554 ResultStack &Results) {
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);
1559 return concats(L, H, Results);
1562 OpRef HvxSelector::shuffs1(ShuffleMask SM, OpRef Va, ResultStack &Results) {
1576 OpRef Rotate = funnels(Va, Va, *Dist, Results);
1590 const SDLoc &dl(Results.InpNode);
1591 Results.push(Hexagon::A2_tfrsi, MVT::i32, {getConst32(HalfLen, dl)});
1592 Results.push(Hexagon::V6_vshuffvdd, getPairVT(MVT::i8),
1593 {Va, Va, OpRef::res(Results.top())});
1594 OpRef S = OpRef::res(Results.top());
1599 OpRef P = perfect(SM, Va, Results);
1602 return butterfly(SM, Va, Results);
1606 ResultStack &Results) {
1611 OpRef C = contracting(SM, Va, Vb, Results);
1617 OpRef P = packs(SM, Va, Vb, Results, PackedMask);
1619 return shuffs1(ShuffleMask(PackedMask), P, Results);
1627 OpRef L = shuffs1(ShuffleMask(MaskL), Va, Results);
1628 OpRef R = shuffs1(ShuffleMask(MaskR), Vb, Results);
1637 return vmuxs(Bytes, L, R, Results);
1640 OpRef HvxSelector::shuffp1(ShuffleMask SM, OpRef Va, ResultStack &Results) {
1650 OpRef P = packs(SM, OpRef::lo(Va), OpRef::hi(Va), Results, PackedMask);
1653 OpRef E = expanding(PM, P, Results);
1657 OpRef L = shuffs1(PM.lo(), P, Results);
1658 OpRef H = shuffs1(PM.hi(), P, Results);
1660 return concats(L, H, Results);
1669 OpRef R = perfect(SM, Va, Results);
1675 OpRef L = shuffs2(SM.lo(), OpRef::lo(Va), OpRef::hi(Va), Results);
1676 OpRef H = shuffs2(SM.hi(), OpRef::lo(Va), OpRef::hi(Va), Results);
1678 return concats(L, H, Results);
1684 ResultStack &Results) {
1691 OpRef P = packp(SM, Va, Vb, Results, PackedMask);
1693 return shuffp1(ShuffleMask(PackedMask), P, Results);
1698 OpRef L = shuffp1(ShuffleMask(MaskL), Va, Results);
1699 OpRef R = shuffp1(ShuffleMask(MaskR), Vb, Results);
1709 return vmuxp(Bytes, L, R, Results);
2072 ResultStack &Results) {
2090 OpRef Funnel = funnels(Va, Vb, *Dist, Results);
2120 Results.push(Opcodes[i], SingleTy, {Vb, Va});
2121 return OpRef::res(Results.top());
2136 Results.push(Opcodes[i], SingleTy, {Vb, Va});
2137 return OpRef::res(Results.top());
2152 const SDLoc &dl(Results.InpNode);
2157 Results.push(Hexagon::A2_tfrsi, MVT::i32, {getConst32(-2 * Size, dl)});
2158 Results.push(Hexagon::V6_vdealvdd, PairTy, {Vb, Va, OpRef::res(-1)});
2159 auto vdeal = OpRef::res(Results.top());
2160 Results.push(Opcodes[i], SingleTy,
2162 return OpRef::res(Results.top());
2168 Results.push(Hexagon::V6_vdealb4w, SingleTy, {Vb, Va});
2169 return OpRef::res(Results.top());
2175 OpRef HvxSelector::expanding(ShuffleMask SM, OpRef Va, ResultStack &Results) {
2225 Results.push(Opc, getPairVT(MVT::i8), {Va});
2226 return OpRef::res(Results.top());
2229 OpRef HvxSelector::perfect(ShuffleMask SM, OpRef Va, ResultStack &Results) {
2442 Results.push(SingleOpc, SingleTy, {Va});
2443 return OpRef::res(Results.top());
2476 const SDLoc &dl(Results.InpNode);
2477 OpRef Arg = HavePairs ? Va : concats(Va, OpRef::undef(SingleTy), Results);
2479 Arg = concats(OpRef::hi(Arg), OpRef::lo(Arg), Results);
2494 Results.push(Hexagon::A2_tfrsi, MVT::i32, {getConst32(S, dl)});
2498 Results.push(Res);
2499 Arg = OpRef::res(Results.top());
2505 OpRef HvxSelector::butterfly(ShuffleMask SM, OpRef Va, ResultStack &Results) {
2519 const SDLoc &dl(Results.InpNode);
2531 Results.push(Hexagon::V6_vdelta, ResTy, {Va, OpRef(Ctl)});
2532 return OpRef::res(Results.top());
2539 Results.push(Hexagon::V6_vrdelta, ResTy, {Va, OpRef(Ctl)});
2540 return OpRef::res(Results.top());
2548 Results.push(Hexagon::V6_vdelta, ResTy, {Va, OpRef(CtlF)});
2549 Results.push(Hexagon::V6_vrdelta, ResTy,
2551 return OpRef::res(Results.top());
2640 ResultStack Results(SN);
2645 Results.push(TargetOpcode::COPY, ResTy, {Vec0});
2646 Va = OpRef::OpRef::res(Results.top());
2649 Results.push(TargetOpcode::COPY, ResTy, {Vec1});
2650 Vb = OpRef::res(Results.top());
2653 OpRef Res = !HavePairs ? shuffs2(ShuffleMask(Mask), Va, Vb, Results)
2654 : shuffp2(ShuffleMask(Mask), Va, Vb, Results);
2659 Results.push(TargetOpcode::COPY, ResTy, {Res});
2660 materialize(Results);