| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
other minor fixes.
Differential revision: reviews.llvm.org/D16568
llvm-svn: 258831
|
|
|
|
|
|
|
|
|
|
|
|
| |
Step one towards using a simple binary search to lookup intrinsic IDs
instead of our crazy table generated switch+memcmp+startswith code that
makes Function.cpp take about a minute to compile. See PR24785 and
PR11951 for why we should do this.
The X86 backend contains tables that need to be sorted on intrinsic ID,
so reorder those.
llvm-svn: 258757
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a fix for https://llvm.org/bugs/show_bug.cgi?id=22796.
The previous implementation of ClassInfo::operator< allowed cycles of classes
such that x < y < z < x, meaning that a list of them cannot be correctly
sorted, and the sort order could differ with different standard libraries.
The original implementation sorted classes by ValueName if they were otherwise
equal. This isn't strictly necessary, but some backends seem to accidentally
rely on it. If I reverse this comparison I get 8 test failures spread across
the AArch64, Mips and X86 backends, so I have left it in until those backends
can be fixed.
There was one case in the X86 backend where the observable behaviour of the
assembler is changed by this patch. This was because some of the memory asm
operands were not marked as children of X86MemAsmOperand.
Differential Revision: http://reviews.llvm.org/D16141
llvm-svn: 258677
|
|
|
|
|
|
|
|
| |
mapping from instruction to unique command, instead store a list of which instructions each unique command corresponds to.
This simplifies the complexity of the code that tries to find further operands to merge into the unique command.
llvm-svn: 258656
|
|
|
|
|
|
| |
consumes it later. NFC
llvm-svn: 258490
|
|
|
|
|
|
| |
size. NFC
llvm-svn: 258489
|
|
|
|
|
|
| |
anything. NFC
llvm-svn: 258488
|
|
|
|
|
|
|
|
|
|
|
| |
The selection process being split into separate passes, we need generic opcodes
to translate the LLVM IR to target independent code.
This patch adds an opcode for addition: G_ADD.
Differential Revision: http://reviews.llvm.org/D15472
llvm-svn: 258333
|
|
|
|
|
|
| |
vector. This removes the state needed to manage the extra vector thus reducing the size of the Record class. NFC
llvm-svn: 258065
|
|
|
|
| |
llvm-svn: 258020
|
|
|
|
|
|
| |
to make an iterator_range when we already have a function that returns an ArrayRef. NFC
llvm-svn: 258019
|
|
|
|
|
|
| |
getInstructionsByEnumValue(). NFC
llvm-svn: 258018
|
|
|
|
| |
llvm-svn: 258017
|
|
|
|
|
|
| |
passed to a function that takes a StringRef anyway. NFC
llvm-svn: 258007
|
|
|
|
|
|
|
|
| |
AsmWriterInst map. NFC
Adds the corresponding CodeGenInstruction number to each AsmWriterInst. Then write all the operand uniqueing loops using the AsmWriterInst array and indices. Then use the CodeGenInstruction index to fill out the OpCodeInfo array.
llvm-svn: 258005
|
|
|
|
| |
llvm-svn: 258004
|
|
|
|
|
|
| |
the flag in every AsmWriterOperand. NFC
llvm-svn: 257743
|
|
|
|
|
|
| |
the AsmMatcher uses when it overflows the 64-bit tables. No in tree targets use this code, but I tested it with an temporarily reduced table width.
llvm-svn: 257583
|
|
|
|
|
|
| |
64-bits for cleanliness. NFC
llvm-svn: 257582
|
|
|
|
| |
llvm-svn: 257581
|
|
|
|
| |
llvm-svn: 257580
|
|
|
|
|
|
| |
simple functions. NFC
llvm-svn: 257579
|
|
|
|
|
|
|
|
| |
allows x86 to use 56 total bits made up of a 32-bit, 16-bit, and 8-bit table. Previously we were using 64 total bits.
This saves 14K from the x86 table size. And saves space on other targets as well.
llvm-svn: 257315
|
|
|
|
|
|
| |
to prevent ending an array with a comma. But that's perfectly legal and not something we need to prevent. NFC
llvm-svn: 257314
|
|
|
|
| |
llvm-svn: 257308
|
|
|
|
|
|
| |
index name as an outer loop. NFC
llvm-svn: 257156
|
|
|
|
|
|
| |
into a vector instead of copying. NFC
llvm-svn: 257155
|
|
|
|
|
|
| |
in the support library will be deleted.
llvm-svn: 256732
|
|
|
|
|
|
| |
empty before printing. The loop can be made to print the same thing if the loop is empty. NFC
llvm-svn: 256703
|
|
|
|
|
|
| |
comparison for readability. NFC
llvm-svn: 256699
|
|
|
|
| |
llvm-svn: 256698
|
|
|
|
|
|
| |
still emitted a closing curly brace.
llvm-svn: 256697
|
|
|
|
| |
llvm-svn: 256696
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
r252440 to the Hexagon target.
This restores the previous behavior of not including the mnemonic in the classes table for every target that starts instruction lines with the mnemonic. Not only did the table size increase by 1 entry, but the class enum increased in size which caused every class in the array to increase in size. It also grew the size of the function that parsers tokens into classes by a substantial amount.
This adds a new HasMnemonicFirst flag to all AsmParsers. It's set to 1 by default and Hexagon target overrides it to 0.
For the X86 target alone this recovers 324KB of size on the llvm-mc executable.
I believe the current state is still a bad design choice for the Hexagon target as it causes most of the parsing to do a linear search through the entire match table to comparing operands against every instruction until it finds one that works. At least for the other targets we do a binary search based on mnemonic over which to do the linear scan.
llvm-svn: 256669
|
|
|
|
| |
llvm-svn: 256668
|
|
|
|
|
|
| |
of trying to search characters around the token. No functional change intended. Verified for in-tree targets.
llvm-svn: 256660
|
|
|
|
|
|
| |
outputting to a raw_ostream. NFC
llvm-svn: 256628
|
|
|
|
|
|
| |
switch the first time we emit a case. If the header was never emitted just print the default at the end. NFC
llvm-svn: 256627
|
|
|
|
| |
llvm-svn: 256626
|
|
|
|
|
|
| |
class so we can reduce some parameters. NFC
llvm-svn: 256625
|
|
|
|
|
|
| |
types of addAsmOperand. Simplify some code by using StringRef::find instead of std::find. These were previously done in r247527 and r247528, but another commit seems to have erased them. NFC
llvm-svn: 256624
|
|
|
|
|
|
| |
called by any common code.
llvm-svn: 256544
|
|
|
|
| |
llvm-svn: 256540
|
|
|
|
| |
llvm-svn: 256539
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D15711
llvm-svn: 256366
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reapplies r256277 with two changes:
- In emitFnAttrCompatCheck, change FuncName's type to std::string to fix
a use-after-free bug.
- Remove an unnecessary install-local target in lib/IR/Makefile.
Original commit message for r252949:
Provide a way to specify inliner's attribute compatibility and merging
rules using table-gen. NFC.
This commit adds new classes CompatRule and MergeRule to Attributes.td,
which are used to generate code to check attribute compatibility and
merge attributes of the caller and callee.
rdar://problem/19836465
llvm-svn: 256304
|
|
|
|
|
|
|
|
| |
For targets to add their own operand types as needed, as advertised in
Operand's comment, they need to be able to specify an alternate namespace
for OperandType names too. This matches the RegisterOperand class.
llvm-svn: 256299
|
|
|
|
|
|
| |
Some of the bots failed again.
llvm-svn: 256280
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reapplies r252990 and r252949. I've added member function getKind
to the Attr classes which returns the enum or string of the attribute.
Original commit message for r252949:
Provide a way to specify inliner's attribute compatibility and merging
rules using table-gen. NFC.
This commit adds new classes CompatRule and MergeRule to Attributes.td,
which are used to generate code to check attribute compatibility and
merge attributes of the caller and callee.
rdar://problem/19836465
llvm-svn: 256277
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Part 1 was submitted in http://reviews.llvm.org/D15134.
Changes in this part:
* X86RegisterInfo.td, X86RecognizableInstr.cpp: Add FR128 register class.
* X86CallingConv.td: Pass f128 values in XMM registers or on stack.
* X86InstrCompiler.td, X86InstrInfo.td, X86InstrSSE.td:
Add instruction selection patterns for f128.
* X86ISelLowering.cpp:
When target has MMX registers, configure MVT::f128 in FR128RegClass,
with TypeSoftenFloat action, and custom actions for some opcodes.
Add missed cases of MVT::f128 in places that handle f32, f64, or vector types.
Add TODO comment to support f128 type in inline assembly code.
* SelectionDAGBuilder.cpp:
Fix infinite loop when f128 type can have
VT == TLI.getTypeToTransformTo(Ctx, VT).
* Add unit tests for x86-64 fp128 type.
Differential Revision: http://reviews.llvm.org/D11438
llvm-svn: 255558
|