ac/llvm: use fmac instead of mul+sub in face culling
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13380>
This commit is contained in:
parent
19c91a120d
commit
5e8f76b713
|
@ -92,9 +92,9 @@ static LLVMValueRef ac_cull_face(struct ac_llvm_context *ctx, LLVMValueRef pos[3
|
|||
LLVMValueRef det_t1 = LLVMBuildFSub(builder, pos[1][1], pos[0][1], "");
|
||||
LLVMValueRef det_t2 = LLVMBuildFSub(builder, pos[0][0], pos[1][0], "");
|
||||
LLVMValueRef det_t3 = LLVMBuildFSub(builder, pos[0][1], pos[2][1], "");
|
||||
LLVMValueRef det_p0 = LLVMBuildFMul(builder, det_t0, det_t1, "");
|
||||
LLVMValueRef det_p1 = LLVMBuildFMul(builder, det_t2, det_t3, "");
|
||||
LLVMValueRef det = LLVMBuildFSub(builder, det_p0, det_p1, "");
|
||||
/* t0 * t1 - t2 * t3 = t2 * -t3 + t0 * t1 = fma(t2, -t3, t0 * t1) */
|
||||
LLVMValueRef det = ac_build_fmad(ctx, det_t2, LLVMBuildFNeg(builder, det_t3, ""),
|
||||
LLVMBuildFMul(builder, det_t0, det_t1, ""));
|
||||
|
||||
/* Negative W negates the determinant. */
|
||||
det = LLVMBuildSelect(builder, w->w_reflection, LLVMBuildFNeg(builder, det, ""), det, "");
|
||||
|
|
Loading…
Reference in New Issue