| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
hoist more loads during machine LICM.
llvm-svn: 104115
|
|
|
|
|
|
|
|
| |
whether the extract instructions are available.
rdar://7956878
llvm-svn: 103277
|
|
|
|
|
|
|
| |
instructions to subtarget features and update tests to reflect.
PR5717.
llvm-svn: 103136
|
|
|
|
| |
llvm-svn: 103122
|
|
|
|
| |
llvm-svn: 103120
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
beneficial cases. See the changes in test/CodeGen/X86/tail-opts.ll and
test/CodeGen/ARM/ifcvt2.ll for details.
The fix is to change HashEndOfMBB to hash at most one instruction,
instead of trying to apply heuristics about when it will be profitable to
consider more than one instruction. The regular tail-merging heuristics
are already prepared to handle the same cases, and they're more precise.
Also, make test/CodeGen/ARM/ifcvt5.ll and
test/CodeGen/Thumb2/thumb2-branch.ll slightly more complex so that they
continue to test what they're intended to test.
And, this eliminates the problem in
test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll, the testcase from
PR5204. Update it accordingly.
llvm-svn: 102907
|
|
|
|
|
|
| |
Radar 7896289
llvm-svn: 102396
|
|
|
|
|
|
| |
extraction. This fixes PR5998.
llvm-svn: 102144
|
|
|
|
|
|
|
| |
extract_subreg / insert_subreg, etc.
- Add support for more aggressive insert_subreg coalescing.
llvm-svn: 101971
|
|
|
|
| |
llvm-svn: 101638
|
|
|
|
|
|
| |
is doing the right thing and codegen looks correct for both Thumb and Thumb2.
llvm-svn: 101410
|
|
|
|
|
|
|
|
| |
directly. In cases where there are two dyn_alloc in the same BB it would have caused the old SP value to be reused and badness ensues. rdar://7493908
llvm is generating poor code for dynamic alloca, I'll fix that later.
llvm-svn: 101383
|
|
|
|
|
|
| |
Re-commit. This time complete with testsuite updates.
llvm-svn: 99570
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instructions to help disassembly.
We also changed the output of the addressing modes to omit the '+' from the
assembler syntax #+/-<imm> or +/-<Rm>. See, for example, A8.6.57/58/60.
And modified test cases to not expect '+' in +reg or #+num. For example,
; CHECK: ldr.w r9, [r7, #28]
llvm-svn: 98745
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
U test/CodeGen/ARM/tls2.ll
U test/CodeGen/ARM/arm-negative-stride.ll
U test/CodeGen/ARM/2009-10-30.ll
U test/CodeGen/ARM/globals.ll
U test/CodeGen/ARM/str_pre-2.ll
U test/CodeGen/ARM/ldrd.ll
U test/CodeGen/ARM/2009-10-27-double-align.ll
U test/CodeGen/Thumb2/thumb2-strb.ll
U test/CodeGen/Thumb2/ldr-str-imm12.ll
U test/CodeGen/Thumb2/thumb2-strh.ll
U test/CodeGen/Thumb2/thumb2-ldr.ll
U test/CodeGen/Thumb2/thumb2-str_pre.ll
U test/CodeGen/Thumb2/thumb2-str.ll
U test/CodeGen/Thumb2/thumb2-ldrh.ll
U utils/TableGen/TableGen.cpp
U utils/TableGen/DisassemblerEmitter.cpp
D utils/TableGen/RISCDisassemblerEmitter.h
D utils/TableGen/RISCDisassemblerEmitter.cpp
U Makefile.rules
U lib/Target/ARM/ARMInstrNEON.td
U lib/Target/ARM/Makefile
U lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp
U lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
U lib/Target/ARM/AsmPrinter/ARMInstPrinter.h
D lib/Target/ARM/Disassembler
U lib/Target/ARM/ARMInstrFormats.td
U lib/Target/ARM/ARMAddressingModes.h
U lib/Target/ARM/Thumb2ITBlockPass.cpp
llvm-svn: 98640
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(RISCDisassemblerEmitter) which emits the decoder functions for ARM and Thumb,
and the disassembler core which invokes the decoder function and builds up the
MCInst based on the decoded Opcode.
Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm
instructions to help disassembly.
We also changed the output of the addressing modes to omit the '+' from the
assembler syntax #+/-<imm> or +/-<Rm>. See, for example, A8.6.57/58/60.
And modified test cases to not expect '+' in +reg or #+num. For example,
; CHECK: ldr.w r9, [r7, #28]
llvm-svn: 98637
|
|
|
|
|
|
|
| |
This does not move entirely to UAL syntax, since the default "increment after"
suffix is empty but we still use "IA" for that.
llvm-svn: 98635
|
|
|
|
| |
llvm-svn: 98610
|
|
|
|
| |
llvm-svn: 98132
|
|
|
|
|
|
|
|
| |
immediate instructions cannot set the condition codes, so they do not have
the extra cc_out operand. We hit an assertion during tail duplication
because the instruction being duplicated had more operands that expected.
llvm-svn: 98001
|
|
|
|
|
|
| |
of either sxtb16 or uxtb16, and the unified syntax does not specify ".w".
llvm-svn: 97760
|
|
|
|
|
|
|
|
|
|
|
| |
- Function uses all scratch registers AND
- Function does not use any callee saved registers AND
- Stack size is too big to address with immediate offsets.
In this case a register must be scavenged to calculate the address of a stack
object, and the scavenger needs a spare register or emergency spill slot.
llvm-svn: 97071
|
|
|
|
|
|
|
| |
Machine instruction selection is much happier when operands are in virtual
registers.
llvm-svn: 97012
|
|
|
|
|
|
|
| |
test, but the problem seems to have gone away today. Add a check to make sure
it doesn't come back.
llvm-svn: 96277
|
|
|
|
|
|
|
|
| |
phi cycles. Adjust a few tests to keep dead instructions from being optimized
away. This (together with my previous change for phi cycles) fixes Apple
radar 7627077.
llvm-svn: 96057
|
|
|
|
|
|
|
|
|
|
| |
bug fixes, and with improved heuristics for analyzing foreign-loop
addrecs.
This change also flattens IVUsers, eliminating the stride-oriented
groupings, which makes it easier to work with.
llvm-svn: 95975
|
|
|
|
|
|
|
|
|
|
|
| |
reduce down to a single value. InstCombine already does this transformation
but DAG legalization may introduce new opportunities. This has turned out to
be important for ARM where 64-bit values are split up during type legalization:
InstCombine is not able to remove the PHI cycles on the 64-bit values but
the separate 32-bit values can be optimized. I measured the compile time
impact of this (running llc on 176.gcc) and it was not significant.
llvm-svn: 95951
|
|
|
|
|
|
| |
This time with fixed test cases.
llvm-svn: 95938
|
|
|
|
|
|
| |
Radar 7614112.
llvm-svn: 95456
|
|
|
|
| |
llvm-svn: 94123
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This new version is much more aggressive about doing "full" reduction in
cases where it reduces register pressure, and also more aggressive about
rewriting induction variables to count down (or up) to zero when doing so
reduces register pressure.
It currently uses fairly simplistic algorithms for finding reuse
opportunities, but it introduces a new framework allows it to combine
multiple strategies at once to form hybrid solutions, instead of doing
all full-reduction or all base+index.
llvm-svn: 94061
|
|
|
|
|
|
|
| |
Since the mov is executed unconditionally, make sure that the add didn't have
any predicate.
llvm-svn: 93909
|
|
|
|
|
|
|
| |
the -pre-regalloc-taildup command-line option, and add a new
-disable-early-taildup option.
llvm-svn: 93597
|
|
|
|
| |
llvm-svn: 92883
|
|
|
|
|
|
|
| |
Some instructions refer to unique labels, and so cannot be trivially cloned
with CloneMachineInstr.
llvm-svn: 92873
|
|
|
|
| |
llvm-svn: 92740
|
|
|
|
| |
llvm-svn: 91521
|
|
|
|
|
|
|
|
|
|
| |
in "bic sp, sp, #15" leads to unpredicatble behaviour in Thumb2 mode.
Emit the following code instead:
mov r4, sp
bic r4, r4, #15
mov sp, r4
llvm-svn: 90724
|
|
|
|
| |
llvm-svn: 90260
|
|
|
|
| |
llvm-svn: 89748
|
|
|
|
| |
llvm-svn: 89700
|
|
|
|
| |
llvm-svn: 89695
|
|
|
|
| |
llvm-svn: 89596
|
|
|
|
| |
llvm-svn: 89595
|
|
|
|
|
|
| |
isn't necessary.
llvm-svn: 89568
|
|
|
|
|
|
| |
backtraces.
llvm-svn: 89562
|
|
|
|
| |
llvm-svn: 89510
|
|
|
|
| |
llvm-svn: 89478
|
|
|
|
| |
llvm-svn: 89440
|
|
|
|
| |
llvm-svn: 89328
|