| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
This brings it into line with the AArch64 behaviour and should open the way for
certain OpenCL features.
llvm-svn: 206286
|
|
|
|
|
|
|
|
| |
Code is mostly copied directly across, with a slight extension of the
ISelDAGToDAG function so that it can cope with the floating-point constants
being behind a litpool.
llvm-svn: 206285
|
|
|
|
| |
llvm-svn: 206284
|
|
|
|
| |
llvm-svn: 206281
|
|
|
|
| |
llvm-svn: 206279
|
|
|
|
|
|
| |
http://reviews.llvm.org/D3328
llvm-svn: 206276
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch re-introduces the MCContext member that was removed from
MCDisassembler in r206063, and requires that an MCContext be passed in at
MCDisassembler construction time. (Previously the MCContext member had been
initialized in an ad-hoc fashion after construction). The MCCContext member
can be used by MCDisassembler sub-classes to construct constant or
target-specific MCExprs.
This patch updates disassemblers for in-tree targets, and provides the
MCRegisterInfo instance that some disassemblers were using through the
MCContext (previously those backends were constructing their own
MCRegisterInfo instances).
llvm-svn: 206241
|
|
|
|
|
|
| |
Range-based for loops. No functional change intended.
llvm-svn: 206239
|
|
|
|
| |
llvm-svn: 206228
|
|
|
|
|
|
|
|
| |
This matches that ARM64Subtarget does for now.
This is related to <rdar://problem/16573920>
llvm-svn: 206211
|
|
|
|
|
|
|
|
|
|
|
| |
In rare cases the dead definition elimination pass code can cause illegal cmn
instructions when it replaces dead registers on instructions that use
unmaterialized frame indexes. This patch disables the dead definition
optimization for instructions which include frame index operands.
rdar://16438284
llvm-svn: 206208
|
|
|
|
|
|
|
| |
This patch adds a -arm64-dead-def-elimination flag so that it is possible to
disable dead definition elimination. Includes test case.
llvm-svn: 206207
|
|
|
|
| |
llvm-svn: 206198
|
|
|
|
|
|
| |
The 32-bit pattern is still valid: 0123 -> 3210 -> 1032.
llvm-svn: 206172
|
|
|
|
|
|
|
| |
Code change is because optimizeCompareInstr didn't know how to pull the
condition code out of FCSEL instructions.
llvm-svn: 206171
|
|
|
|
|
|
|
| |
AArch64 tests for this, and it's obviously a good idea. Have to invert the
condition code, of course.
llvm-svn: 206170
|
|
|
|
|
|
|
|
|
| |
There was one definite issue in ARM64 (the off-by-1 check for whether
a shift could be folded in) and one difference that is probably
correct: ARM64 didn't fold nodes with multiple uses into the
arithmetic operations unless optimising for code size.
llvm-svn: 206168
|
|
|
|
|
|
|
| |
This transformation is only valid when being used for an EQ or NE
comparison since the flags change otherwise.
llvm-svn: 206167
|
|
|
|
| |
llvm-svn: 206116
|
|
|
|
|
|
|
| |
There is no need to check if we want to hoist the immediate value of an
shift instruction. Simply return TCC_Free right away.
llvm-svn: 206101
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Originally the cost model would give up for large constants and just return the
maximum cost. This is not what we want for constant hoisting, because some of
these constants are large in bitwidth, but are still cheap to materialize.
This commit fixes the cost model to either return TCC_Free if the cost cannot be
determined, or accurately calculate the cost even for large constants
(bitwidth > 128).
This fixes <rdar://problem/16591573>.
llvm-svn: 206100
|
|
|
|
|
|
|
|
|
| |
This patch adds patterns to generate the cls instruction ARM64. Includes tests
for 64 bit and 32 bit operands.
rdar://15611957
llvm-svn: 206079
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MCDisassembler has an MCSymbolizer member that is meant to take care of
symbolizing during disassembly, but it also has several methods that enable the
disassembler to do symbolization internally (i.e. without an attached symbolizer
object). There is no need for this duplication, but ARM64 had been making use of
it. This patch moves the ARM64 symbolization logic out of ARM64Disassembler and
into an ARM64ExternalSymbolizer class, and removes the duplicated MCSymbolizer
functionality from the MCDisassembler interface. Symbolization will now be
done exclusively through MCSymbolizers.
There should be no impact on disassembly for any platform, but this allows us to
tidy up the MCDisassembler interface and simplify the process of (and invariants
related to) disassembler setup.
llvm-svn: 206063
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also updated as many loops as I could find using df_begin/idf_begin -
strangely I found no uses of idf_begin. Is that just used out of tree?
Also a few places couldn't use df_begin because either they used the
member functions of the depth first iterators or had specific ordering
constraints (I added a comment in the latter case).
Based on a patch by Jim Grosbach. (Jim - you just had iterator_range<T>
where you needed iterator_range<idf_iterator<T>>)
llvm-svn: 206016
|
|
|
|
| |
llvm-svn: 206013
|
|
|
|
| |
llvm-svn: 206007
|
|
|
|
| |
llvm-svn: 206006
|
|
|
|
| |
llvm-svn: 205992
|
|
|
|
| |
llvm-svn: 205988
|
|
|
|
| |
llvm-svn: 205963
|
|
|
|
| |
llvm-svn: 205962
|
|
|
|
| |
llvm-svn: 205961
|
|
|
|
|
| |
FIXME: Could we use SmallString here?
llvm-svn: 205950
|
|
|
|
|
|
|
|
|
|
| |
GCC 4.8 complains with:
warning: enumeral and non-enumeral type in conditional expression
Although this is silly and harmless in this case, add an explicit cast to
silence the warning.
llvm-svn: 205949
|
|
|
|
|
|
|
|
|
|
| |
The immediate cost calculation code was hitting an assertion in the included
test case, because APInt was still internally 128-bits. Truncating it to 64-bits
fixed the issue.
Fixes <rdar://problem/16572521>.
llvm-svn: 205947
|
|
|
|
| |
llvm-svn: 205918
|
|
|
|
| |
llvm-svn: 205899
|
|
|
|
|
|
| |
consistant.
llvm-svn: 205898
|
|
|
|
| |
llvm-svn: 205897
|
|
|
|
| |
llvm-svn: 205896
|
|
|
|
| |
llvm-svn: 205895
|
|
|
|
| |
llvm-svn: 205894
|
|
|
|
| |
llvm-svn: 205893
|
|
|
|
| |
llvm-svn: 205892
|
|
|
|
| |
llvm-svn: 205891
|
|
|
|
| |
llvm-svn: 205890
|
|
|
|
|
|
| |
dumb alias.
llvm-svn: 205889
|
|
|
|
|
|
| |
labels types
llvm-svn: 205888
|
|
|
|
| |
llvm-svn: 205887
|
|
|
|
|
|
| |
should only be translated when the instruction uses WSP, not SP. Vice versa for UXTX and 64-bit instructions.
llvm-svn: 205886
|