This will be used in the following commits.
---
 src/amd/common/ac_llvm_build.c  | 8 ++++++++
 src/amd/common/ac_llvm_build.h  | 3 +++
 src/amd/common/ac_nir_to_llvm.c | 6 +-----
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c
index a86ba962fa..6375b106f7 100644
--- a/src/amd/common/ac_llvm_build.c
+++ b/src/amd/common/ac_llvm_build.c
@@ -1992,6 +1992,14 @@ LLVMValueRef ac_find_lsb(struct ac_llvm_context *ctx,
                               LLVMConstInt(ctx->i32, -1, 0), lsb, "");
 }
 
+LLVMValueRef ac_unpack_64_2x32_split_x(struct ac_llvm_context *ctx,
+                                      LLVMValueRef src0)
+{
+       LLVMValueRef tmp = LLVMBuildBitCast(ctx->builder, src0,
+                                           ctx->v2i32, "");
+       return LLVMBuildExtractElement(ctx->builder, tmp, ctx->i32_0, "");
+}
+
 LLVMTypeRef ac_array_in_const_addr_space(LLVMTypeRef elem_type)
 {
        return LLVMPointerType(LLVMArrayType(elem_type, 0),
diff --git a/src/amd/common/ac_llvm_build.h b/src/amd/common/ac_llvm_build.h
index 47c843fb4b..78991b3e99 100644
--- a/src/amd/common/ac_llvm_build.h
+++ b/src/amd/common/ac_llvm_build.h
@@ -348,6 +348,9 @@ LLVMValueRef ac_find_lsb(struct ac_llvm_context *ctx,
                         LLVMTypeRef dst_type,
                         LLVMValueRef src0);
 
+LLVMValueRef ac_unpack_64_2x32_split_x(struct ac_llvm_context *ctx,
+                                      LLVMValueRef src0);
+
 LLVMTypeRef ac_array_in_const_addr_space(LLVMTypeRef elem_type);
 
 #ifdef __cplusplus
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 9a9db2dce9..ac4af12b3e 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -2042,11 +2042,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],
-                                                   ctx->ac.v2i32,
-                                                   "");
-               result = LLVMBuildExtractElement(ctx->ac.builder, tmp,
-                                                ctx->ac.i32_0, "");
+               result = ac_unpack_64_2x32_split_x(&ctx->ac, src[0]);
                break;
        }
 
-- 
2.14.3

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to