URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=cbb49cb2f7eafa56f70a59d73f06ccbd974787f4
Author: Matt Turner <[email protected]>
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 <[email protected]>
    Reviewed-by: Kenneth Graunke <[email protected]>
    Reviewed-by: Chris Forbes <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d30b2ed5f83841531b4c5aa21bde50acad35560a
Author: Matt Turner <[email protected]>
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 <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9658b04fc473a9b16ede16b632e4f0b23ae90a70
Author: Matt Turner <[email protected]>
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 <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4532cac06a9da527549efb685c6f37ffed24ddbf
Author: Matt Turner <[email protected]>
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 <[email protected]>
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=13de9f03f177d3ae0921fded1a102b66130f8b40
Author: Matt Turner <[email protected]>
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 <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fa227e7cbca279cd70ea7028a33d520579385f9f
Author: Matt Turner <[email protected]>
Date:   Tue Oct 22 19:04:14 2013 -0700

    i965/fs: Add SEL() convenience function.
    
    Reviewed-by: Paul Berry <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4b0ef4bf38f84af33000cd70a01d6df8b14afee9
Author: Matt Turner <[email protected]>
Date:   Mon Nov 25 22:18:28 2013 -0800

    glsl: Use fabs() on floating point values.
    
    Reviewed-by: Kenneth Graunke <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8814806c97ed60c5bb4d6cb1927cd05445864388
Author: Matt Turner <[email protected]>
Date:   Sun Oct 20 15:48:14 2013 -0700

    i965: Print conditional mod in dump_instruction().
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b9af66528e5b7bd5608086557c44e6b9eb2f2d9d
Author: Matt Turner <[email protected]>
Date:   Mon Dec 2 13:15:45 2013 -0800

    i965: Externalize conditional_modifier for use in dump_instruction().
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=637dda1c307aee921ecc646b75f891deab6585a9
Author: Matt Turner <[email protected]>
Date:   Mon Dec 2 13:10:29 2013 -0800

    i965: Print argument types in dump_instruction().
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=21e92e74c84e0422a5868736f6cb3a408220a294
Author: Matt Turner <[email protected]>
Date:   Mon Dec 2 12:58:45 2013 -0800

    i965: Externalize reg_encoding for use in dump_instruction().
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=729fe77e3bdf64768e8447c281f249ac80c1b9a2
Author: Matt Turner <[email protected]>
Date:   Mon Dec 2 12:43:50 2013 -0800

    i965/vec4: Don't print swizzles for immediate values.
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2b8e0a73fbc021305fdcab7a3c6661de7af911a9
Author: Matt Turner <[email protected]>
Date:   Mon Dec 2 12:41:16 2013 -0800

    i965/vec4: Print negate and absolute value for src args.
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a85f1b7adf1023667fea090242ba448d935eaa67
Author: Matt Turner <[email protected]>
Date:   Mon Nov 25 22:17:29 2013 -0800

    i965/vec4: Add support for printing HW_REGs in dump_instruction().
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=942151af300e067f72572cd8785fa3526132570c
Author: Matt Turner <[email protected]>
Date:   Mon Nov 25 15:37:18 2013 -0800

    i965/fs: Print ARF registers properly in dump_instruction().
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0e4053234df5e3461e80c90dfd743c3ac96006eb
Author: Matt Turner <[email protected]>
Date:   Mon Nov 25 15:15:25 2013 -0800

    i965: Don't print extra (null) arguments in dump_instruction().
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d79e7117183e484f0f017f16bbf24b861ad5bcb7
Author: Matt Turner <[email protected]>
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 <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b1eb2ad8d159748034e7befc22b46a0b3b040186
Author: Matt Turner <[email protected]>
Date:   Wed Nov 27 16:14:14 2013 -0800

    i965: Allow commuting the operands of ADDC for const propagation.
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=04d83396eef7a8c8603f55bc0a0b04c80a9f6cf5
Author: Matt Turner <[email protected]>
Date:   Fri Nov 29 22:16:14 2013 -0800

    i965/fs: Rename register_coalesce_2() -> register_coalesce().
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a6b14f6745206eb018c8474feafae4bafdcb8e5
Author: Matt Turner <[email protected]>
Date:   Fri Nov 29 22:14:14 2013 -0800

    i965/fs: Remove now useless register_coalesce() pass.
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1520ae48b880d9bee287583d15ac40c89d0ced8b
Author: Matt Turner <[email protected]>
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 <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8786f381eca2c818e381af74feda8d4a22c0e411
Author: Matt Turner <[email protected]>
Date:   Tue Nov 26 13:49:31 2013 -0800

    i965: Allow constant propagation into ASR and BFI1.
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ba84800275bd949d30125da7a1632ac62e84d8a0
Author: Matt Turner <[email protected]>
Date:   Mon Dec 2 10:29:49 2013 -0800

    i965/cfg: Document cur_* variables.
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7642c3c6ff3bd6c419ea9406636a2b7b42eb3c0b
Author: Matt Turner <[email protected]>
Date:   Sat Nov 30 20:38:48 2013 -0800

    i965/cfg: Remove ip & cur from brw_cfg.
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d2fcdd0973ee33a2627d1dee6d78091e605af160
Author: Matt Turner <[email protected]>
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 <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c6450fa963b7eefbbc0ba5e00d42f1a4efba092b
Author: Matt Turner <[email protected]>
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 <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f3bce19f6c85e2b38c5562e6f4f9d71521fa369f
Author: Matt Turner <[email protected]>
Date:   Sat Nov 30 16:39:43 2013 -0800

    i965/cfg: Include only needed headers.
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f4b50a14667879187d9d263b50bb6b0620bf1e29
Author: Matt Turner <[email protected]>
Date:   Thu Nov 28 23:39:02 2013 -0800

    i965/cfg: Remove unnecessary endif_stack.
    
    Unnecessary since last commit.
    
    Reviewed-by: Eric Anholt <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2eb9bbfb6889a7a2f864aa110134f75fc224edee
Author: Matt Turner <[email protected]>
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 <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ed85c0f409116b42f032d0e7939d4ea55d3ca2f3
Author: Matt Turner <[email protected]>
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 <[email protected]>

URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=51194932d3b866e56b0001874c28f862d382dbd3
Author: Matt Turner <[email protected]>
Date:   Thu Nov 28 11:03:14 2013 -0800

    i965/cfg: Add code to dump blocks and cfg.
    
    Reviewed-by: Eric Anholt <[email protected]>

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to