mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 20:38:06 +02:00
ac: add v2i32 to the common code and use it
Reviewed-by: Marek Olšák <marek.olsak@amd.com Acked-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
c64cfa0392
commit
309a51411d
3 changed files with 11 additions and 11 deletions
|
|
@ -66,6 +66,7 @@ ac_llvm_context_init(struct ac_llvm_context *ctx, LLVMContextRef context,
|
|||
ctx->f16 = LLVMHalfTypeInContext(ctx->context);
|
||||
ctx->f32 = LLVMFloatTypeInContext(ctx->context);
|
||||
ctx->f64 = LLVMDoubleTypeInContext(ctx->context);
|
||||
ctx->v2i32 = LLVMVectorType(ctx->i32, 2);
|
||||
ctx->v4i32 = LLVMVectorType(ctx->i32, 4);
|
||||
ctx->v4f32 = LLVMVectorType(ctx->f32, 4);
|
||||
ctx->v8i32 = LLVMVectorType(ctx->i32, 8);
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ struct ac_llvm_context {
|
|||
LLVMTypeRef f16;
|
||||
LLVMTypeRef f32;
|
||||
LLVMTypeRef f64;
|
||||
LLVMTypeRef v2i32;
|
||||
LLVMTypeRef v4i32;
|
||||
LLVMTypeRef v4f32;
|
||||
LLVMTypeRef v8i32;
|
||||
|
|
|
|||
|
|
@ -134,7 +134,6 @@ struct nir_to_llvm_context {
|
|||
LLVMValueRef persp_sample, persp_center, persp_centroid;
|
||||
LLVMValueRef linear_sample, linear_center, linear_centroid;
|
||||
|
||||
LLVMTypeRef v2i32;
|
||||
LLVMTypeRef v3i32;
|
||||
LLVMTypeRef v4i32;
|
||||
LLVMTypeRef v8i32;
|
||||
|
|
@ -877,13 +876,13 @@ static void create_function(struct nir_to_llvm_context *ctx,
|
|||
if (ctx->shader_info->info.ps.needs_sample_positions)
|
||||
add_user_sgpr_argument(&args, ctx->ac.i32, &ctx->sample_pos_offset); /* sample position offset */
|
||||
add_sgpr_argument(&args, ctx->ac.i32, &ctx->prim_mask); /* prim mask */
|
||||
add_vgpr_argument(&args, ctx->v2i32, &ctx->persp_sample); /* persp sample */
|
||||
add_vgpr_argument(&args, ctx->v2i32, &ctx->persp_center); /* persp center */
|
||||
add_vgpr_argument(&args, ctx->v2i32, &ctx->persp_centroid); /* persp centroid */
|
||||
add_vgpr_argument(&args, ctx->ac.v2i32, &ctx->persp_sample); /* persp sample */
|
||||
add_vgpr_argument(&args, ctx->ac.v2i32, &ctx->persp_center); /* persp center */
|
||||
add_vgpr_argument(&args, ctx->ac.v2i32, &ctx->persp_centroid); /* persp centroid */
|
||||
add_vgpr_argument(&args, ctx->v3i32, NULL); /* persp pull model */
|
||||
add_vgpr_argument(&args, ctx->v2i32, &ctx->linear_sample); /* linear sample */
|
||||
add_vgpr_argument(&args, ctx->v2i32, &ctx->linear_center); /* linear center */
|
||||
add_vgpr_argument(&args, ctx->v2i32, &ctx->linear_centroid); /* linear centroid */
|
||||
add_vgpr_argument(&args, ctx->ac.v2i32, &ctx->linear_sample); /* linear sample */
|
||||
add_vgpr_argument(&args, ctx->ac.v2i32, &ctx->linear_center); /* linear center */
|
||||
add_vgpr_argument(&args, ctx->ac.v2i32, &ctx->linear_centroid); /* linear centroid */
|
||||
add_vgpr_argument(&args, ctx->f32, NULL); /* line stipple tex */
|
||||
add_vgpr_argument(&args, ctx->f32, &ctx->abi.frag_pos[0]); /* pos x float */
|
||||
add_vgpr_argument(&args, ctx->f32, &ctx->abi.frag_pos[1]); /* pos y float */
|
||||
|
|
@ -992,7 +991,6 @@ static void create_function(struct nir_to_llvm_context *ctx,
|
|||
|
||||
static void setup_types(struct nir_to_llvm_context *ctx)
|
||||
{
|
||||
ctx->v2i32 = LLVMVectorType(ctx->ac.i32, 2);
|
||||
ctx->v3i32 = LLVMVectorType(ctx->ac.i32, 3);
|
||||
ctx->v4i32 = LLVMVectorType(ctx->ac.i32, 4);
|
||||
ctx->v8i32 = LLVMVectorType(ctx->ac.i32, 8);
|
||||
|
|
@ -1908,7 +1906,7 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
|
|||
case nir_op_unpack_64_2x32_split_x: {
|
||||
assert(instr->src[0].src.ssa->num_components == 1);
|
||||
LLVMValueRef tmp = LLVMBuildBitCast(ctx->ac.builder, src[0],
|
||||
LLVMVectorType(ctx->ac.i32, 2),
|
||||
ctx->ac.v2i32,
|
||||
"");
|
||||
result = LLVMBuildExtractElement(ctx->ac.builder, tmp,
|
||||
ctx->ac.i32_0, "");
|
||||
|
|
@ -1918,7 +1916,7 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
|
|||
case nir_op_unpack_64_2x32_split_y: {
|
||||
assert(instr->src[0].src.ssa->num_components == 1);
|
||||
LLVMValueRef tmp = LLVMBuildBitCast(ctx->ac.builder, src[0],
|
||||
LLVMVectorType(ctx->ac.i32, 2),
|
||||
ctx->ac.v2i32,
|
||||
"");
|
||||
result = LLVMBuildExtractElement(ctx->ac.builder, tmp,
|
||||
ctx->ac.i32_1, "");
|
||||
|
|
@ -1926,7 +1924,7 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
|
|||
}
|
||||
|
||||
case nir_op_pack_64_2x32_split: {
|
||||
LLVMValueRef tmp = LLVMGetUndef(LLVMVectorType(ctx->ac.i32, 2));
|
||||
LLVMValueRef tmp = LLVMGetUndef(ctx->ac.v2i32);
|
||||
tmp = LLVMBuildInsertElement(ctx->ac.builder, tmp,
|
||||
src[0], ctx->ac.i32_0, "");
|
||||
tmp = LLVMBuildInsertElement(ctx->ac.builder, tmp,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue