  Concatenating bosonic error-correcting codes with qubit codes can
substantially boost the error-correcting power of the original qubit codes. It
is not clear how to concatenate optimally, given there are several bosonic
codes and concatenation schemes to choose from, including the recently
discovered GKP-stabilizer codes [Phys. Rev. Lett. 125, 080503 (2020)}] that
allow protection of a logical bosonic mode from fluctuations of the mode's
conjugate variables. We develop efficient maximum-likelihood decoders for and
analyze the performance of three different concatenations of codes taken from
the following set: qubit stabilizer codes, analog/Gaussian stabilizer codes,
GKP codes, and GKP-stabilizer codes. We benchmark decoder performance against
additive Gaussian white noise, corroborating our numerics with analytical
calculations. We observe that the concatenation involving GKP-stabilizer codes
outperforms the more conventional concatenation of a qubit stabilizer code with
a GKP code in some cases. We also propose a GKP-stabilizer code that suppresses
fluctuations in both conjugate variables without extra quadrature squeezing,
and formulate qudit versions of GKP-stabilizer codes.
