diff --git a/src/intel/compiler/elk/elk_fs_nir.cpp b/src/intel/compiler/elk/elk_fs_nir.cpp index ad74730a429..fc9907d32a9 100644 --- a/src/intel/compiler/elk/elk_fs_nir.cpp +++ b/src/intel/compiler/elk/elk_fs_nir.cpp @@ -1059,13 +1059,19 @@ fs_nir_emit_alu(nir_to_elk_state &ntb, nir_alu_instr *instr, case nir_op_i2i32: case nir_op_u2u32: case nir_op_f2i32: + case nir_op_f2i32_sat: case nir_op_f2u32: + case nir_op_f2u32_sat: case nir_op_i2f16: case nir_op_u2f16: case nir_op_f2i16: + case nir_op_f2i16_sat: case nir_op_f2u16: + case nir_op_f2u16_sat: case nir_op_f2i8: + case nir_op_f2i8_sat: case nir_op_f2u8: + case nir_op_f2u8_sat: if (result.type == ELK_REGISTER_TYPE_B || result.type == ELK_REGISTER_TYPE_UB || result.type == ELK_REGISTER_TYPE_HF) diff --git a/src/intel/compiler/elk/elk_nir_options.c b/src/intel/compiler/elk/elk_nir_options.c index ed654b2e311..f6e8901615b 100644 --- a/src/intel/compiler/elk/elk_nir_options.c +++ b/src/intel/compiler/elk/elk_nir_options.c @@ -8,6 +8,8 @@ #define COMMON_OPTIONS \ .compact_arrays = true, \ .discard_is_demote = true, \ + .has_f2i_sat = true, \ + .has_f2u_sat = true, \ .has_uclz = true, \ .lower_fdiv = true, \ .lower_scmp = true, \ diff --git a/src/intel/compiler/elk/elk_vec4_nir.cpp b/src/intel/compiler/elk/elk_vec4_nir.cpp index a1f512386a6..1ad9fdaae5e 100644 --- a/src/intel/compiler/elk/elk_vec4_nir.cpp +++ b/src/intel/compiler/elk/elk_vec4_nir.cpp @@ -1122,7 +1122,9 @@ vec4_visitor::nir_emit_alu(nir_alu_instr *instr) case nir_op_f2f32: case nir_op_f2i32: + case nir_op_f2i32_sat: case nir_op_f2u32: + case nir_op_f2u32_sat: if (nir_src_bit_size(instr->src[0].src) == 64) emit_conversion_from_double(dst, op[0]); else