1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 13:33:37 +02:00
llvm-mirror/include/llvm/IR
Reid Kleckner d972bf8fab [IR] Switch AttributeList to use an array for O(1) access
Summary:
Before this change, AttributeLists stored a pair of index and
AttributeSet. This is memory efficient if most arguments do not have
attributes. However, it requires doing a search over the pairs to test
an argument or function attribute. Profiling shows that this loop was
0.76% of the time in 'opt -O2' of sqlite3.c, because LLVM constantly
tests values for nullability.

This was worth about 2.5% of mid-level optimization cycles on the
sqlite3 amalgamation. Here are the full perf results:
https://reviews.llvm.org/P7995

Here are just the before and after cycle counts:
```
$ perf stat -r 5 ./opt_before -O2 sqlite3.bc -o /dev/null
    13,274,181,184      cycles                    #    3.047 GHz                      ( +-  0.28% )
$ perf stat -r 5 ./opt_after -O2 sqlite3.bc -o /dev/null
    12,906,927,263      cycles                    #    3.043 GHz                      ( +-  0.51% )
```

This patch *does not* change the indices used to query attributes, as
requested by reviewers. Tracking whether an index is usable for array
indexing is a huge pain that affects many of the internal APIs, so it
would be good to come back later and do a cleanup to remove this
internal adjustment.

Reviewers: pete, chandlerc

Subscribers: javed.absar, llvm-commits

Differential Revision: https://reviews.llvm.org/D32819

