1. 25 Oct, 2018 1 commit
  2. 21 Oct, 2017 1 commit
    • Stefan Schake's avatar
      broadcom/vc4: Fix aliasing issue · e5fea0d6
      Stefan Schake authored
      This was causing Android clang version 3.8.256229 to miscompile,
      presumably due to strict aliasing.
      
      Fixes: 14dc281c ("vc4: Enforce one-uniform-per-instruction after optimization.")
      e5fea0d6
  3. 29 Nov, 2016 2 commits
  4. 12 Jul, 2016 3 commits
    • Eric Anholt's avatar
      vc4: Convert uniforms lowering to work with multiple blocks. · 46ec025b
      Eric Anholt authored
      We still decide which uniform to lower based on how many
      instructions-that-need-lowering use that uniform, but now we emit a new
      temporary uniform load in each of the basic blocks containing an
      instruction being lowered.
      
      This commit is best reviewed with diff -b.
      46ec025b
    • Eric Anholt's avatar
      vc4: Create a basic block structure and move the instructions into it. · 6c1f834a
      Eric Anholt authored
      The optimization passes and scheduling aren't actually ready for multiple
      blocks with control flow yet (as seen by the "cur_block" references in
      them instead of iterating over blocks), but this creates the structures
      necessary for converting them.
      6c1f834a
    • Eric Anholt's avatar
      vc4: Add a "qir_for_each_inst_inorder" macro and use it in many places. · d3cdbf6f
      Eric Anholt authored
      We have the prior list_foreach() all over the code, but I need to move
      where instructions live as part of adding support for control flow.  Start
      by just converting to a helper iterator macro.  (The simpler
      "qir_for_each_inst()" will be used for the for-each-inst-in-a-block
      iterator macro later)
      d3cdbf6f
  5. 09 Apr, 2016 1 commit
  6. 18 Nov, 2015 2 commits
    • Eric Anholt's avatar
      vc4: Don't bother lowering uniforms when the same value is used twice. · dd05ffeb
      Eric Anholt authored
      DEQP likes to do math on uniforms, and the "fmaxabs dst, uni, uni" to get
      the absolute value would get lowered.  The lowering doesn't bother to try
      to restrict the lifetime of the lowered uniforms, so we'd end up register
      allocation failng due to this on 5 of the tests (More tests still fail in
      RA, which look like we'll need to reduce lowered uniform lifetimes to
      fix).
      
      No changes on shader-db, though fewer extra MOVs are generated on even
      glxgears (MOVs pair well enough that it ends up being the same instruction
      count).
      dd05ffeb
    • Eric Anholt's avatar
      d18d1ba5
  7. 17 Jul, 2015 1 commit
  8. 30 May, 2015 1 commit
  9. 20 Feb, 2015 2 commits
    • Eric Anholt's avatar
      vc4: Keep an array of pointers to instructions defining the temps around. · 85316d05
      Eric Anholt authored
      The optimization passes are always regenerating it and throwing it away,
      but it's not hard to keep track of.
      85316d05
    • Eric Anholt's avatar
      vc4: Enforce one-uniform-per-instruction after optimization. · 14dc281c
      Eric Anholt authored
      This lets us more intelligently decide which uniform values should be put
      into temporaries, by choosing the most reused values to push to temps
      first.
      
      total uniforms in shared programs: 13457 -> 13433 (-0.18%)
      uniforms in affected programs:     1524 -> 1500 (-1.57%)
      total instructions in shared programs: 40198 -> 40019 (-0.45%)
      instructions in affected programs:     6027 -> 5848 (-2.97%)
      
      I noticed this opportunity because with the NIR work, some programs were
      happening to make different uniform copy propagation choices that
      significantly increased instruction counts.
      14dc281c