[PATCH] CodeGenPrepare: Avoid and/or i1 in select conditions.

Matthias Braun matze at braunis.de
Fri Feb 13 13:34:49 PST 2015


Submit again (last time the patch/phabricator version got mixed up...):

This transforms
select(N0&N1, X, Y) => select(N0, select(N1, X, Y), Y)
select(N0|N1, X, Y) => select(N0, X, select(N1, X, Y))
for targets where performing and/or on i1 results implies using an
integer register for a compare result.

REPOSITORY
  rL LLVM

http://reviews.llvm.org/D7622

Files:
  include/llvm/Target/TargetLowering.h
  lib/CodeGen/CodeGenPrepare.cpp
  lib/Target/PowerPC/PPCISelLowering.h
  test/CodeGen/R600/or.ll
  test/CodeGen/X86/jump_sign.ll
  test/CodeGen/X86/zext-sext.ll
  test/Transforms/CodeGenPrepare/AArch64/select_and_or.ll
  test/Transforms/CodeGenPrepare/PowerPC/lit.local.cfg
  test/Transforms/CodeGenPrepare/PowerPC/select_and_or.ll
  test/Transforms/CodeGenPrepare/X86/select_and_or.ll

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7622.19927.patch
Type: text/x-patch
Size: 14137 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150213/450082da/attachment.bin>


More information about the llvm-commits mailing list