mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 11:38:05 +02:00
gallivm: fix idiv
ffeb77c7b0had a typo which turned all signed integer divisions into unsigned ones. Oops. This gets us back the 51 little piglits (all from glsl built-in-functions, fs/vs/gs-op-div-int-ivec2 and similar). Cc: "10.2 10.3" <mesa-stable@lists.freedesktop.org> Reviewed-by: Jose Fonseca <jfonseca@vmware.com> (cherry picked from commit5e1fcc6258)
This commit is contained in:
parent
fc8fc3bfc8
commit
08923a1029
1 changed files with 5 additions and 7 deletions
|
|
@ -1252,18 +1252,16 @@ idiv_emit_cpu(
|
|||
LLVMValueRef div_mask = lp_build_cmp(&bld_base->uint_bld,
|
||||
PIPE_FUNC_EQUAL, emit_data->args[1],
|
||||
bld_base->uint_bld.zero);
|
||||
/* We want to make sure that we never divide/mod by zero to not
|
||||
* generate sigfpe. We don't want to crash just because the
|
||||
/* We want to make sure that we never divide/mod by zero to not
|
||||
* generate sigfpe. We don't want to crash just because the
|
||||
* shader is doing something weird. */
|
||||
LLVMValueRef divisor = LLVMBuildOr(builder,
|
||||
div_mask,
|
||||
emit_data->args[1], "");
|
||||
LLVMValueRef result = lp_build_div(&bld_base->uint_bld,
|
||||
LLVMValueRef result = lp_build_div(&bld_base->int_bld,
|
||||
emit_data->args[0], divisor);
|
||||
|
||||
LLVMValueRef not_div_mask = LLVMBuildNot(builder,
|
||||
div_mask,"");
|
||||
|
||||
/* idiv by zero doesn't have a guaranteed return value chose 0 for now. */
|
||||
emit_data->output[emit_data->chan] = LLVMBuildAnd(builder,
|
||||
not_div_mask,
|
||||
|
|
@ -1693,8 +1691,8 @@ udiv_emit_cpu(
|
|||
LLVMValueRef div_mask = lp_build_cmp(&bld_base->uint_bld,
|
||||
PIPE_FUNC_EQUAL, emit_data->args[1],
|
||||
bld_base->uint_bld.zero);
|
||||
/* We want to make sure that we never divide/mod by zero to not
|
||||
* generate sigfpe. We don't want to crash just because the
|
||||
/* We want to make sure that we never divide/mod by zero to not
|
||||
* generate sigfpe. We don't want to crash just because the
|
||||
* shader is doing something weird. */
|
||||
LLVMValueRef divisor = LLVMBuildOr(builder,
|
||||
div_mask,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue