1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 12:02:58 +02:00
llvm-mirror/test/CodeGen
Chuang-Yu Cheng 6e4b4f696f CXX_FAST_TLS calling convention: performance improvement for PPC64
This is the same change on PPC64 as r255821 on AArch64. I have even borrowed
his commit message.

The access function has a short entry and a short exit, the initialization
block is only run the first time. To improve the performance, we want to
have a short frame at the entry and exit.

We explicitly handle most of the CSRs via copies. Only the CSRs that are not
handled via copies will be in CSR_SaveList.

Frame lowering and prologue/epilogue insertion will generate a short frame
in the entry and exit according to CSR_SaveList. The majority of the CSRs will
be handled by register allcoator. Register allocator will try to spill and
reload them in the initialization block.

We add CSRsViaCopy, it will be explicitly handled during lowering.

1> we first set FunctionLoweringInfo->SplitCSR if conditions are met (the target
   supports it for the given machine function and the function has only return
   exits). We also call TLI->initializeSplitCSR to perform initialization.
2> we call TLI->insertCopiesSplitCSR to insert copies from CSRsViaCopy to
   virtual registers at beginning of the entry block and copies from virtual
   registers to CSRsViaCopy at beginning of the exit blocks.
3> we also need to make sure the explicit copies will not be eliminated.

Author: Tom Jablin (tjablin)
Reviewers: hfinkel kbarton cycheng

http://reviews.llvm.org/D17533

llvm-svn: 265781
2016-04-08 12:04:32 +00:00
..
AArch64 Recommit r265309 after fixed an invalid memory reference bug happened 2016-04-06 15:41:07 +00:00
AMDGPU AMDGPU/SI: Implement atomic load/store for i32 and i64 2016-04-07 19:23:11 +00:00
ARM Swift Calling Convention: swiftcc for ARM. 2016-04-05 22:44:44 +00:00
BPF
CPP
Generic Add missing test for the "Don't delete empty preheaders" added in r265397 2016-04-05 14:21:32 +00:00
Hexagon testcase gardening: update the emissionKind enum to the new syntax. (NFC) 2016-04-01 00:16:49 +00:00
Inputs testcase gardening: update the emissionKind enum to the new syntax. (NFC) 2016-04-01 00:16:49 +00:00
Lanai [lanai] LanaiSetflagAluCombiner more conservative 2016-04-05 16:18:13 +00:00
Mips [mips][microMIPS] Add CodeGen support for ADD, ADDIU*, ADDU* and DADD* instructions 2016-04-08 07:27:26 +00:00
MIR [DebugInfo] Fix tests so that each subprogram belongs to a CU. 2016-04-05 23:37:08 +00:00
MSP430
NVPTX [NVPTX] Handle ldg created from sign-/zero-extended load 2016-04-05 12:38:01 +00:00
PowerPC CXX_FAST_TLS calling convention: performance improvement for PPC64 2016-04-08 12:04:32 +00:00
SPARC
SystemZ [SystemZ] Implement conditional returns 2016-04-07 16:11:44 +00:00
Thumb [DebugInfo] Fix tests so that each subprogram belongs to a CU. 2016-04-05 23:37:08 +00:00
Thumb2
WebAssembly WebAssembly: fix cfg-stackify test 2016-04-05 17:01:52 +00:00
WinEH testcase gardening: update the emissionKind enum to the new syntax. (NFC) 2016-04-01 00:16:49 +00:00
X86 [IFUNC] Fix ifunc-asm.ll test 2016-04-08 06:45:19 +00:00
XCore testcase gardening: update the emissionKind enum to the new syntax. (NFC) 2016-04-01 00:16:49 +00:00