diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2020-01-07 16:48:05 -0500 |
|---|---|---|
| committer | Matt Arsenault <arsenm2@gmail.com> | 2020-01-09 10:29:32 -0500 |
| commit | c1d4963b447c9330c2ad50bb73bb93f9a42c9641 (patch) | |
| tree | b480b90270e14945dae6bb187af23a07a9f3036f /llvm | |
| parent | 7d677421607cbfdd8d1e96275c613d3db8a0e51f (diff) | |
| download | bcm5719-llvm-c1d4963b447c9330c2ad50bb73bb93f9a42c9641.tar.gz bcm5719-llvm-c1d4963b447c9330c2ad50bb73bb93f9a42c9641.zip | |
AMDGPU: Use new PatFrag system for d16 load nodes
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SIInstrInfo.td | 55 |
1 files changed, 23 insertions, 32 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.td b/llvm/lib/Target/AMDGPU/SIInstrInfo.td index 609a345ea18..1518beafc7a 100644 --- a/llvm/lib/Target/AMDGPU/SIInstrInfo.td +++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.td @@ -579,46 +579,37 @@ def si_setcc_uniform : PatFrag < // SDNodes PatFrags for d16 loads //===----------------------------------------------------------------------===// -class LoadD16Frag <SDPatternOperator op> : PatFrag<(ops node:$ptr, node:$tied_in), (op node:$ptr, node:$tied_in)>; -class LocalLoadD16 <SDPatternOperator op> : LoadD16Frag <op>, LocalAddress; -class GlobalLoadD16 <SDPatternOperator op> : LoadD16Frag <op>, GlobalLoadAddress; -class PrivateLoadD16 <SDPatternOperator op> : LoadD16Frag <op>, PrivateAddress; -class FlatLoadD16 <SDPatternOperator op> : LoadD16Frag <op>, FlatLoadAddress; - -def load_d16_hi_local : LocalLoadD16 <SIload_d16_hi>; -def az_extloadi8_d16_hi_local : LocalLoadD16 <SIload_d16_hi_u8>; -def sextloadi8_d16_hi_local : LocalLoadD16 <SIload_d16_hi_i8>; - -def load_d16_hi_global : GlobalLoadD16 <SIload_d16_hi>; -def az_extloadi8_d16_hi_global : GlobalLoadD16 <SIload_d16_hi_u8>; -def sextloadi8_d16_hi_global : GlobalLoadD16 <SIload_d16_hi_i8>; - -def load_d16_hi_private : PrivateLoadD16 <SIload_d16_hi>; -def az_extloadi8_d16_hi_private : PrivateLoadD16 <SIload_d16_hi_u8>; -def sextloadi8_d16_hi_private : PrivateLoadD16 <SIload_d16_hi_i8>; +class LoadD16Frag <SDPatternOperator op> : PatFrag< + (ops node:$ptr, node:$tied_in), + (op node:$ptr, node:$tied_in)> { + let IsLoad = 1; +} -def load_d16_hi_flat : FlatLoadD16 <SIload_d16_hi>; -def az_extloadi8_d16_hi_flat : FlatLoadD16 <SIload_d16_hi_u8>; -def sextloadi8_d16_hi_flat : FlatLoadD16 <SIload_d16_hi_i8>; +foreach as = [ "global", "flat", "constant", "local", "private", "region" ] in { +let AddressSpaces = !cast<AddressSpaceList>("LoadAddress_"#as).AddrSpaces in { +def load_d16_hi_#as : LoadD16Frag <SIload_d16_hi>; -def load_d16_lo_local : LocalLoadD16 <SIload_d16_lo>; -def az_extloadi8_d16_lo_local : LocalLoadD16 <SIload_d16_lo_u8>; -def sextloadi8_d16_lo_local : LocalLoadD16 <SIload_d16_lo_i8>; +def az_extloadi8_d16_hi_#as : LoadD16Frag <SIload_d16_hi_u8> { + let MemoryVT = i8; +} -def load_d16_lo_global : GlobalLoadD16 <SIload_d16_lo>; -def az_extloadi8_d16_lo_global : GlobalLoadD16 <SIload_d16_lo_u8>; -def sextloadi8_d16_lo_global : GlobalLoadD16 <SIload_d16_lo_i8>; +def sextloadi8_d16_hi_#as : LoadD16Frag <SIload_d16_hi_i8> { + let MemoryVT = i8; +} -def load_d16_lo_private : PrivateLoadD16 <SIload_d16_lo>; -def az_extloadi8_d16_lo_private : PrivateLoadD16 <SIload_d16_lo_u8>; -def sextloadi8_d16_lo_private : PrivateLoadD16 <SIload_d16_lo_i8>; +def load_d16_lo_#as : LoadD16Frag <SIload_d16_lo>; -def load_d16_lo_flat : FlatLoadD16 <SIload_d16_lo>; -def az_extloadi8_d16_lo_flat : FlatLoadD16 <SIload_d16_lo_u8>; -def sextloadi8_d16_lo_flat : FlatLoadD16 <SIload_d16_lo_i8>; +def az_extloadi8_d16_lo_#as : LoadD16Frag <SIload_d16_lo_u8> { + let MemoryVT = i8; +} +def sextloadi8_d16_lo_#as : LoadD16Frag <SIload_d16_lo_i8> { + let MemoryVT = i8; +} +} // End let AddressSpaces = ... +} // End foreach AddrSpace def lshr_rev : PatFrag < (ops node:$src1, node:$src0), |

