OSDN Git Service

[PowerPC] better instruction selection for OR (XOR) with a 32-bit immediate
authorHiroshi Inoue <inouehrs@jp.ibm.com>
Wed, 23 Aug 2017 05:15:15 +0000 (05:15 +0000)
committerHiroshi Inoue <inouehrs@jp.ibm.com>
Wed, 23 Aug 2017 05:15:15 +0000 (05:15 +0000)
commit65bc8755b1893f502fb430ce5449a8f969585119
tree4bd54f31d5a7721a463523afb6d9bb23e6bb9385
parentd5e52ea44da48ad994dfb79092ad5f9609836752
[PowerPC] better instruction selection for OR (XOR) with a 32-bit immediate

On PPC64, OR (XOR) with a 32-bit immediate can be done with only two instructions, i.e. ori + oris.
But the current LLVM generates three or four instructions for this purpose (and also it clobbers one GPR).

This patch makes PPC backend generate ori + oris (xori + xoris) for OR (XOR) with a 32-bit immediate.

e.g. (x | 0xFFFFFFFF) should be

ori 3, 3, 65535
oris 3, 3, 65535

but LLVM generates without this patch

li 4, 0
oris 4, 4, 65535
ori 4, 4, 65535
or 3, 3, 4

Differential Revision: https://reviews.llvm.org/D34757

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311526 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/PowerPC/PPCISelDAGToDAG.cpp
test/CodeGen/PowerPC/ori_imm32.ll [new file with mode: 0644]