AMDGPU: Permit more frame index operands in verifier (#101691)
Treat FI operands more like a register. When it gets materialized, we will typically need to introduce a scavenged register anyway. Add baseline tests for folding frame indexes into add/or.
This commit is contained in:
parent
536486fb4f
commit
ca409892c5
@ -4599,6 +4599,10 @@ static bool shouldReadExec(const MachineInstr &MI) {
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool isRegOrFI(const MachineOperand &MO) {
|
||||
return MO.isReg() || MO.isFI();
|
||||
}
|
||||
|
||||
static bool isSubRegOf(const SIRegisterInfo &TRI,
|
||||
const MachineOperand &SuperVec,
|
||||
const MachineOperand &SubReg) {
|
||||
@ -4933,7 +4937,7 @@ bool SIInstrInfo::verifyInstruction(const MachineInstr &MI,
|
||||
++ConstantBusCount;
|
||||
SGPRsUsed.push_back(SGPRUsed);
|
||||
}
|
||||
} else {
|
||||
} else if (!MO.isFI()) { // Treat FI like a register.
|
||||
if (!UsesLiteral) {
|
||||
++ConstantBusCount;
|
||||
UsesLiteral = true;
|
||||
@ -5026,7 +5030,7 @@ bool SIInstrInfo::verifyInstruction(const MachineInstr &MI,
|
||||
const MachineOperand &Src0 = MI.getOperand(Src0Idx);
|
||||
const MachineOperand &Src1 = MI.getOperand(Src1Idx);
|
||||
|
||||
if (!Src0.isReg() && !Src1.isReg() &&
|
||||
if (!isRegOrFI(Src0) && !isRegOrFI(Src1) &&
|
||||
!isInlineConstant(Src0, Desc.operands()[Src0Idx]) &&
|
||||
!isInlineConstant(Src1, Desc.operands()[Src1Idx]) &&
|
||||
!Src0.isIdenticalTo(Src1)) {
|
||||
|
||||
900
llvm/test/CodeGen/AMDGPU/eliminate-frame-index-s-add-i32.mir
Normal file
900
llvm/test/CodeGen/AMDGPU/eliminate-frame-index-s-add-i32.mir
Normal file
@ -0,0 +1,900 @@
|
||||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW64 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW64 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW64 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW64 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW32 %s
|
||||
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=FLATSCRW64 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=FLATSCRW32 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=FLATSCRW32 %s
|
||||
|
||||
---
|
||||
name: s_add_i32__inline_imm__fi_offset0
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 32, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: s_add_i32__inline_imm__fi_offset0
|
||||
; MUBUFW64: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 12, killed $sgpr4, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__inline_imm__fi_offset0
|
||||
; MUBUFW32: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 12, killed $sgpr4, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__inline_imm__fi_offset0
|
||||
; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 12, $sgpr32, implicit-def dead $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__inline_imm__fi_offset0
|
||||
; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 12, $sgpr32, implicit-def dead $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
renamable $sgpr7 = S_ADD_I32 12, %stack.0, implicit-def dead $scc
|
||||
SI_RETURN implicit $sgpr7
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__fi_offset0__inline_imm
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 32, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: s_add_i32__fi_offset0__inline_imm
|
||||
; MUBUFW64: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, 12, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__fi_offset0__inline_imm
|
||||
; MUBUFW32: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, 12, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__fi_offset0__inline_imm
|
||||
; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 $sgpr32, 12, implicit-def dead $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__fi_offset0__inline_imm
|
||||
; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 $sgpr32, 12, implicit-def dead $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
renamable $sgpr7 = S_ADD_I32 %stack.0, 12, implicit-def dead $scc
|
||||
SI_RETURN implicit $sgpr7
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__inline_imm___fi_offset_inline_imm
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 16, alignment: 16 }
|
||||
- { id: 1, size: 24, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: s_add_i32__inline_imm___fi_offset_inline_imm
|
||||
; MUBUFW64: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def $scc
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 16, implicit-def $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 12, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__inline_imm___fi_offset_inline_imm
|
||||
; MUBUFW32: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def $scc
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 16, implicit-def $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 12, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__inline_imm___fi_offset_inline_imm
|
||||
; FLATSCRW64: $sgpr4 = S_ADD_I32 $sgpr32, 16, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 12, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__inline_imm___fi_offset_inline_imm
|
||||
; FLATSCRW32: $sgpr4 = S_ADD_I32 $sgpr32, 16, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 12, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
renamable $sgpr7 = S_ADD_I32 12, %stack.1, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__literal__fi_offset0
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 96, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: s_add_i32__literal__fi_offset0
|
||||
; MUBUFW64: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 68, killed $sgpr4, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__literal__fi_offset0
|
||||
; MUBUFW32: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 68, killed $sgpr4, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__literal__fi_offset0
|
||||
; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 68, $sgpr32, implicit-def dead $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__literal__fi_offset0
|
||||
; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 68, $sgpr32, implicit-def dead $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
renamable $sgpr7 = S_ADD_I32 68, %stack.0, implicit-def dead $scc
|
||||
SI_RETURN implicit $sgpr7
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__fi_offset0__literal
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 96, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: s_add_i32__fi_offset0__literal
|
||||
; MUBUFW64: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, 68, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__fi_offset0__literal
|
||||
; MUBUFW32: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, 68, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__fi_offset0__literal
|
||||
; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 $sgpr32, 68, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__fi_offset0__literal
|
||||
; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 $sgpr32, 68, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
renamable $sgpr7 = S_ADD_I32 %stack.0, 68, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__literal__fi_offset96
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 96, alignment: 16 }
|
||||
- { id: 1, size: 24, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: s_add_i32__literal__fi_offset96
|
||||
; MUBUFW64: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def $scc
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 96, implicit-def $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 68, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__literal__fi_offset96
|
||||
; MUBUFW32: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def $scc
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 96, implicit-def $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 68, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__literal__fi_offset96
|
||||
; FLATSCRW64: $sgpr4 = S_ADD_I32 $sgpr32, 96, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 68, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__literal__fi_offset96
|
||||
; FLATSCRW32: $sgpr4 = S_ADD_I32 $sgpr32, 96, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 68, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_ADD_I32 68, %stack.1, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32____fi_offset96__literal
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 96, alignment: 16 }
|
||||
- { id: 1, size: 128, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: s_add_i32____fi_offset96__literal
|
||||
; MUBUFW64: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def $scc
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 96, implicit-def $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, 68, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32____fi_offset96__literal
|
||||
; MUBUFW32: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def $scc
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 96, implicit-def $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, 68, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32____fi_offset96__literal
|
||||
; FLATSCRW64: $sgpr4 = S_ADD_I32 $sgpr32, 96, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, 68, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32____fi_offset96__literal
|
||||
; FLATSCRW32: $sgpr4 = S_ADD_I32 $sgpr32, 96, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, 68, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_ADD_I32 %stack.1, 68, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__sgpr__fi_offset0
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 128, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUFW64-LABEL: name: s_add_i32__sgpr__fi_offset0
|
||||
; MUBUFW64: liveins: $sgpr8
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, killed $sgpr4, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__sgpr__fi_offset0
|
||||
; MUBUFW32: liveins: $sgpr8
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, killed $sgpr4, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__sgpr__fi_offset0
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, $sgpr32, implicit-def dead $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__sgpr__fi_offset0
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, $sgpr32, implicit-def dead $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
|
||||
SI_RETURN implicit $sgpr7
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__fi_offset0__sgpr
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 128, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUFW64-LABEL: name: s_add_i32__fi_offset0__sgpr
|
||||
; MUBUFW64: liveins: $sgpr8
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, $sgpr8, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__fi_offset0__sgpr
|
||||
; MUBUFW32: liveins: $sgpr8
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, $sgpr8, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__fi_offset0__sgpr
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__fi_offset0__sgpr
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
renamable $sgpr7 = S_ADD_I32 %stack.0, $sgpr8, implicit-def dead $scc
|
||||
SI_RETURN implicit $sgpr7
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__sgpr__fi_literal_offset
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 80, alignment: 16 }
|
||||
- { id: 1, size: 48, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUFW64-LABEL: name: s_add_i32__sgpr__fi_literal_offset
|
||||
; MUBUFW64: liveins: $sgpr8
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def $scc
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 80, implicit-def $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, killed $sgpr4, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__sgpr__fi_literal_offset
|
||||
; MUBUFW32: liveins: $sgpr8
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def $scc
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 80, implicit-def $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, killed $sgpr4, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__sgpr__fi_literal_offset
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 80, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, killed $sgpr4, implicit-def dead $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__sgpr__fi_literal_offset
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 80, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, killed $sgpr4, implicit-def dead $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.1, implicit-def dead $scc
|
||||
SI_RETURN implicit $sgpr7
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__fi_literal_offset__sgpr
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 80, alignment: 16 }
|
||||
- { id: 1, size: 48, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUFW64-LABEL: name: s_add_i32__fi_literal_offset__sgpr
|
||||
; MUBUFW64: liveins: $sgpr8
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def $scc
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 80, implicit-def $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, $sgpr8, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__fi_literal_offset__sgpr
|
||||
; MUBUFW32: liveins: $sgpr8
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def $scc
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 80, implicit-def $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, $sgpr8, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__fi_literal_offset__sgpr
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 80, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, $sgpr8, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__fi_literal_offset__sgpr
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 80, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, $sgpr8, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_ADD_I32 %stack.1, $sgpr8, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
# FIXME: Fail verifier
|
||||
# ---
|
||||
# name: s_add_i32__kernel__literal__fi_offset96__offset_literal
|
||||
# tracksRegLiveness: true
|
||||
# stack:
|
||||
# - { id: 0, size: 96, alignment: 16 }
|
||||
# - { id: 1, size: 128, alignment: 4 }
|
||||
# machineFunctionInfo:
|
||||
# scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
# frameOffsetReg: '$sgpr33'
|
||||
# stackPtrOffsetReg: '$sgpr32'
|
||||
# isEntryFunction: true
|
||||
# body: |
|
||||
# bb.0:
|
||||
# renamable $sgpr7 = S_ADD_I32 68, %stack.1, implicit-def dead $scc
|
||||
# SI_RETURN implicit $sgpr7
|
||||
# ...
|
||||
|
||||
# ---
|
||||
# name: s_add_i32__kernel__fi_offset96__offset_literal__literal
|
||||
# tracksRegLiveness: true
|
||||
# stack:
|
||||
# - { id: 0, size: 96, alignment: 16 }
|
||||
# - { id: 1, size: 128, alignment: 4 }
|
||||
# machineFunctionInfo:
|
||||
# scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
# frameOffsetReg: '$sgpr33'
|
||||
# stackPtrOffsetReg: '$sgpr32'
|
||||
# isEntryFunction: true
|
||||
# body: |
|
||||
# bb.0:
|
||||
# renamable $sgpr7 = S_ADD_I32 %stack.1, 68, implicit-def $scc
|
||||
# SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
# ...
|
||||
|
||||
---
|
||||
name: s_add_i32__kernel__sgpr__fi_literal_offset
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 96, alignment: 16 }
|
||||
- { id: 1, size: 64, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
isEntryFunction: true
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUFW64-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset
|
||||
; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset
|
||||
; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def dead $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def dead $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.1, implicit-def dead $scc
|
||||
SI_RETURN implicit $sgpr7
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__kernel__fi_literal_offset__sgpr
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 96, alignment: 16 }
|
||||
- { id: 1, size: 64, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
isEntryFunction: true
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUFW64-LABEL: name: s_add_i32__kernel__fi_literal_offset__sgpr
|
||||
; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 96, $sgpr8, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__kernel__fi_literal_offset__sgpr
|
||||
; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 96, $sgpr8, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__kernel__fi_literal_offset__sgpr
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 96, $sgpr8, implicit-def dead $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__kernel__fi_literal_offset__sgpr
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 96, $sgpr8, implicit-def dead $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
|
||||
renamable $sgpr7 = S_ADD_I32 %stack.1, $sgpr8, implicit-def dead $scc
|
||||
SI_RETURN implicit $sgpr7
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__kernel__sgpr__fi_offset0__live_scc
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 96, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
isEntryFunction: true
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUFW64-LABEL: name: s_add_i32__kernel__sgpr__fi_offset0__live_scc
|
||||
; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 0, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__kernel__sgpr__fi_offset0__live_scc
|
||||
; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 0, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__kernel__sgpr__fi_offset0__live_scc
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 0, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__kernel__sgpr__fi_offset0__live_scc
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 0, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.0, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__sgpr__fi_offset0__live_scc
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 96, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUFW64-LABEL: name: s_add_i32__sgpr__fi_offset0__live_scc
|
||||
; MUBUFW64: liveins: $sgpr8
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__sgpr__fi_offset0__live_scc
|
||||
; MUBUFW32: liveins: $sgpr8
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__sgpr__fi_offset0__live_scc
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, $sgpr32, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__sgpr__fi_offset0__live_scc
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, $sgpr32, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.0, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__kernel__sgpr__fi_literal_offset__live_scc
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 96, alignment: 16 }
|
||||
- { id: 1, size: 64, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
isEntryFunction: true
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUFW64-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset__live_scc
|
||||
; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset__live_scc
|
||||
; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset__live_scc
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset__live_scc
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.1, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__sgpr__fi_literal_offset__live_scc
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 96, alignment: 16 }
|
||||
- { id: 1, size: 64, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUFW64-LABEL: name: s_add_i32__sgpr__fi_literal_offset__live_scc
|
||||
; MUBUFW64: liveins: $sgpr8
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def $scc
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 96, implicit-def $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__sgpr__fi_literal_offset__live_scc
|
||||
; MUBUFW32: liveins: $sgpr8
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def $scc
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 96, implicit-def $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__sgpr__fi_literal_offset__live_scc
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 96, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__sgpr__fi_literal_offset__live_scc
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 96, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.1, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
|
||||
# Resulting offset is inline immediate
|
||||
---
|
||||
name: s_add_i32__inlineimm__fi_offset_32__total_offset_inlineimm
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 32, alignment: 16 }
|
||||
- { id: 1, size: 16, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: s_add_i32__inlineimm__fi_offset_32__total_offset_inlineimm
|
||||
; MUBUFW64: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def $scc
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 32, implicit-def $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 8, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__inlineimm__fi_offset_32__total_offset_inlineimm
|
||||
; MUBUFW32: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def $scc
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 32, implicit-def $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 8, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__inlineimm__fi_offset_32__total_offset_inlineimm
|
||||
; FLATSCRW64: $sgpr4 = S_ADD_I32 $sgpr32, 32, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 8, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__inlineimm__fi_offset_32__total_offset_inlineimm
|
||||
; FLATSCRW32: $sgpr4 = S_ADD_I32 $sgpr32, 32, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 8, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_ADD_I32 8, %stack.1, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__fi_offset_32__inlineimm__total_offset_inlineimm
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 32, alignment: 16 }
|
||||
- { id: 1, size: 16, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: s_add_i32__fi_offset_32__inlineimm__total_offset_inlineimm
|
||||
; MUBUFW64: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def $scc
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 32, implicit-def $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, 8, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__fi_offset_32__inlineimm__total_offset_inlineimm
|
||||
; MUBUFW32: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def $scc
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 32, implicit-def $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, 8, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__fi_offset_32__inlineimm__total_offset_inlineimm
|
||||
; FLATSCRW64: $sgpr4 = S_ADD_I32 $sgpr32, 32, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, 8, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__fi_offset_32__inlineimm__total_offset_inlineimm
|
||||
; FLATSCRW32: $sgpr4 = S_ADD_I32 $sgpr32, 32, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, 8, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_ADD_I32 %stack.1, 8, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__kernel_inlineimm__fi_offset_32__total_offset_inlineimm
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 32, alignment: 16 }
|
||||
- { id: 1, size: 16, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
isEntryFunction: true
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: s_add_i32__kernel_inlineimm__fi_offset_32__total_offset_inlineimm
|
||||
; MUBUFW64: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 8, 32, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__kernel_inlineimm__fi_offset_32__total_offset_inlineimm
|
||||
; MUBUFW32: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 8, 32, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__kernel_inlineimm__fi_offset_32__total_offset_inlineimm
|
||||
; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 8, 32, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__kernel_inlineimm__fi_offset_32__total_offset_inlineimm
|
||||
; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 8, 32, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_ADD_I32 8, %stack.1, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_add_i32__kernel_fi_offset_32__inlineimm__total_offset_inlineimm
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 32, alignment: 16 }
|
||||
- { id: 1, size: 16, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
isEntryFunction: true
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: s_add_i32__kernel_fi_offset_32__inlineimm__total_offset_inlineimm
|
||||
; MUBUFW64: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 32, 8, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_add_i32__kernel_fi_offset_32__inlineimm__total_offset_inlineimm
|
||||
; MUBUFW32: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 32, 8, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_add_i32__kernel_fi_offset_32__inlineimm__total_offset_inlineimm
|
||||
; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 32, 8, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_add_i32__kernel_fi_offset_32__inlineimm__total_offset_inlineimm
|
||||
; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 32, 8, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_ADD_I32 %stack.1, 8, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
@ -0,0 +1,222 @@
|
||||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW64 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW64 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW64 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW64 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW32 %s
|
||||
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=FLATSCRW64 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=FLATSCRW32 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=FLATSCRW32 %s
|
||||
|
||||
---
|
||||
name: s_or_b32__inline_imm__fi_offset0
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 32, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: s_or_b32__inline_imm__fi_offset0
|
||||
; MUBUFW64: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_OR_B32 12, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_or_b32__inline_imm__fi_offset0
|
||||
; MUBUFW32: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_OR_B32 12, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_or_b32__inline_imm__fi_offset0
|
||||
; FLATSCRW64: renamable $sgpr7 = S_OR_B32 12, $sgpr32, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_or_b32__inline_imm__fi_offset0
|
||||
; FLATSCRW32: renamable $sgpr7 = S_OR_B32 12, $sgpr32, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_OR_B32 12, %stack.0, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_or_b32__literal__fi_offset96
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 96, alignment: 16 }
|
||||
- { id: 1, size: 24, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: s_or_b32__literal__fi_offset96
|
||||
; MUBUFW64: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def $scc
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 96, implicit-def $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_OR_B32 68, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_or_b32__literal__fi_offset96
|
||||
; MUBUFW32: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def $scc
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 96, implicit-def $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_OR_B32 68, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_or_b32__literal__fi_offset96
|
||||
; FLATSCRW64: $sgpr4 = S_ADD_I32 $sgpr32, 96, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_OR_B32 68, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_or_b32__literal__fi_offset96
|
||||
; FLATSCRW32: $sgpr4 = S_ADD_I32 $sgpr32, 96, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_OR_B32 68, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_OR_B32 68, %stack.1, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_or_b32__sgpr__fi_literal_offset
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 80, alignment: 16 }
|
||||
- { id: 1, size: 48, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUFW64-LABEL: name: s_or_b32__sgpr__fi_literal_offset
|
||||
; MUBUFW64: liveins: $sgpr8
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def $scc
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 80, implicit-def $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_OR_B32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_or_b32__sgpr__fi_literal_offset
|
||||
; MUBUFW32: liveins: $sgpr8
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def $scc
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 80, implicit-def $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_OR_B32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_or_b32__sgpr__fi_literal_offset
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 80, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_OR_B32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_or_b32__sgpr__fi_literal_offset
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 80, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_OR_B32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_OR_B32 $sgpr8, %stack.1, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_or_b32__sgpr__fi_inlineimm_offset
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 32, alignment: 16 }
|
||||
- { id: 1, size: 48, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUFW64-LABEL: name: s_or_b32__sgpr__fi_inlineimm_offset
|
||||
; MUBUFW64: liveins: $sgpr8
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def $scc
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 32, implicit-def $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_OR_B32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_or_b32__sgpr__fi_inlineimm_offset
|
||||
; MUBUFW32: liveins: $sgpr8
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def $scc
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 32, implicit-def $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_OR_B32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_or_b32__sgpr__fi_inlineimm_offset
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 32, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_OR_B32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_or_b32__sgpr__fi_inlineimm_offset
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 32, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_OR_B32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_OR_B32 $sgpr8, %stack.1, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: s_and_b32__sgpr__fi_literal_offset
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 80, alignment: 16 }
|
||||
- { id: 1, size: 48, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUFW64-LABEL: name: s_and_b32__sgpr__fi_literal_offset
|
||||
; MUBUFW64: liveins: $sgpr8
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def $scc
|
||||
; MUBUFW64-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 80, implicit-def $scc
|
||||
; MUBUFW64-NEXT: renamable $sgpr7 = S_AND_B32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; MUBUFW32-LABEL: name: s_and_b32__sgpr__fi_literal_offset
|
||||
; MUBUFW32: liveins: $sgpr8
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def $scc
|
||||
; MUBUFW32-NEXT: $sgpr4 = S_ADD_I32 killed $sgpr4, 80, implicit-def $scc
|
||||
; MUBUFW32-NEXT: renamable $sgpr7 = S_AND_B32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: s_and_b32__sgpr__fi_literal_offset
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 80, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $sgpr7 = S_AND_B32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: s_and_b32__sgpr__fi_literal_offset
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 80, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $sgpr7 = S_AND_B32 $sgpr8, killed $sgpr4, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
|
||||
renamable $sgpr7 = S_AND_B32 $sgpr8, %stack.1, implicit-def $scc
|
||||
SI_RETURN implicit $sgpr7, implicit $scc
|
||||
|
||||
...
|
||||
529
llvm/test/CodeGen/AMDGPU/eliminate-frame-index-v-add-co-u32.mir
Normal file
529
llvm/test/CodeGen/AMDGPU/eliminate-frame-index-v-add-co-u32.mir
Normal file
@ -0,0 +1,529 @@
|
||||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=MUBUFW64,GFX7 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=MUBUFW64,GFX8 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=MUBUFW64,GFX900 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=MUBUFW64,GFX90A %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=MUBUFW64,GFX10 %s
|
||||
|
||||
# FIXME: Test in wave32
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=FLATSCRW64,GFX940 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=FLATSCRW64,GFX11 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=FLATSCRW64,GFX12 %s
|
||||
|
||||
---
|
||||
name: v_add_co_u32_e32__inline_imm__fi_offset0
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 4, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: v_add_co_u32_e32__inline_imm__fi_offset0
|
||||
; MUBUFW64: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUFW64-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 12, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_co_u32_e32__inline_imm__fi_offset0
|
||||
; FLATSCRW64: $vgpr1 = V_MOV_B32_e32 $sgpr32, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 12, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
renamable $vgpr0 = V_ADD_CO_U32_e32 12, %stack.0, implicit-def $vcc, implicit $exec
|
||||
SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_co_u32_e32__inline_imm___fi_offset_inline_imm
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 16, alignment: 16 }
|
||||
- { id: 1, size: 4, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; GFX7-LABEL: name: v_add_co_u32_e32__inline_imm___fi_offset_inline_imm
|
||||
; GFX7: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX7-NEXT: $vgpr1, dead $sgpr4_sgpr5 = V_ADD_CO_U32_e64 16, killed $vgpr1, 0, implicit $exec
|
||||
; GFX7-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 12, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX7-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX8-LABEL: name: v_add_co_u32_e32__inline_imm___fi_offset_inline_imm
|
||||
; GFX8: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX8-NEXT: $vgpr1, dead $sgpr4_sgpr5 = V_ADD_CO_U32_e64 16, killed $vgpr1, 0, implicit $exec
|
||||
; GFX8-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 12, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX8-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX900-LABEL: name: v_add_co_u32_e32__inline_imm___fi_offset_inline_imm
|
||||
; GFX900: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX900-NEXT: $vgpr1 = V_ADD_U32_e32 16, killed $vgpr1, implicit $exec
|
||||
; GFX900-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 12, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX900-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX90A-LABEL: name: v_add_co_u32_e32__inline_imm___fi_offset_inline_imm
|
||||
; GFX90A: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX90A-NEXT: $vgpr1 = V_ADD_U32_e32 16, killed $vgpr1, implicit $exec
|
||||
; GFX90A-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 12, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX90A-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX10-LABEL: name: v_add_co_u32_e32__inline_imm___fi_offset_inline_imm
|
||||
; GFX10: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX10-NEXT: $vgpr1 = V_ADD_U32_e32 16, killed $vgpr1, implicit $exec
|
||||
; GFX10-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 12, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX10-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_co_u32_e32__inline_imm___fi_offset_inline_imm
|
||||
; FLATSCRW64: $sgpr4 = S_ADD_I32 $sgpr32, 16, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 12, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
renamable $vgpr0 = V_ADD_CO_U32_e32 12, %stack.1, implicit-def $vcc, implicit $exec
|
||||
SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_co_u32_e32__literal__fi_offset0
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 4, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: v_add_co_u32_e32__literal__fi_offset0
|
||||
; MUBUFW64: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUFW64-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 68, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_co_u32_e32__literal__fi_offset0
|
||||
; FLATSCRW64: $vgpr1 = V_MOV_B32_e32 $sgpr32, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 68, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
renamable $vgpr0 = V_ADD_CO_U32_e32 68, %stack.0, implicit-def $vcc, implicit $exec
|
||||
SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_co_u32_e32__literal__fi_offset0__offset_inlineimm
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 32, alignment: 16 }
|
||||
- { id: 1, size: 4, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; GFX7-LABEL: name: v_add_co_u32_e32__literal__fi_offset0__offset_inlineimm
|
||||
; GFX7: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX7-NEXT: $vgpr1, dead $sgpr4_sgpr5 = V_ADD_CO_U32_e64 32, killed $vgpr1, 0, implicit $exec
|
||||
; GFX7-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 68, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX7-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX8-LABEL: name: v_add_co_u32_e32__literal__fi_offset0__offset_inlineimm
|
||||
; GFX8: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX8-NEXT: $vgpr1, dead $sgpr4_sgpr5 = V_ADD_CO_U32_e64 32, killed $vgpr1, 0, implicit $exec
|
||||
; GFX8-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 68, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX8-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX900-LABEL: name: v_add_co_u32_e32__literal__fi_offset0__offset_inlineimm
|
||||
; GFX900: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX900-NEXT: $vgpr1 = V_ADD_U32_e32 32, killed $vgpr1, implicit $exec
|
||||
; GFX900-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 68, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX900-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX90A-LABEL: name: v_add_co_u32_e32__literal__fi_offset0__offset_inlineimm
|
||||
; GFX90A: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX90A-NEXT: $vgpr1 = V_ADD_U32_e32 32, killed $vgpr1, implicit $exec
|
||||
; GFX90A-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 68, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX90A-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX10-LABEL: name: v_add_co_u32_e32__literal__fi_offset0__offset_inlineimm
|
||||
; GFX10: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX10-NEXT: $vgpr1 = V_ADD_U32_e32 32, killed $vgpr1, implicit $exec
|
||||
; GFX10-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 68, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX10-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_co_u32_e32__literal__fi_offset0__offset_inlineimm
|
||||
; FLATSCRW64: $sgpr4 = S_ADD_I32 $sgpr32, 32, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 68, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
renamable $vgpr0 = V_ADD_CO_U32_e32 68, %stack.1, implicit-def $vcc, implicit $exec
|
||||
SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_co_u32_e32__vgpr__fi_offset0
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 4, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $vgpr1
|
||||
; MUBUFW64-LABEL: name: v_add_co_u32_e32__vgpr__fi_offset0
|
||||
; MUBUFW64: liveins: $vgpr1
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUFW64-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $vgpr1, killed $vgpr2, implicit-def $vcc, implicit $exec
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_co_u32_e32__vgpr__fi_offset0
|
||||
; FLATSCRW64: liveins: $vgpr1
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr32, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $vgpr1, killed $vgpr2, implicit-def $vcc, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
renamable $vgpr0 = V_ADD_CO_U32_e32 $vgpr1, %stack.0, implicit-def $vcc, implicit $exec
|
||||
SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_co_u32_e32__fi_offset0__vgpr
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 4, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $vgpr1
|
||||
; MUBUFW64-LABEL: name: v_add_co_u32_e32__fi_offset0__vgpr
|
||||
; MUBUFW64: liveins: $vgpr1
|
||||
; MUBUFW64-NEXT: {{ $}}
|
||||
; MUBUFW64-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUFW64-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 killed $vgpr2, $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_co_u32_e32__fi_offset0__vgpr
|
||||
; FLATSCRW64: liveins: $vgpr1
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $sgpr32, $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
renamable $vgpr0 = V_ADD_CO_U32_e32 %stack.0, $vgpr1, implicit-def $vcc, implicit $exec
|
||||
SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_co_u32_e32__vgpr__fi_literal_offset
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 128, alignment: 16 }
|
||||
- { id: 1, size: 4, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $vgpr1
|
||||
; GFX7-LABEL: name: v_add_co_u32_e32__vgpr__fi_literal_offset
|
||||
; GFX7: liveins: $vgpr1
|
||||
; GFX7-NEXT: {{ $}}
|
||||
; GFX7-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX7-NEXT: $sgpr4 = S_MOV_B32 128
|
||||
; GFX7-NEXT: $vgpr2, dead $sgpr4_sgpr5 = V_ADD_CO_U32_e64 killed $sgpr4, killed $vgpr2, 0, implicit $exec
|
||||
; GFX7-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $vgpr1, killed $vgpr2, implicit-def $vcc, implicit $exec
|
||||
; GFX7-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX8-LABEL: name: v_add_co_u32_e32__vgpr__fi_literal_offset
|
||||
; GFX8: liveins: $vgpr1
|
||||
; GFX8-NEXT: {{ $}}
|
||||
; GFX8-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX8-NEXT: $sgpr4 = S_MOV_B32 128
|
||||
; GFX8-NEXT: $vgpr2, dead $sgpr4_sgpr5 = V_ADD_CO_U32_e64 killed $sgpr4, killed $vgpr2, 0, implicit $exec
|
||||
; GFX8-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $vgpr1, killed $vgpr2, implicit-def $vcc, implicit $exec
|
||||
; GFX8-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX900-LABEL: name: v_add_co_u32_e32__vgpr__fi_literal_offset
|
||||
; GFX900: liveins: $vgpr1
|
||||
; GFX900-NEXT: {{ $}}
|
||||
; GFX900-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX900-NEXT: $vgpr2 = V_ADD_U32_e32 128, killed $vgpr2, implicit $exec
|
||||
; GFX900-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $vgpr1, killed $vgpr2, implicit-def $vcc, implicit $exec
|
||||
; GFX900-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX90A-LABEL: name: v_add_co_u32_e32__vgpr__fi_literal_offset
|
||||
; GFX90A: liveins: $vgpr1
|
||||
; GFX90A-NEXT: {{ $}}
|
||||
; GFX90A-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX90A-NEXT: $vgpr2 = V_ADD_U32_e32 128, killed $vgpr2, implicit $exec
|
||||
; GFX90A-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $vgpr1, killed $vgpr2, implicit-def $vcc, implicit $exec
|
||||
; GFX90A-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX10-LABEL: name: v_add_co_u32_e32__vgpr__fi_literal_offset
|
||||
; GFX10: liveins: $vgpr1
|
||||
; GFX10-NEXT: {{ $}}
|
||||
; GFX10-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX10-NEXT: $vgpr2 = V_ADD_U32_e32 128, killed $vgpr2, implicit $exec
|
||||
; GFX10-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $vgpr1, killed $vgpr2, implicit-def $vcc, implicit $exec
|
||||
; GFX10-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_co_u32_e32__vgpr__fi_literal_offset
|
||||
; FLATSCRW64: liveins: $vgpr1
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: $vgpr2 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $vgpr1, killed $vgpr2, implicit-def $vcc, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
renamable $vgpr0 = V_ADD_CO_U32_e32 $vgpr1, %stack.1, implicit-def $vcc, implicit $exec
|
||||
SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_co_u32_e32__fi_literal_offset__vgpr
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 128, alignment: 16 }
|
||||
- { id: 1, size: 4, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $vgpr1
|
||||
; GFX7-LABEL: name: v_add_co_u32_e32__fi_literal_offset__vgpr
|
||||
; GFX7: liveins: $vgpr1
|
||||
; GFX7-NEXT: {{ $}}
|
||||
; GFX7-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX7-NEXT: $sgpr4 = S_MOV_B32 128
|
||||
; GFX7-NEXT: $vgpr2, dead $sgpr4_sgpr5 = V_ADD_CO_U32_e64 killed $sgpr4, killed $vgpr2, 0, implicit $exec
|
||||
; GFX7-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 killed $vgpr2, $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX7-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX8-LABEL: name: v_add_co_u32_e32__fi_literal_offset__vgpr
|
||||
; GFX8: liveins: $vgpr1
|
||||
; GFX8-NEXT: {{ $}}
|
||||
; GFX8-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX8-NEXT: $sgpr4 = S_MOV_B32 128
|
||||
; GFX8-NEXT: $vgpr2, dead $sgpr4_sgpr5 = V_ADD_CO_U32_e64 killed $sgpr4, killed $vgpr2, 0, implicit $exec
|
||||
; GFX8-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 killed $vgpr2, $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX8-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX900-LABEL: name: v_add_co_u32_e32__fi_literal_offset__vgpr
|
||||
; GFX900: liveins: $vgpr1
|
||||
; GFX900-NEXT: {{ $}}
|
||||
; GFX900-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX900-NEXT: $vgpr2 = V_ADD_U32_e32 128, killed $vgpr2, implicit $exec
|
||||
; GFX900-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 killed $vgpr2, $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX900-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX90A-LABEL: name: v_add_co_u32_e32__fi_literal_offset__vgpr
|
||||
; GFX90A: liveins: $vgpr1
|
||||
; GFX90A-NEXT: {{ $}}
|
||||
; GFX90A-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX90A-NEXT: $vgpr2 = V_ADD_U32_e32 128, killed $vgpr2, implicit $exec
|
||||
; GFX90A-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 killed $vgpr2, $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX90A-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX10-LABEL: name: v_add_co_u32_e32__fi_literal_offset__vgpr
|
||||
; GFX10: liveins: $vgpr1
|
||||
; GFX10-NEXT: {{ $}}
|
||||
; GFX10-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX10-NEXT: $vgpr2 = V_ADD_U32_e32 128, killed $vgpr2, implicit $exec
|
||||
; GFX10-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 killed $vgpr2, $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX10-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_co_u32_e32__fi_literal_offset__vgpr
|
||||
; FLATSCRW64: liveins: $vgpr1
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 killed $sgpr4, $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
renamable $vgpr0 = V_ADD_CO_U32_e32 %stack.1, $vgpr1, implicit-def $vcc, implicit $exec
|
||||
SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_co_u32_e32__sgpr__fi_literal_offset
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 128, alignment: 16 }
|
||||
- { id: 1, size: 4, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; GFX7-LABEL: name: v_add_co_u32_e32__sgpr__fi_literal_offset
|
||||
; GFX7: liveins: $sgpr8
|
||||
; GFX7-NEXT: {{ $}}
|
||||
; GFX7-NEXT: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX7-NEXT: $sgpr4 = S_MOV_B32 128
|
||||
; GFX7-NEXT: $vgpr1, dead $sgpr4_sgpr5 = V_ADD_CO_U32_e64 killed $sgpr4, killed $vgpr1, 0, implicit $exec
|
||||
; GFX7-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $sgpr8, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX7-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX8-LABEL: name: v_add_co_u32_e32__sgpr__fi_literal_offset
|
||||
; GFX8: liveins: $sgpr8
|
||||
; GFX8-NEXT: {{ $}}
|
||||
; GFX8-NEXT: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX8-NEXT: $sgpr4 = S_MOV_B32 128
|
||||
; GFX8-NEXT: $vgpr1, dead $sgpr4_sgpr5 = V_ADD_CO_U32_e64 killed $sgpr4, killed $vgpr1, 0, implicit $exec
|
||||
; GFX8-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $sgpr8, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX8-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX900-LABEL: name: v_add_co_u32_e32__sgpr__fi_literal_offset
|
||||
; GFX900: liveins: $sgpr8
|
||||
; GFX900-NEXT: {{ $}}
|
||||
; GFX900-NEXT: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX900-NEXT: $vgpr1 = V_ADD_U32_e32 128, killed $vgpr1, implicit $exec
|
||||
; GFX900-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $sgpr8, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX900-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX90A-LABEL: name: v_add_co_u32_e32__sgpr__fi_literal_offset
|
||||
; GFX90A: liveins: $sgpr8
|
||||
; GFX90A-NEXT: {{ $}}
|
||||
; GFX90A-NEXT: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX90A-NEXT: $vgpr1 = V_ADD_U32_e32 128, killed $vgpr1, implicit $exec
|
||||
; GFX90A-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $sgpr8, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX90A-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX10-LABEL: name: v_add_co_u32_e32__sgpr__fi_literal_offset
|
||||
; GFX10: liveins: $sgpr8
|
||||
; GFX10-NEXT: {{ $}}
|
||||
; GFX10-NEXT: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX10-NEXT: $vgpr1 = V_ADD_U32_e32 128, killed $vgpr1, implicit $exec
|
||||
; GFX10-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $sgpr8, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; GFX10-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_co_u32_e32__sgpr__fi_literal_offset
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_CO_U32_e32 $sgpr8, killed $vgpr1, implicit-def $vcc, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
renamable $vgpr0 = V_ADD_CO_U32_e32 $sgpr8, %stack.1, implicit-def $vcc, implicit $exec
|
||||
SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_co_u32_e64__inline_imm__fi_offset0
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 4, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUFW64-LABEL: name: v_add_co_u32_e64__inline_imm__fi_offset0
|
||||
; MUBUFW64: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUFW64-NEXT: renamable $vgpr0, renamable $vcc = V_ADD_CO_U32_e64 12, killed $vgpr1, 0, implicit $exec
|
||||
; MUBUFW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_co_u32_e64__inline_imm__fi_offset0
|
||||
; FLATSCRW64: renamable $vgpr0, renamable $vcc = V_ADD_CO_U32_e64 12, $sgpr32, 0, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
renamable $vgpr0, renamable $vcc = V_ADD_CO_U32_e64 12, %stack.0, 0, implicit $exec
|
||||
SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_co_u32_e64__fi_literal_offset__sgpr
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 128, alignment: 16 }
|
||||
- { id: 1, size: 4, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; GFX7-LABEL: name: v_add_co_u32_e64__fi_literal_offset__sgpr
|
||||
; GFX7: liveins: $sgpr8
|
||||
; GFX7-NEXT: {{ $}}
|
||||
; GFX7-NEXT: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX7-NEXT: $sgpr4 = S_MOV_B32 128
|
||||
; GFX7-NEXT: $vgpr1, dead $sgpr4_sgpr5 = V_ADD_CO_U32_e64 killed $sgpr4, killed $vgpr1, 0, implicit $exec
|
||||
; GFX7-NEXT: renamable $vgpr0, renamable $vcc = V_ADD_CO_U32_e64 killed $vgpr1, $sgpr8, 0, implicit $exec
|
||||
; GFX7-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX8-LABEL: name: v_add_co_u32_e64__fi_literal_offset__sgpr
|
||||
; GFX8: liveins: $sgpr8
|
||||
; GFX8-NEXT: {{ $}}
|
||||
; GFX8-NEXT: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX8-NEXT: $sgpr4 = S_MOV_B32 128
|
||||
; GFX8-NEXT: $vgpr1, dead $sgpr4_sgpr5 = V_ADD_CO_U32_e64 killed $sgpr4, killed $vgpr1, 0, implicit $exec
|
||||
; GFX8-NEXT: renamable $vgpr0, renamable $vcc = V_ADD_CO_U32_e64 killed $vgpr1, $sgpr8, 0, implicit $exec
|
||||
; GFX8-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX900-LABEL: name: v_add_co_u32_e64__fi_literal_offset__sgpr
|
||||
; GFX900: liveins: $sgpr8
|
||||
; GFX900-NEXT: {{ $}}
|
||||
; GFX900-NEXT: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX900-NEXT: $vgpr1 = V_ADD_U32_e32 128, killed $vgpr1, implicit $exec
|
||||
; GFX900-NEXT: renamable $vgpr0, renamable $vcc = V_ADD_CO_U32_e64 killed $vgpr1, $sgpr8, 0, implicit $exec
|
||||
; GFX900-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX90A-LABEL: name: v_add_co_u32_e64__fi_literal_offset__sgpr
|
||||
; GFX90A: liveins: $sgpr8
|
||||
; GFX90A-NEXT: {{ $}}
|
||||
; GFX90A-NEXT: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX90A-NEXT: $vgpr1 = V_ADD_U32_e32 128, killed $vgpr1, implicit $exec
|
||||
; GFX90A-NEXT: renamable $vgpr0, renamable $vcc = V_ADD_CO_U32_e64 killed $vgpr1, $sgpr8, 0, implicit $exec
|
||||
; GFX90A-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX10-LABEL: name: v_add_co_u32_e64__fi_literal_offset__sgpr
|
||||
; GFX10: liveins: $sgpr8
|
||||
; GFX10-NEXT: {{ $}}
|
||||
; GFX10-NEXT: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; GFX10-NEXT: $vgpr1 = V_ADD_U32_e32 128, killed $vgpr1, implicit $exec
|
||||
; GFX10-NEXT: renamable $vgpr0, renamable $vcc = V_ADD_CO_U32_e64 killed $vgpr1, $sgpr8, 0, implicit $exec
|
||||
; GFX10-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX940-LABEL: name: v_add_co_u32_e64__fi_literal_offset__sgpr
|
||||
; GFX940: liveins: $sgpr8
|
||||
; GFX940-NEXT: {{ $}}
|
||||
; GFX940-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; GFX940-NEXT: renamable $vgpr0, renamable $vcc = V_ADD_CO_U32_e64 killed $vgpr1, $sgpr8, 0, implicit $exec
|
||||
; GFX940-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX11-LABEL: name: v_add_co_u32_e64__fi_literal_offset__sgpr
|
||||
; GFX11: liveins: $sgpr8
|
||||
; GFX11-NEXT: {{ $}}
|
||||
; GFX11-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; GFX11-NEXT: renamable $vgpr0, renamable $vcc = V_ADD_CO_U32_e64 killed $sgpr4, $sgpr8, 0, implicit $exec
|
||||
; GFX11-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
;
|
||||
; GFX12-LABEL: name: v_add_co_u32_e64__fi_literal_offset__sgpr
|
||||
; GFX12: liveins: $sgpr8
|
||||
; GFX12-NEXT: {{ $}}
|
||||
; GFX12-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; GFX12-NEXT: renamable $vgpr0, renamable $vcc = V_ADD_CO_U32_e64 killed $sgpr4, $sgpr8, 0, implicit $exec
|
||||
; GFX12-NEXT: SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
renamable $vgpr0, renamable $vcc = V_ADD_CO_U32_e64 %stack.1, $sgpr8, 0, implicit $exec
|
||||
SI_RETURN implicit $vgpr0, implicit $vcc
|
||||
|
||||
...
|
||||
469
llvm/test/CodeGen/AMDGPU/eliminate-frame-index-v-add-u32.mir
Normal file
469
llvm/test/CodeGen/AMDGPU/eliminate-frame-index-v-add-u32.mir
Normal file
@ -0,0 +1,469 @@
|
||||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUF %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUF %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW32 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=FLATSCRW64 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=FLATSCRW32 %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=FLATSCRW32 %s
|
||||
|
||||
---
|
||||
name: v_add_u32_e32__inline_imm__fi_offset0
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 4, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUF-LABEL: name: v_add_u32_e32__inline_imm__fi_offset0
|
||||
; MUBUF: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUF-NEXT: renamable $vgpr0 = V_ADD_U32_e32 12, killed $vgpr1, implicit $exec
|
||||
; MUBUF-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; MUBUFW32-LABEL: name: v_add_u32_e32__inline_imm__fi_offset0
|
||||
; MUBUFW32: $vgpr1 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec
|
||||
; MUBUFW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 12, killed $vgpr1, implicit $exec
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_u32_e32__inline_imm__fi_offset0
|
||||
; FLATSCRW64: $vgpr1 = V_MOV_B32_e32 $sgpr32, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_U32_e32 12, killed $vgpr1, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: v_add_u32_e32__inline_imm__fi_offset0
|
||||
; FLATSCRW32: $vgpr1 = V_MOV_B32_e32 $sgpr32, implicit $exec
|
||||
; FLATSCRW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 12, killed $vgpr1, implicit $exec
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
renamable $vgpr0 = V_ADD_U32_e32 12, %stack.0, implicit $exec
|
||||
SI_RETURN implicit $vgpr0
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_u32_e32__inline_imm___fi_offset_inline_imm
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 16, alignment: 16 }
|
||||
- { id: 1, size: 4, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUF-LABEL: name: v_add_u32_e32__inline_imm___fi_offset_inline_imm
|
||||
; MUBUF: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUF-NEXT: $vgpr1 = V_ADD_U32_e32 16, killed $vgpr1, implicit $exec
|
||||
; MUBUF-NEXT: renamable $vgpr0 = V_ADD_U32_e32 12, killed $vgpr1, implicit $exec
|
||||
; MUBUF-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; MUBUFW32-LABEL: name: v_add_u32_e32__inline_imm___fi_offset_inline_imm
|
||||
; MUBUFW32: $vgpr1 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec
|
||||
; MUBUFW32-NEXT: $vgpr1 = V_ADD_U32_e32 16, killed $vgpr1, implicit $exec
|
||||
; MUBUFW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 12, killed $vgpr1, implicit $exec
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_u32_e32__inline_imm___fi_offset_inline_imm
|
||||
; FLATSCRW64: $sgpr4 = S_ADD_I32 $sgpr32, 16, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_U32_e32 12, killed $vgpr1, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: v_add_u32_e32__inline_imm___fi_offset_inline_imm
|
||||
; FLATSCRW32: $sgpr4 = S_ADD_I32 $sgpr32, 16, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; FLATSCRW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 12, killed $vgpr1, implicit $exec
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
renamable $vgpr0 = V_ADD_U32_e32 12, %stack.1, implicit $exec
|
||||
SI_RETURN implicit $vgpr0
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_u32_e32__literal__fi_offset0
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 4, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUF-LABEL: name: v_add_u32_e32__literal__fi_offset0
|
||||
; MUBUF: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUF-NEXT: renamable $vgpr0 = V_ADD_U32_e32 68, killed $vgpr1, implicit $exec
|
||||
; MUBUF-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; MUBUFW32-LABEL: name: v_add_u32_e32__literal__fi_offset0
|
||||
; MUBUFW32: $vgpr1 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec
|
||||
; MUBUFW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 68, killed $vgpr1, implicit $exec
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_u32_e32__literal__fi_offset0
|
||||
; FLATSCRW64: $vgpr1 = V_MOV_B32_e32 $sgpr32, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_U32_e32 68, killed $vgpr1, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: v_add_u32_e32__literal__fi_offset0
|
||||
; FLATSCRW32: $vgpr1 = V_MOV_B32_e32 $sgpr32, implicit $exec
|
||||
; FLATSCRW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 68, killed $vgpr1, implicit $exec
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
renamable $vgpr0 = V_ADD_U32_e32 68, %stack.0, implicit $exec
|
||||
SI_RETURN implicit $vgpr0
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_u32_e32__literal__fi_offset0__offset_inlineimm
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 32, alignment: 16 }
|
||||
- { id: 1, size: 4, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUF-LABEL: name: v_add_u32_e32__literal__fi_offset0__offset_inlineimm
|
||||
; MUBUF: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUF-NEXT: $vgpr1 = V_ADD_U32_e32 32, killed $vgpr1, implicit $exec
|
||||
; MUBUF-NEXT: renamable $vgpr0 = V_ADD_U32_e32 68, killed $vgpr1, implicit $exec
|
||||
; MUBUF-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; MUBUFW32-LABEL: name: v_add_u32_e32__literal__fi_offset0__offset_inlineimm
|
||||
; MUBUFW32: $vgpr1 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec
|
||||
; MUBUFW32-NEXT: $vgpr1 = V_ADD_U32_e32 32, killed $vgpr1, implicit $exec
|
||||
; MUBUFW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 68, killed $vgpr1, implicit $exec
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_u32_e32__literal__fi_offset0__offset_inlineimm
|
||||
; FLATSCRW64: $sgpr4 = S_ADD_I32 $sgpr32, 32, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_U32_e32 68, killed $vgpr1, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: v_add_u32_e32__literal__fi_offset0__offset_inlineimm
|
||||
; FLATSCRW32: $sgpr4 = S_ADD_I32 $sgpr32, 32, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; FLATSCRW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 68, killed $vgpr1, implicit $exec
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
renamable $vgpr0 = V_ADD_U32_e32 68, %stack.1, implicit $exec
|
||||
SI_RETURN implicit $vgpr0
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_u32_e32__vgpr__fi_offset0
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 4, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $vgpr1
|
||||
; MUBUF-LABEL: name: v_add_u32_e32__vgpr__fi_offset0
|
||||
; MUBUF: liveins: $vgpr1
|
||||
; MUBUF-NEXT: {{ $}}
|
||||
; MUBUF-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUF-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $vgpr1, killed $vgpr2, implicit $exec
|
||||
; MUBUF-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; MUBUFW32-LABEL: name: v_add_u32_e32__vgpr__fi_offset0
|
||||
; MUBUFW32: liveins: $vgpr1
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $vgpr2 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec
|
||||
; MUBUFW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $vgpr1, killed $vgpr2, implicit $exec
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_u32_e32__vgpr__fi_offset0
|
||||
; FLATSCRW64: liveins: $vgpr1
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr32, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $vgpr1, killed $vgpr2, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: v_add_u32_e32__vgpr__fi_offset0
|
||||
; FLATSCRW32: liveins: $vgpr1
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr32, implicit $exec
|
||||
; FLATSCRW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $vgpr1, killed $vgpr2, implicit $exec
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
renamable $vgpr0 = V_ADD_U32_e32 $vgpr1, %stack.0, implicit $exec
|
||||
SI_RETURN implicit $vgpr0
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_u32_e32__fi_offset0__vgpr
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 4, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $vgpr1
|
||||
; MUBUF-LABEL: name: v_add_u32_e32__fi_offset0__vgpr
|
||||
; MUBUF: liveins: $vgpr1
|
||||
; MUBUF-NEXT: {{ $}}
|
||||
; MUBUF-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUF-NEXT: renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr2, $vgpr1, implicit $exec
|
||||
; MUBUF-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; MUBUFW32-LABEL: name: v_add_u32_e32__fi_offset0__vgpr
|
||||
; MUBUFW32: liveins: $vgpr1
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $vgpr2 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec
|
||||
; MUBUFW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr2, $vgpr1, implicit $exec
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_u32_e32__fi_offset0__vgpr
|
||||
; FLATSCRW64: liveins: $vgpr1
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $sgpr32, $vgpr1, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: v_add_u32_e32__fi_offset0__vgpr
|
||||
; FLATSCRW32: liveins: $vgpr1
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $sgpr32, $vgpr1, implicit $exec
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
renamable $vgpr0 = V_ADD_U32_e32 %stack.0, $vgpr1, implicit $exec
|
||||
SI_RETURN implicit $vgpr0
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_u32_e32__vgpr__fi_literal_offset
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 128, alignment: 16 }
|
||||
- { id: 1, size: 4, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $vgpr1
|
||||
; MUBUF-LABEL: name: v_add_u32_e32__vgpr__fi_literal_offset
|
||||
; MUBUF: liveins: $vgpr1
|
||||
; MUBUF-NEXT: {{ $}}
|
||||
; MUBUF-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUF-NEXT: $vgpr2 = V_ADD_U32_e32 128, killed $vgpr2, implicit $exec
|
||||
; MUBUF-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $vgpr1, killed $vgpr2, implicit $exec
|
||||
; MUBUF-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; MUBUFW32-LABEL: name: v_add_u32_e32__vgpr__fi_literal_offset
|
||||
; MUBUFW32: liveins: $vgpr1
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $vgpr2 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec
|
||||
; MUBUFW32-NEXT: $vgpr2 = V_ADD_U32_e32 128, killed $vgpr2, implicit $exec
|
||||
; MUBUFW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $vgpr1, killed $vgpr2, implicit $exec
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_u32_e32__vgpr__fi_literal_offset
|
||||
; FLATSCRW64: liveins: $vgpr1
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: $vgpr2 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $vgpr1, killed $vgpr2, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: v_add_u32_e32__vgpr__fi_literal_offset
|
||||
; FLATSCRW32: liveins: $vgpr1
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: $vgpr2 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; FLATSCRW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $vgpr1, killed $vgpr2, implicit $exec
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
renamable $vgpr0 = V_ADD_U32_e32 $vgpr1, %stack.1, implicit $exec
|
||||
SI_RETURN implicit $vgpr0
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_u32_e32__fi_literal_offset__vgpr
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 128, alignment: 16 }
|
||||
- { id: 1, size: 4, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $vgpr1
|
||||
; MUBUF-LABEL: name: v_add_u32_e32__fi_literal_offset__vgpr
|
||||
; MUBUF: liveins: $vgpr1
|
||||
; MUBUF-NEXT: {{ $}}
|
||||
; MUBUF-NEXT: $vgpr2 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUF-NEXT: $vgpr2 = V_ADD_U32_e32 128, killed $vgpr2, implicit $exec
|
||||
; MUBUF-NEXT: renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr2, $vgpr1, implicit $exec
|
||||
; MUBUF-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; MUBUFW32-LABEL: name: v_add_u32_e32__fi_literal_offset__vgpr
|
||||
; MUBUFW32: liveins: $vgpr1
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $vgpr2 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec
|
||||
; MUBUFW32-NEXT: $vgpr2 = V_ADD_U32_e32 128, killed $vgpr2, implicit $exec
|
||||
; MUBUFW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr2, $vgpr1, implicit $exec
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_u32_e32__fi_literal_offset__vgpr
|
||||
; FLATSCRW64: liveins: $vgpr1
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_U32_e32 killed $sgpr4, $vgpr1, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: v_add_u32_e32__fi_literal_offset__vgpr
|
||||
; FLATSCRW32: liveins: $vgpr1
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 killed $sgpr4, $vgpr1, implicit $exec
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
renamable $vgpr0 = V_ADD_U32_e32 %stack.1, $vgpr1, implicit $exec
|
||||
SI_RETURN implicit $vgpr0
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_u32_e32__sgpr__fi_literal_offset
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 128, alignment: 16 }
|
||||
- { id: 1, size: 4, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUF-LABEL: name: v_add_u32_e32__sgpr__fi_literal_offset
|
||||
; MUBUF: liveins: $sgpr8
|
||||
; MUBUF-NEXT: {{ $}}
|
||||
; MUBUF-NEXT: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUF-NEXT: $vgpr1 = V_ADD_U32_e32 128, killed $vgpr1, implicit $exec
|
||||
; MUBUF-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $sgpr8, killed $vgpr1, implicit $exec
|
||||
; MUBUF-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; MUBUFW32-LABEL: name: v_add_u32_e32__sgpr__fi_literal_offset
|
||||
; MUBUFW32: liveins: $sgpr8
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $vgpr1 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec
|
||||
; MUBUFW32-NEXT: $vgpr1 = V_ADD_U32_e32 128, killed $vgpr1, implicit $exec
|
||||
; MUBUFW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $sgpr8, killed $vgpr1, implicit $exec
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_u32_e32__sgpr__fi_literal_offset
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $sgpr8, killed $vgpr1, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: v_add_u32_e32__sgpr__fi_literal_offset
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; FLATSCRW32-NEXT: renamable $vgpr0 = V_ADD_U32_e32 $sgpr8, killed $vgpr1, implicit $exec
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
renamable $vgpr0 = V_ADD_U32_e32 $sgpr8, %stack.1, implicit $exec
|
||||
SI_RETURN implicit $vgpr0
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_u32_e64__inline_imm__fi_offset0
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 4, alignment: 16 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
; MUBUF-LABEL: name: v_add_u32_e64__inline_imm__fi_offset0
|
||||
; MUBUF: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUF-NEXT: renamable $vgpr0 = V_ADD_U32_e64 12, killed $vgpr1, 0, implicit $exec
|
||||
; MUBUF-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; MUBUFW32-LABEL: name: v_add_u32_e64__inline_imm__fi_offset0
|
||||
; MUBUFW32: $vgpr1 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec
|
||||
; MUBUFW32-NEXT: renamable $vgpr0 = V_ADD_U32_e64 12, killed $vgpr1, 0, implicit $exec
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_u32_e64__inline_imm__fi_offset0
|
||||
; FLATSCRW64: renamable $vgpr0 = V_ADD_U32_e64 12, $sgpr32, 0, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: v_add_u32_e64__inline_imm__fi_offset0
|
||||
; FLATSCRW32: renamable $vgpr0 = V_ADD_U32_e64 12, $sgpr32, 0, implicit $exec
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
renamable $vgpr0 = V_ADD_U32_e64 12, %stack.0, 0, implicit $exec
|
||||
SI_RETURN implicit $vgpr0
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
name: v_add_u32_e64__fi_literal_offset__sgpr
|
||||
tracksRegLiveness: true
|
||||
stack:
|
||||
- { id: 0, size: 128, alignment: 16 }
|
||||
- { id: 1, size: 4, alignment: 4 }
|
||||
machineFunctionInfo:
|
||||
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
||||
frameOffsetReg: '$sgpr33'
|
||||
stackPtrOffsetReg: '$sgpr32'
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: $sgpr8
|
||||
; MUBUF-LABEL: name: v_add_u32_e64__fi_literal_offset__sgpr
|
||||
; MUBUF: liveins: $sgpr8
|
||||
; MUBUF-NEXT: {{ $}}
|
||||
; MUBUF-NEXT: $vgpr1 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec
|
||||
; MUBUF-NEXT: $vgpr1 = V_ADD_U32_e32 128, killed $vgpr1, implicit $exec
|
||||
; MUBUF-NEXT: renamable $vgpr0 = V_ADD_U32_e64 killed $vgpr1, $sgpr8, 0, implicit $exec
|
||||
; MUBUF-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; MUBUFW32-LABEL: name: v_add_u32_e64__fi_literal_offset__sgpr
|
||||
; MUBUFW32: liveins: $sgpr8
|
||||
; MUBUFW32-NEXT: {{ $}}
|
||||
; MUBUFW32-NEXT: $vgpr1 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec
|
||||
; MUBUFW32-NEXT: $vgpr1 = V_ADD_U32_e32 128, killed $vgpr1, implicit $exec
|
||||
; MUBUFW32-NEXT: renamable $vgpr0 = V_ADD_U32_e64 killed $vgpr1, $sgpr8, 0, implicit $exec
|
||||
; MUBUFW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW64-LABEL: name: v_add_u32_e64__fi_literal_offset__sgpr
|
||||
; FLATSCRW64: liveins: $sgpr8
|
||||
; FLATSCRW64-NEXT: {{ $}}
|
||||
; FLATSCRW64-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; FLATSCRW64-NEXT: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
|
||||
; FLATSCRW64-NEXT: renamable $vgpr0 = V_ADD_U32_e64 killed $vgpr1, $sgpr8, 0, implicit $exec
|
||||
; FLATSCRW64-NEXT: SI_RETURN implicit $vgpr0
|
||||
;
|
||||
; FLATSCRW32-LABEL: name: v_add_u32_e64__fi_literal_offset__sgpr
|
||||
; FLATSCRW32: liveins: $sgpr8
|
||||
; FLATSCRW32-NEXT: {{ $}}
|
||||
; FLATSCRW32-NEXT: $sgpr4 = S_ADD_I32 $sgpr32, 128, implicit-def $scc
|
||||
; FLATSCRW32-NEXT: renamable $vgpr0 = V_ADD_U32_e64 killed $sgpr4, $sgpr8, 0, implicit $exec
|
||||
; FLATSCRW32-NEXT: SI_RETURN implicit $vgpr0
|
||||
renamable $vgpr0 = V_ADD_U32_e64 %stack.1, $sgpr8, 0, implicit $exec
|
||||
SI_RETURN implicit $vgpr0
|
||||
|
||||
...
|
||||
Loading…
x
Reference in New Issue
Block a user