https://github.com/Pierre-vh created https://github.com/llvm/llvm-project/pull/142603
Test P0 through P6 + P8 for both S/VGPRs. >From 6748dc972c09a7070118ce0aefa9677b3d7aa488 Mon Sep 17 00:00:00 2001 From: pvanhout <pierre.vanhoutr...@amd.com> Date: Tue, 3 Jun 2025 15:03:01 +0200 Subject: [PATCH] [AMDGPU] Improve test coverage for G_INTTOPTR and G_PTRTOINT Test P0 through P6 + P8 for both S/VGPRs. --- .../GlobalISel/regbankselect-inttoptr.mir | 236 +++++++++++++++++- .../GlobalISel/regbankselect-ptrtoint.mir | 232 ++++++++++++++++- 2 files changed, 458 insertions(+), 10 deletions(-) diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-inttoptr.mir b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-inttoptr.mir index 053aede615f86..42600d7d0dd7a 100644 --- a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-inttoptr.mir +++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-inttoptr.mir @@ -3,29 +3,29 @@ # RUN: llc -mtriple=amdgcn -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s --- -name: inttoptr_s +name: inttoptr_s_p0 legalized: true body: | bb.0: liveins: $sgpr0_sgpr1 - ; CHECK-LABEL: name: inttoptr_s + ; CHECK-LABEL: name: inttoptr_s_p0 ; CHECK: liveins: $sgpr0_sgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 - ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p4) = G_INTTOPTR [[COPY]](s64) + ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p0) = G_INTTOPTR [[COPY]](s64) %0:_(s64) = COPY $sgpr0_sgpr1 - %1:_(p4) = G_INTTOPTR %0 + %1:_(p0) = G_INTTOPTR %0 ... --- -name: inttoptr_v +name: inttoptr_v_p0 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1 - ; CHECK-LABEL: name: inttoptr_v + ; CHECK-LABEL: name: inttoptr_v_p0 ; CHECK: liveins: $vgpr0_vgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1 @@ -33,3 +33,227 @@ body: | %0:_(s64) = COPY $vgpr0_vgpr1 %1:_(p0) = G_INTTOPTR %0 ... + +--- +name: inttoptr_s_p1 +legalized: true + +body: | + bb.0: + liveins: $sgpr0_sgpr1 + ; CHECK-LABEL: name: inttoptr_s_p1 + ; CHECK: liveins: $sgpr0_sgpr1 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 + ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p1) = G_INTTOPTR [[COPY]](s64) + %0:_(s64) = COPY $sgpr0_sgpr1 + %1:_(p1) = G_INTTOPTR %0 +... + +--- +name: inttoptr_v_p1 +legalized: true + +body: | + bb.0: + liveins: $vgpr0_vgpr1 + ; CHECK-LABEL: name: inttoptr_v_p1 + ; CHECK: liveins: $vgpr0_vgpr1 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1 + ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p1) = G_INTTOPTR [[COPY]](s64) + %0:_(s64) = COPY $vgpr0_vgpr1 + %1:_(p1) = G_INTTOPTR %0 +... + +--- +name: inttoptr_s_p2 +legalized: true + +body: | + bb.0: + liveins: $sgpr0 + ; CHECK-LABEL: name: inttoptr_s_p2 + ; CHECK: liveins: $sgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 + ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p2) = G_INTTOPTR [[COPY]](s32) + %0:_(s32) = COPY $sgpr0 + %1:_(p2) = G_INTTOPTR %0 +... + +--- +name: inttoptr_v_p2 +legalized: true + +body: | + bb.0: + liveins: $vgpr0 + ; CHECK-LABEL: name: inttoptr_v_p2 + ; CHECK: liveins: $vgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 + ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p2) = G_INTTOPTR [[COPY]](s32) + %0:_(s32) = COPY $vgpr0 + %1:_(p2) = G_INTTOPTR %0 +... + +--- +name: inttoptr_s_p3 +legalized: true + +body: | + bb.0: + liveins: $sgpr0 + ; CHECK-LABEL: name: inttoptr_s_p3 + ; CHECK: liveins: $sgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 + ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p3) = G_INTTOPTR [[COPY]](s32) + %0:_(s32) = COPY $sgpr0 + %1:_(p3) = G_INTTOPTR %0 +... + +--- +name: inttoptr_v_p3 +legalized: true + +body: | + bb.0: + liveins: $vgpr0 + ; CHECK-LABEL: name: inttoptr_v_p3 + ; CHECK: liveins: $vgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 + ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p3) = G_INTTOPTR [[COPY]](s32) + %0:_(s32) = COPY $vgpr0 + %1:_(p3) = G_INTTOPTR %0 +... + +--- +name: inttoptr_s_p4 +legalized: true + +body: | + bb.0: + liveins: $sgpr0_sgpr1 + ; CHECK-LABEL: name: inttoptr_s_p4 + ; CHECK: liveins: $sgpr0_sgpr1 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 + ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p4) = G_INTTOPTR [[COPY]](s64) + %0:_(s64) = COPY $sgpr0_sgpr1 + %1:_(p4) = G_INTTOPTR %0 +... + +--- +name: inttoptr_v_p4 +legalized: true + +body: | + bb.0: + liveins: $vgpr0_vgpr1 + ; CHECK-LABEL: name: inttoptr_v_p4 + ; CHECK: liveins: $vgpr0_vgpr1 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1 + ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p4) = G_INTTOPTR [[COPY]](s64) + %0:_(s64) = COPY $vgpr0_vgpr1 + %1:_(p4) = G_INTTOPTR %0 +... + +--- +name: inttoptr_s_p5 +legalized: true + +body: | + bb.0: + liveins: $sgpr0 + ; CHECK-LABEL: name: inttoptr_s_p5 + ; CHECK: liveins: $sgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 + ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p5) = G_INTTOPTR [[COPY]](s32) + %0:_(s32) = COPY $sgpr0 + %1:_(p5) = G_INTTOPTR %0 +... + +--- +name: inttoptr_v_p5 +legalized: true + +body: | + bb.0: + liveins: $vgpr0 + ; CHECK-LABEL: name: inttoptr_v_p5 + ; CHECK: liveins: $vgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 + ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p5) = G_INTTOPTR [[COPY]](s32) + %0:_(s32) = COPY $vgpr0 + %1:_(p5) = G_INTTOPTR %0 +... + +--- +name: inttoptr_s_p6 +legalized: true + +body: | + bb.0: + liveins: $sgpr0 + ; CHECK-LABEL: name: inttoptr_s_p6 + ; CHECK: liveins: $sgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 + ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:sgpr(p6) = G_INTTOPTR [[COPY]](s32) + %0:_(s32) = COPY $sgpr0 + %1:_(p6) = G_INTTOPTR %0 +... + +--- +name: inttoptr_v_p6 +legalized: true + +body: | + bb.0: + liveins: $vgpr0 + ; CHECK-LABEL: name: inttoptr_v_p6 + ; CHECK: liveins: $vgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 + ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:vgpr(p6) = G_INTTOPTR [[COPY]](s32) + %0:_(s32) = COPY $vgpr0 + %1:_(p6) = G_INTTOPTR %0 +... + +--- +name: inttoptr_s_p8 +legalized: true + +body: | + bb.0: + liveins: $sgpr0_sgpr1_sgpr2_sgpr3 + ; CHECK-LABEL: name: inttoptr_s_p8 + ; CHECK: liveins: $sgpr0_sgpr1_sgpr2_sgpr3 + ; 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) + %0:_(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3 + %1:_(p8) = G_INTTOPTR %0 +... + +--- +name: inttoptr_v_p8 +legalized: true + +body: | + bb.0: + liveins: $vgpr0_vgpr1_vgpr2_vgpr3 + ; CHECK-LABEL: name: inttoptr_v_p8 + ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 + ; 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) + %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 2db1a5b1d2ba2..9240c9f6df404 100644 --- a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-ptrtoint.mir +++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-ptrtoint.mir @@ -3,13 +3,45 @@ # RUN: llc -mtriple=amdgcn -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s --- -name: ptrtoint_s +name: ptrtoint_s_p0 legalized: true body: | bb.0: liveins: $sgpr0_sgpr1 - ; CHECK-LABEL: name: ptrtoint_s + ; CHECK-LABEL: name: ptrtoint_s_p0 + ; CHECK: liveins: $sgpr0_sgpr1 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p0) = COPY $sgpr0_sgpr1 + ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p0) + %0:_(p0) = COPY $sgpr0_sgpr1 + %1:_(s64) = G_PTRTOINT %0 +... + +--- +name: ptrtoint_v_p0 +legalized: true + +body: | + bb.0: + liveins: $vgpr0_vgpr1 + ; CHECK-LABEL: name: ptrtoint_v_p0 + ; CHECK: liveins: $vgpr0_vgpr1 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1 + ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p0) + %0:_(p0) = COPY $vgpr0_vgpr1 + %1:_(s64) = G_PTRTOINT %0 +... + +--- +name: ptrtoint_s_p1 +legalized: true + +body: | + bb.0: + liveins: $sgpr0_sgpr1 + ; CHECK-LABEL: name: ptrtoint_s_p1 ; CHECK: liveins: $sgpr0_sgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 @@ -19,13 +51,13 @@ body: | ... --- -name: ptrtoint_v +name: ptrtoint_v_p1 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1 - ; CHECK-LABEL: name: ptrtoint_v + ; CHECK-LABEL: name: ptrtoint_v_p1 ; CHECK: liveins: $vgpr0_vgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 @@ -33,3 +65,195 @@ body: | %0:_(p1) = COPY $vgpr0_vgpr1 %1:_(s64) = G_PTRTOINT %0 ... + +--- +name: ptrtoint_s_p2 +legalized: true + +body: | + bb.0: + liveins: $sgpr0 + ; CHECK-LABEL: name: ptrtoint_s_p2 + ; CHECK: liveins: $sgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p2) = COPY $sgpr0 + ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p2) + %0:_(p2) = COPY $sgpr0 + %1:_(s32) = G_PTRTOINT %0 +... + +--- +name: ptrtoint_v_p2 +legalized: true + +body: | + bb.0: + liveins: $vgpr0 + ; CHECK-LABEL: name: ptrtoint_v_p2 + ; CHECK: liveins: $vgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p2) = COPY $vgpr0 + ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p2) + %0:_(p2) = COPY $vgpr0 + %1:_(s32) = G_PTRTOINT %0 +... + +--- +name: ptrtoint_s_p3 +legalized: true + +body: | + bb.0: + liveins: $sgpr0 + ; CHECK-LABEL: name: ptrtoint_s_p3 + ; CHECK: liveins: $sgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p3) = COPY $sgpr0 + ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p3) + %0:_(p3) = COPY $sgpr0 + %1:_(s32) = G_PTRTOINT %0 +... + +--- +name: ptrtoint_v_p3 +legalized: true + +body: | + bb.0: + liveins: $vgpr0 + ; CHECK-LABEL: name: ptrtoint_v_p3 + ; CHECK: liveins: $vgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 + ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p3) + %0:_(p3) = COPY $vgpr0 + %1:_(s32) = G_PTRTOINT %0 +... + +--- +name: ptrtoint_s_p4 +legalized: true + +body: | + bb.0: + liveins: $sgpr0_sgpr1 + ; CHECK-LABEL: name: ptrtoint_s_p4 + ; CHECK: liveins: $sgpr0_sgpr1 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 + ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s64) = G_PTRTOINT [[COPY]](p4) + %0:_(p4) = COPY $sgpr0_sgpr1 + %1:_(s64) = G_PTRTOINT %0 +... + +--- +name: ptrtoint_v_p4 +legalized: true + +body: | + bb.0: + liveins: $vgpr0_vgpr1 + ; CHECK-LABEL: name: ptrtoint_v_p4 + ; CHECK: liveins: $vgpr0_vgpr1 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p4) = COPY $vgpr0_vgpr1 + ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s64) = G_PTRTOINT [[COPY]](p4) + %0:_(p4) = COPY $vgpr0_vgpr1 + %1:_(s64) = G_PTRTOINT %0 +... + +--- +name: ptrtoint_s_p5 +legalized: true + +body: | + bb.0: + liveins: $sgpr0 + ; CHECK-LABEL: name: ptrtoint_s_p5 + ; CHECK: liveins: $sgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sgpr0 + ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p5) + %0:_(p5) = COPY $sgpr0 + %1:_(s32) = G_PTRTOINT %0 +... + +--- +name: ptrtoint_v_p5 +legalized: true + +body: | + bb.0: + liveins: $vgpr0 + ; CHECK-LABEL: name: ptrtoint_v_p5 + ; CHECK: liveins: $vgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0 + ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p5) + %0:_(p5) = COPY $vgpr0 + %1:_(s32) = G_PTRTOINT %0 +... + +--- +name: ptrtoint_s_p6 +legalized: true + +body: | + bb.0: + liveins: $sgpr0 + ; CHECK-LABEL: name: ptrtoint_s_p6 + ; CHECK: liveins: $sgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p6) = COPY $sgpr0 + ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:sgpr(s32) = G_PTRTOINT [[COPY]](p6) + %0:_(p6) = COPY $sgpr0 + %1:_(s32) = G_PTRTOINT %0 +... + +--- +name: ptrtoint_v_p6 +legalized: true + +body: | + bb.0: + liveins: $vgpr0 + ; CHECK-LABEL: name: ptrtoint_v_p6 + ; CHECK: liveins: $vgpr0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p6) = COPY $vgpr0 + ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:vgpr(s32) = G_PTRTOINT [[COPY]](p6) + %0:_(p6) = COPY $vgpr0 + %1:_(s32) = G_PTRTOINT %0 +... + +--- +name: ptrtoint_s_p8 +legalized: true + +body: | + bb.0: + liveins: $sgpr0_sgpr1_sgpr2_sgpr3 + ; CHECK-LABEL: name: ptrtoint_s_p8 + ; CHECK: liveins: $sgpr0_sgpr1_sgpr2_sgpr3 + ; 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) + %0:_(p8) = COPY $sgpr0_sgpr1_sgpr2_sgpr3 + %1:_(s128) = G_PTRTOINT %0 +... + +--- +name: ptrtoint_v_p8 +legalized: true + +body: | + bb.0: + liveins: $vgpr0_vgpr1_vgpr2_vgpr3 + ; CHECK-LABEL: name: ptrtoint_v_p8 + ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 + ; 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) + %0:_(p8) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 + %1:_(s128) = G_PTRTOINT %0 +... _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits