/** * Broadcast */ LLVMValueRef lp_build_broadcast_scalar(struct lp_build_context *bld, LLVMValueRef scalar) { assert(lp_check_elem_type(bld->type, LLVMTypeOf(scalar))); return lp_build_broadcast(bld->gallivm, bld->vec_type, scalar); }
boolean lp_check_vec_type(struct lp_type type, LLVMTypeRef vec_type) { LLVMTypeRef elem_type; assert(vec_type); if(!vec_type) return FALSE; if (type.length == 1) return lp_check_elem_type(type, vec_type); if(LLVMGetTypeKind(vec_type) != LLVMVectorTypeKind) return FALSE; if(LLVMGetVectorSize(vec_type) != type.length) return FALSE; elem_type = LLVMGetElementType(vec_type); return lp_check_elem_type(type, elem_type); }