-
Notifications
You must be signed in to change notification settings - Fork 13.6k
[AMDGPU] New RegBankSelect: Add rules for G_PTRTOINT
and G_INTTOPTR
#142604
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: users/pierre-vh/test-ptr-int-gisel-rb
Are you sure you want to change the base?
[AMDGPU] New RegBankSelect: Add rules for G_PTRTOINT
and G_INTTOPTR
#142604
Conversation
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
@llvm/pr-subscribers-llvm-globalisel Author: Pierre van Houtryve (Pierre-vh) ChangesFull diff: https://github.com/llvm/llvm-project/pull/142604.diff 3 Files Affected:
diff --git a/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp b/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
index b6260076731ba..cbba5764045fd 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
@@ -736,7 +736,21 @@ RegBankLegalizeRules::RegBankLegalizeRules(const GCNSubtarget &_ST,
.Any({{DivP1}, {{VgprP1}, {VgprP1, Vgpr64}}})
.Any({{DivP0}, {{VgprP0}, {VgprP0, Vgpr64}}});
- addRulesForGOpcs({G_INTTOPTR}).Any({{UniP4}, {{SgprP4}, {Sgpr64}}});
+ addRulesForGOpcs({G_INTTOPTR})
+ .Any({{UniPtr32}, {{SgprPtr32}, {Sgpr32}}})
+ .Any({{DivPtr32}, {{VgprPtr32}, {Vgpr32}}})
+ .Any({{UniPtr64}, {{SgprPtr64}, {Sgpr64}}})
+ .Any({{DivPtr64}, {{VgprPtr64}, {Vgpr64}}})
+ .Any({{UniPtr128}, {{SgprPtr128}, {Sgpr128}}})
+ .Any({{DivPtr128}, {{VgprPtr128}, {Vgpr128}}});
+
+ addRulesForGOpcs({G_PTRTOINT})
+ .Any({{UniS32}, {{Sgpr32}, {SgprPtr32}}})
+ .Any({{DivS32}, {{Vgpr32}, {VgprPtr32}}})
+ .Any({{UniS64}, {{Sgpr64}, {SgprPtr64}}})
+ .Any({{DivS64}, {{Vgpr64}, {VgprPtr64}}})
+ .Any({{UniS128}, {{Sgpr128}, {SgprPtr128}}})
+ .Any({{DivS128}, {{Vgpr128}, {VgprPtr128}}});
addRulesForGOpcs({G_ABS}, Standard).Uni(S16, {{Sgpr32Trunc}, {Sgpr32SExt}});
diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-inttoptr.mir b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-inttoptr.mir
index 42600d7d0dd7a..d9b1b6e20089b 100644
--- a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-inttoptr.mir
+++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-inttoptr.mir
@@ -2,6 +2,8 @@
# RUN: llc -mtriple=amdgcn -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck %s
# RUN: llc -mtriple=amdgcn -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s
+# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass="amdgpu-regbankselect,amdgpu-regbanklegalize" %s -verify-machineinstrs -o - | FileCheck %s --check-prefix=NEW_RBS
+
---
name: inttoptr_s_p0
legalized: true
@@ -14,6 +16,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p0) = G_INTTOPTR [[COPY]](s64)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p0
+ ; NEW_RBS: liveins: $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p0) = G_INTTOPTR [[COPY]](s64)
%0:_(s64) = COPY $sgpr0_sgpr1
%1:_(p0) = G_INTTOPTR %0
...
@@ -30,6 +38,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p0) = G_INTTOPTR [[COPY]](s64)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p0
+ ; NEW_RBS: liveins: $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p0) = G_INTTOPTR [[COPY]](s64)
%0:_(s64) = COPY $vgpr0_vgpr1
%1:_(p0) = G_INTTOPTR %0
...
@@ -46,6 +60,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p1) = G_INTTOPTR [[COPY]](s64)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p1
+ ; NEW_RBS: liveins: $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p1) = G_INTTOPTR [[COPY]](s64)
%0:_(s64) = COPY $sgpr0_sgpr1
%1:_(p1) = G_INTTOPTR %0
...
@@ -62,6 +82,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p1) = G_INTTOPTR [[COPY]](s64)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p1
+ ; NEW_RBS: liveins: $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p1) = G_INTTOPTR [[COPY]](s64)
%0:_(s64) = COPY $vgpr0_vgpr1
%1:_(p1) = G_INTTOPTR %0
...
@@ -78,6 +104,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p2) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p2
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p2) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $sgpr0
%1:_(p2) = G_INTTOPTR %0
...
@@ -94,6 +126,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p2) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p2
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p2) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $vgpr0
%1:_(p2) = G_INTTOPTR %0
...
@@ -110,6 +148,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p3) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p3
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p3) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $sgpr0
%1:_(p3) = G_INTTOPTR %0
...
@@ -126,6 +170,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p3) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p3
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p3) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $vgpr0
%1:_(p3) = G_INTTOPTR %0
...
@@ -142,6 +192,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p4) = G_INTTOPTR [[COPY]](s64)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p4
+ ; NEW_RBS: liveins: $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p4) = G_INTTOPTR [[COPY]](s64)
%0:_(s64) = COPY $sgpr0_sgpr1
%1:_(p4) = G_INTTOPTR %0
...
@@ -158,6 +214,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p4) = G_INTTOPTR [[COPY]](s64)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p4
+ ; NEW_RBS: liveins: $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p4) = G_INTTOPTR [[COPY]](s64)
%0:_(s64) = COPY $vgpr0_vgpr1
%1:_(p4) = G_INTTOPTR %0
...
@@ -174,6 +236,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p5) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p5
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p5) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $sgpr0
%1:_(p5) = G_INTTOPTR %0
...
@@ -190,6 +258,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p5) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p5
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p5) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $vgpr0
%1:_(p5) = G_INTTOPTR %0
...
@@ -206,6 +280,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p6) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p6
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p6) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $sgpr0
%1:_(p6) = G_INTTOPTR %0
...
@@ -222,6 +302,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p6) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p6
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p6) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $vgpr0
%1:_(p6) = G_INTTOPTR %0
...
@@ -238,6 +324,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p8) = G_INTTOPTR [[COPY]](s128)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p8
+ ; NEW_RBS: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p8) = G_INTTOPTR [[COPY]](s128)
%0:_(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
%1:_(p8) = G_INTTOPTR %0
...
@@ -254,6 +346,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p8) = G_INTTOPTR [[COPY]](s128)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p8
+ ; NEW_RBS: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p8) = G_INTTOPTR [[COPY]](s128)
%0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
%1:_(p8) = G_INTTOPTR %0
...
diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-ptrtoint.mir b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-ptrtoint.mir
index 9240c9f6df404..d0cb24f5072c0 100644
--- a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-ptrtoint.mir
+++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-ptrtoint.mir
@@ -2,6 +2,8 @@
# RUN: llc -mtriple=amdgcn -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck %s
# RUN: llc -mtriple=amdgcn -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s
+# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass="amdgpu-regbankselect,amdgpu-regbanklegalize" %s -verify-machineinstrs -o - | FileCheck %s --check-prefix=NEW_RBS
+
---
name: ptrtoint_s_p0
legalized: true
@@ -14,6 +16,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p0) = COPY $sgpr0_sgpr1
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p0)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p0
+ ; NEW_RBS: liveins: $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p0) = COPY $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p0)
%0:_(p0) = COPY $sgpr0_sgpr1
%1:_(s64) = G_PTRTOINT %0
...
@@ -30,6 +38,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p0)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p0
+ ; NEW_RBS: liveins: $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p0)
%0:_(p0) = COPY $vgpr0_vgpr1
%1:_(s64) = G_PTRTOINT %0
...
@@ -46,6 +60,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p1)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p1
+ ; NEW_RBS: liveins: $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p1)
%0:_(p1) = COPY $sgpr0_sgpr1
%1:_(s64) = G_PTRTOINT %0
...
@@ -62,6 +82,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p1)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p1
+ ; NEW_RBS: liveins: $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p1)
%0:_(p1) = COPY $vgpr0_vgpr1
%1:_(s64) = G_PTRTOINT %0
...
@@ -78,6 +104,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p2) = COPY $sgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p2)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p2
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p2) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p2)
%0:_(p2) = COPY $sgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -94,6 +126,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p2) = COPY $vgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p2)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p2
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p2) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p2)
%0:_(p2) = COPY $vgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -110,6 +148,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p3) = COPY $sgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p3)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p3
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p3) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p3)
%0:_(p3) = COPY $sgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -126,6 +170,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p3)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p3
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p3)
%0:_(p3) = COPY $vgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -142,6 +192,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p4)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p4
+ ; NEW_RBS: liveins: $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p4)
%0:_(p4) = COPY $sgpr0_sgpr1
%1:_(s64) = G_PTRTOINT %0
...
@@ -158,6 +214,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p4) = COPY $vgpr0_vgpr1
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p4)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p4
+ ; NEW_RBS: liveins: $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p4) = COPY $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p4)
%0:_(p4) = COPY $vgpr0_vgpr1
%1:_(s64) = G_PTRTOINT %0
...
@@ -174,6 +236,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p5)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p5
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p5)
%0:_(p5) = COPY $sgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -190,6 +258,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p5)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p5
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p5)
%0:_(p5) = COPY $vgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -206,6 +280,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p6) = COPY $sgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p6)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p6
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p6) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p6)
%0:_(p6) = COPY $sgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -222,6 +302,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p6) = COPY $vgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p6)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p6
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p6) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p6)
%0:_(p6) = COPY $vgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -238,6 +324,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p8) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s128) = G_PTRTOINT [[COPY]](p8)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p8
+ ; NEW_RBS: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p8) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s128) = G_PTRTOINT [[COPY]](p8)
%0:_(p8) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
%1:_(s128) = G_PTRTOINT %0
...
@@ -254,6 +346,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p8) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s128) = G_PTRTOINT [[COPY]](p8)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p8
+ ; NEW_RBS: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p8) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s128) = G_PTRTOINT [[COPY]](p8)
%0:_(p8) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
%1:_(s128) = G_PTRTOINT %0
...
|
@llvm/pr-subscribers-backend-amdgpu Author: Pierre van Houtryve (Pierre-vh) ChangesFull diff: https://github.com/llvm/llvm-project/pull/142604.diff 3 Files Affected:
diff --git a/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp b/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
index b6260076731ba..cbba5764045fd 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
@@ -736,7 +736,21 @@ RegBankLegalizeRules::RegBankLegalizeRules(const GCNSubtarget &_ST,
.Any({{DivP1}, {{VgprP1}, {VgprP1, Vgpr64}}})
.Any({{DivP0}, {{VgprP0}, {VgprP0, Vgpr64}}});
- addRulesForGOpcs({G_INTTOPTR}).Any({{UniP4}, {{SgprP4}, {Sgpr64}}});
+ addRulesForGOpcs({G_INTTOPTR})
+ .Any({{UniPtr32}, {{SgprPtr32}, {Sgpr32}}})
+ .Any({{DivPtr32}, {{VgprPtr32}, {Vgpr32}}})
+ .Any({{UniPtr64}, {{SgprPtr64}, {Sgpr64}}})
+ .Any({{DivPtr64}, {{VgprPtr64}, {Vgpr64}}})
+ .Any({{UniPtr128}, {{SgprPtr128}, {Sgpr128}}})
+ .Any({{DivPtr128}, {{VgprPtr128}, {Vgpr128}}});
+
+ addRulesForGOpcs({G_PTRTOINT})
+ .Any({{UniS32}, {{Sgpr32}, {SgprPtr32}}})
+ .Any({{DivS32}, {{Vgpr32}, {VgprPtr32}}})
+ .Any({{UniS64}, {{Sgpr64}, {SgprPtr64}}})
+ .Any({{DivS64}, {{Vgpr64}, {VgprPtr64}}})
+ .Any({{UniS128}, {{Sgpr128}, {SgprPtr128}}})
+ .Any({{DivS128}, {{Vgpr128}, {VgprPtr128}}});
addRulesForGOpcs({G_ABS}, Standard).Uni(S16, {{Sgpr32Trunc}, {Sgpr32SExt}});
diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-inttoptr.mir b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-inttoptr.mir
index 42600d7d0dd7a..d9b1b6e20089b 100644
--- a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-inttoptr.mir
+++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-inttoptr.mir
@@ -2,6 +2,8 @@
# RUN: llc -mtriple=amdgcn -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck %s
# RUN: llc -mtriple=amdgcn -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s
+# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass="amdgpu-regbankselect,amdgpu-regbanklegalize" %s -verify-machineinstrs -o - | FileCheck %s --check-prefix=NEW_RBS
+
---
name: inttoptr_s_p0
legalized: true
@@ -14,6 +16,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p0) = G_INTTOPTR [[COPY]](s64)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p0
+ ; NEW_RBS: liveins: $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p0) = G_INTTOPTR [[COPY]](s64)
%0:_(s64) = COPY $sgpr0_sgpr1
%1:_(p0) = G_INTTOPTR %0
...
@@ -30,6 +38,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p0) = G_INTTOPTR [[COPY]](s64)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p0
+ ; NEW_RBS: liveins: $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p0) = G_INTTOPTR [[COPY]](s64)
%0:_(s64) = COPY $vgpr0_vgpr1
%1:_(p0) = G_INTTOPTR %0
...
@@ -46,6 +60,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p1) = G_INTTOPTR [[COPY]](s64)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p1
+ ; NEW_RBS: liveins: $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p1) = G_INTTOPTR [[COPY]](s64)
%0:_(s64) = COPY $sgpr0_sgpr1
%1:_(p1) = G_INTTOPTR %0
...
@@ -62,6 +82,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p1) = G_INTTOPTR [[COPY]](s64)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p1
+ ; NEW_RBS: liveins: $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p1) = G_INTTOPTR [[COPY]](s64)
%0:_(s64) = COPY $vgpr0_vgpr1
%1:_(p1) = G_INTTOPTR %0
...
@@ -78,6 +104,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p2) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p2
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p2) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $sgpr0
%1:_(p2) = G_INTTOPTR %0
...
@@ -94,6 +126,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p2) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p2
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p2) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $vgpr0
%1:_(p2) = G_INTTOPTR %0
...
@@ -110,6 +148,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p3) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p3
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p3) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $sgpr0
%1:_(p3) = G_INTTOPTR %0
...
@@ -126,6 +170,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p3) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p3
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p3) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $vgpr0
%1:_(p3) = G_INTTOPTR %0
...
@@ -142,6 +192,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p4) = G_INTTOPTR [[COPY]](s64)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p4
+ ; NEW_RBS: liveins: $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p4) = G_INTTOPTR [[COPY]](s64)
%0:_(s64) = COPY $sgpr0_sgpr1
%1:_(p4) = G_INTTOPTR %0
...
@@ -158,6 +214,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p4) = G_INTTOPTR [[COPY]](s64)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p4
+ ; NEW_RBS: liveins: $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p4) = G_INTTOPTR [[COPY]](s64)
%0:_(s64) = COPY $vgpr0_vgpr1
%1:_(p4) = G_INTTOPTR %0
...
@@ -174,6 +236,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p5) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p5
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p5) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $sgpr0
%1:_(p5) = G_INTTOPTR %0
...
@@ -190,6 +258,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p5) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p5
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p5) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $vgpr0
%1:_(p5) = G_INTTOPTR %0
...
@@ -206,6 +280,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p6) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p6
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p6) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $sgpr0
%1:_(p6) = G_INTTOPTR %0
...
@@ -222,6 +302,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p6) = G_INTTOPTR [[COPY]](s32)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p6
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p6) = G_INTTOPTR [[COPY]](s32)
%0:_(s32) = COPY $vgpr0
%1:_(p6) = G_INTTOPTR %0
...
@@ -238,6 +324,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p8) = G_INTTOPTR [[COPY]](s128)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_s_p8
+ ; NEW_RBS: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p8) = G_INTTOPTR [[COPY]](s128)
%0:_(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
%1:_(p8) = G_INTTOPTR %0
...
@@ -254,6 +346,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p8) = G_INTTOPTR [[COPY]](s128)
+ ;
+ ; NEW_RBS-LABEL: name: inttoptr_v_p8
+ ; NEW_RBS: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; NEW_RBS-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p8) = G_INTTOPTR [[COPY]](s128)
%0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
%1:_(p8) = G_INTTOPTR %0
...
diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-ptrtoint.mir b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-ptrtoint.mir
index 9240c9f6df404..d0cb24f5072c0 100644
--- a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-ptrtoint.mir
+++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-ptrtoint.mir
@@ -2,6 +2,8 @@
# RUN: llc -mtriple=amdgcn -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck %s
# RUN: llc -mtriple=amdgcn -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s
+# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass="amdgpu-regbankselect,amdgpu-regbanklegalize" %s -verify-machineinstrs -o - | FileCheck %s --check-prefix=NEW_RBS
+
---
name: ptrtoint_s_p0
legalized: true
@@ -14,6 +16,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p0) = COPY $sgpr0_sgpr1
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p0)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p0
+ ; NEW_RBS: liveins: $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p0) = COPY $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p0)
%0:_(p0) = COPY $sgpr0_sgpr1
%1:_(s64) = G_PTRTOINT %0
...
@@ -30,6 +38,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p0)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p0
+ ; NEW_RBS: liveins: $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p0)
%0:_(p0) = COPY $vgpr0_vgpr1
%1:_(s64) = G_PTRTOINT %0
...
@@ -46,6 +60,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p1)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p1
+ ; NEW_RBS: liveins: $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p1)
%0:_(p1) = COPY $sgpr0_sgpr1
%1:_(s64) = G_PTRTOINT %0
...
@@ -62,6 +82,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p1)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p1
+ ; NEW_RBS: liveins: $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p1)
%0:_(p1) = COPY $vgpr0_vgpr1
%1:_(s64) = G_PTRTOINT %0
...
@@ -78,6 +104,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p2) = COPY $sgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p2)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p2
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p2) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p2)
%0:_(p2) = COPY $sgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -94,6 +126,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p2) = COPY $vgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p2)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p2
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p2) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p2)
%0:_(p2) = COPY $vgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -110,6 +148,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p3) = COPY $sgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p3)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p3
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p3) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p3)
%0:_(p3) = COPY $sgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -126,6 +170,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p3)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p3
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p3)
%0:_(p3) = COPY $vgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -142,6 +192,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p4)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p4
+ ; NEW_RBS: liveins: $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p4)
%0:_(p4) = COPY $sgpr0_sgpr1
%1:_(s64) = G_PTRTOINT %0
...
@@ -158,6 +214,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p4) = COPY $vgpr0_vgpr1
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p4)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p4
+ ; NEW_RBS: liveins: $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p4) = COPY $vgpr0_vgpr1
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p4)
%0:_(p4) = COPY $vgpr0_vgpr1
%1:_(s64) = G_PTRTOINT %0
...
@@ -174,6 +236,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p5)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p5
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p5)
%0:_(p5) = COPY $sgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -190,6 +258,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p5)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p5
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p5)
%0:_(p5) = COPY $vgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -206,6 +280,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p6) = COPY $sgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p6)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p6
+ ; NEW_RBS: liveins: $sgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p6) = COPY $sgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p6)
%0:_(p6) = COPY $sgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -222,6 +302,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p6) = COPY $vgpr0
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p6)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p6
+ ; NEW_RBS: liveins: $vgpr0
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p6) = COPY $vgpr0
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p6)
%0:_(p6) = COPY $vgpr0
%1:_(s32) = G_PTRTOINT %0
...
@@ -238,6 +324,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p8) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s128) = G_PTRTOINT [[COPY]](p8)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_s_p8
+ ; NEW_RBS: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:sgpr(p8) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s128) = G_PTRTOINT [[COPY]](p8)
%0:_(p8) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
%1:_(s128) = G_PTRTOINT %0
...
@@ -254,6 +346,12 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p8) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s128) = G_PTRTOINT [[COPY]](p8)
+ ;
+ ; NEW_RBS-LABEL: name: ptrtoint_v_p8
+ ; NEW_RBS: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+ ; NEW_RBS-NEXT: {{ $}}
+ ; NEW_RBS-NEXT: [[COPY:%[0-9]+]]:vgpr(p8) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; NEW_RBS-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s128) = G_PTRTOINT [[COPY]](p8)
%0:_(p8) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
%1:_(s128) = G_PTRTOINT %0
...
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
0798b87
to
3fa8d24
Compare
6748dc9
to
3a47927
Compare
No description provided.