radeonsi: NaN should pass kill_if
authorAxel Davy <davyaxel0@gmail.com>
Sun, 23 Sep 2018 14:18:55 +0000 (16:18 +0200)
committerAxel Davy <davyaxel0@gmail.com>
Tue, 25 Sep 2018 20:05:24 +0000 (22:05 +0200)
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=105333
Fixes: https://github.com/iXit/Mesa-3D/issues/314
For this application, NaN is passed to KILL_IF and is expected to
pass.

v2: Explain in the code why UGE is used.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
CC: <mesa-stable@lists.freedesktop.org>
src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c

index f54d025aec05427ba101ddde4798c40ffa5da2fe..a768b44904798313f5922bb39d315aca88661ebb 100644 (file)
@@ -60,7 +60,8 @@ static void kil_emit(const struct lp_build_tgsi_action *action,
 
                for (i = 0; i < TGSI_NUM_CHANNELS; i++) {
                        LLVMValueRef value = lp_build_emit_fetch(bld_base, inst, 0, i);
-                       conds[i] = LLVMBuildFCmp(builder, LLVMRealOGE, value,
+                       /* UGE because NaN shouldn't get killed */
+                       conds[i] = LLVMBuildFCmp(builder, LLVMRealUGE, value,
                                                ctx->ac.f32_0, "");
                }