i965: Switch to NIR for ldexp lowering.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 12 Apr 2016 09:30:25 +0000 (02:30 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 13 Apr 2016 22:44:33 +0000 (15:44 -0700)
The old GLSL IR based lowering doesn't quite work right in all cases,
and fails several dEQP-GLES31 and Vulkan CTS tests.  Jason's new
approach in NIR passes all the tests.  There's not likely to be a ton
of advantage to lowering early in GLSL IR anyway, so...switch.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
src/mesa/drivers/dri/i965/brw_link.cpp

index 4c2e360edf9c55952ddd8f4e05e0b24819325dfb..7ae7b2ecdf65c41372d2614b2a081267c0575e9c 100644 (file)
@@ -289,6 +289,7 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
    case ir_binop_gequal:
    case ir_binop_equal:
    case ir_binop_nequal:
+   case ir_binop_ldexp:
       for (i = 0; i < vector_elements; i++) {
         ir_rvalue *op0 = get_element(op_var[0], i);
         ir_rvalue *op1 = get_element(op_var[1], i);
@@ -404,7 +405,6 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
    case ir_unop_unpack_unorm_2x16:
    case ir_unop_unpack_unorm_4x8:
    case ir_unop_unpack_half_2x16:
-   case ir_binop_ldexp:
    case ir_binop_vector_extract:
    case ir_triop_vector_insert:
    case ir_quadop_vector:
index c7d6fb8c79b8847cd4fe5ff7ffd24fbb810ddbc8..bb7e1eb128cbc490a8373737d8ed8afae4b8dc05 100644 (file)
@@ -110,7 +110,6 @@ process_glsl_ir(gl_shader_stage stage,
                       SUB_TO_ADD_NEG |
                       EXP_TO_EXP2 |
                       LOG_TO_LOG2 |
-                      LDEXP_TO_ARITH |
                       CARRY_TO_ARITH |
                       BORROW_TO_ARITH);