diff --git a/src/imagination/pco/pco_trans_nir.c b/src/imagination/pco/pco_trans_nir.c index 962ec90d2a8..f4b90d2145e 100644 --- a/src/imagination/pco/pco_trans_nir.c +++ b/src/imagination/pco/pco_trans_nir.c @@ -3386,8 +3386,8 @@ static pco_instr *trans_const(trans_ctx *tctx, nir_load_const_instr *nconst) return pco_mov(&tctx->b, dest, imm_reg); } - /* TODO: support more bit sizes/components. */ - assert(num_bits == 32); + /* No 64-bit support yet. */ + assert(num_bits <= 32); if (pco_ref_is_scalar(dest)) { assert(chans == 1); @@ -3396,6 +3396,10 @@ static pco_instr *trans_const(trans_ctx *tctx, nir_load_const_instr *nconst) pco_ref imm = pco_ref_imm(val, pco_bits(num_bits), pco_ref_get_dtype(dest)); + /* Override to 32-bit. */ + dest = pco_ref_bits(dest, 32); + imm = pco_ref_bits(imm, 32); + return pco_movi32(&tctx->b, dest, imm); }