ac: add 8-bit and 16-bit supports to ac_build_optimization_barrier()
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
parent
21a9243f5e
commit
670aa24c69
|
@ -432,11 +432,19 @@ ac_build_optimization_barrier(struct ac_llvm_context *ctx,
|
|||
} else {
|
||||
LLVMTypeRef ftype = LLVMFunctionType(ctx->i32, &ctx->i32, 1, false);
|
||||
LLVMValueRef inlineasm = LLVMConstInlineAsm(ftype, code, "=v,0", true, false);
|
||||
LLVMTypeRef type = LLVMTypeOf(*pvgpr);
|
||||
unsigned bitsize = ac_get_elem_bits(ctx, type);
|
||||
LLVMValueRef vgpr = *pvgpr;
|
||||
LLVMTypeRef vgpr_type = LLVMTypeOf(vgpr);
|
||||
unsigned vgpr_size = ac_get_type_size(vgpr_type);
|
||||
LLVMTypeRef vgpr_type;
|
||||
unsigned vgpr_size;
|
||||
LLVMValueRef vgpr0;
|
||||
|
||||
if (bitsize < 32)
|
||||
vgpr = LLVMBuildZExt(ctx->builder, vgpr, ctx->i32, "");
|
||||
|
||||
vgpr_type = LLVMTypeOf(vgpr);
|
||||
vgpr_size = ac_get_type_size(vgpr_type);
|
||||
|
||||
assert(vgpr_size % 4 == 0);
|
||||
|
||||
vgpr = LLVMBuildBitCast(builder, vgpr, LLVMVectorType(ctx->i32, vgpr_size / 4), "");
|
||||
|
@ -445,6 +453,9 @@ ac_build_optimization_barrier(struct ac_llvm_context *ctx,
|
|||
vgpr = LLVMBuildInsertElement(builder, vgpr, vgpr0, ctx->i32_0, "");
|
||||
vgpr = LLVMBuildBitCast(builder, vgpr, vgpr_type, "");
|
||||
|
||||
if (bitsize < 32)
|
||||
vgpr = LLVMBuildTrunc(builder, vgpr, type, "");
|
||||
|
||||
*pvgpr = vgpr;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue