draw: use float version of LLVM Mul/Add instructions
LLVM 2.8 is pickier about int vs float instructions and operands.
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user