mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
AMDGPU: Fix liveness errors when copying AGPR tuples
Avoid recursively calling copyPhysReg for AGPR handling. This was dropping the necessary super register implicit defs to avoid liveness verifier errors.
This commit is contained in:
parent
dc0f54c2fe
commit
39a288b179
@ -542,7 +542,9 @@ static void indirectCopyToAGPR(const SIInstrInfo &TII,
|
||||
MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
RegScavenger &RS) {
|
||||
RegScavenger &RS,
|
||||
Register ImpDefSuperReg = Register(),
|
||||
Register ImpUseSuperReg = Register()) {
|
||||
const SIRegisterInfo &RI = TII.getRegisterInfo();
|
||||
|
||||
assert(AMDGPU::SReg_32RegClass.contains(SrcReg) ||
|
||||
@ -573,8 +575,17 @@ static void indirectCopyToAGPR(const SIInstrInfo &TII,
|
||||
DefOp.setIsKill(false);
|
||||
}
|
||||
|
||||
BuildMI(MBB, MI, DL, TII.get(AMDGPU::V_ACCVGPR_WRITE_B32), DestReg)
|
||||
MachineInstrBuilder Builder =
|
||||
BuildMI(MBB, MI, DL, TII.get(AMDGPU::V_ACCVGPR_WRITE_B32), DestReg)
|
||||
.add(DefOp);
|
||||
if (ImpDefSuperReg)
|
||||
Builder.addReg(ImpDefSuperReg, RegState::Define | RegState::Implicit);
|
||||
|
||||
if (ImpUseSuperReg) {
|
||||
Builder.addReg(ImpUseSuperReg,
|
||||
getKillRegState(KillSrc) | RegState::Implicit);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -604,9 +615,27 @@ static void indirectCopyToAGPR(const SIInstrInfo &TII,
|
||||
RS.setRegUsed(Tmp);
|
||||
}
|
||||
|
||||
TII.copyPhysReg(MBB, MI, DL, Tmp, SrcReg, KillSrc);
|
||||
BuildMI(MBB, MI, DL, TII.get(AMDGPU::V_ACCVGPR_WRITE_B32), DestReg)
|
||||
// Insert copy to temporary VGPR.
|
||||
unsigned TmpCopyOp = AMDGPU::V_MOV_B32_e32;
|
||||
if (AMDGPU::AGPR_32RegClass.contains(SrcReg)) {
|
||||
TmpCopyOp = AMDGPU::V_ACCVGPR_READ_B32;
|
||||
} else {
|
||||
assert(AMDGPU::SReg_32RegClass.contains(SrcReg));
|
||||
}
|
||||
|
||||
MachineInstrBuilder UseBuilder = BuildMI(MBB, MI, DL, TII.get(TmpCopyOp), Tmp)
|
||||
.addReg(SrcReg, getKillRegState(KillSrc));
|
||||
if (ImpUseSuperReg) {
|
||||
UseBuilder.addReg(ImpUseSuperReg,
|
||||
getKillRegState(KillSrc) | RegState::Implicit);
|
||||
}
|
||||
|
||||
MachineInstrBuilder DefBuilder
|
||||
= BuildMI(MBB, MI, DL, TII.get(AMDGPU::V_ACCVGPR_WRITE_B32), DestReg)
|
||||
.addReg(Tmp, RegState::Kill);
|
||||
|
||||
if (ImpDefSuperReg)
|
||||
DefBuilder.addReg(ImpDefSuperReg, RegState::Define | RegState::Implicit);
|
||||
}
|
||||
|
||||
void SIInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
@ -827,11 +856,21 @@ void SIInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
}
|
||||
} else if (RI.hasAGPRs(RC)) {
|
||||
Opcode = RI.hasVGPRs(RI.getPhysRegClass(SrcReg)) ?
|
||||
AMDGPU::V_ACCVGPR_WRITE_B32 : AMDGPU::COPY;
|
||||
AMDGPU::V_ACCVGPR_WRITE_B32 : AMDGPU::INSTRUCTION_LIST_END;
|
||||
} else if (RI.hasVGPRs(RC) && RI.hasAGPRs(RI.getPhysRegClass(SrcReg))) {
|
||||
Opcode = AMDGPU::V_ACCVGPR_READ_B32;
|
||||
}
|
||||
|
||||
// For the cases where we need an intermediate instruction/temporary register
|
||||
// (the result is an SGPR, and the source is either an SGPR or AGPR), we need
|
||||
// a scavenger.
|
||||
//
|
||||
// FIXME: The pass should maintain this for us so we don't have to re-scan the
|
||||
// whole block for every handled copy.
|
||||
std::unique_ptr<RegScavenger> RS;
|
||||
if (Opcode == AMDGPU::INSTRUCTION_LIST_END)
|
||||
RS.reset(new RegScavenger());
|
||||
|
||||
ArrayRef<int16_t> SubIndices = RI.getRegSplitParts(RC, EltSize);
|
||||
bool Forward = RI.getHWRegIndex(DestReg) <= RI.getHWRegIndex(SrcReg);
|
||||
|
||||
@ -842,22 +881,24 @@ void SIInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
else
|
||||
SubIdx = SubIndices[SubIndices.size() - Idx - 1];
|
||||
|
||||
if (Opcode == TargetOpcode::COPY) {
|
||||
copyPhysReg(MBB, MI, DL, RI.getSubReg(DestReg, SubIdx),
|
||||
RI.getSubReg(SrcReg, SubIdx), KillSrc);
|
||||
continue;
|
||||
}
|
||||
|
||||
MachineInstrBuilder Builder = BuildMI(MBB, MI, DL,
|
||||
get(Opcode), RI.getSubReg(DestReg, SubIdx));
|
||||
|
||||
Builder.addReg(RI.getSubReg(SrcReg, SubIdx));
|
||||
|
||||
if (Idx == 0)
|
||||
Builder.addReg(DestReg, RegState::Define | RegState::Implicit);
|
||||
|
||||
bool UseKill = KillSrc && Idx == SubIndices.size() - 1;
|
||||
Builder.addReg(SrcReg, getKillRegState(UseKill) | RegState::Implicit);
|
||||
|
||||
if (Opcode == AMDGPU::INSTRUCTION_LIST_END) {
|
||||
Register ImpDefSuper = Idx == 0 ? Register(DestReg) : Register();
|
||||
Register ImpUseSuper = SrcReg;
|
||||
indirectCopyToAGPR(*this, MBB, MI, DL, RI.getSubReg(DestReg, SubIdx),
|
||||
RI.getSubReg(SrcReg, SubIdx), UseKill, *RS,
|
||||
ImpDefSuper, ImpUseSuper);
|
||||
} else {
|
||||
MachineInstrBuilder Builder =
|
||||
BuildMI(MBB, MI, DL, get(Opcode), RI.getSubReg(DestReg, SubIdx))
|
||||
.addReg(RI.getSubReg(SrcReg, SubIdx));
|
||||
if (Idx == 0)
|
||||
Builder.addReg(DestReg, RegState::Define | RegState::Implicit);
|
||||
|
||||
Builder.addReg(SrcReg, getKillRegState(UseKill) | RegState::Implicit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -28,10 +28,16 @@
|
||||
define amdgpu_kernel void @a2_to_a2() #0 { ret void }
|
||||
define amdgpu_kernel void @a3_to_a3() #0 { ret void }
|
||||
define amdgpu_kernel void @a4_to_a4() #0 { ret void }
|
||||
define amdgpu_kernel void @a4_to_a4_overlap() #0 { ret void }
|
||||
define amdgpu_kernel void @a8_to_a8() #0 { ret void }
|
||||
define amdgpu_kernel void @a16_to_a16() #0 { ret void }
|
||||
|
||||
define amdgpu_kernel void @a_to_a_spill() #0 { ret void }
|
||||
define amdgpu_kernel void @copy_sgpr_to_agpr_tuple() #0 { ret void }
|
||||
define amdgpu_kernel void @copy_sgpr_to_agpr_tuple_kill() #0 { ret void }
|
||||
define amdgpu_kernel void @copy_agpr_to_agpr_tuple() #0 { ret void }
|
||||
define amdgpu_kernel void @copy_agpr_to_agpr_tuple_kill() #0 { ret void }
|
||||
|
||||
attributes #0 = { "amdgpu-flat-work-group-size"="1,256" }
|
||||
...
|
||||
|
||||
@ -285,9 +291,9 @@ body: |
|
||||
liveins: $sgpr0_sgpr1
|
||||
; GCN-LABEL: name: s2_to_a2
|
||||
; GCN: liveins: $sgpr0_sgpr1
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec
|
||||
; GCN: $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit $sgpr0_sgpr1
|
||||
; GCN: $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec, implicit-def $agpr0_agpr1
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit killed $sgpr0_sgpr1
|
||||
; GCN: $agpr1 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr0_agpr1
|
||||
$agpr0_agpr1 = COPY killed $sgpr0_sgpr1, implicit $exec
|
||||
@ -302,11 +308,11 @@ body: |
|
||||
liveins: $sgpr0_sgpr1_sgpr2
|
||||
; GCN-LABEL: name: s3_to_a3
|
||||
; GCN: liveins: $sgpr0_sgpr1_sgpr2
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec
|
||||
; GCN: $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
|
||||
; GCN: $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec, implicit-def $agpr0_agpr1_agpr2
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
|
||||
; GCN: $agpr1 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr2, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2
|
||||
; GCN: $agpr2 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr0_agpr1_agpr2
|
||||
$agpr0_agpr1_agpr2 = COPY killed $sgpr0_sgpr1_sgpr2, implicit $exec
|
||||
@ -321,13 +327,13 @@ body: |
|
||||
liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN-LABEL: name: s4_to_a4
|
||||
; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec
|
||||
; GCN: $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN: $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec, implicit-def $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN: $agpr1 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr2, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN: $agpr2 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr3, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr3, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN: $agpr3 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
$agpr0_agpr1_agpr2_agpr3 = COPY killed $sgpr0_sgpr1_sgpr2_sgpr3, implicit $exec
|
||||
@ -342,17 +348,17 @@ body: |
|
||||
liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5
|
||||
; GCN-LABEL: name: s6_to_a6
|
||||
; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec
|
||||
; GCN: $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5
|
||||
; GCN: $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec, implicit-def $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5
|
||||
; GCN: $agpr1 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr2, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5
|
||||
; GCN: $agpr2 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr3, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr3, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5
|
||||
; GCN: $agpr3 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr4, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5
|
||||
; GCN: $agpr4 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr5, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr5, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5
|
||||
; GCN: $agpr5 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5
|
||||
$agpr0_agpr1_agpr2_agpr3_agpr4_agpr5 = COPY killed $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5, implicit $exec
|
||||
@ -367,21 +373,21 @@ body: |
|
||||
liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
|
||||
; GCN-LABEL: name: s8_to_a8
|
||||
; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec
|
||||
; GCN: $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
|
||||
; GCN: $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec, implicit-def $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
|
||||
; GCN: $agpr1 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr2, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
|
||||
; GCN: $agpr2 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr3, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr3, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
|
||||
; GCN: $agpr3 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr4, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
|
||||
; GCN: $agpr4 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr5, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 $sgpr5, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
|
||||
; GCN: $agpr5 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr6, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr6, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
|
||||
; GCN: $agpr6 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr7, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr7, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
|
||||
; GCN: $agpr7 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
|
||||
$agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7 = COPY killed $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, implicit $exec
|
||||
@ -396,37 +402,37 @@ body: |
|
||||
liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN-LABEL: name: s16_to_a16
|
||||
; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec
|
||||
; GCN: $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec, implicit-def $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr1 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr2, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr2 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr3, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr3, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr3 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr4, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr4 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr5, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 $sgpr5, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr5 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr6, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr6, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr6 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr7, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr7, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr7 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr8, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr8 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr9, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr9 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr10, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr10, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr10 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr11, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 $sgpr11, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr11 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr12, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr12, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr12 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr13, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr13, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr13 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr14, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 $sgpr14, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr14 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr15, implicit $exec
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr15, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
|
||||
; GCN: $agpr15 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
$agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = COPY killed $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15, implicit $exec
|
||||
@ -455,9 +461,9 @@ body: |
|
||||
bb.0:
|
||||
; GCN-LABEL: name: a2_to_a2
|
||||
; GCN: $agpr0_agpr1 = IMPLICIT_DEF
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr1, implicit $exec
|
||||
; GCN: $agpr2 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 $agpr1, implicit $exec, implicit $agpr0_agpr1
|
||||
; GCN: $agpr2 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec, implicit-def $agpr1_agpr2
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec, implicit killed $agpr0_agpr1
|
||||
; GCN: $agpr1 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr1_agpr2
|
||||
$agpr0_agpr1 = IMPLICIT_DEF
|
||||
@ -472,11 +478,11 @@ body: |
|
||||
bb.0:
|
||||
; GCN-LABEL: name: a3_to_a3
|
||||
; GCN: $agpr0_agpr1_agpr2 = IMPLICIT_DEF
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr2, implicit $exec
|
||||
; GCN: $agpr4 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr1, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 $agpr2, implicit $exec, implicit $agpr0_agpr1_agpr2
|
||||
; GCN: $agpr4 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit-def $agpr2_agpr3_agpr4
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr1, implicit $exec, implicit $agpr0_agpr1_agpr2
|
||||
; GCN: $agpr3 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec, implicit killed $agpr0_agpr1_agpr2
|
||||
; GCN: $agpr2 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr2_agpr3_agpr4
|
||||
$agpr0_agpr1_agpr2 = IMPLICIT_DEF
|
||||
@ -491,20 +497,39 @@ body: |
|
||||
bb.0:
|
||||
; GCN-LABEL: name: a4_to_a4
|
||||
; GCN: $agpr0_agpr1_agpr2_agpr3 = IMPLICIT_DEF
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr3, implicit $exec
|
||||
; GCN: $agpr5 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr2, implicit $exec
|
||||
; GCN: $agpr4 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr1, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 $agpr3, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr5 = V_ACCVGPR_WRITE_B32 $vgpr2, implicit $exec, implicit-def $agpr2_agpr3_agpr4_agpr5
|
||||
; GCN: $agpr4 = V_ACCVGPR_WRITE_B32 $vgpr2, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr1, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr3 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec
|
||||
; GCN: $agpr2 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec, implicit $exec
|
||||
; GCN: $vgpr3 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec, implicit killed $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr2 = V_ACCVGPR_WRITE_B32 killed $vgpr3, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr2_agpr3_agpr4_agpr5
|
||||
$agpr0_agpr1_agpr2_agpr3 = IMPLICIT_DEF
|
||||
$agpr2_agpr3_agpr4_agpr5 = COPY killed $agpr0_agpr1_agpr2_agpr3, implicit $exec
|
||||
S_ENDPGM 0, implicit $agpr2_agpr3_agpr4_agpr5
|
||||
...
|
||||
|
||||
---
|
||||
name: a4_to_a4_overlap
|
||||
tracksRegLiveness: true
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN-LABEL: name: a4_to_a4_overlap
|
||||
; GCN: liveins: $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 $agpr3, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr5 = V_ACCVGPR_WRITE_B32 $vgpr2, implicit $exec, implicit-def $agpr2_agpr3_agpr4_agpr5
|
||||
; GCN: $agpr4 = V_ACCVGPR_WRITE_B32 $vgpr2, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr1, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr3 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr3 = V_ACCVGPR_READ_B32 $agpr0, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr2 = V_ACCVGPR_WRITE_B32 killed $vgpr3, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr0, implicit $agpr1, implicit $agpr2, implicit $agpr3, implicit $agpr4, implicit $agpr5
|
||||
$agpr2_agpr3_agpr4_agpr5 = COPY $agpr0_agpr1_agpr2_agpr3, implicit $exec
|
||||
S_ENDPGM 0, implicit $agpr0, implicit $agpr1, implicit $agpr2, implicit $agpr3, implicit $agpr4, implicit $agpr5
|
||||
...
|
||||
|
||||
---
|
||||
name: a8_to_a8
|
||||
tracksRegLiveness: true
|
||||
@ -512,21 +537,21 @@ body: |
|
||||
bb.0:
|
||||
; GCN-LABEL: name: a8_to_a8
|
||||
; GCN: $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7 = IMPLICIT_DEF
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr7, implicit $exec
|
||||
; GCN: $agpr15 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr6, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr7, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
|
||||
; GCN: $agpr15 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec, implicit-def $agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 $agpr6, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
|
||||
; GCN: $agpr14 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr5, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 $agpr5, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
|
||||
; GCN: $agpr13 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr4, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr4, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
|
||||
; GCN: $agpr12 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr3, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 $agpr3, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
|
||||
; GCN: $agpr11 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 $agpr2, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
|
||||
; GCN: $agpr10 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr1, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
|
||||
; GCN: $agpr9 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec, implicit killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
|
||||
; GCN: $agpr8 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
$agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7 = IMPLICIT_DEF
|
||||
@ -542,37 +567,37 @@ body: |
|
||||
|
||||
; GCN-LABEL: name: a16_to_a16
|
||||
; GCN: $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = IMPLICIT_DEF
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr15, implicit $exec
|
||||
; GCN: $agpr31 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr14, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 $agpr15, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr31 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit-def $agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr14, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr30 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr13, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 $agpr13, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr29 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr12, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 $agpr12, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr28 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr11, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr11, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr27 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr10, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 $agpr10, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr26 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr9, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 $agpr9, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr25 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr8, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr8, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr24 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr7, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 $agpr7, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr23 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr6, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 $agpr6, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr22 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr5, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr5, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr21 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr4, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 $agpr4, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr20 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr3, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 $agpr3, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr19 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr2, implicit $exec
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr2, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr18 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr1, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 $agpr1, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr17 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec, implicit killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
|
||||
; GCN: $agpr16 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31
|
||||
$agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = IMPLICIT_DEF
|
||||
@ -599,3 +624,100 @@ body: |
|
||||
$agpr0 = COPY killed $agpr1, implicit $exec
|
||||
S_ENDPGM 0, implicit $agpr0
|
||||
...
|
||||
|
||||
---
|
||||
name: copy_sgpr_to_agpr_tuple
|
||||
tracksRegLiveness: true
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $agpr0, $sgpr2_sgpr3
|
||||
|
||||
; GCN-LABEL: name: copy_sgpr_to_agpr_tuple
|
||||
; GCN: liveins: $agpr0, $sgpr2_sgpr3
|
||||
; GCN: S_NOP 0, implicit-def dead $sgpr0_sgpr1
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr3, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN: $agpr7 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit-def $agpr4_agpr5_agpr6_agpr7
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN: $agpr6 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN: $agpr5 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN: $agpr4 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr4_agpr5_agpr6_agpr7, implicit $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
S_NOP 0, implicit-def dead $sgpr0_sgpr1
|
||||
renamable $agpr4_agpr5_agpr6_agpr7 = COPY renamable $sgpr0_sgpr1_sgpr2_sgpr3, implicit $exec
|
||||
S_ENDPGM 0, implicit $agpr4_agpr5_agpr6_agpr7, implicit $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
...
|
||||
---
|
||||
name: copy_sgpr_to_agpr_tuple_kill
|
||||
tracksRegLiveness: true
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $agpr0, $sgpr2_sgpr3
|
||||
|
||||
; GCN-LABEL: name: copy_sgpr_to_agpr_tuple_kill
|
||||
; GCN: liveins: $agpr0, $sgpr2_sgpr3
|
||||
; GCN: S_NOP 0, implicit-def dead $sgpr0_sgpr1
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 $sgpr3, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN: $agpr7 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit-def $agpr4_agpr5_agpr6_agpr7
|
||||
; GCN: $vgpr0 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN: $agpr6 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN: $agpr5 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; GCN: $agpr4 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr4_agpr5_agpr6_agpr7
|
||||
S_NOP 0, implicit-def dead $sgpr0_sgpr1
|
||||
renamable $agpr4_agpr5_agpr6_agpr7 = COPY renamable killed $sgpr0_sgpr1_sgpr2_sgpr3, implicit $exec
|
||||
S_ENDPGM 0, implicit $agpr4_agpr5_agpr6_agpr7
|
||||
...
|
||||
|
||||
---
|
||||
name: copy_agpr_to_agpr_tuple
|
||||
tracksRegLiveness: true
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $agpr0, $agpr2_agpr3
|
||||
|
||||
; GCN-LABEL: name: copy_agpr_to_agpr_tuple
|
||||
; GCN: liveins: $agpr0, $agpr2_agpr3
|
||||
; GCN: S_NOP 0, implicit-def dead $agpr0_agpr1
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 $agpr3, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr7 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit-def $agpr4_agpr5_agpr6_agpr7
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr2, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr6 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 $agpr1, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr5 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 $agpr0, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr4 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr4_agpr5_agpr6_agpr7, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
S_NOP 0, implicit-def dead $agpr0_agpr1
|
||||
renamable $agpr4_agpr5_agpr6_agpr7 = COPY renamable $agpr0_agpr1_agpr2_agpr3, implicit $exec
|
||||
S_ENDPGM 0, implicit $agpr4_agpr5_agpr6_agpr7, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
...
|
||||
|
||||
---
|
||||
name: copy_agpr_to_agpr_tuple_kill
|
||||
tracksRegLiveness: true
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $agpr0, $agpr2_agpr3
|
||||
|
||||
; GCN-LABEL: name: copy_agpr_to_agpr_tuple_kill
|
||||
; GCN: liveins: $agpr0, $agpr2_agpr3
|
||||
; GCN: S_NOP 0, implicit-def dead $agpr0_agpr1
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 $agpr3, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr7 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit-def $agpr4_agpr5_agpr6_agpr7
|
||||
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr2, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr6 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
|
||||
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 $agpr1, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr5 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
|
||||
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec, implicit killed $agpr0_agpr1_agpr2_agpr3
|
||||
; GCN: $agpr4 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit $exec
|
||||
; GCN: S_ENDPGM 0, implicit $agpr4_agpr5_agpr6_agpr7
|
||||
S_NOP 0, implicit-def dead $agpr0_agpr1
|
||||
renamable $agpr4_agpr5_agpr6_agpr7 = COPY renamable killed $agpr0_agpr1_agpr2_agpr3, implicit $exec
|
||||
S_ENDPGM 0, implicit $agpr4_agpr5_agpr6_agpr7
|
||||
...
|
||||
|
||||
---
|
||||
|
Loading…
x
Reference in New Issue
Block a user