[llvm] 8b9ae65 - Revert "[AMDGPU] Extend test coverage for cross RC register coalescing (#132137)"
Jeffrey Byrnes via llvm-commits
llvm-commits at lists.llvm.org
Mon May 5 16:34:25 PDT 2025
Author: Jeffrey Byrnes
Date: 2025-05-05T16:33:18-07:00
New Revision: 8b9ae65d51a14cac5a312bb19cb4757a88fc240b
URL: https://github.com/llvm/llvm-project/commit/8b9ae65d51a14cac5a312bb19cb4757a88fc240b
DIFF: https://github.com/llvm/llvm-project/commit/8b9ae65d51a14cac5a312bb19cb4757a88fc240b.diff
LOG: Revert "[AMDGPU] Extend test coverage for cross RC register coalescing (#132137)"
This reverts commit 0bd065dc943ff65e0749a9f2a7b7a672acd45193.
Added:
Modified:
llvm/lib/Target/AMDGPU/GCNIterativeScheduler.cpp
llvm/test/CodeGen/AMDGPU/coalesce-copy-to-agpr-to-av-registers.mir
Removed:
################################################################################
diff --git a/llvm/lib/Target/AMDGPU/GCNIterativeScheduler.cpp b/llvm/lib/Target/AMDGPU/GCNIterativeScheduler.cpp
index ac9d6cfa5fb73..19cdfc01c02c4 100644
--- a/llvm/lib/Target/AMDGPU/GCNIterativeScheduler.cpp
+++ b/llvm/lib/Target/AMDGPU/GCNIterativeScheduler.cpp
@@ -216,7 +216,6 @@ class GCNIterativeScheduler::OverrideLegacyStrategy {
assert(Sch.RegionBegin == Rgn.Begin && Sch.RegionEnd == Rgn.End);
// DAG SUnits are stored using original region's order
// so just use SUnits as the restoring schedule
- errs() << "restore order\n";
Sch.scheduleRegion(Rgn, Sch.SUnits, SaveMaxRP);
}
};
@@ -375,10 +374,6 @@ void GCNIterativeScheduler::scheduleRegion(Region &R, Range &&Schedule,
const GCNRegPressure &MaxRP) {
assert(RegionBegin == R.Begin && RegionEnd == R.End);
assert(LIS != nullptr);
- errs() << "Scheedule region R: ";
- for (auto I = R.Begin; I != R.End; I++) {
- I->dump();
- }
#ifndef NDEBUG
const auto SchedMaxRP = getSchedulePressure(R, Schedule);
#endif
diff --git a/llvm/test/CodeGen/AMDGPU/coalesce-copy-to-agpr-to-av-registers.mir b/llvm/test/CodeGen/AMDGPU/coalesce-copy-to-agpr-to-av-registers.mir
index e09e3511e31f3..8ea5c3ea73e77 100644
--- a/llvm/test/CodeGen/AMDGPU/coalesce-copy-to-agpr-to-av-registers.mir
+++ b/llvm/test/CodeGen/AMDGPU/coalesce-copy-to-agpr-to-av-registers.mir
@@ -4,6 +4,7 @@
# Test coalescing situations which can use av_* registers to handle
# copies between VGPRs and AGPRs.
+
# Should coalesce %0 and %1 into subregisters of the av_64 common
# class
---
@@ -516,2261 +517,3 @@ body: |
SI_RETURN
...
-
-
-
-# Should coalesce %0 and %1 into subregisters of the av_64 common
-# class
----
-name: copy_vgpr32_to_areg64_coalesce_with_av64_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_sub
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64 = COPY $vgpr1
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]].sub1
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3473417 /* reguse:AReg_64 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- %0.sub1:vreg_64 = COPY $vgpr1
- undef %2.sub0:areg_64 = COPY %0.sub0
- %2.sub1:areg_64 = COPY %0.sub1
- INLINEASM &"; use $0", 0 /* attdialect */, 3473417 /* reguse:AReg_64 */, killed %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_sub
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64 = COPY $vgpr1
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub1
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- %0.sub1:vreg_64 = COPY $vgpr1
- undef %2.sub0:areg_64_align2 = COPY %0.sub0
- %2.sub1:areg_64_align2 = COPY %0.sub1
- INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_sub
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96 = COPY $vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]].sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub2
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 =COPY $vgpr0
- %0.sub1:vreg_96 = COPY $vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %3.sub0:areg_96 = COPY %0.sub0
- %3.sub1:areg_96 = COPY %0.sub1
- %3.sub2:areg_96 = COPY %0.sub2
- INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_sub
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96 = COPY $vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]].sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub2
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 4915209 /* reguse:AReg_96_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 =COPY $vgpr0
- %0.sub1:vreg_96 = COPY $vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %3.sub0:areg_96_align2 = COPY %0.sub0
- %3.sub1:areg_96_align2 = COPY %0.sub1
- %3.sub2:areg_96_align2 = COPY %0.sub2
- INLINEASM &"; use $0", 0 /* attdialect */, 4915209 /* reguse:AReg_96_Align2 */, %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_to_areg64_coalesce_with_av128_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_sub
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128 = COPY $vgpr2_vgpr3
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128 = COPY [[COPY]].sub2_sub3
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 6029321 /* reguse:AReg_128 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_128 =COPY $vgpr0_vgpr1
- %0.sub2_sub3:vreg_128 = COPY $vgpr2_vgpr3
- undef %2.sub0_sub1:areg_128 = COPY %0.sub0_sub1
- %2.sub2_sub3:areg_128 = COPY %0.sub2_sub3
- INLINEASM &"; use $0", 0 /* attdialect */, 6029321 /* reguse:AReg_128 */, killed %2
- SI_RETURN
-
-...
-
-
-
----
-name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_sub
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_128 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_128 = COPY $vgpr2_vgpr3
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128_align2 = COPY [[COPY]].sub1
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 6291465 /* reguse:AReg_128_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_128 =COPY $vgpr0_vgpr1
- %0.sub1:vreg_128 = COPY $vgpr2_vgpr3
- undef %2.sub0_sub1:areg_128_align2 = COPY %0.sub0
- %2.sub2_sub3:areg_128_align2 = COPY %0.sub1
- INLINEASM &"; use $0", 0 /* attdialect */, 6291465 /* reguse:AReg_128_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_sgpr32_to_areg64_align2_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $sgpr8, $sgpr9
-
- ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_sub
- ; CHECK: liveins: $sgpr8, $sgpr9
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:sreg_64 = COPY $sgpr8
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:sreg_64 = COPY $sgpr9
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub1
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:sreg_64 = COPY $sgpr8
- %0.sub1:sreg_64 = COPY $sgpr9
- undef %2.sub0:areg_64_align2 = COPY %0.sub0
- %2.sub1:areg_64_align2 = COPY %0.sub1
- INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_sub
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY]].sub1_sub2
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 =COPY $vgpr0
- %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- undef %2.sub0:areg_96 = COPY %0.sub0
- %2.sub1_sub2:areg_96 = COPY %0.sub1_sub2
- INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_sub
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96_align2 = COPY [[COPY]].sub1_sub2
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 =COPY $vgpr0
- %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- undef %2.sub0:areg_96_align2 = COPY %0.sub0
- %2.sub1_sub2:areg_96_align2 = COPY %0.sub1_sub2
- INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_sub
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub2
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %2.sub0_sub1:areg_96 = COPY %0.sub0_sub1
- %2.sub2:areg_96 = COPY %0.sub2
- INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_sub
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub2
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %2.sub0_sub1:areg_96_align2 = COPY %0.sub0_sub1
- %2.sub2:areg_96_align2 = COPY %0.sub2
- INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x2_to_areg64_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x2_to_areg64_sub
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]].sub0
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3473417 /* reguse:AReg_64 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- undef %2.sub0:areg_64 = COPY %0.sub0
- %2.sub1:areg_64 = COPY %0.sub0
- INLINEASM &"; use $0", 0 /* attdialect */, 3473417 /* reguse:AReg_64 */, killed %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x3_to_areg96_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96_sub
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- undef %1.sub0:areg_96 = COPY %0.sub0
- %1.sub1:areg_96 = COPY %0.sub0
- %1.sub2:areg_96 = COPY %0.sub0
- INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, %1
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x3_to_areg96_align2_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96_align2_sub
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 4915209 /* reguse:AReg_96_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- undef %1.sub0:areg_96_align2 = COPY %0.sub0
- %1.sub1:areg_96_align2 = COPY %0.sub0
- INLINEASM &"; use $0", 0 /* attdialect */, 4915209 /* reguse:AReg_96_Align2 */, %1
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x4_to_areg128_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128_sub
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128 = COPY [[COPY]].sub0
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 6029321 /* reguse:AReg_128 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- undef %1.sub0:areg_128 = COPY %0.sub0
- %1.sub1:areg_128 = COPY %0.sub0
- %1.sub2:areg_128 = COPY %0.sub0
- %1.sub3:areg_128 = COPY %0.sub0
- INLINEASM &"; use $0", 0 /* attdialect */, 6029321 /* reguse:AReg_128 */, killed %1
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x4_to_areg128_align2_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128_align2_sub
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 6291465 /* reguse:AReg_128_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- undef %1.sub0:areg_128_align2 = COPY %0.sub0
- %1.sub1:areg_128_align2 = COPY %0.sub0
- %1.sub2:areg_128_align2 = COPY %0.sub0
- %1.sub3:areg_128_align2 = COPY %0.sub0
- INLINEASM &"; use $0", 0 /* attdialect */, 6291465 /* reguse:AReg_128_Align2 */, %1
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg64_coalesce_with_av64_both_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_both_sub
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64 = COPY $vgpr1
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]].sub1
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3473417 /* reguse:AReg_64 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- %0.sub1:vreg_64 = COPY $vgpr1
- undef %2.sub0:areg_64 = COPY %0.sub0
- %2.sub1:areg_64 = COPY %0.sub1
- INLINEASM &"; use $0", 0 /* attdialect */, 3473417 /* reguse:AReg_64 */, killed %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_both_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_both_sub
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64_align2 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64_align2 = COPY $vgpr1
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub1
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64_align2 = COPY $vgpr0
- %0.sub1:vreg_64_align2 = COPY $vgpr1
- undef %2.sub0:areg_64_align2 = COPY %0.sub0
- %2.sub1:areg_64_align2 = COPY %0.sub1
- INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_both_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_both_sub
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96 = COPY $vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]].sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub2
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 = COPY $vgpr0
- %0.sub1:vreg_96 = COPY $vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %3.sub0:areg_96 = COPY %0.sub0
- %3.sub1:areg_96 = COPY %0.sub1
- %3.sub2:areg_96 = COPY %0.sub2
- INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96_align2 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96_align2 = COPY $vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96_align2 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]].sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub2
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 4915209 /* reguse:AReg_96_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96_align2 = COPY $vgpr0
- %0.sub1:vreg_96_align2 = COPY $vgpr1
- %0.sub2:vreg_96_align2 = COPY $vgpr2
- undef %3.sub0:areg_96_align2 = COPY %0.sub0
- %3.sub1:areg_96_align2 = COPY %0.sub1
- %3.sub2:areg_96_align2 = COPY %0.sub2
- INLINEASM &"; use $0", 0 /* attdialect */, 4915209 /* reguse:AReg_96_Align2 */, %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_to_areg64_coalesce_with_av128_both_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_both_sub
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128 = COPY $vgpr2_vgpr3
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128 = COPY [[COPY]].sub2_sub3
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 6029321 /* reguse:AReg_128 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_128 = COPY $vgpr0_vgpr1
- %0.sub2_sub3:vreg_128 = COPY $vgpr2_vgpr3
- undef %2.sub0_sub1:areg_128 = COPY %0.sub0_sub1
- %2.sub2_sub3:areg_128 = COPY %0.sub2_sub3
- INLINEASM &"; use $0", 0 /* attdialect */, 6029321 /* reguse:AReg_128 */, killed %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_both_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_both_sub
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128_align2 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128_align2 = COPY $vgpr2_vgpr3
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128_align2 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128_align2 = COPY [[COPY]].sub2_sub3
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 6291465 /* reguse:AReg_128_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_128_align2 = COPY $vgpr0_vgpr1
- %0.sub2_sub3:vreg_128_align2 = COPY $vgpr2_vgpr3
- undef %2.sub0_sub1:areg_128_align2 = COPY %0.sub0_sub1
- %2.sub2_sub3:areg_128_align2 = COPY %0.sub2_sub3
- INLINEASM &"; use $0", 0 /* attdialect */, 6291465 /* reguse:AReg_128_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_sgpr32_to_areg64_align2_both_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $sgpr8, $sgpr9
-
- ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_both_sub
- ; CHECK: liveins: $sgpr8, $sgpr9
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:sreg_64 = COPY $sgpr8
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:sreg_64 = COPY $sgpr9
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub1
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:sreg_64 = COPY $sgpr8
- %0.sub1:sreg_64 = COPY $sgpr9
- undef %2.sub0:areg_64_align2 = COPY %0.sub0
- %2.sub1:areg_64_align2 = COPY %0.sub1
- INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_both_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_both_sub
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY]].sub1_sub2
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 = COPY $vgpr0
- %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- undef %2.sub0:areg_96 = COPY %0.sub0
- %2.sub1_sub2:areg_96 = COPY %0.sub1_sub2
- INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, %2
- SI_RETURN
-
-...
-
-name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_shuffle_both_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_96 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY1]]
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, [[COPY2]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 = COPY $vgpr0
- %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- undef %2.sub0:areg_96 = COPY %0.sub2
- %2.sub1_sub2:areg_96 = COPY %0.sub0_sub1
- INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, %2
- SI_RETURN
-
-...
-
-
----
-name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_both_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_both_sub
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96_align2 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96_align2 = COPY $vgpr1_vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96_align2 = COPY [[COPY]].sub1_sub2
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96_align2 = COPY $vgpr0
- %0.sub1_sub2:vreg_96_align2 = COPY $vgpr1_vgpr2
- undef %2.sub0:areg_96_align2 = COPY %0.sub0
- %2.sub1_sub2:areg_96_align2 = COPY %0.sub1_sub2
- INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_both_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_both_sub
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub2
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %2.sub0_sub1:areg_96 = COPY %0.sub0_sub1
- %2.sub2:areg_96 = COPY %0.sub2
- INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96_align2 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96_align2 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub2
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_96_align2 = COPY $vgpr0_vgpr1
- %0.sub2:vreg_96_align2 = COPY $vgpr2
- undef %2.sub0_sub1:areg_96_align2 = COPY %0.sub0_sub1
- %2.sub2:areg_96_align2 = COPY %0.sub2
- INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_both_sub
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_both_sub
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub2
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %2.sub0_sub1:areg_96_align2 = COPY %0.sub0_sub1
- %2.sub2:areg_96_align2 = COPY %0.sub2
- INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg64_coalesce_with_av64_whole_reg
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_whole_reg
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_64 = COPY [[COPY]]
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3473417 /* reguse:AReg_64 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_64 = COPY $vgpr0_vgpr1
- %2:areg_64 = COPY %0
- INLINEASM &"; use $0", 0 /* attdialect */, 3473417 /* reguse:AReg_64 */, killed %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_whole_reg
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_whole_reg
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_64_align2 = COPY [[COPY]]
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_64_align2 = COPY $vgpr0_vgpr1
- %2:areg_64_align2 = COPY %0
- INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_whole_reg
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_whole_reg
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_96 = COPY [[COPY]]
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_96 = COPY $vgpr0_vgpr1_vgpr2
- %3:areg_96 = COPY %0
- INLINEASM &"; use $0", 0 /* attdialect */, 4587529 /* reguse:AReg_96 */, %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_whole_reg
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_whole_reg
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_96_align2 = COPY $vgpr0_vgpr1_vgpr2
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_96_align2 = COPY [[COPY]]
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 4915209 /* reguse:AReg_96_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_96_align2 = COPY $vgpr0_vgpr1_vgpr2
- %3:areg_96_align2 = COPY %0
- INLINEASM &"; use $0", 0 /* attdialect */, 4915209 /* reguse:AReg_96_Align2 */, %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_to_areg64_coalesce_with_av128_whole_reg
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_whole_reg
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_128 = COPY [[COPY]]
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 6029321 /* reguse:AReg_128 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
- %2:areg_128 = COPY %0
- INLINEASM &"; use $0", 0 /* attdialect */, 6029321 /* reguse:AReg_128 */, killed %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_whole_reg
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_whole_reg
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_128_align2 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_128_align2 = COPY [[COPY]]
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 6291465 /* reguse:AReg_128_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_128_align2 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
- %2:areg_128_align2 = COPY %0
- INLINEASM &"; use $0", 0 /* attdialect */, 6291465 /* reguse:AReg_128_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_sgpr32_to_areg64_align2_whole_reg
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $sgpr8, $sgpr9
-
- ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_whole_reg
- ; CHECK: liveins: $sgpr8, $sgpr9
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr8_sgpr9
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_64_align2 = COPY [[COPY]]
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:sreg_64 = COPY $sgpr8_sgpr9
- %2:areg_64_align2 = COPY %0
- INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_whole_reg
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_whole_reg
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_96_align2 = COPY [[COPY]]
- ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_96 = COPY $vgpr0_vgpr1_vgpr2
- %2:areg_96_align2 = COPY %0
- INLINEASM &"; use $0", 0 /* attdialect */, 3735561 /* reguse:AReg_64_Align2 */, %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg64_coalesce_with_av64_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_snop
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
- ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_64 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1:areg_64 = COPY [[COPY1]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]
- ; CHECK-NEXT: SI_RETURN
- %0:vgpr_32 = COPY $vgpr0
- %1:vgpr_32 = COPY $vgpr1
- undef %2.sub0:areg_64 = COPY %0
- %2.sub1:areg_64 = COPY %1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_snop
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
- ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY1]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]
- ; CHECK-NEXT: SI_RETURN
- %0:vgpr_32 = COPY $vgpr0
- %1:vgpr_32 = COPY $vgpr1
- undef %2.sub0:areg_64_align2 = COPY %0
- %2.sub1:areg_64_align2 = COPY %1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_snop
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
- ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY3:%[0-9]+]].sub0:areg_96 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY3:%[0-9]+]].sub1:areg_96 = COPY [[COPY1]]
- ; CHECK-NEXT: [[COPY3:%[0-9]+]].sub2:areg_96 = COPY [[COPY2]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY3]]
- ; CHECK-NEXT: SI_RETURN
- %0:vgpr_32 = COPY $vgpr0
- %1:vgpr_32 = COPY $vgpr1
- %2:vgpr_32 = COPY $vgpr2
- undef %3.sub0:areg_96 = COPY %0
- %3.sub1:areg_96 = COPY %1
- %3.sub2:areg_96 = COPY %2
- S_NOP 0, implicit %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_snop
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
- ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY3:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY3:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY1]]
- ; CHECK-NEXT: [[COPY3:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY2]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY3]]
- ; CHECK-NEXT: SI_RETURN
- %0:vgpr_32 = COPY $vgpr0
- %1:vgpr_32 = COPY $vgpr1
- %2:vgpr_32 = COPY $vgpr2
- undef %3.sub0:areg_96_align2 = COPY %0
- %3.sub1:areg_96_align2 = COPY %1
- %3.sub2:areg_96_align2 = COPY %2
- S_NOP 0, implicit %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_to_areg64_coalesce_with_av128_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_snop
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
- ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0_sub1:areg_128 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub2_sub3:areg_128 = COPY [[COPY1]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_64 = COPY $vgpr0_vgpr1
- %1:vreg_64 = COPY $vgpr2_vgpr3
- undef %2.sub0_sub1:areg_128 = COPY %0
- %2.sub2_sub3:areg_128 = COPY %1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_snop
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
- ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0_sub1:areg_128_align2 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub2_sub3:areg_128_align2 = COPY [[COPY1]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_64 = COPY $vgpr0_vgpr1
- %1:vreg_64 = COPY $vgpr2_vgpr3
- undef %2.sub0_sub1:areg_128_align2 = COPY %0
- %2.sub2_sub3:areg_128_align2 = COPY %1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_sgpr32_to_areg64_align2_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $sgpr8, $sgpr9
-
- ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_snop
- ; CHECK: liveins: $sgpr8, $sgpr9
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr8
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr9
- ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY1]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]
- ; CHECK-NEXT: SI_RETURN
- %0:sgpr_32 = COPY $sgpr8
- %1:sgpr_32 = COPY $sgpr9
- undef %2.sub0:areg_64_align2 = COPY %0
- %2.sub1:areg_64_align2 = COPY %1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_snop
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr2
- ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_96 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY1]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]
- ; CHECK-NEXT: SI_RETURN
- %0:vgpr_32 = COPY $vgpr0
- %1:vreg_64 = COPY $vgpr1_vgpr2
- undef %2.sub0:areg_96 = COPY %0
- %2.sub1_sub2:areg_96 = COPY %1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_snop
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr2
- ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1_sub2:areg_96_align2 = COPY [[COPY1]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]
- ; CHECK-NEXT: SI_RETURN
- %0:vgpr_32 = COPY $vgpr0
- %1:vreg_64 = COPY $vgpr1_vgpr2
- undef %2.sub0:areg_96_align2 = COPY %0
- %2.sub1_sub2:areg_96_align2 = COPY %1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_snop
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0_sub1:areg_96 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub2:areg_96 = COPY [[COPY1]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_64 = COPY $vgpr0_vgpr1
- %1:vgpr_32 = COPY $vgpr2
- undef %2.sub0_sub1:areg_96 = COPY %0
- %2.sub2:areg_96 = COPY %1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_snop
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY1]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_64 = COPY $vgpr0_vgpr1
- %1:vgpr_32 = COPY $vgpr2
- undef %2.sub0_sub1:areg_96_align2 = COPY %0
- %2.sub2:areg_96_align2 = COPY %1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x2_to_areg64_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x2_to_areg64_snop
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vgpr_32 = COPY $vgpr0
- undef %2.sub0:areg_64 = COPY %0
- %2.sub1:areg_64 = COPY %0
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x2_to_areg64_coalesce_with_av64_align2_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_x2_to_areg64_coalesce_with_av64_align2_snop
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
- ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY1]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]
- ; CHECK-NEXT: SI_RETURN
- %0:vgpr_32 = COPY $vgpr0
- %1:vgpr_32 = COPY $vgpr1
- undef %2.sub0:areg_64_align2 = COPY %0
- %2.sub1:areg_64_align2 = COPY %1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x3_to_areg96_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96_snop
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vgpr_32 = COPY $vgpr0
- undef %1.sub0:areg_96 = COPY %0
- %1.sub1:areg_96 = COPY %0
- S_NOP 0, implicit %1
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x3_to_areg96_align2_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96_align2_snop
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vgpr_32 = COPY $vgpr0
- undef %1.sub0:areg_96_align2 = COPY %0
- %1.sub1:areg_96_align2 = COPY %0
- S_NOP 0, implicit %1
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x4_to_areg128_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128_snop
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128 = COPY [[COPY]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vgpr_32 = COPY $vgpr0
- undef %1.sub0:areg_128 = COPY %0
- %1.sub1:areg_128 = COPY %0
- %1.sub2:areg_128 = COPY %0
- %1.sub3:areg_128 = COPY %0
- S_NOP 0, implicit %1
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x4_to_areg128_align2_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128_align2_snop
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128_align2 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128_align2 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128_align2 = COPY [[COPY]]
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128_align2 = COPY [[COPY]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vgpr_32 = COPY $vgpr0
- undef %1.sub0:areg_128_align2 = COPY %0
- %1.sub1:areg_128_align2 = COPY %0
- %1.sub2:areg_128_align2 = COPY %0
- %1.sub3:areg_128_align2 = COPY %0
- S_NOP 0, implicit %1
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg64_coalesce_with_av64_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64 = COPY $vgpr1
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]].sub1
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- %0.sub1:vreg_64 = COPY $vgpr1
- undef %2.sub0:areg_64 = COPY %0.sub0
- %2.sub1:areg_64 = COPY %0.sub1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64 = COPY $vgpr1
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub1
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- %0.sub1:vreg_64 = COPY $vgpr1
- undef %2.sub0:areg_64_align2 = COPY %0.sub0
- %2.sub1:areg_64_align2 = COPY %0.sub1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96 = COPY $vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]].sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub2
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 =COPY $vgpr0
- %0.sub1:vreg_96 = COPY $vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %3.sub0:areg_96 = COPY %0.sub0
- %3.sub1:areg_96 = COPY %0.sub1
- %3.sub2:areg_96 = COPY %0.sub2
- S_NOP 0, implicit %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96 = COPY $vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]].sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub2
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 =COPY $vgpr0
- %0.sub1:vreg_96 = COPY $vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %3.sub0:areg_96_align2 = COPY %0.sub0
- %3.sub1:areg_96_align2 = COPY %0.sub1
- %3.sub2:areg_96_align2 = COPY %0.sub2
- S_NOP 0, implicit %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_to_areg64_coalesce_with_av128_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_sub_snop
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128 = COPY $vgpr2_vgpr3
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128 = COPY [[COPY]].sub2_sub3
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_128 =COPY $vgpr0_vgpr1
- %0.sub2_sub3:vreg_128 = COPY $vgpr2_vgpr3
- undef %2.sub0_sub1:areg_128 = COPY %0.sub0_sub1
- %2.sub2_sub3:areg_128 = COPY %0.sub2_sub3
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
-
-
----
-name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_sub_snop
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128 = COPY $vgpr2_vgpr3
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128_align2 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128_align2 = COPY [[COPY]].sub2_sub3
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_128 =COPY $vgpr0_vgpr1
- %0.sub2_sub3:vreg_128 = COPY $vgpr2_vgpr3
- undef %2.sub0_sub1:areg_128_align2 = COPY %0.sub0_sub1
- %2.sub2_sub3:areg_128_align2 = COPY %0.sub2_sub3
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_sgpr32_to_areg64_align2_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $sgpr8, $sgpr9
-
- ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_sub_snop
- ; CHECK: liveins: $sgpr8, $sgpr9
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:sreg_64 = COPY $sgpr8
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:sreg_64 = COPY $sgpr9
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub1
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:sreg_64 = COPY $sgpr8
- %0.sub1:sreg_64 = COPY $sgpr9
- undef %2.sub0:areg_64_align2 = COPY %0.sub0
- %2.sub1:areg_64_align2 = COPY %0.sub1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY]].sub1_sub2
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 =COPY $vgpr0
- %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- undef %2.sub0:areg_96 = COPY %0.sub0
- %2.sub1_sub2:areg_96 = COPY %0.sub1_sub2
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96_align2 = COPY [[COPY]].sub1_sub2
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 =COPY $vgpr0
- %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- undef %2.sub0:areg_96_align2 = COPY %0.sub0
- %2.sub1_sub2:areg_96_align2 = COPY %0.sub1_sub2
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_sub_snop
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub2
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %2.sub0_sub1:areg_96 = COPY %0.sub0_sub1
- %2.sub2:areg_96 = COPY %0.sub2
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub2
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %2.sub0_sub1:areg_96_align2 = COPY %0.sub0_sub1
- %2.sub2:areg_96_align2 = COPY %0.sub2
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x2_to_areg64_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x2_to_areg64_sub_snop
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]].sub0
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- undef %2.sub0:areg_64 = COPY %0.sub0
- %2.sub1:areg_64 = COPY %0.sub0
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x3_to_areg96_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96_sub_snop
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- undef %1.sub0:areg_96 = COPY %0.sub0
- %1.sub1:areg_96 = COPY %0.sub0
- %1.sub2:areg_96 = COPY %0.sub0
- S_NOP 0, implicit %1
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x3_to_areg96_align2_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96_align2_sub_snop
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- undef %1.sub0:areg_96_align2 = COPY %0.sub0
- %1.sub1:areg_96_align2 = COPY %0.sub0
- S_NOP 0, implicit %1
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x4_to_areg128_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128_sub_snop
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128 = COPY [[COPY]].sub0
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- undef %1.sub0:areg_128 = COPY %0.sub0
- %1.sub1:areg_128 = COPY %0.sub0
- %1.sub2:areg_128 = COPY %0.sub0
- %1.sub3:areg_128 = COPY %0.sub0
- S_NOP 0, implicit %1
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_x4_to_areg128_align2_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0
-
- ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128_align2_sub_snop
- ; CHECK: liveins: $vgpr0
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- undef %1.sub0:areg_128_align2 = COPY %0.sub0
- %1.sub1:areg_128_align2 = COPY %0.sub0
- %1.sub2:areg_128_align2 = COPY %0.sub0
- %1.sub3:areg_128_align2 = COPY %0.sub0
- S_NOP 0, implicit %1
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg64_coalesce_with_av64_both_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_both_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64 = COPY $vgpr1
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]].sub1
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64 = COPY $vgpr0
- %0.sub1:vreg_64 = COPY $vgpr1
- undef %2.sub0:areg_64 = COPY %0.sub0
- %2.sub1:areg_64 = COPY %0.sub1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_both_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_both_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64_align2 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64_align2 = COPY $vgpr1
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub1
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_64_align2 = COPY $vgpr0
- %0.sub1:vreg_64_align2 = COPY $vgpr1
- undef %2.sub0:areg_64_align2 = COPY %0.sub0
- %2.sub1:areg_64_align2 = COPY %0.sub1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_both_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_both_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96 = COPY $vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]].sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub2
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 = COPY $vgpr0
- %0.sub1:vreg_96 = COPY $vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %3.sub0:areg_96 = COPY %0.sub0
- %3.sub1:areg_96 = COPY %0.sub1
- %3.sub2:areg_96 = COPY %0.sub2
- S_NOP 0, implicit %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96_align2 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96_align2 = COPY $vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96_align2 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]].sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub2
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96_align2 = COPY $vgpr0
- %0.sub1:vreg_96_align2 = COPY $vgpr1
- %0.sub2:vreg_96_align2 = COPY $vgpr2
- undef %3.sub0:areg_96_align2 = COPY %0.sub0
- %3.sub1:areg_96_align2 = COPY %0.sub1
- %3.sub2:areg_96_align2 = COPY %0.sub2
- S_NOP 0, implicit %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_to_areg64_coalesce_with_av128_both_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_both_sub_snop
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128 = COPY $vgpr2_vgpr3
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128 = COPY [[COPY]].sub2_sub3
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_128 = COPY $vgpr0_vgpr1
- %0.sub2_sub3:vreg_128 = COPY $vgpr2_vgpr3
- undef %2.sub0_sub1:areg_128 = COPY %0.sub0_sub1
- %2.sub2_sub3:areg_128 = COPY %0.sub2_sub3
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_both_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_both_sub_snop
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128_align2 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128_align2 = COPY $vgpr2_vgpr3
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128_align2 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128_align2 = COPY [[COPY]].sub2_sub3
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_128_align2 = COPY $vgpr0_vgpr1
- %0.sub2_sub3:vreg_128_align2 = COPY $vgpr2_vgpr3
- undef %2.sub0_sub1:areg_128_align2 = COPY %0.sub0_sub1
- %2.sub2_sub3:areg_128_align2 = COPY %0.sub2_sub3
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_sgpr32_to_areg64_align2_both_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $sgpr8, $sgpr9
-
- ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_both_sub_snop
- ; CHECK: liveins: $sgpr8, $sgpr9
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:sreg_64 = COPY $sgpr8
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:sreg_64 = COPY $sgpr9
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub1
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:sreg_64 = COPY $sgpr8
- %0.sub1:sreg_64 = COPY $sgpr9
- undef %2.sub0:areg_64_align2 = COPY %0.sub0
- %2.sub1:areg_64_align2 = COPY %0.sub1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_both_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_both_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY]].sub1_sub2
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 = COPY $vgpr0
- %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- undef %2.sub0:areg_96 = COPY %0.sub0
- %2.sub1_sub2:areg_96 = COPY %0.sub1_sub2
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
-name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_shuffle_both_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub2
- ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: S_NOP 0, implicit %1
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96 = COPY $vgpr0
- %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2
- undef %2.sub0:areg_96 = COPY %0.sub2
- %2.sub1_sub2:areg_96 = COPY %0.sub0_sub1
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
-
----
-name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_both_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_both_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96_align2 = COPY $vgpr0
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96_align2 = COPY $vgpr1_vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub0
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96_align2 = COPY [[COPY]].sub1_sub2
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0:vreg_96_align2 = COPY $vgpr0
- %0.sub1_sub2:vreg_96_align2 = COPY $vgpr1_vgpr2
- undef %2.sub0:areg_96_align2 = COPY %0.sub0
- %2.sub1_sub2:areg_96_align2 = COPY %0.sub1_sub2
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_both_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_both_sub_snop
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub2
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %2.sub0_sub1:areg_96 = COPY %0.sub0_sub1
- %2.sub2:areg_96 = COPY %0.sub2
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96_align2 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96_align2 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub2
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_96_align2 = COPY $vgpr0_vgpr1
- %0.sub2:vreg_96_align2 = COPY $vgpr2
- undef %2.sub0_sub1:areg_96_align2 = COPY %0.sub0_sub1
- %2.sub2:areg_96_align2 = COPY %0.sub2
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_both_sub_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_both_sub_snop
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2
- ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]].sub0_sub1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub2
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1
- %0.sub2:vreg_96 = COPY $vgpr2
- undef %2.sub0_sub1:areg_96_align2 = COPY %0.sub0_sub1
- %2.sub2:areg_96_align2 = COPY %0.sub2
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
-
----
-name: copy_vgpr32_to_areg64_coalesce_with_av64_whole_reg_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_whole_reg_snop
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_64 = COPY [[COPY]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_64 = COPY $vgpr0_vgpr1
- %2:areg_64 = COPY %0
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_whole_reg_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_whole_reg_snop
- ; CHECK: liveins: $vgpr0, $vgpr1
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_64_align2 = COPY [[COPY]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_64_align2 = COPY $vgpr0_vgpr1
- %2:areg_64_align2 = COPY %0
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_whole_reg_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_whole_reg_snop
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_96 = COPY [[COPY]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_96 = COPY $vgpr0_vgpr1_vgpr2
- %3:areg_96 = COPY %0
- S_NOP 0, implicit %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_whole_reg_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1, $vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_whole_reg_snop
- ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_96_align2 = COPY $vgpr0_vgpr1_vgpr2
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_96_align2 = COPY [[COPY]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_96_align2 = COPY $vgpr0_vgpr1_vgpr2
- %3:areg_96_align2 = COPY %0
- S_NOP 0, implicit %3
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_to_areg64_coalesce_with_av128_whole_reg_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_whole_reg_snop
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_128 = COPY [[COPY]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
- %2:areg_128 = COPY %0
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_whole_reg_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
-
- ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_whole_reg_snop
- ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_128_align2 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_128_align2 = COPY [[COPY]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_128_align2 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
- %2:areg_128_align2 = COPY %0
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_sgpr32_to_areg64_align2_whole_reg_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $sgpr8, $sgpr9
-
- ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_whole_reg_snop
- ; CHECK: liveins: $sgpr8, $sgpr9
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr8_sgpr9
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_64_align2 = COPY [[COPY]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:sreg_64 = COPY $sgpr8_sgpr9
- %2:areg_64_align2 = COPY %0
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
-
----
-name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_whole_reg_snop
-tracksRegLiveness: true
-body: |
- bb.0:
- liveins: $vgpr0, $vgpr1_vgpr2
-
- ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_whole_reg_snop
- ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
- ; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_96_align2 = COPY [[COPY]]
- ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]
- ; CHECK-NEXT: SI_RETURN
- %0:vreg_96 = COPY $vgpr0_vgpr1_vgpr2
- %2:areg_96_align2 = COPY %0
- S_NOP 0, implicit %2
- SI_RETURN
-
-...
More information about the llvm-commits
mailing list