[AMDGPU] SDWA Peephole: improve search for immediates in SDWA patterns
authorSam Kolton <Sam.Kolton@amd.com>
Fri, 31 Mar 2017 11:42:43 +0000 (11:42 +0000)
committerSam Kolton <Sam.Kolton@amd.com>
Fri, 31 Mar 2017 11:42:43 +0000 (11:42 +0000)
commit27e0f8bc72b4fbda199bd190b755cb83440696b0
treef4e75b5852d8c3799a81d1a6a7c20f537d561292
parent37b536e4b3bd2bbce3009820d861947d676625fb
[AMDGPU] SDWA Peephole: improve search for immediates in SDWA patterns

Previously compiler often extracted common immediates into specific register, e.g.:
```
%vreg0 = S_MOV_B32 0xff;
%vreg2 = V_AND_B32_e32 %vreg0, %vreg1
%vreg4 = V_AND_B32_e32 %vreg0, %vreg3
```
Because of this SDWA peephole failed to find SDWA convertible pattern. E.g. in previous example this could be converted into 2 SDWA src operands:
```
SDWA src: %vreg2 src_sel:BYTE_0
SDWA src: %vreg4 src_sel:BYTE_0
```
With this change peephole check if operand is either immediate or register that is copy of immediate.

llvm-svn: 299202
llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
llvm/lib/Target/AMDGPU/SIInstrInfo.h
llvm/lib/Target/AMDGPU/SIPeepholeSDWA.cpp
llvm/test/CodeGen/AMDGPU/sdwa-peephole.ll