radeonsi: don't set the last parameter component of llvm.AMDGPU.cube
authorMarek Olšák <marek.olsak@amd.com>
Sat, 30 Jul 2016 14:32:32 +0000 (16:32 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 3 Aug 2016 15:46:46 +0000 (17:46 +0200)
LLVM doesn't use it.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c

index e7354de..d75311e 100644 (file)
@@ -902,7 +902,7 @@ static void kil_emit(const struct lp_build_tgsi_action *action,
 }
 
 static LLVMValueRef build_cube_intrinsic(struct gallivm_state *gallivm,
-                                        LLVMValueRef in[4])
+                                        LLVMValueRef in[3])
 {
        if (HAVE_LLVM >= 0x0309) {
                LLVMTypeRef f32 = LLVMTypeOf(in[0]);
@@ -919,7 +919,13 @@ static LLVMValueRef build_cube_intrinsic(struct gallivm_state *gallivm,
 
                return lp_build_gather_values(gallivm, out, 4);
        } else {
-               LLVMValueRef vec = lp_build_gather_values(gallivm, in, 4);
+               LLVMValueRef c[4] = {
+                       in[0],
+                       in[1],
+                       in[2],
+                       LLVMGetUndef(LLVMTypeOf(in[0]))
+               };
+               LLVMValueRef vec = lp_build_gather_values(gallivm, c, 4);
 
                return lp_build_intrinsic(gallivm->builder, "llvm.AMDGPU.cube",
                                          LLVMTypeOf(vec), &vec, 1,