panfrost/midgard: Support 64bit pack/unpack
Needed for OpenCL support through Rusticl. Acked-by: Eric R. Smith <eric.smith@collabora.com> Signed-off-by: David Heidelberg <david@ixit.cz> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30963>
This commit is contained in:

committed by
Marge Bot

parent
7a0838ebb1
commit
2137c62923
@@ -377,6 +377,12 @@ mem_access_size_align_cb(nir_intrinsic_op intrin, uint8_t bytes,
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint8_t
|
||||||
|
lower_vec816_alu(const nir_instr *instr, const void *cb_data)
|
||||||
|
{
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
midgard_preprocess_nir(nir_shader *nir, unsigned gpu_id)
|
midgard_preprocess_nir(nir_shader *nir, unsigned gpu_id)
|
||||||
{
|
{
|
||||||
@@ -425,6 +431,8 @@ midgard_preprocess_nir(nir_shader *nir, unsigned gpu_id)
|
|||||||
};
|
};
|
||||||
|
|
||||||
NIR_PASS_V(nir, nir_lower_mem_access_bit_sizes, &mem_size_options);
|
NIR_PASS_V(nir, nir_lower_mem_access_bit_sizes, &mem_size_options);
|
||||||
|
NIR_PASS_V(nir, nir_lower_alu_width, lower_vec816_alu, NULL);
|
||||||
|
NIR_PASS_V(nir, nir_lower_alu_vec8_16_srcs);
|
||||||
}
|
}
|
||||||
|
|
||||||
NIR_PASS_V(nir, nir_lower_ssbo, NULL);
|
NIR_PASS_V(nir, nir_lower_ssbo, NULL);
|
||||||
@@ -893,6 +901,14 @@ emit_alu(compiler_context *ctx, nir_alu_instr *instr)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case nir_op_unpack_64_2x32:
|
||||||
|
case nir_op_unpack_64_4x16:
|
||||||
|
case nir_op_pack_64_2x32:
|
||||||
|
case nir_op_pack_64_4x16: {
|
||||||
|
op = midgard_alu_op_imov;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
mesa_loge("Unhandled ALU op %s\n", nir_op_infos[instr->op].name);
|
mesa_loge("Unhandled ALU op %s\n", nir_op_infos[instr->op].name);
|
||||||
assert(0);
|
assert(0);
|
||||||
|
Reference in New Issue
Block a user