draw: use float version of LLVM Mul/Add instructions
authorBrian Paul <brianp@vmware.com>
Wed, 20 Oct 2010 20:54:38 +0000 (14:54 -0600)
committerBrian Paul <brianp@vmware.com>
Wed, 20 Oct 2010 20:56:42 +0000 (14:56 -0600)
LLVM 2.8 is pickier about int vs float instructions and operands.

src/gallium/auxiliary/draw/draw_llvm.c

index f8fd17fe2c4c8a27d0c3b231533044436f9721d4..3f14571aa34c8fa4d881956f53ed5a4f75e32ca8 100644 (file)
@@ -835,11 +835,11 @@ generate_viewport(struct draw_llvm *llvm,
       trans = vec4f_from_scalar(builder, LLVMBuildLoad(builder, trans_i, ""), "trans");
 
       /* divide by w */
-      out = LLVMBuildMul(builder, out, out3, "");
+      out = LLVMBuildFMul(builder, out, out3, "");
       /* mult by scale */
-      out = LLVMBuildMul(builder, out, scale, "");
+      out = LLVMBuildFMul(builder, out, scale, "");
       /* add translation */
-      out = LLVMBuildAdd(builder, out, trans, "");
+      out = LLVMBuildFAdd(builder, out, trans, "");
 
       /* store transformed outputs */
       LLVMBuildStore(builder, out, outputs[0][i]);
@@ -947,27 +947,27 @@ generate_clipmask(LLVMBuilderRef builder,
          plane_ptr = LLVMBuildGEP(builder, planes_ptr, indices, 3, "");
          plane1 = LLVMBuildLoad(builder, plane_ptr, "plane_x");
          planes = vec4f_from_scalar(builder, plane1, "plane4_x");
-         sum = LLVMBuildMul(builder, planes, pos_x, "");
+         sum = LLVMBuildFMul(builder, planes, pos_x, "");
 
          indices[2] = LLVMConstInt(LLVMInt32Type(), 1, 0);
          plane_ptr = LLVMBuildGEP(builder, planes_ptr, indices, 3, "");
          plane1 = LLVMBuildLoad(builder, plane_ptr, "plane_y"); 
          planes = vec4f_from_scalar(builder, plane1, "plane4_y");
-         test = LLVMBuildMul(builder, planes, pos_y, "");
+         test = LLVMBuildFMul(builder, planes, pos_y, "");
          sum = LLVMBuildFAdd(builder, sum, test, "");
          
          indices[2] = LLVMConstInt(LLVMInt32Type(), 2, 0);
          plane_ptr = LLVMBuildGEP(builder, planes_ptr, indices, 3, "");
          plane1 = LLVMBuildLoad(builder, plane_ptr, "plane_z"); 
          planes = vec4f_from_scalar(builder, plane1, "plane4_z");
-         test = LLVMBuildMul(builder, planes, pos_z, "");
+         test = LLVMBuildFMul(builder, planes, pos_z, "");
          sum = LLVMBuildFAdd(builder, sum, test, "");
 
          indices[2] = LLVMConstInt(LLVMInt32Type(), 3, 0);
          plane_ptr = LLVMBuildGEP(builder, planes_ptr, indices, 3, "");
          plane1 = LLVMBuildLoad(builder, plane_ptr, "plane_w"); 
          planes = vec4f_from_scalar(builder, plane1, "plane4_w");
-         test = LLVMBuildMul(builder, planes, pos_w, "");
+         test = LLVMBuildFMul(builder, planes, pos_w, "");
          sum = LLVMBuildFAdd(builder, sum, test, "");
 
          test = lp_build_compare(builder, f32_type, PIPE_FUNC_GREATER, zero, sum);