[PATCH] DAGCombiner: fold (or (and X, M), (and X, N)) -> (and X, (or M, N))

Tim Northover t.p.northover at gmail.com
Mon Jan 19 19:24:58 PST 2015


Hi arsenm,

Hi all,

I'm mostly worried about the R600 changes here. I scratched my head trying to understand just what the assembly meant, but still only have the haziest notion.

Anyway, this DAG combine is very similar to the one above it, but has different enough requirements that I've put it in a separate block. It's particularly useful for tidying up some trivial manipulations (const-masking to reconstruct a value, as seen in the R600 test actually, if I'm reading it right), especially when they're unavoidably tied to parameter passing so IR-level optimisations can't do anything.

Does it look sane?

Cheers.

Tim.

REPOSITORY
  rL LLVM

http://reviews.llvm.org/D7063

Files:
  lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  test/CodeGen/AArch64/or-combine.ll
  test/CodeGen/R600/extload.ll
  test/CodeGen/X86/vselect.ll

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7063.18411.patch
Type: text/x-patch
Size: 4977 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150120/e99b3647/attachment.bin>


More information about the llvm-commits mailing list