mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
vkd3d-shader/hlsl: Introduce hlsl_ir_index.
This node type is intended for use during parse-time. While we parse an indexing expression such as "a[3]", we don't know if it will end up as part of an expression (in which case it must be folded into a load) or it is for the lhs of a store (in which case it must be folded into the store's deref).
This commit is contained in:
committed by
Alexandre Julliard
parent
8cd3defe0d
commit
741c9e5893
Notes:
Alexandre Julliard
2023-04-13 23:20:40 +02:00
Approved-by: Zebediah Figura (@zfigura) Approved-by: Francisco Casas (@fcasas) 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/124
@ -2200,6 +2200,7 @@ static bool dce(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, void *context)
|
||||
{
|
||||
case HLSL_IR_CONSTANT:
|
||||
case HLSL_IR_EXPR:
|
||||
case HLSL_IR_INDEX:
|
||||
case HLSL_IR_LOAD:
|
||||
case HLSL_IR_RESOURCE_LOAD:
|
||||
case HLSL_IR_SWIZZLE:
|
||||
@ -2440,6 +2441,14 @@ static void compute_liveness_recurse(struct hlsl_block *block, unsigned int loop
|
||||
swizzle->val.node->last_read = instr->index;
|
||||
break;
|
||||
}
|
||||
case HLSL_IR_INDEX:
|
||||
{
|
||||
struct hlsl_ir_index *index = hlsl_ir_index(instr);
|
||||
|
||||
index->val.node->last_read = instr->index;
|
||||
index->idx.node->last_read = instr->index;
|
||||
break;
|
||||
}
|
||||
case HLSL_IR_CONSTANT:
|
||||
case HLSL_IR_JUMP:
|
||||
break;
|
||||
|
Reference in New Issue
Block a user