Skip to content
Snippets Groups Projects

hlsl: Return hlsl_ir_node pointers from instruction constructors, part 3.

Merged Elizabeth Figura requested to merge zfigura/vkd3d:pr4 into master
1 unresolved thread
3 files
+ 15
16
Compare changes
  • Side-by-side
  • Inline
Files
3
+ 15
11
@@ -1298,7 +1298,7 @@ struct hlsl_ir_node *hlsl_new_load_component(struct hlsl_ctx *ctx, struct hlsl_b
return &load->node;
}
struct hlsl_ir_resource_load *hlsl_new_resource_load(struct hlsl_ctx *ctx,
struct hlsl_ir_node *hlsl_new_resource_load(struct hlsl_ctx *ctx,
const struct hlsl_resource_load_params *params, const struct vkd3d_shader_location *loc)
{
struct hlsl_ir_resource_load *load;
@@ -1327,10 +1327,10 @@ struct hlsl_ir_resource_load *hlsl_new_resource_load(struct hlsl_ctx *ctx,
hlsl_src_from_node(&load->coords, params->coords);
hlsl_src_from_node(&load->texel_offset, params->texel_offset);
hlsl_src_from_node(&load->lod, params->lod);
return load;
return &load->node;
}
struct hlsl_ir_resource_store *hlsl_new_resource_store(struct hlsl_ctx *ctx, const struct hlsl_deref *resource,
struct hlsl_ir_node *hlsl_new_resource_store(struct hlsl_ctx *ctx, const struct hlsl_deref *resource,
struct hlsl_ir_node *coords, struct hlsl_ir_node *value, const struct vkd3d_shader_location *loc)
{
struct hlsl_ir_resource_store *store;
@@ -1341,7 +1341,7 @@ struct hlsl_ir_resource_store *hlsl_new_resource_store(struct hlsl_ctx *ctx, con
hlsl_copy_deref(ctx, &store->resource, resource);
hlsl_src_from_node(&store->coords, coords);
hlsl_src_from_node(&store->value, value);
return store;
return &store->node;
}
struct hlsl_ir_swizzle *hlsl_new_swizzle(struct hlsl_ctx *ctx, DWORD s, unsigned int components,
@@ -1403,7 +1403,8 @@ struct hlsl_ir_node *hlsl_new_jump(struct hlsl_ctx *ctx, enum hlsl_ir_jump_type
return &jump->node;
}
struct hlsl_ir_loop *hlsl_new_loop(struct hlsl_ctx *ctx, const struct vkd3d_shader_location *loc)
struct hlsl_ir_node *hlsl_new_loop(struct hlsl_ctx *ctx,
struct hlsl_block *block, const struct vkd3d_shader_location *loc)
{
struct hlsl_ir_loop *loop;
@@ -1411,7 +1412,8 @@ struct hlsl_ir_loop *hlsl_new_loop(struct hlsl_ctx *ctx, const struct vkd3d_shad
return NULL;
init_node(&loop->node, HLSL_IR_LOOP, NULL, loc);
hlsl_block_init(&loop->body);
return loop;
hlsl_block_add_block(&loop->body, block);
return &loop->node;
}
struct clone_instr_map
@@ -1571,16 +1573,18 @@ static struct hlsl_ir_node *clone_load(struct hlsl_ctx *ctx, struct clone_instr_
static struct hlsl_ir_node *clone_loop(struct hlsl_ctx *ctx, struct clone_instr_map *map, struct hlsl_ir_loop *src)
{
struct hlsl_ir_loop *dst;
struct hlsl_ir_node *dst;
struct hlsl_block body;
if (!(dst = hlsl_new_loop(ctx, &src->node.loc)))
if (!clone_block(ctx, &body, &src->body, map))
return NULL;
if (!clone_block(ctx, &dst->body, &src->body, map))
if (!(dst = hlsl_new_loop(ctx, &body, &src->node.loc)))
{
hlsl_free_instr(&dst->node);
hlsl_block_cleanup(&body);
return NULL;
}
return &dst->node;
return dst;
}
static struct hlsl_ir_node *clone_resource_load(struct hlsl_ctx *ctx,
Loading