2016-09-03 03:48:55 +08:00
|
|
|
# RUN: llc -march=amdgcn -run-pass simple-register-coalescing -o - %s | FileCheck %s
|
|
|
|
# Check that %11 and %20 have been coalesced.
|
|
|
|
# CHECK: IMAGE_SAMPLE_C_D_O_V1_V16 %[[REG:[0-9]+]]
|
|
|
|
# CHECK: IMAGE_SAMPLE_C_D_O_V1_V16 %[[REG]]
|
|
|
|
|
|
|
|
---
|
|
|
|
name: main
|
[Alignment] Use llvm::Align in MachineFunction and TargetLowering - fixes mir parsing
Summary:
This catches malformed mir files which specify alignment as log2 instead of pow2.
See https://reviews.llvm.org/D65945 for reference,
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790
Reviewers: courbet
Subscribers: MatzeB, qcolombet, dschuff, arsenm, sdardis, nemanjai, jvesely, nhaehnle, hiraditya, kbarton, asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, atanasyan, rogfer01, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, jsji, Petar.Avramovic, asbirlea, s.egerton, pzheng, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67433
llvm-svn: 371608
2019-09-11 19:16:48 +08:00
|
|
|
alignment: 1
|
2016-09-03 03:48:55 +08:00
|
|
|
tracksRegLiveness: true
|
|
|
|
registers:
|
|
|
|
- { id: 0, class: sreg_64 }
|
|
|
|
- { id: 1, class: vgpr_32 }
|
|
|
|
- { id: 2, class: vgpr_32 }
|
2020-04-22 18:08:08 +08:00
|
|
|
- { id: 3, class: sgpr_256 }
|
2019-10-10 15:11:33 +08:00
|
|
|
- { id: 4, class: sgpr_128 }
|
2020-04-22 18:08:08 +08:00
|
|
|
- { id: 5, class: sgpr_256 }
|
2019-10-10 15:11:33 +08:00
|
|
|
- { id: 6, class: sgpr_128 }
|
2020-04-22 18:08:08 +08:00
|
|
|
- { id: 7, class: sgpr_512 }
|
2016-09-03 03:48:55 +08:00
|
|
|
- { id: 9, class: vreg_512 }
|
|
|
|
- { id: 11, class: vreg_512 }
|
|
|
|
- { id: 18, class: vgpr_32 }
|
|
|
|
- { id: 20, class: vreg_512 }
|
|
|
|
- { id: 27, class: vgpr_32 }
|
|
|
|
liveins:
|
2018-02-01 06:04:26 +08:00
|
|
|
- { reg: '$sgpr2_sgpr3', virtual-reg: '%0' }
|
|
|
|
- { reg: '$vgpr2', virtual-reg: '%1' }
|
|
|
|
- { reg: '$vgpr3', virtual-reg: '%2' }
|
2016-09-03 03:48:55 +08:00
|
|
|
frameInfo:
|
|
|
|
isFrameAddressTaken: false
|
|
|
|
isReturnAddressTaken: false
|
|
|
|
hasStackMap: false
|
|
|
|
hasPatchPoint: false
|
|
|
|
stackSize: 0
|
|
|
|
offsetAdjustment: 0
|
|
|
|
maxAlignment: 0
|
|
|
|
adjustsStack: false
|
|
|
|
hasCalls: false
|
|
|
|
maxCallFrameSize: 0
|
|
|
|
hasOpaqueSPAdjustment: false
|
|
|
|
hasVAStart: false
|
|
|
|
hasMustTailInVarArgFunc: false
|
|
|
|
body: |
|
|
|
|
bb.0:
|
2018-02-01 06:04:26 +08:00
|
|
|
liveins: $sgpr2_sgpr3, $vgpr2, $vgpr3
|
2016-09-03 03:48:55 +08:00
|
|
|
|
2018-02-01 06:04:26 +08:00
|
|
|
%0 = COPY $sgpr2_sgpr3
|
|
|
|
%1 = COPY $vgpr2
|
|
|
|
%2 = COPY $vgpr3
|
2019-05-01 06:08:23 +08:00
|
|
|
%3 = S_LOAD_DWORDX8_IMM %0, 0, 0, 0
|
|
|
|
%4 = S_LOAD_DWORDX4_IMM %0, 12, 0, 0
|
|
|
|
%5 = S_LOAD_DWORDX8_IMM %0, 16, 0, 0
|
|
|
|
%6 = S_LOAD_DWORDX4_IMM %0, 28, 0, 0
|
2016-09-03 03:48:55 +08:00
|
|
|
undef %7.sub0 = S_MOV_B32 212739
|
|
|
|
%20 = COPY %7
|
|
|
|
%11 = COPY %20
|
|
|
|
%11.sub1 = COPY %1
|
|
|
|
%11.sub2 = COPY %1
|
|
|
|
%11.sub3 = COPY %1
|
|
|
|
%11.sub4 = COPY %1
|
|
|
|
%11.sub5 = COPY %1
|
|
|
|
%11.sub6 = COPY %1
|
|
|
|
%11.sub7 = COPY %1
|
|
|
|
%11.sub8 = COPY %1
|
AMDGPU: Turn D16 for MIMG instructions into a regular operand
Summary:
This allows us to reduce the number of different machine instruction
opcodes, which reduces the table sizes and helps flatten the TableGen
multiclass hierarchies.
We can do this because for each hardware MIMG opcode, we have a full set
of IMAGE_xxx_Vn_Vm machine instructions for all required sizes of vdata
and vaddr registers. Instead of having separate D16 machine instructions,
a packed D16 instructions loading e.g. 4 components can simply use the
same V2 opcode variant that non-D16 instructions use.
We still require a TSFlag for D16 buffer instructions, because the
D16-ness of buffer instructions is part of the opcode. Renaming the flag
should help avoid future confusion.
The one non-obvious code change is that for gather4 instructions, the
disassembler can no longer automatically decide whether to use a V2 or
a V4 variant. The existing logic which choose the correct variant for
other MIMG instruction is extended to cover gather4 as well.
As a bonus, some of the assembler error messages are now more helpful
(e.g., complaining about a wrong data size instead of a non-existing
instruction).
While we're at it, delete a whole bunch of dead legacy TableGen code.
Change-Id: I89b02c2841c06f95e662541433e597f5d4553978
Reviewers: arsenm, rampitec, kzhuravl, artem.tamazov, dp, rtaylor
Subscribers: wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits
Differential Revision: https://reviews.llvm.org/D47434
llvm-svn: 335222
2018-06-21 21:36:01 +08:00
|
|
|
dead %18 = IMAGE_SAMPLE_C_D_O_V1_V16 %11, %3, %4, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec
|
2016-09-03 03:48:55 +08:00
|
|
|
%20.sub1 = COPY %2
|
|
|
|
%20.sub2 = COPY %2
|
|
|
|
%20.sub3 = COPY %2
|
|
|
|
%20.sub4 = COPY %2
|
|
|
|
%20.sub5 = COPY %2
|
|
|
|
%20.sub6 = COPY %2
|
|
|
|
%20.sub7 = COPY %2
|
|
|
|
%20.sub8 = COPY %2
|
AMDGPU: Turn D16 for MIMG instructions into a regular operand
Summary:
This allows us to reduce the number of different machine instruction
opcodes, which reduces the table sizes and helps flatten the TableGen
multiclass hierarchies.
We can do this because for each hardware MIMG opcode, we have a full set
of IMAGE_xxx_Vn_Vm machine instructions for all required sizes of vdata
and vaddr registers. Instead of having separate D16 machine instructions,
a packed D16 instructions loading e.g. 4 components can simply use the
same V2 opcode variant that non-D16 instructions use.
We still require a TSFlag for D16 buffer instructions, because the
D16-ness of buffer instructions is part of the opcode. Renaming the flag
should help avoid future confusion.
The one non-obvious code change is that for gather4 instructions, the
disassembler can no longer automatically decide whether to use a V2 or
a V4 variant. The existing logic which choose the correct variant for
other MIMG instruction is extended to cover gather4 as well.
As a bonus, some of the assembler error messages are now more helpful
(e.g., complaining about a wrong data size instead of a non-existing
instruction).
While we're at it, delete a whole bunch of dead legacy TableGen code.
Change-Id: I89b02c2841c06f95e662541433e597f5d4553978
Reviewers: arsenm, rampitec, kzhuravl, artem.tamazov, dp, rtaylor
Subscribers: wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits
Differential Revision: https://reviews.llvm.org/D47434
llvm-svn: 335222
2018-06-21 21:36:01 +08:00
|
|
|
dead %27 = IMAGE_SAMPLE_C_D_O_V1_V16 %20, %5, %6, 1, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec
|
2016-09-03 03:48:55 +08:00
|
|
|
|
|
|
|
...
|