Mesa (master): 31 new commits

Matt Turner mattst88 at kemper.freedesktop.org
Thu Dec 5 04:07:11 UTC 2013


URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cbb49cb2f7eafa56f70a59d73f06ccbd974787f4
Author: Matt Turner <mattst88 at gmail.com>
Date:   Sun Nov 24 22:44:32 2013 -0800

    i965: Emit better code for ir_unop_sign.
    
    total instructions in shared programs: 1550449 -> 1550048 (-0.03%)
    instructions in affected programs:     15207 -> 14806 (-2.64%)
    
    Reviewed-by: Paul Berry <stereotype441 at gmail.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Chris Forbes <chrisf at ijw.co.nz>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d30b2ed5f83841531b4c5aa21bde50acad35560a
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Oct 22 17:51:28 2013 -0700

    i965/fs: New peephole optimization to flatten IF/BREAK/ENDIF.
    
    total instructions in shared programs: 1550713 -> 1550449 (-0.02%)
    instructions in affected programs:     7931 -> 7667 (-3.33%)
    
    Reviewed-by: Paul Berry <stereotype441 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9658b04fc473a9b16ede16b632e4f0b23ae90a70
Author: Matt Turner <mattst88 at gmail.com>
Date:   Sun Oct 27 17:09:41 2013 -0700

    i965/fs: Emit a MOV instead of a SEL if the sources are the same.
    
    One program affected.
    
    instructions in affected programs:     436 -> 428 (-1.83%)
    
    Reviewed-by: Paul Berry <stereotype441 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4532cac06a9da527549efb685c6f37ffed24ddbf
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Oct 29 21:39:52 2013 -0700

    i965/fs: Extend SEL peephole to handle only matching MOVs.
    
    Before this patch, the following code would not be optimized even though
    the first two instructions were common to the then and else blocks:
    
       (+f0) IF
       MOV dst0 ...
       MOV dst1 ...
       MOV dst2 ...
       ELSE
       MOV dst0 ...
       MOV dst1 ...
       MOV dst3 ...
       ENDIF
    
    This commit extends the peephole to handle this case.
    
    No shader-db changes.
    
    Reviewed-by: Paul Berry <stereotype441 at gmail.com>
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=13de9f03f177d3ae0921fded1a102b66130f8b40
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Oct 22 17:51:28 2013 -0700

    i965/fs: New peephole optimization to generate SEL.
    
    fs_visitor::try_replace_with_sel optimizes only if statements whose
    "then" and "else" bodies contain a single MOV instruction. It also
    could not handle constant arguments, since they cause an extra MOV
    immediate to be generated (since we haven't run constant propagation,
    there are more than the single MOV).
    
    This peephole fixes both of these and operates as a normal optimization
    pass.
    
    fs_visitor::try_replace_with_sel is still arguably necessary, since it
    runs before pull constant loads are lowered.
    
    total instructions in shared programs: 1559129 -> 1545833 (-0.85%)
    instructions in affected programs:     167120 -> 153824 (-7.96%)
    GAINED:                                13
    LOST:                                  6
    
    Reviewed-by: Paul Berry <stereotype441 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fa227e7cbca279cd70ea7028a33d520579385f9f
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Oct 22 19:04:14 2013 -0700

    i965/fs: Add SEL() convenience function.
    
    Reviewed-by: Paul Berry <stereotype441 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4b0ef4bf38f84af33000cd70a01d6df8b14afee9
Author: Matt Turner <mattst88 at gmail.com>
Date:   Mon Nov 25 22:18:28 2013 -0800

    glsl: Use fabs() on floating point values.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8814806c97ed60c5bb4d6cb1927cd05445864388
Author: Matt Turner <mattst88 at gmail.com>
Date:   Sun Oct 20 15:48:14 2013 -0700

    i965: Print conditional mod in dump_instruction().
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b9af66528e5b7bd5608086557c44e6b9eb2f2d9d
Author: Matt Turner <mattst88 at gmail.com>
Date:   Mon Dec 2 13:15:45 2013 -0800

    i965: Externalize conditional_modifier for use in dump_instruction().
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=637dda1c307aee921ecc646b75f891deab6585a9
Author: Matt Turner <mattst88 at gmail.com>
Date:   Mon Dec 2 13:10:29 2013 -0800

    i965: Print argument types in dump_instruction().
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=21e92e74c84e0422a5868736f6cb3a408220a294
Author: Matt Turner <mattst88 at gmail.com>
Date:   Mon Dec 2 12:58:45 2013 -0800

    i965: Externalize reg_encoding for use in dump_instruction().
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=729fe77e3bdf64768e8447c281f249ac80c1b9a2
Author: Matt Turner <mattst88 at gmail.com>
Date:   Mon Dec 2 12:43:50 2013 -0800

    i965/vec4: Don't print swizzles for immediate values.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2b8e0a73fbc021305fdcab7a3c6661de7af911a9
Author: Matt Turner <mattst88 at gmail.com>
Date:   Mon Dec 2 12:41:16 2013 -0800

    i965/vec4: Print negate and absolute value for src args.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a85f1b7adf1023667fea090242ba448d935eaa67
Author: Matt Turner <mattst88 at gmail.com>
Date:   Mon Nov 25 22:17:29 2013 -0800

    i965/vec4: Add support for printing HW_REGs in dump_instruction().
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=942151af300e067f72572cd8785fa3526132570c
Author: Matt Turner <mattst88 at gmail.com>
Date:   Mon Nov 25 15:37:18 2013 -0800

    i965/fs: Print ARF registers properly in dump_instruction().
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0e4053234df5e3461e80c90dfd743c3ac96006eb
Author: Matt Turner <mattst88 at gmail.com>
Date:   Mon Nov 25 15:15:25 2013 -0800

    i965: Don't print extra (null) arguments in dump_instruction().
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d79e7117183e484f0f017f16bbf24b861ad5bcb7
Author: Matt Turner <mattst88 at gmail.com>
Date:   Wed Nov 27 14:23:50 2013 -0800

    glsl: Remove silly OR(..., 0x0) from ldexp() lowering.
    
    I translated copysign(0.0f, x) a little too literally.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b1eb2ad8d159748034e7befc22b46a0b3b040186
