Folding signed or unsigned i32 -> i16 conversion into sampling instruction causes it to behave differently with out-of-bounds values. The conversion expects higher bits being masked, however folded variant does clamp the value.
A concrete example is that:
is not equal this:
isaml.base0 (u32)(x)r0.w (sy)cov.u32u16 hr0.x, r0.w
Fixes misrendering in "Injustice 2".
Closes: #7869 (closed)