| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 156084
|
| |
|
|
|
|
|
|
| |
Many register classes only have a few super-registers, so it is not
necessary to keep individual bit masks for all possible sub-register
indices.
llvm-svn: 156083
|
| |
|
|
| |
llvm-svn: 156080
|
| |
|
|
| |
llvm-svn: 156077
|
| |
|
|
|
|
|
|
| |
Some targets have no sub-registers at all. Use the TargetRegisterInfo
versions of composeSubRegIndices(), getSubClassWithSubReg(), and
getMatchingSuperRegClass() for those targets.
llvm-svn: 156075
|
| |
|
|
|
|
| |
This adds new instructions for Hexagon V4 architecture.
llvm-svn: 156071
|
| |
|
|
|
|
|
|
| |
there is no need to fallback to visitCallSite.
This gives a 0.9% in a test case
llvm-svn: 156069
|
| |
|
|
| |
llvm-svn: 156067
|
| |
|
|
|
|
| |
vector elements.
llvm-svn: 156060
|
| |
|
|
|
|
| |
lower half correctly. Missed in r155982.
llvm-svn: 156059
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to catch cases like:
%reg1024<def> = MOV r1
%reg1025<def> = MOV r0
%reg1026<def> = ADD %reg1024, %reg1025
r0 = MOV %reg1026
By commuting ADD, it let coalescer eliminate all of the copies. However, there
was a bug in the heuristics where it ended up commuting the ADD in:
%reg1024<def> = MOV r0
%reg1025<def> = MOV 0
%reg1026<def> = ADD %reg1024, %reg1025
r0 = MOV %reg1026
That did no benefit but rather ensure the last MOV would not be coalesced.
rdar://11355268
llvm-svn: 156048
|
| |
|
|
|
|
|
|
|
|
| |
The ensures that virtual registers always belong to an allocatable class.
If your target attempts to create a vreg for an operand that has no
allocatable register subclass, you will crash quickly.
This ensures that targets define register classes as intended.
llvm-svn: 156046
|
| |
|
|
| |
llvm-svn: 156034
|
| |
|
|
| |
llvm-svn: 156032
|
| |
|
|
|
|
| |
just like it now knows for FMULs.
llvm-svn: 156029
|
| |
|
|
|
|
|
| |
and Hybrid for 32 bit, since benchmarks show ILP scheduling is better
most of the time.
llvm-svn: 156028
|
| |
|
|
|
|
| |
Lincroft and Medfield.
llvm-svn: 156025
|
| |
|
|
| |
llvm-svn: 156023
|
| |
|
|
| |
llvm-svn: 156021
|
| |
|
|
| |
llvm-svn: 156019
|
| |
|
|
|
|
| |
be used by clang-tblgen.
llvm-svn: 156000
|
| |
|
|
|
|
|
|
|
| |
This avoids warnings when included in a application that
uses -Wstrict-prototypes.
e.g: AsmPrinters.def:27:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
llvm-svn: 155997
|
| |
|
|
|
|
| |
by providing the latencies for the instructions in X86InstrFPStack.td.
llvm-svn: 155996
|
| |
|
|
|
|
|
|
| |
The commit is intended to fix rdar://10961709.
But it is the root cause of PR12720.
Revert it for now.
llvm-svn: 155992
|
| |
|
|
| |
llvm-svn: 155986
|
| |
|
|
|
|
|
| |
methods. Use a weak value handle to keep up with this.
PR12245
llvm-svn: 155984
|
| |
|
|
| |
llvm-svn: 155983
|
| |
|
|
|
|
| |
for AsmPrinter.
llvm-svn: 155982
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Note that support for rvalue references does not imply support
for the full set of move-related STL operations.
I've preserved support for an odd little thing in insert() where
we're trying to support inserting a new element from an existing
one. If we actually want to support that, there's a lot more we
need to do: insert can call either grow or push_back, neither of
which is safe against this particular use pattern.
llvm-svn: 155979
|
| |
|
|
| |
llvm-svn: 155978
|
| |
|
|
|
|
| |
the MachO spec.
llvm-svn: 155976
|
| |
|
|
| |
llvm-svn: 155960
|
| |
|
|
| |
llvm-svn: 155959
|
| |
|
|
| |
llvm-svn: 155957
|
| |
|
|
| |
llvm-svn: 155956
|
| |
|
|
|
|
| |
PR10799
llvm-svn: 155954
|
| |
|
|
| |
llvm-svn: 155947
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Aliases for adding a negative immediate when using an explicit 'w'
suffix. E.g.,
adds.w r2, #-16
adds.w r2, r2, #-16
addw r2, #-16
addw r2, #-16
addw r2, r2, #-16
rdar://11330769
llvm-svn: 155946
|
| |
|
|
|
|
|
|
|
|
| |
Expressions for movw/movt don't always have an :upper16: or :lower16:
on them and that's ok. When they don't, it's just a plain [0-65536]
immediate result, effectively the same as a :lower16: variant kind.
rdar://10550147
llvm-svn: 155941
|
| |
|
|
|
|
|
|
|
| |
in order to avoid assertion failures in the register scavenger. The assertion
failures were “Bad machine code: Using an undefined physical register” and
“Bad machine code: MBB exits via unconditional fall-through but its successor
differs from its CFG successor!”.
llvm-svn: 155930
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, an unsupported/unknown assembler directive issued a warning.
That's generally unsafe, and inconsistent with the behaviour of pretty
much every system assembler. Now that the MC assemblers are mature
enough to be the default on multiple targets, it's reasonable to
issue errors for these.
For target or platform directives that need to stay warnings, we
should add explicit handlers for them in, e.g., ELFAsmParser.cpp,
DarwinAsmParser.cpp, et. al., and issue the warning there.
rdar://9246275
llvm-svn: 155926
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The caller is already responsible for eating any additional input on the
line. Putting an additional EatToEndOfStatement() in ParseStatement()
causes an entire extra statement to be consumed when treating warnings
as errors. For example, test/MC/macros.s will assert() because the
.endmacro directive is missed as a result.
rdar://11355843
llvm-svn: 155925
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch will optimize the following cases on X86
(a > b) ? (a-b) : 0
(a >= b) ? (a-b) : 0
(b < a) ? (a-b) : 0
(b <= a) ? (a-b) : 0
FROM
movl %edi, %ecx
subl %esi, %ecx
cmpl %edi, %esi
movl $0, %eax
cmovll %ecx, %eax
TO
xorl %eax, %eax
subl %esi, %edi
cmovll %eax, %edi
movl %edi, %eax
rdar: 10734411
llvm-svn: 155919
|
| |
|
|
|
|
| |
(to generate debug info for local variables) if stack needs realignment
llvm-svn: 155917
|
| |
|
|
| |
llvm-svn: 155915
|
| |
|
|
| |
llvm-svn: 155912
|
| |
|
|
| |
llvm-svn: 155909
|
| |
|
|
|
|
|
|
|
|
|
| |
- Improved parameter names for clarity
- Added comments
- emitCommonSymbols should return void because its return value is not being
used anywhere
- Attempt to reduce the usage of the RelocationValueRef type. Restricts it
for a single goal and may serve as a step for eventual removal.
llvm-svn: 155908
|
| |
|
|
| |
llvm-svn: 155907
|
| |
|
|
|
|
|
|
|
| |
The TargetPassManager's default constructor wants to initialize the PassManager
to 'null'. But it's illegal to bind a null reference to a null l-value. Make the
ivar a pointer instead.
PR12468
llvm-svn: 155902
|