gallivm: fix idiv
authorRoland Scheidegger <sroland@vmware.com>
Tue, 23 Sep 2014 17:29:33 +0000 (19:29 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Tue, 23 Sep 2014 19:46:00 +0000 (21:46 +0200)
ffeb77c7b0552a8624e46e65d6347240ac5ae84d had 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>
src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c

index 4a9bc1f0ebe5470c8e951e92318247accf5c1dac..722aa9a137d834bd17caacca95a7b026186ea37e 100644 (file)
@@ -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,