1. 24 Nov, 2015 1 commit
  2. 23 Nov, 2015 1 commit
  3. 22 Nov, 2015 1 commit
  4. 21 Nov, 2015 1 commit
  5. 20 Nov, 2015 5 commits
  6. 19 Nov, 2015 2 commits
  7. 18 Nov, 2015 2 commits
  8. 17 Nov, 2015 8 commits
  9. 16 Nov, 2015 3 commits
  10. 14 Nov, 2015 2 commits
  11. 13 Nov, 2015 2 commits
    • Subzero: Find rematerializable variables transitively. · 3607b6c9
      Jim Stichnoth authored
      There are situations where a variable is assigned as the result of a rematerializable alloca instruction, and then another variable is assigned as essentially a known-offset interior pointer into the alloca space.  In this case, the secondary variable is also rematerializable.
      
      We add a pass, after alloca analysis, to find these derived variables and mark them transitively as rematerializable.  Because we lack use-def chains (or in fact any map to variable use locations), we need to iterate over the CFG until convergence.  Fortunately, this is pretty cheap, and not even done unless the alloca analysis seeds it with an initial set of rematerializable variables.
      
      This analysis is only really needed for arithmetic instructions, but we also need to apply it to assignments and pointer-type bitcasts that are added when the IceConverter directly parses a .ll file rather than a .pexe file.
      
      BUG= none
      R=jpp@chromium.org, sehr@chromium.org
      
      Review URL: https://codereview.chromium.org/1441793002 .
    • Subzero: Use "pxor reg,reg" to load a floating-point scalar 0.0 value. · 99165667
      Jim Stichnoth authored
      BUG= none
      R=jpp@chromium.org, sehr@chromium.org
      
      Review URL: https://codereview.chromium.org/1439363002 .
  12. 12 Nov, 2015 4 commits
  13. 11 Nov, 2015 7 commits
  14. 10 Nov, 2015 1 commit
    • Subzero: For filetype=asm, don't print a blank line for pseudo instrs. · 3e859b73
      Jim Stichnoth authored
      Originally, for each non-deleted instruction, CfgNode::emit() would call the virtual Inst::emit() and then print a newline (also printing end-of-live-range info as necessary).  This resulted in clumsy blank lines in the asm output, corresponding to non target specific pseudo instructions such as FakeDef, FakeUse, FakeKill.
      
      We change this so that CfgNode::emit() only prints a newline for an InstTarget subclass, or if any end-of-live-range text was printed.
      
      If a high-level instruction still wants to emit something in a comment, it's responsible for printing its own newline.
      
      BUG= none
      TEST= ./pydir/szbuild_spec2k.py -O2 --force -v --filetype=asm --sz=--asm-verbose=0
      TEST= ./pydir/szbuild_spec2k.py -O2 --force -v --filetype=asm --sz=--asm-verbose=1
      TEST= ./pydir/szbuild_spec2k.py -O2 --force -v --filetype=asm --target=arm32
      R=kschimpf@google.com
      
      Review URL: https://codereview.chromium.org/1431353003 .