Revision tags: llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1 |
|
#
cda23c07 |
| 27-Jul-2023 |
Reid Kleckner <rnk@google.com> |
[PPC] Fix layering issues between MCTargetDesc and CodeGen
See issue #64166 for more information about the layering issue.
The PPCMCTargetDesc library was including CodeGen headers such as PPCInstr
[PPC] Fix layering issues between MCTargetDesc and CodeGen
See issue #64166 for more information about the layering issue.
The PPCMCTargetDesc library was including CodeGen headers such as PPCInstrInfo.h and calling inline functions in them. This doesn't work in the Bazel build, and is error-prone. If the inline function moves to a cpp file, it will result in linker errors.
To address the issue, I moved several inline functions to PPCMCTargetDesc.cpp, and declared them in the PPC namespace in PPCMCTargetDesc.h, which seemed like the most straightforward fix.
Differential Revision: https://reviews.llvm.org/D156488
show more ...
|
#
186b2b48 |
| 03-Aug-2023 |
Jay Foad <jay.foad@amd.com> |
[PEI] Switch to backwards frame index elimination by default
Also rename the flag from supportsBackwardScavenger to eliminateFrameIndicesBackwards to reflect what it actually does.
X86 is the only
[PEI] Switch to backwards frame index elimination by default
Also rename the flag from supportsBackwardScavenger to eliminateFrameIndicesBackwards to reflect what it actually does.
X86 is the only target still using forwards frame index elimination. This will not block removing support for forwards register scavenging, because X86 does not use the register scavenger.
Differential Revision: https://reviews.llvm.org/D156983
show more ...
|
Revision tags: llvmorg-18-init, llvmorg-16.0.6 |
|
#
eaca8c2e |
| 08-Jun-2023 |
Jay Foad <jay.foad@amd.com> |
[PEI][PowerPC] Switch to backwards frame index elimination
This adds support for reprocessing new instructions that were generated by the target's eliminateFrameIndex.
Backwards frame index elimina
[PEI][PowerPC] Switch to backwards frame index elimination
This adds support for reprocessing new instructions that were generated by the target's eliminateFrameIndex.
Backwards frame index elimination uses backwards register scavenging, which is preferred because it does not rely on accurate kill flags.
Differential Revision: https://reviews.llvm.org/D156690
show more ...
|
Revision tags: llvmorg-16.0.5 |
|
#
6006d43e |
| 24-May-2023 |
Craig Topper <craig.topper@sifive.com> |
LLVM_FALLTHROUGH => [[fallthrough]]. NFC
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D150996
|
Revision tags: llvmorg-16.0.4, llvmorg-16.0.3 |
|
#
c74aec99 |
| 01-May-2023 |
Stefan Pintilie <stefanp@ca.ibm.com> |
[PowerPC] Implement DFP add and sub instructions.
Add the following Decimal Floating Point (DFP) instructions for PowerPC. dadd, daddq, dsub, dsubq
In order to add these instructions a new register
[PowerPC] Implement DFP add and sub instructions.
Add the following Decimal Floating Point (DFP) instructions for PowerPC. dadd, daddq, dsub, dsubq
In order to add these instructions a new register class for a pair of floating point registers is added.
This patch is only to allow the user to specify the instructions in assembly. There is no scheduling or patterns for the instructions.
Reviewed By: amyk
Differential Revision: https://reviews.llvm.org/D148597
show more ...
|
Revision tags: llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6 |
|
#
1ac6956b |
| 22-Nov-2022 |
Stefan Pintilie <stefanp@ca.ibm.com> |
[PowerPC] Add handling for WACC register spilling.
This patch adds spilling for the new WACC registers.
In order to get the spilling test to work the MMA instructions from Power 10 are now supporte
[PowerPC] Add handling for WACC register spilling.
This patch adds spilling for the new WACC registers.
In order to get the spilling test to work the MMA instructions from Power 10 are now supported for Future CPU except that they are all using the new WACC registers instead of the ACC registers from Power 10.
Reviewed By: amyk, saghir
Differential Revision: https://reviews.llvm.org/D136728
show more ...
|
#
32bd7571 |
| 17-Nov-2022 |
Alexander Timofeev <alexander.timofeev@amd.com> |
PEI should be able to use backward walk in replaceFrameIndicesBackward.
The backward register scavenger has correct register liveness information. PEI should leverage the backward register scavenger
PEI should be able to use backward walk in replaceFrameIndicesBackward.
The backward register scavenger has correct register liveness information. PEI should leverage the backward register scavenger.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D137574
show more ...
|
Revision tags: llvmorg-15.0.5 |
|
#
9df924a6 |
| 02-Nov-2022 |
Stefan Pintilie <stefanp@ca.ibm.com> |
[PowerPC] Add new DMR register classes to Future CPU.
A new register class as well as a number of related subregisters are being added to Future CPU. These registers are Dense Math Registers (DMR) a
[PowerPC] Add new DMR register classes to Future CPU.
A new register class as well as a number of related subregisters are being added to Future CPU. These registers are Dense Math Registers (DMR) and are 1024 bits long. These regsiters can also be used in consecutive pairs which leads to a register that is 2048 bits.
This patch also adds 7 new instructions that use these registers. More instructions will be added in future patches.
Reviewed By: amyk, saghir
Differential Revision: https://reviews.llvm.org/D136366
show more ...
|
Revision tags: llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6 |
|
#
e09f6ff3 |
| 20-Jun-2022 |
Nemanja Ivanovic <nemanja.i.ibm@gmail.com> |
[PowerPC] Disable automatic generation of STXVP
There are instances where using paired vector stores leads to significant performance degradation due to issues with store forwarding.To avoid falling
[PowerPC] Disable automatic generation of STXVP
There are instances where using paired vector stores leads to significant performance degradation due to issues with store forwarding.To avoid falling into this trap with compiler - generated code, we will not emit these instructions unless the user requests them explicitly(with a builtin or by specifying the option).
Reviewed By : lei, amyk, saghir
Differential Revision: https://reviews.llvm.org/D127218
show more ...
|
Revision tags: llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
#
6a028296 |
| 29-Nov-2021 |
Quinn Pham <quinn.pham@ibm.com> |
[PowerPC] Emit warning when SP is clobbered by asm
This patch emits a warning when the stack pointer register (`R1`) is found in the clobber list of an inline asm statement. Clobbering the stack poi
[PowerPC] Emit warning when SP is clobbered by asm
This patch emits a warning when the stack pointer register (`R1`) is found in the clobber list of an inline asm statement. Clobbering the stack pointer is not supported.
Reviewed By: #powerpc, nemanjai
Differential Revision: https://reviews.llvm.org/D112073
show more ...
|
#
9c4b49db |
| 11-Jan-2022 |
Nick Desaulniers <ndesaulniers@google.com> |
[ShrinkWrap] check for PPC's non-callee-saved LR
As pointed out in https://reviews.llvm.org/D115688#inline-1108193, we don't want to sink the save point past an INLINEASM_BR, otherwise prologepilog
[ShrinkWrap] check for PPC's non-callee-saved LR
As pointed out in https://reviews.llvm.org/D115688#inline-1108193, we don't want to sink the save point past an INLINEASM_BR, otherwise prologepilog may incorrectly sink a prolog past the MBB containing an INLINEASM_BR and into the wrong MBB.
ShrinkWrap is getting this wrong because LR is not in the list of callee saved registers. Specifically, ShrinkWrap::useOrDefCSROrFI calls RegisterClassInfo::getLastCalleeSavedAlias which reads CalleeSavedAliases which was populated by RegisterClassInfo::runOnMachineFunction by iterating the list of MCPhysReg returned from MachineRegisterInfo::getCalleeSavedRegs.
Because PPC's LR is non-allocatable, it's NOT considered callee saved. Add an interface to TargetRegisterInfo for such a case and use it in Shrinkwrap to ensure we don't sink a prolog past an INLINEASM or INLINEASM_BR that clobbers LR.
Reviewed By: jyknight, efriedma, nemanjai, #powerpc
Differential Revision: https://reviews.llvm.org/D116424
show more ...
|
Revision tags: llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2 |
|
#
5ca250a0 |
| 18-Aug-2021 |
Qiu Chaofan <qiucofan@cn.ibm.com> |
[RegAlloc] Remove addAllocPriorityToGlobalRanges hook
It was introduced in 1a6dc92 and only enabled on PowerPC/AMDGPU. That should be enabled for all targets.
Reviewed By: arsenm
Differential Revi
[RegAlloc] Remove addAllocPriorityToGlobalRanges hook
It was introduced in 1a6dc92 and only enabled on PowerPC/AMDGPU. That should be enabled for all targets.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D108010
show more ...
|
Revision tags: llvmorg-13.0.0-rc1, llvmorg-14-init |
|
#
1a6dc92b |
| 12-Jul-2021 |
Stefan Pintilie <stefanp@ca.ibm.com> |
[PowerPC] Inefficient register allocation of ACC registers results in many copies.
ACC registers are a combination of four consecutive vector registers. If the vector registers are assigned first th
[PowerPC] Inefficient register allocation of ACC registers results in many copies.
ACC registers are a combination of four consecutive vector registers. If the vector registers are assigned first this often forces a number of copies to appear just before the ACC register is created. If the ACC register is assigned first then fewer copies are generated when the vector registers are assigned.
This patch tries to force the register allocator to assign the ACC registers first and then the UACC registers and then the vector pair registers. It does this by changing the priority of the register classes.
This patch also adds hints to help the register allocator assign UACC registers from known ACC registers and vector pair registers from known UACC registers.
Reviewed By: nemanjai
Differential Revision: https://reviews.llvm.org/D105854
show more ...
|
Revision tags: llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2 |
|
#
1c450c3d |
| 15-Jun-2021 |
Kai Luo <lkail@cn.ibm.com> |
[PowerPC] Export 16 byte load-store instructions
Export `lq`, `stq`, `lqarx` and `stqcx.` in preparation for implementing 16-byte lock free atomic operations on AIX. Add a new register class `g8prc`
[PowerPC] Export 16 byte load-store instructions
Export `lq`, `stq`, `lqarx` and `stqcx.` in preparation for implementing 16-byte lock free atomic operations on AIX. Add a new register class `g8prc` for these instructions, since these instructions require even-odd register pair.
Reviewed By: nemanjai, jsji, #powerpc
Differential Revision: https://reviews.llvm.org/D103010
show more ...
|
Revision tags: llvmorg-12.0.1-rc1 |
|
#
54310fc1 |
| 13-May-2021 |
Stefan Pintilie <stefanp@ca.ibm.com> |
[PowerPC] Add ROP Protection to prologue and epilogue
Added hashst to the prologue and hashchk to the epilogue. The hash for the prologue and epilogue must always be stored as the first element in t
[PowerPC] Add ROP Protection to prologue and epilogue
Added hashst to the prologue and hashchk to the epilogue. The hash for the prologue and epilogue must always be stored as the first element in the local variable space on the stack.
Reviewed By: nemanjai, #powerpc
Differential Revision: https://reviews.llvm.org/D99377
show more ...
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init |
|
#
607bec0b |
| 22-Jan-2021 |
Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> |
Change materializeFrameBaseRegister() to return register
The only caller of this function is in the LocalStackSlotAllocation and it creates base register of class returned by the target's getPointer
Change materializeFrameBaseRegister() to return register
The only caller of this function is in the LocalStackSlotAllocation and it creates base register of class returned by the target's getPointerRegClass(). AMDGPU wants to use a different reg class here so let materializeFrameBaseRegister to just create and return whatever it wants.
Differential Revision: https://reviews.llvm.org/D95268
show more ...
|
Revision tags: llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1 |
|
#
37c4ac85 |
| 02-Nov-2020 |
Baptiste Saleil <baptiste.saleil@ibm.com> |
[PowerPC] Accumulator/Unprimed Accumulator register copy, spill and restore
This patch adds support for accumulator/unprimed accumulator register copy, spill and restore for MMA.
Authored By: Bapti
[PowerPC] Accumulator/Unprimed Accumulator register copy, spill and restore
This patch adds support for accumulator/unprimed accumulator register copy, spill and restore for MMA.
Authored By: Baptiste Saleil
Reviewed By: #powerpc, bsaleil, amyk
Differential Revision: https://reviews.llvm.org/D90616
show more ...
|
Revision tags: llvmorg-11.0.0, llvmorg-11.0.0-rc6 |
|
#
dfb717da |
| 30-Sep-2020 |
Sean Fertile <sd.fertile@gmail.com> |
[PowerPC] Remove support for VRSAVE save/restore/update.
After removal of Darwin as a PowerPC subtarget, the VRSAVE save/restore/spill/update code is no longer needed by any supported subtarget, so
[PowerPC] Remove support for VRSAVE save/restore/update.
After removal of Darwin as a PowerPC subtarget, the VRSAVE save/restore/spill/update code is no longer needed by any supported subtarget, so remove it while keeping support for vrsave and related instruction aliases for inline asm. I've pre-commited tests to document the existing vrsave handling in relation to @llvm.eh.unwind.init and inline asm usage, as well as a test which shows a beahviour change on AIX related to returning vector type as we were wrongly emiting VRSAVE_UPDATE on AIX.
show more ...
|
Revision tags: llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4 |
|
#
9b86b700 |
| 25-Sep-2020 |
Baptiste Saleil <baptiste.saleil@ibm.com> |
[PowerPC] Add accumulator register class and instructions
This patch adds the xxmfacc, xxmtacc and xxsetaccz instructions to manipulate accumulator registers. It also adds the ACC register class def
[PowerPC] Add accumulator register class and instructions
This patch adds the xxmfacc, xxmtacc and xxsetaccz instructions to manipulate accumulator registers. It also adds the ACC register class definition for the accumulator registers.
Differential Revision: https://reviews.llvm.org/D84847
show more ...
|
Revision tags: llvmorg-11.0.0-rc3 |
|
#
1372e23c |
| 21-Sep-2020 |
Baptiste Saleil <baptiste.saleil@ibm.com> |
[PowerPC] Add vector pair load/store instructions and vector pair register class
This patch adds support for the lxvp, lxvpx, plxvp, stxvp, stxvpx and pstxvp instructions in the PowerPC backend. The
[PowerPC] Add vector pair load/store instructions and vector pair register class
This patch adds support for the lxvp, lxvpx, plxvp, stxvp, stxvpx and pstxvp instructions in the PowerPC backend. These instructions allow loading and storing VSX register pairs. This patch also adds the VSRp register class definition needed for these instructions.
Differential Revision: https://reviews.llvm.org/D84359
show more ...
|
Revision tags: llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1 |
|
#
d28f8672 |
| 28-Jul-2020 |
Jinsong Ji <jji@us.ibm.com> |
Re-land "[PowerPC] Remove QPX/A2Q BGQ/BGP CNK support"
This reverts commit bf544fa1c3cb80f24d85e84559fb11193846259f.
Fixed the typo in PPCInstrInfo.cpp.
|
#
bf544fa1 |
| 27-Jul-2020 |
Jinsong Ji <jji@us.ibm.com> |
Revert "[PowerPC] Remove QPX/A2Q BGQ/BGP CNK support"
This reverts commit adffce71538e219aab4eeb024819baa7687262ff.
This is breaking test-suite, revert while investigation.
|
#
adffce71 |
| 27-Jul-2020 |
Jinsong Ji <jji@us.ibm.com> |
[PowerPC] Remove QPX/A2Q BGQ/BGP CNK support
Per RFC http://lists.llvm.org/pipermail/llvm-dev/2020-April/141295.html no one is making use of QPX/A2Q/BGQ/BGP CNK anymore.
This patch remove the suppo
[PowerPC] Remove QPX/A2Q BGQ/BGP CNK support
Per RFC http://lists.llvm.org/pipermail/llvm-dev/2020-April/141295.html no one is making use of QPX/A2Q/BGQ/BGP CNK anymore.
This patch remove the support of QPX/A2Q in llvm, BGQ/BGP in clang, CNK support in openmp/polly.
Reviewed By: hfinkel
Differential Revision: https://reviews.llvm.org/D83915
show more ...
|
Revision tags: llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3 |
|
#
03828e38 |
| 03-Jul-2020 |
Kai Luo <lkail@cn.ibm.com> |
[PowerPC] Implement probing for dynamic stack allocation
This patch is part of supporting `-fstack-clash-protection`. Mainly do such things compared to existing `lowerDynamicAlloc`
- Added a new ps
[PowerPC] Implement probing for dynamic stack allocation
This patch is part of supporting `-fstack-clash-protection`. Mainly do such things compared to existing `lowerDynamicAlloc`
- Added a new pseudo instruction PPC::PREPARE_PROBED_ALLOC to get actual frame pointer and final stack pointer. - Synthesize a loop to probe by blocks. - Use DYNAREAOFFSET to get MaxCallFrameSize which is calculated in prologepilog.
Differential Revision: https://reviews.llvm.org/D81358
show more ...
|
#
40e9e082 |
| 03-Jul-2020 |
Kai Luo <lkail@cn.ibm.com> |
[PowerPC][NFC] Refactor lowerDynamicAlloc
When performing dynamic stack allocation, calculation of frame pointer and actual negsize can be separated. This patch refactors `lowerDynamicAlloc` in prep
[PowerPC][NFC] Refactor lowerDynamicAlloc
When performing dynamic stack allocation, calculation of frame pointer and actual negsize can be separated. This patch refactors `lowerDynamicAlloc` in preparation of supporting `-fstack-clash-protection` which also has to calculate actual frame pointer and negsize.
Differential Revision: https://reviews.llvm.org/D81354
show more ...
|