nir: lower 64-bit floats to 32-bit first.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com> Acked-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9643>
This commit is contained in:
@@ -90,6 +90,9 @@ float_to_half_impl(nir_builder *b, nir_ssa_def *src, nir_rounding_mode mode)
|
||||
{
|
||||
nir_ssa_def *f32infinity = nir_imm_int(b, 255 << 23);
|
||||
nir_ssa_def *f16max = nir_imm_int(b, (127 + 16) << 23);
|
||||
|
||||
if (src->bit_size == 64)
|
||||
src = nir_f2f32(b, src);
|
||||
nir_ssa_def *sign = nir_iand(b, src, nir_imm_int(b, 0x80000000));
|
||||
nir_ssa_def *one = nir_imm_int(b, 1);
|
||||
|
||||
@@ -197,7 +200,6 @@ lower_fp16_cast_impl(nir_builder *b, nir_instr *instr, void *data)
|
||||
src = alu->src[0].src.ssa;
|
||||
swizzle = alu->src[0].swizzle;
|
||||
dst = &alu->dest.dest.ssa;
|
||||
assert(src->bit_size == 32);
|
||||
switch (alu->op) {
|
||||
case nir_op_f2f16:
|
||||
case nir_op_f2f16_rtne:
|
||||
|
||||
Reference in New Issue
Block a user