intel/vec4: Set the rounding mode
The rounding mode only needs to be set once, because 16-bit floats or preserving denorms aren't supported for the platforms where vec4 is used. Reviewed-by: Emma Anholt <emma@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20232>
This commit is contained in:
@@ -2179,6 +2179,18 @@ generate_code(struct brw_codegen *p,
|
||||
brw_DIM(p, dst, retype(src[0], BRW_REGISTER_TYPE_F));
|
||||
break;
|
||||
|
||||
case SHADER_OPCODE_RND_MODE: {
|
||||
assert(src[0].file == BRW_IMMEDIATE_VALUE);
|
||||
/*
|
||||
* Changes the floating point rounding mode updating the control
|
||||
* register field defined at cr0.0[5-6] bits.
|
||||
*/
|
||||
enum brw_rnd_mode mode =
|
||||
(enum brw_rnd_mode) (src[0].d << BRW_CR0_RND_MODE_SHIFT);
|
||||
brw_float_controls_mode(p, mode, BRW_CR0_RND_MODE_MASK);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
unreachable("Unsupported opcode");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user