diff options
author | José Fonseca <jfonseca@vmware.com> | 2009-08-19 17:57:07 +0100 |
---|---|---|
committer | José Fonseca <jfonseca@vmware.com> | 2009-08-19 17:57:07 +0100 |
commit | f426fb3704a30abd14764d86fab1cfa157eb4935 (patch) | |
tree | 1823bdd368316ceea53913c238c98e786bc340b8 | |
parent | b51ddc529709908b44e29a5a119131ad699a30ba (diff) |
llvmpipe: Simpler variant of lp_build_broadcast_scalar.
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_bld_swizzle.c | 19 | ||||
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_bld_swizzle.h | 6 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_bld_swizzle.c b/src/gallium/drivers/llvmpipe/lp_bld_swizzle.c index 3402d4f5d9..5204a851d6 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_swizzle.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_swizzle.c @@ -35,6 +35,25 @@ LLVMValueRef +lp_build_broadcast(LLVMBuilderRef builder, + LLVMTypeRef vec_type, + LLVMValueRef scalar) +{ + const unsigned n = LLVMGetVectorSize(vec_type); + LLVMValueRef res; + unsigned i; + + res = LLVMGetUndef(vec_type); + for(i = 0; i < n; ++i) { + LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), i, 0); + res = LLVMBuildInsertElement(builder, res, scalar, index, ""); + } + + return res; +} + + +LLVMValueRef lp_build_broadcast_scalar(struct lp_build_context *bld, LLVMValueRef scalar) { diff --git a/src/gallium/drivers/llvmpipe/lp_bld_swizzle.h b/src/gallium/drivers/llvmpipe/lp_bld_swizzle.h index ceaaabf9ec..7a4aa88382 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_swizzle.h +++ b/src/gallium/drivers/llvmpipe/lp_bld_swizzle.h @@ -45,6 +45,12 @@ struct lp_build_context; LLVMValueRef +lp_build_broadcast(LLVMBuilderRef builder, + LLVMTypeRef vec_type, + LLVMValueRef scalar); + + +LLVMValueRef lp_build_broadcast_scalar(struct lp_build_context *bld, LLVMValueRef scalar); |