llvm-svn: 303654
2017-05-23 17:01:48 +00:00
..
Argument.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
AssemblyAnnotationWriter.h
Attributes.h [IR] Switch AttributeList to use an array for O(1) access 2017-05-23 17:01:48 +00:00
Attributes.td Add speculatable function attribute 2017-04-28 20:25:27 +00:00
AutoUpgrade.h
BasicBlock.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
CallingConv.h [MSP430] Generate EABI-compliant libcalls 2017-05-11 19:56:14 +00:00
CallSite.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-05 22:30:37 +00:00
CFG.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-05 22:30:37 +00:00
CMakeLists.txt
Comdat.h [IR] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-17 00:00:09 +00:00
Constant.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
ConstantFolder.h [IR] Fix some Clang-tidy modernize-use-default, modernize-use-equal-delete and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 22:25:16 +00:00
ConstantRange.h [ConstantRange][SimplifyCFG] Add a helper method to allow SimplifyCFG to determine if a ConstantRange has more than 8 elements without requiring an allocation if the ConstantRange is 64-bits wide. 2017-05-07 22:22:11 +00:00
Constants.h SimplifyLibCalls: Optimize wcslen 2017-05-19 22:37:09 +00:00
DataLayout.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-05 22:30:37 +00:00
DebugInfo.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-05 22:30:37 +00:00
DebugInfoFlags.def Revert "Debug Info: Add basic support for external types references." 2017-03-13 22:56:14 +00:00
DebugInfoMetadata.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-15 21:57:41 +00:00
DebugLoc.h Make it illegal for two Functions to point to the same DISubprogram 2017-05-09 19:47:37 +00:00
DerivedTypes.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
DerivedUser.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
DiagnosticInfo.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-15 21:57:41 +00:00
DiagnosticPrinter.h [IR] Fix some Clang-tidy modernize-use-default, modernize-use-equal-delete and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 22:25:16 +00:00
DIBuilder.h Remove line and file from DINamespace. 2017-04-28 22:25:46 +00:00
Dominators.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-05 22:30:37 +00:00
Function.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
GetElementPtrTypeIterator.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
GlobalAlias.h De-virtualize GlobalValue 2017-05-11 21:14:29 +00:00
GlobalIFunc.h De-virtualize GlobalValue 2017-05-11 21:14:29 +00:00
GlobalIndirectSymbol.h [IR] Implement pairs of non-const and const methods using the const version instead of the non-const version. NFCI 2017-03-27 05:47:03 +00:00
GlobalObject.h De-virtualize GlobalValue 2017-05-11 21:14:29 +00:00
GlobalValue.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
GlobalVariable.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
GVMaterializer.h [IR] Fix some Clang-tidy modernize-use-default, modernize-use-equal-delete and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 22:25:16 +00:00
InlineAsm.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
InstIterator.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-05 22:30:37 +00:00
InstrTypes.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Instruction.def [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Instruction.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Instructions.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
InstVisitor.h [IR/Analysis] Defend against getting slightly wrong template arguments 2017-02-07 03:17:30 +00:00
IntrinsicInst.h Make getParamAlignment use argument numbers 2017-04-28 20:34:27 +00:00
Intrinsics.h Support arbitrary address space pointers in masked gather/scatter intrinsics. 2017-05-03 12:28:54 +00:00
Intrinsics.td Introduce experimental generic intrinsics for horizontal vector reductions. 2017-05-09 10:43:25 +00:00
IntrinsicsAArch64.td [AArch64] Add support for lowering bitreverse to the rbit instruction. 2017-01-10 17:20:33 +00:00
IntrinsicsAMDGPU.td AMDGPU: Make intrinsics speculatable 2017-05-02 16:57:44 +00:00
IntrinsicsARM.td [ARM] ACLE Chapter 9 intrinsics 2017-05-04 07:31:28 +00:00
IntrinsicsBPF.td
IntrinsicsHexagon.td [Hexagon] Add intrinsics for masked vector stores 2017-02-22 21:23:09 +00:00
IntrinsicsMips.td
IntrinsicsNVVM.td [NVPTX] Add intrinsics to support named barriers. 2017-01-28 16:38:15 +00:00
IntrinsicsPowerPC.td [PPC] Lower load acquire/seq_cst trailing fence to cmp + bne + isync. 2017-05-16 20:18:06 +00:00
IntrinsicsSystemZ.td [SystemZ] Support floating-point control register instructions 2016-12-02 18:21:53 +00:00
IntrinsicsWebAssembly.td [WebAssembly] Update grow_memory's return type. 2017-01-18 01:02:45 +00:00
IntrinsicsX86.td [X86][LWP] Add llvm support for LWP instructions (reapplied). 2017-05-03 15:51:39 +00:00
IntrinsicsXCore.td
IRBuilder.h Introduce experimental generic intrinsics for horizontal vector reductions. 2017-05-09 10:43:25 +00:00
IRPrintingPasses.h
LegacyPassManager.h [LTO] Print time-passes information at conclusion of LTO codegen 2017-05-16 09:43:21 +00:00
LegacyPassManagers.h
LegacyPassNameParser.h
LLVMContext.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
Mangler.h Move llvm::emitLinkerFlagsForGlobalCOFF() to Mangler. 2017-03-31 04:46:50 +00:00
MDBuilder.h Add function importing info from samplepgo profile to the module summary. 2017-02-28 18:09:44 +00:00
Metadata.def [IR] Remove the DIExpression field from DIGlobalVariable. 2016-12-20 02:09:43 +00:00
Metadata.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Module.h Support for taking the max of module flags when linking, use for PIE/PIC 2017-05-23 00:08:00 +00:00
ModuleSlotTracker.h
ModuleSummaryIndex.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
ModuleSummaryIndexYAML.h Re-apply r302108, "IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI." 2017-05-04 18:03:25 +00:00
NoFolder.h [IR] Fix some Clang-tidy modernize-use-default, modernize-use-equal-delete and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 22:25:16 +00:00
OperandTraits.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Operator.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
OptBisect.h Remove opt-bisect support for "cases" in favor of debug counters 2017-03-11 01:41:03 +00:00
PassManager.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
PassManagerInternal.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
PatternMatch.h [InstSimplify] Make m_Not work for xor -1, X 2017-05-18 20:27:32 +00:00
PredIteratorCache.h Make PredIteratorCache size() logically const. Do not require copying predecessors to get size. 2017-03-14 11:25:45 +00:00
ProfileSummary.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
Statepoint.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
SymbolTableListTraits.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
TrackingMDRef.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
Type.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
TypeBuilder.h
TypeFinder.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
Use.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
UseListOrder.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
User.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Value.def [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Value.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
ValueHandle.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
ValueMap.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
ValueSymbolTable.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
Verifier.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00