| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
in the literal field of an instruction. E.g.,
long long foo(long long a) {
return a - 734439407618LL;
}
rdar://7038284
llvm-svn: 108339
|
| |
|
|
|
|
| |
Patch by Brian Lucas. PR7636.
llvm-svn: 108332
|
| |
|
|
| |
llvm-svn: 108328
|
| |
|
|
| |
llvm-svn: 108324
|
| |
|
|
|
|
| |
of the value of the immediate.
llvm-svn: 108323
|
| |
|
|
|
|
| |
Radar 7373643.
llvm-svn: 108303
|
| |
|
|
|
|
| |
NEON VMOV-immediate instructions. This simplifies some things.
llvm-svn: 108275
|
| |
|
|
|
|
| |
using only i32 operations. It now optimize some f64 compares when fp compare is exceptionally slow (e.g. cortex-a8). It also catches comparison against 0.0.
llvm-svn: 108258
|
| |
|
|
| |
llvm-svn: 108256
|
| |
|
|
|
|
| |
avoid replicated code.
llvm-svn: 108227
|
| |
|
|
|
|
|
|
| |
instructions already have implicit defs of LR. The comment suggests that
this is intended to fix something like pr6111, but it doesn't really do
that either.
llvm-svn: 108186
|
| |
|
|
| |
llvm-svn: 108130
|
| |
|
|
|
|
|
|
| |
The only folding these load/store architectures can do is converting COPY into a
load or store, and the target independent part of foldMemoryOperand already
knows how to do that.
llvm-svn: 108099
|
| |
|
|
| |
llvm-svn: 108094
|
| |
|
|
| |
llvm-svn: 108078
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
correct alignment information, which simplifies ExpandRes_VAARG a bit.
The patch introduces a new alignment information to TargetLoweringInfo. This is
needed since the two natural candidates cannot be used:
* The 's' in target data: If this is set to the minimal alignment of any
argument, getCallFrameTypeAlignment would return 4 for doubles on ARM for
example.
* The getTransientStackAlignment method. It is possible for an architecture to
have argument less aligned than what we maintain the stack pointer.
llvm-svn: 108072
|
| |
|
|
| |
llvm-svn: 108043
|
| |
|
|
| |
llvm-svn: 108012
|
| |
|
|
|
|
| |
rdar://8131327
llvm-svn: 108008
|
| |
|
|
|
|
| |
consistency with other instructions that have lists of register operands.
llvm-svn: 107944
|
| |
|
|
| |
llvm-svn: 107904
|
| |
|
|
|
|
| |
This pass can go away entirely soon.
llvm-svn: 107892
|
| |
|
|
|
|
|
| |
words within the 64-bit D registers. Use VLD1/VST1 with 64-bit elements
instead.
llvm-svn: 107890
|
| |
|
|
| |
llvm-svn: 107882
|
| |
|
|
|
|
|
|
|
| |
EXTRACT_SUBREG no longer appears as a machine instruction. Use COPY instead.
Add isCopy() checks in many places using isMoveInstr() and isExtractSubreg().
The isMoveInstr hook will be removed later.
llvm-svn: 107879
|
| |
|
|
| |
llvm-svn: 107856
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
simplest case when the following conditions are met:
1. The arguments are f32.
2. The arguments are loads and they have no uses other than the comparison.
3. The comparison code is EQ or NE.
e.g.
vldr.32 s0, [r1]
vldr.32 s1, [r0]
vcmpe.f32 s1, s0
vmrs apsr_nzcv, fpscr
beq LBB0_2
=>
ldr r1, [r1]
ldr r0, [r0]
cmp r0, r1
beq LBB0_2
More complicated cases will be implemented in subsequent patches.
llvm-svn: 107852
|
| |
|
|
|
|
|
|
|
| |
Add explicit testcases for tail calls within the same module.
Duplicate some code to humor those who think .w doesn't apply on ARM.
Leave this disabled on Thumb1, and add some comments explaining why it's hard
and won't gain much.
llvm-svn: 107851
|
| |
|
|
| |
llvm-svn: 107831
|
| |
|
|
|
|
|
|
|
| |
address calculation instructions leading up to a jump table when we're trying
to convert them into a TB[H] instruction in Thumb2. This realistically
shouldn't happen much, if at all, for well formed inputs, but it's more correct
to handle it. rdar://7387682
llvm-svn: 107830
|
| |
|
|
| |
llvm-svn: 107811
|
| |
|
|
|
|
| |
code can do calling-convention queries. This obviates OutputArgReg.
llvm-svn: 107786
|
| |
|
|
| |
llvm-svn: 107743
|
| |
|
|
|
|
| |
they've been tested to work.
llvm-svn: 107742
|
| |
|
|
|
|
|
| |
than assuming a target will custom lower them. Targets which do so should
exlicitly mark them as having custom lowerings. PR7454.
llvm-svn: 107734
|
| |
|
|
|
|
| |
allocated to consecutive registers.
llvm-svn: 107730
|
| |
|
|
|
|
|
| |
This means that an instruction defining an S register will affect the domain of
the parent D register.
llvm-svn: 107725
|
| |
|
|
| |
llvm-svn: 107710
|
| |
|
|
| |
llvm-svn: 107701
|
| |
|
|
|
|
|
| |
the block before calling the expansion hook. And don't
put EFLAGS in a mbb's live-in list twice.
llvm-svn: 107691
|
| |
|
|
|
|
| |
if profitable.
llvm-svn: 107673
|
| |
|
|
| |
llvm-svn: 107668
|
| |
|
|
|
|
| |
the pseudo instruction is not at the end of the block.
llvm-svn: 107655
|
| |
|
|
|
|
| |
slots so it's always false.
llvm-svn: 107550
|
| |
|
|
| |
llvm-svn: 107513
|
| |
|
|
|
|
|
| |
that it checks the immediate values, not just the instructions opcodes.
Radar 8110263.
llvm-svn: 107487
|
| |
|
|
|
|
|
|
|
| |
getFunctionAlignment and the corresponding use of that value in the ARM
asm printer, but now we're using the standard asm printer. The result of
this was that function alignments were dropped completely for Thumb functions.
Radar 8143571.
llvm-svn: 107435
|
| |
|
|
| |
llvm-svn: 107201
|
| |
|
|
|
|
|
| |
The encoding is the same as VMOV (from scalar to core register) except that
the operands are in different places.
llvm-svn: 107167
|
| |
|
|
| |
llvm-svn: 107154
|