diff --git a/.pick_status.json b/.pick_status.json index 81e516629d6..cb024654a3b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4054,7 +4054,7 @@ "description": "r600/nir: Fix u64vec2 immediate lowering", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "165fb5117bf70402e66d34538d4085e060f57fea" }, diff --git a/src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp b/src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp index 9828802ba2c..09f294ca481 100644 --- a/src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp @@ -929,12 +929,12 @@ Lower64BitToVec2::lower(nir_instr *instr) } case nir_instr_type_load_const: { auto lc = nir_instr_as_load_const(instr); - assert(lc->def.num_components < 3); - nir_const_value val[4] = {{0}}; + assert(lc->def.num_components <= 2); + nir_const_value val[4]; for (uint i = 0; i < lc->def.num_components; ++i) { uint64_t v = lc->value[i].u64; - val[0].u32 = v & 0xffffffff; - val[1].u32 = (v >> 32) & 0xffffffff; + val[i * 2 + 0] = nir_const_value_for_uint(v & 0xffffffff, 32); + val[i * 2 + 1] = nir_const_value_for_uint(v >> 32, 32); } return nir_build_imm(b, 2 * lc->def.num_components, 32, val);