diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-08-01 03:57:42 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-08-01 03:57:42 +0000 |
| commit | 9952f464078f98ff6df4e6e28991b0e401ac59d5 (patch) | |
| tree | 39ceff997be430b4cada96a126117ba093978fe2 /llvm/lib | |
| parent | 57495268acb2b304f7a89e321478c3a818d2c93f (diff) | |
| download | bcm5719-llvm-9952f464078f98ff6df4e6e28991b0e401ac59d5.tar.gz bcm5719-llvm-9952f464078f98ff6df4e6e28991b0e401ac59d5.zip | |
AMDGPU/GlobalISel: Fix flat load/store of pointer types
llvm-svn: 367513
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPU.td | 9 | ||||
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUGISel.td | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/AMDGPU/FLATInstructions.td | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SIRegisterInfo.td | 4 |
4 files changed, 13 insertions, 8 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.td b/llvm/lib/Target/AMDGPU/AMDGPU.td index baeba534012..89dbfc17eca 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPU.td +++ b/llvm/lib/Target/AMDGPU/AMDGPU.td @@ -10,6 +10,15 @@ include "llvm/TableGen/SearchableTable.td" include "llvm/Target/Target.td" include "AMDGPUFeatures.td" +def p0 : PtrValueType<i64, 0>; +def p1 : PtrValueType<i64, 1>; +def p2 : PtrValueType<i32, 2>; +def p3 : PtrValueType<i32, 3>; +def p4 : PtrValueType<i64, 4>; +def p5 : PtrValueType<i32, 5>; +def p6 : PtrValueType<i32, 6>; + + class BoolToList<bit Value> { list<int> ret = !if(Value, [1]<int>, []<int>); } diff --git a/llvm/lib/Target/AMDGPU/AMDGPUGISel.td b/llvm/lib/Target/AMDGPU/AMDGPUGISel.td index aade2e8eb6c..cd8844adb03 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUGISel.td +++ b/llvm/lib/Target/AMDGPU/AMDGPUGISel.td @@ -12,10 +12,6 @@ include "AMDGPU.td" -def p0 : PtrValueType<i64, 0>; -def p1 : PtrValueType<i64, 1>; -def p4 : PtrValueType<i64, 4>; - def sd_vsrc0 : ComplexPattern<i32, 1, "">; def gi_vsrc0 : GIComplexOperandMatcher<s32, "selectVSRC0">, diff --git a/llvm/lib/Target/AMDGPU/FLATInstructions.td b/llvm/lib/Target/AMDGPU/FLATInstructions.td index 701f50892c0..02688529690 100644 --- a/llvm/lib/Target/AMDGPU/FLATInstructions.td +++ b/llvm/lib/Target/AMDGPU/FLATInstructions.td @@ -786,7 +786,7 @@ def : FlatLoadAtomicPat <FLAT_LOAD_DWORDX2, atomic_load_64_flat, i64>; def : FlatStorePat <FLAT_STORE_BYTE, truncstorei8_flat, i32>; def : FlatStorePat <FLAT_STORE_SHORT, truncstorei16_flat, i32>; -foreach vt = [i32, f32, v2i16, v2f16] in { +foreach vt = [i32, f32, v2i16, v2f16, p2, p3, p5, p6] in { def : FlatLoadPat <FLAT_LOAD_DWORD, load_flat, vt>; def : FlatStorePat <FLAT_STORE_DWORD, store_flat, vt>; } @@ -867,7 +867,7 @@ def : FlatLoadSignedPat <GLOBAL_LOAD_USHORT, zextloadi16_global, i32>; def : FlatLoadSignedPat <GLOBAL_LOAD_SSHORT, sextloadi16_global, i32>; def : FlatLoadSignedPat <GLOBAL_LOAD_USHORT, load_global, i16>; -foreach vt = [i32, f32, v2i16, v2f16] in { +foreach vt = [i32, f32, v2i16, v2f16, p2, p3, p5, p6] in { def : FlatLoadSignedPat <GLOBAL_LOAD_DWORD, load_global, vt>; def : FlatStoreSignedPat <GLOBAL_STORE_DWORD, store_global, vt, VGPR_32>; } diff --git a/llvm/lib/Target/AMDGPU/SIRegisterInfo.td b/llvm/lib/Target/AMDGPU/SIRegisterInfo.td index 389e65a1aa4..108e8020f13 100644 --- a/llvm/lib/Target/AMDGPU/SIRegisterInfo.td +++ b/llvm/lib/Target/AMDGPU/SIRegisterInfo.td @@ -352,7 +352,7 @@ def TTMP0_TTMP1_TTMP2_TTMP3_TTMP4_TTMP5_TTMP6_TTMP7_TTMP8_TTMP9_TTMP10_TTMP11_TT // VGPR 32-bit registers // i16/f16 only on VI+ -def VGPR_32 : RegisterClass<"AMDGPU", [i32, f32, i16, f16, v2i16, v2f16], 32, +def VGPR_32 : RegisterClass<"AMDGPU", [i32, f32, i16, f16, v2i16, v2f16, p2, p3, p5, p6], 32, (add (sequence "VGPR%u", 0, 255))> { let AllocationPriority = 1; let Size = 32; @@ -586,7 +586,7 @@ def SReg_1024 : RegisterClass<"AMDGPU", [v32i32, v32f32], 32, } // Register class for all vector registers (VGPRs + Interploation Registers) -def VReg_64 : RegisterClass<"AMDGPU", [i64, f64, v2i32, v2f32, v4f16, v4i16], 32, +def VReg_64 : RegisterClass<"AMDGPU", [i64, f64, v2i32, v2f32, v4f16, v4i16, p0, p1, p4], 32, (add VGPR_64)> { let Size = 64; |

