Lines Matching defs:LocalAccum
3904 // Merge the given carries into the 32-bit LocalAccum, which is modified
3909 [&](Register &LocalAccum, const Carry &CarryIn) -> Register {
3916 if (!LocalAccum) {
3917 LocalAccum = B.buildZExt(S32, CarryIn[0]).getReg(0);
3930 if (!LocalAccum) {
3931 LocalAccum = getZero32();
3937 B.buildUAdde(S32, S1, CarryAccum, LocalAccum, CarryIn.back());
3938 LocalAccum = Add.getReg(0);
3944 // LocalAccum + (partial products at DstIndex)
3947 // LocalAccum is an array of one or two 32-bit registers that are updated
3953 [&](MutableArrayRef<Register> LocalAccum, unsigned DstIndex, Carry &CarryIn)
3955 assert((DstIndex + 1 < Accum.size() && LocalAccum.size() == 2) ||
3956 (DstIndex + 1 >= Accum.size() && LocalAccum.size() == 1));
3963 if (LocalAccum.size() == 1 &&
3973 if (!LocalAccum[0] || KB.getKnownBits(LocalAccum[0]).isZero()) {
3974 LocalAccum[0] = Mul.getReg(0);
3977 LocalAccum[0] = B.buildAdd(S32, LocalAccum[0], Mul).getReg(0);
3979 LocalAccum[0] =
3980 B.buildUAdde(S32, S1, LocalAccum[0], Mul, CarryIn.back())
3994 if (LocalAccum[0]) {
3995 if (LocalAccum.size() == 1) {
3996 Tmp = B.buildAnyExt(S64, LocalAccum[0]).getReg(0);
3998 } else if (LocalAccum[1]) {
3999 Tmp = B.buildMergeLikeInstr(S64, LocalAccum).getReg(0);
4002 Tmp = B.buildZExt(S64, LocalAccum[0]).getReg(0);
4006 assert(LocalAccum.size() == 1 || !LocalAccum[1]);
4028 LocalAccum[0] = Unmerge.getReg(0);
4029 if (LocalAccum.size() > 1)
4030 LocalAccum[1] = Unmerge.getReg(1);
4065 auto LocalAccum = Accum.drop_front(2 * i).take_front(2);
4066 EvenCarry = buildMadChain(LocalAccum, 2 * i, EvenCarryIn);
4072 auto LocalAccum = Accum.drop_front(2 * i - 1).take_front(2);
4073 OddCarry = buildMadChain(LocalAccum, 2 * i - 1, OddCarryIn);
4077 auto LocalAccum = MutableArrayRef(SeparateOddOut)
4079 OddCarry = buildMadChain(LocalAccum, 2 * i - 1, OddCarryIn);