https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80845
--- Comment #2 from Tom de Vries <vries at gcc dot gnu.org> --- (In reply to Tom de Vries from comment #0) > //(insn 14 13 15 2 > // (set (reg:QI 23) > // (subreg/s/u:QI (reg:SI 44) 0)) 2 {*movqi_insn} > // (nil)) For this insn, we enter nvpx_output_mov_insn with dst_inner == QI and src_inner == SI. There are two clauses (disregarding the CONSTANT_P (src) one) that emit mov.u32 insn, but neither of them triggers: ... if (src_inner == dst_inner) return "%.\tmov%t0\t%0, %1;"; ... if (GET_MODE_SIZE (dst_inner) == GET_MODE_SIZE (src_inner)) return "%.\tmov.b%T0\t%0, %1;"; ... So, we end up at the default, cvt case: ... return "%.\tcvt%t0%t1\t%0, %1;"; ...