mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-03 16:28:08 +02:00
ac/llvm: implement nir_op_unpack_half_2x16_split_{x,y}
nir_unpack_half_2x16_split_{x,y}_flush_to_zero don't have to be
implemented because RADV/LLVM doesn't allow flushing denorms
for 16-bit floating point.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6937>
This commit is contained in:
parent
cdf6d93498
commit
f11d4f3127
1 changed files with 12 additions and 0 deletions
|
|
@ -1053,6 +1053,18 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
|
|||
case nir_op_unpack_half_2x16:
|
||||
result = emit_unpack_half_2x16(&ctx->ac, src[0]);
|
||||
break;
|
||||
case nir_op_unpack_half_2x16_split_x: {
|
||||
assert(ac_get_llvm_num_components(src[0]) == 1);
|
||||
LLVMValueRef tmp = emit_unpack_half_2x16(&ctx->ac, src[0]);
|
||||
result = LLVMBuildExtractElement(ctx->ac.builder, tmp, ctx->ac.i32_0, "");
|
||||
break;
|
||||
}
|
||||
case nir_op_unpack_half_2x16_split_y: {
|
||||
assert(ac_get_llvm_num_components(src[0]) == 1);
|
||||
LLVMValueRef tmp = emit_unpack_half_2x16(&ctx->ac, src[0]);
|
||||
result = LLVMBuildExtractElement(ctx->ac.builder, tmp, ctx->ac.i32_1, "");
|
||||
break;
|
||||
}
|
||||
case nir_op_fddx:
|
||||
case nir_op_fddy:
|
||||
case nir_op_fddx_fine:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue