mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
radeonsi: use ordered compares for SSG and face selection
Ordered compares are what you have in C. Unordered compares are the result of negating ordered compares (they return true if either argument is NaN). That special NaN behavior is completely useless here, and unordered compares produce horrible code with all stable LLVM versions. (I think that has been fixed in LLVM git) Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
This commit is contained in:
parent
a38e8de643
commit
d1d2af2398
2 changed files with 3 additions and 3 deletions
|
|
@ -1107,9 +1107,9 @@ static void emit_ssg(
|
|||
cmp = LLVMBuildICmp(builder, LLVMIntSGE, val, bld_base->int_bld.zero, "");
|
||||
val = LLVMBuildSelect(builder, cmp, val, LLVMConstInt(bld_base->int_bld.elem_type, -1, true), "");
|
||||
} else { // float SSG
|
||||
cmp = LLVMBuildFCmp(builder, LLVMRealUGT, emit_data->args[0], bld_base->base.zero, "");
|
||||
cmp = LLVMBuildFCmp(builder, LLVMRealOGT, emit_data->args[0], bld_base->base.zero, "");
|
||||
val = LLVMBuildSelect(builder, cmp, bld_base->base.one, emit_data->args[0], "");
|
||||
cmp = LLVMBuildFCmp(builder, LLVMRealUGE, val, bld_base->base.zero, "");
|
||||
cmp = LLVMBuildFCmp(builder, LLVMRealOGE, val, bld_base->base.zero, "");
|
||||
val = LLVMBuildSelect(builder, cmp, val, LLVMConstReal(bld_base->base.elem_type, -1), "");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -484,7 +484,7 @@ static void declare_input_fs(
|
|||
face = LLVMGetParam(main_fn, SI_PARAM_FRONT_FACE);
|
||||
|
||||
is_face_positive = LLVMBuildFCmp(gallivm->builder,
|
||||
LLVMRealUGT, face,
|
||||
LLVMRealOGT, face,
|
||||
lp_build_const_float(gallivm, 0.0f),
|
||||
"");
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue