What stage is used to shift out TDO in JTAG?
JTAG TAP controller selects one shift register at a time in a set of shift registers. There is one special shift registers which is the Instruction Register (IR). Then there are an arbitrary number of Data Register (DRs). Data register is selected depending on current value of IR.
Shifting is performed when state is either Shift-IR or Shift-DR. You probably noticed that for getting to Shift-*, you are actually required to go through Capture-* (before) and Update-* (after). Overall, JTAG is able to express any combination of Run (Run test/Idle), Capture-shift-update on IR (with an arbitrary count of shifted bits), Capture-shift-update on IR-selected DR (with an arbitrary count of shifted bits).
Currently-selected shift register is directly connected to TDI and TDO. For a N-bit shift register, if you shift for more than N bits, you should get back on TDO what you inputted on TDI N bits before. That's what makes JTAG TAP daisy chaining possible.
When in Capture state, shift register should be initialized from semantically-matching register. For instruction register, two LSBs must be captuted to &quot;01&quot; (IEEE-1149.1 requirement). Other bits are implementation-defined. For DR, whether the captured value has a meaning or not, and whether the value is constructed from an actual register value or something else is dependant on the instruction and its semantics.
Shifting phase may be performed in parts (going through exit1, pause, exit2, and back to shift). This makes no difference. The only time where shift regsiter should be committed back is on Update state.
Now for the implementation, either you use:

only one shift register with a selectable length (through bypass muxes), fed from TDI, output connected to TDO;
multiple shift registers with enables (shifting is only performed when said register is selected), and a mux at the end to select which one drives TDO;
a mix of the two previous options (some shift registers shared, some not).

This is an implementation tradeoff, as you need either muxes for Capture (when constructing initialization value of shift register from other registers) or on TDO (for selecting driving shift register).
Actual architecture for you case depends on your TAP's complexity and its instructions.
JTAG TAP block diagram from Wikipedia perfectly illustrates shift register selection: