mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d-shader/dxil: Delete bool not-equal-to-false comparison instructions.
This commit is contained in:
parent
f47ac703ab
commit
def87539de
Notes:
Alexandre Julliard
2024-05-13 22:58:15 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/857
@ -6726,6 +6726,15 @@ static void sm6_parser_emit_cmp2(struct sm6_parser *sm6, const struct dxil_recor
|
||||
|
||||
code = record->operands[i++];
|
||||
|
||||
/* dxcompiler occasionally emits bool not-equal-to-false, which is a no-op. Bool comparisons
|
||||
* do not otherwise occur, so deleting these avoids the need for backend support. */
|
||||
if (sm6_type_is_bool(type_a) && code == ICMP_NE && sm6_value_is_constant_zero(b))
|
||||
{
|
||||
ins->handler_idx = VKD3DSIH_NOP;
|
||||
*dst = *a;
|
||||
return;
|
||||
}
|
||||
|
||||
if ((!is_int && !is_fp) || is_int != (code >= ICMP_EQ))
|
||||
{
|
||||
FIXME("Invalid operation %"PRIu64" on type class %u.\n", code, type_a->class);
|
||||
|
Loading…
Reference in New Issue
Block a user