Author: Matt Turner <mattst88 at gmail.com>
Date:   Wed Nov 27 16:14:14 2013 -0800

    i965: Allow commuting the operands of ADDC for const propagation.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=04d83396eef7a8c8603f55bc0a0b04c80a9f6cf5
Author: Matt Turner <mattst88 at gmail.com>
Date:   Fri Nov 29 22:16:14 2013 -0800

    i965/fs: Rename register_coalesce_2() -> register_coalesce().
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a6b14f6745206eb018c8474feafae4bafdcb8e5
Author: Matt Turner <mattst88 at gmail.com>
Date:   Fri Nov 29 22:14:14 2013 -0800

    i965/fs: Remove now useless register_coalesce() pass.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1520ae48b880d9bee287583d15ac40c89d0ced8b
Author: Matt Turner <mattst88 at gmail.com>
Date:   Fri Nov 29 11:28:54 2013 -0800

    i965/fs: Let register_coalesce_2() eliminate self-moves.
    
    This is the last thing that register_coalesce() still handled.
    
    total instructions in shared programs: 1561060 -> 1560908 (-0.01%)
    instructions in affected programs:     15758 -> 15606 (-0.96%)
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8786f381eca2c818e381af74feda8d4a22c0e411
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Nov 26 13:49:31 2013 -0800

    i965: Allow constant propagation into ASR and BFI1.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ba84800275bd949d30125da7a1632ac62e84d8a0
Author: Matt Turner <mattst88 at gmail.com>
Date:   Mon Dec 2 10:29:49 2013 -0800

    i965/cfg: Document cur_* variables.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7642c3c6ff3bd6c419ea9406636a2b7b42eb3c0b
Author: Matt Turner <mattst88 at gmail.com>
Date:   Sat Nov 30 20:38:48 2013 -0800

    i965/cfg: Remove ip & cur from brw_cfg.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d2fcdd0973ee33a2627d1dee6d78091e605af160
Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Nov 28 23:24:44 2013 -0800

    i965/cfg: Clean up cfg_t constructors.
    
    parent_mem_ctx was unused since db47074a, so remove the two wrappers
    around create() and make create() the constructor.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c6450fa963b7eefbbc0ba5e00d42f1a4efba092b
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Nov 26 15:25:44 2013 -0800

    i965/cfg: Throw out confusing make_list method.
    
    make_list is just a one-line wrapper and was confusingly called by
    NULL objects. E.g., cur_if == NULL; cur_if->make_list(mem_ctx).
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f3bce19f6c85e2b38c5562e6f4f9d71521fa369f
Author: Matt Turner <mattst88 at gmail.com>
Date:   Sat Nov 30 16:39:43 2013 -0800

    i965/cfg: Include only needed headers.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f4b50a14667879187d9d263b50bb6b0620bf1e29
Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Nov 28 23:39:02 2013 -0800

    i965/cfg: Remove unnecessary endif_stack.
    
    Unnecessary since last commit.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2eb9bbfb6889a7a2f864aa110134f75fc224edee
Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Nov 28 21:33:05 2013 -0800

    i965/cfg: Rework to make IF & ELSE blocks flow into ENDIF.
    
    Previously we made the basic block following an ENDIF instruction a
    successor of the basic blocks ending with IF and ELSE. The PRM says that
    IF and ELSE instructions jump *to* the ENDIF, rather than over it.
    
    This should be immaterial to dataflow analysis, except for if, break,
    endif sequences:
    
       START B1 <-B0 <-B9
    0x00000100: cmp.g.f0(8)     null            g15<8,8,1>F     g4<0,1,0>F
    0x00000110: (+f0) if(8) 0 0                 null            0x00000000UD
       END B1 ->B2 ->B4
       START B2 <-B1
       break
    0x00000120: break(8) 0 0                    null            0D
       END B2 ->B10
       START B3
    0x00000130: endif(8) 2                      null            0x00000002UD
       END B3 ->B4
    
    The ENDIF block would have no parents, so dataflow analysis would
    generate incorrect results, preventing copy propagation from eliminating
    some instructions.
    
    This patch changes the CFG to make ENDIF start rather than end basic
    blocks, so that it can be the jump target of the IF and ELSE
    instructions.
    
    It helps three programs (including two fs8/fs16 pairs).
    
    total instructions in shared programs: 1561126 -> 1561060 (-0.00%)
    instructions in affected programs:     837 -> 771 (-7.89%)
    
    More importantly, it allows copy propagation to handle more cases.
    Disabling the register_coalesce() pass before this patch hurts 58
    programs, while afterward it only hurts 11 programs.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ed85c0f409116b42f032d0e7939d4ea55d3ca2f3
Author: Matt Turner <mattst88 at gmail.com>
Date:   Wed Oct 30 16:51:32 2013 -0700

    i965/cfg: Keep pointers to IF/ELSE/ENDIF instructions in the cfg.
    
    Useful for finding the associated control flow instructions, given a
    block ending in one.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=51194932d3b866e56b0001874c28f862d382dbd3
Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Nov 28 11:03:14 2013 -0800

    i965/cfg: Add code to dump blocks and cfg.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>




More information about the mesa-commit mailing list