mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-28 09:40:21 +01:00
gallivm: get correct min/max behaviour for kernels.
NaN handling for CL is harsher than GLSL Fixes piglit min/max CL tests Reviewed-by: Roland Scheidegger <sroland@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7309>
This commit is contained in:
parent
9845c1636c
commit
b8a9bd9b93
2 changed files with 6 additions and 33 deletions
|
|
@ -53,37 +53,9 @@ program/execute/atomic_int64_xor-global-return: skip
|
|||
program/execute/atomic_int64_xor-local: skip
|
||||
program/execute/builtin/builtin-char-popcount-1.2.generated: skip
|
||||
program/execute/builtin/builtin-float-cos-1.0.generated: timeout
|
||||
program/execute/builtin/builtin-float-fmax-1.0.generated/fmax float1: fail
|
||||
program/execute/builtin/builtin-float-fmax-1.0.generated/fmax float16: fail
|
||||
program/execute/builtin/builtin-float-fmax-1.0.generated/fmax float2: fail
|
||||
program/execute/builtin/builtin-float-fmax-1.0.generated/fmax float4: fail
|
||||
program/execute/builtin/builtin-float-fmax-1.0.generated/fmax float8: fail
|
||||
program/execute/builtin/builtin-float-fmax-1.0.generated/tss_fmax float16: fail
|
||||
program/execute/builtin/builtin-float-fmax-1.0.generated/tss_fmax float2: fail
|
||||
program/execute/builtin/builtin-float-fmax-1.0.generated/tss_fmax float4: fail
|
||||
program/execute/builtin/builtin-float-fmax-1.0.generated/tss_fmax float8: fail
|
||||
program/execute/builtin/builtin-float-fmin-1.0.generated/fmin float1: fail
|
||||
program/execute/builtin/builtin-float-fmin-1.0.generated/fmin float16: fail
|
||||
program/execute/builtin/builtin-float-fmin-1.0.generated/fmin float2: fail
|
||||
program/execute/builtin/builtin-float-fmin-1.0.generated/fmin float4: fail
|
||||
program/execute/builtin/builtin-float-fmin-1.0.generated/fmin float8: fail
|
||||
program/execute/builtin/builtin-float-fmin-1.0.generated/tss_fmin float16: fail
|
||||
program/execute/builtin/builtin-float-fmin-1.0.generated/tss_fmin float2: fail
|
||||
program/execute/builtin/builtin-float-fmin-1.0.generated/tss_fmin float4: fail
|
||||
program/execute/builtin/builtin-float-fmin-1.0.generated/tss_fmin float8: fail
|
||||
program/execute/builtin/builtin-float-isfinite-1.0.generated: crash
|
||||
program/execute/builtin/builtin-float-isnormal-1.0.generated: crash
|
||||
program/execute/builtin/builtin-float-ldexp-1.0.generated: fail
|
||||
program/execute/builtin/builtin-float-maxmag-1.1.generated/maxmag float1: fail
|
||||
program/execute/builtin/builtin-float-maxmag-1.1.generated/maxmag float16: fail
|
||||
program/execute/builtin/builtin-float-maxmag-1.1.generated/maxmag float2: fail
|
||||
program/execute/builtin/builtin-float-maxmag-1.1.generated/maxmag float4: fail
|
||||
program/execute/builtin/builtin-float-maxmag-1.1.generated/maxmag float8: fail
|
||||
program/execute/builtin/builtin-float-minmag-1.1.generated/minmag float1: fail
|
||||
program/execute/builtin/builtin-float-minmag-1.1.generated/minmag float16: fail
|
||||
program/execute/builtin/builtin-float-minmag-1.1.generated/minmag float2: fail
|
||||
program/execute/builtin/builtin-float-minmag-1.1.generated/minmag float4: fail
|
||||
program/execute/builtin/builtin-float-minmag-1.1.generated/minmag float8: fail
|
||||
program/execute/builtin/builtin-float-mix-1.0.generated: crash
|
||||
program/execute/builtin/builtin-float-sin-1.0.generated: timeout
|
||||
program/execute/builtin/builtin-float-sincos-1.0.generated: timeout
|
||||
|
|
@ -126,8 +98,8 @@ program/execute/vstore/vstore-half-private: skip
|
|||
summary:
|
||||
name: results
|
||||
---- --------
|
||||
pass: 3737
|
||||
fail: 42
|
||||
pass: 3766
|
||||
fail: 14
|
||||
crash: 6
|
||||
skip: 73
|
||||
timeout: 4
|
||||
|
|
@ -138,4 +110,4 @@ summary:
|
|||
changes: 0
|
||||
fixes: 0
|
||||
regressions: 0
|
||||
total: 3862
|
||||
total: 3863
|
||||
|
|
|
|||
|
|
@ -516,6 +516,7 @@ static LLVMValueRef do_alu_action(struct lp_build_nir_context *bld_base,
|
|||
struct gallivm_state *gallivm = bld_base->base.gallivm;
|
||||
LLVMBuilderRef builder = gallivm->builder;
|
||||
LLVMValueRef result;
|
||||
enum gallivm_nan_behavior minmax_nan = bld_base->shader->info.stage == MESA_SHADER_KERNEL ? GALLIVM_NAN_RETURN_OTHER : GALLIVM_NAN_BEHAVIOR_UNDEFINED;
|
||||
switch (op) {
|
||||
case nir_op_b2f32:
|
||||
result = emit_b2f(bld_base, src[0], 32);
|
||||
|
|
@ -652,7 +653,7 @@ static LLVMValueRef do_alu_action(struct lp_build_nir_context *bld_base,
|
|||
result = fcmp32(bld_base, PIPE_FUNC_LESS, src_bit_size[0], src);
|
||||
break;
|
||||
case nir_op_fmin:
|
||||
result = lp_build_min(get_flt_bld(bld_base, src_bit_size[0]), src[0], src[1]);
|
||||
result = lp_build_min_ext(get_flt_bld(bld_base, src_bit_size[0]), src[0], src[1], minmax_nan);
|
||||
break;
|
||||
case nir_op_fmod: {
|
||||
struct lp_build_context *flt_bld = get_flt_bld(bld_base, src_bit_size[0]);
|
||||
|
|
@ -667,7 +668,7 @@ static LLVMValueRef do_alu_action(struct lp_build_nir_context *bld_base,
|
|||
src[0], src[1]);
|
||||
break;
|
||||
case nir_op_fmax:
|
||||
result = lp_build_max(get_flt_bld(bld_base, src_bit_size[0]), src[0], src[1]);
|
||||
result = lp_build_max_ext(get_flt_bld(bld_base, src_bit_size[0]), src[0], src[1], minmax_nan);
|
||||
break;
|
||||
case nir_op_fneu32:
|
||||
result = fcmp32(bld_base, PIPE_FUNC_NOTEQUAL, src_bit_size[0], src);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue