Conditionally revert "gallivm: Use a more compact approach for lp_build_broadcast_sca...
authorJosé Fonseca <jfonseca@vmware.com>
Thu, 13 May 2010 20:03:08 +0000 (21:03 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Thu, 13 May 2010 20:14:39 +0000 (21:14 +0100)
This reverts commit a09e46c72461183c879d8472b44fe740ecc79b9f.

src/gallium/auxiliary/gallivm/lp_bld_swizzle.c

index f095a39cf522746cf469cad8a4a7c4f541443c45..3c8a7bc09ea03ba4e94f4ec15c1c34dd007500e5 100644 (file)
@@ -76,10 +76,20 @@ lp_build_broadcast_scalar(struct lp_build_context *bld,
    }
    else {
       LLVMValueRef res;
+#if HAVE_LLVM >= 0x207
       res = LLVMBuildInsertElement(bld->builder, bld->undef, scalar,
                                    LLVMConstInt(LLVMInt32Type(), 0, 0), "");
       res = LLVMBuildShuffleVector(bld->builder, res, bld->undef,
                                    lp_build_const_int_vec(type, 0), "");
+#else
+      /* XXX: The above path provokes a bug in LLVM 2.6 */
+      unsigned i;
+      res = bld->undef;
+      for(i = 0; i < type.length; ++i) {
+         LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), i, 0);
+         res = LLVMBuildInsertElement(bld->builder, res, scalar, index, "");
+      }
+#endif
       return res;
    }
 }