| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 161626
|
| |
|
|
|
|
|
|
|
|
| |
This new API will be used by clang to parse ms-style inline asms.
One goal of this project is to use this style of inline asm for targets other
then x86. Therefore, this API needs to be implemented for non-x86 targets at
some point in the future.
llvm-svn: 161624
|
| |
|
|
|
|
| |
The fields in the td definition were switched.
llvm-svn: 161607
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch corrects the definition of umlal/smlal instructions and adds support
for matching them to the ARM dag combiner.
Bug 12213
Patch by Yin Ma!
llvm-svn: 161581
|
| |
|
|
| |
llvm-svn: 161564
|
| |
|
|
|
|
|
|
|
| |
This way of using getNextOperandForReg() was unlikely to work as
intended. We don't give any guarantees about the order of operands in
the use-def chains, so looking only at operands following a given
operand in the chain doesn't make sense.
llvm-svn: 161542
|
| |
|
|
|
|
|
| |
This replaces an existing subtarget hook on ARM and allows standard
CodeGen passes to potentially use the property.
llvm-svn: 161471
|
| |
|
|
| |
llvm-svn: 161469
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
We perform the following:
1> Use SUB instead of CMP for i8,i16,i32 and i64 in ISel lowering.
2> Modify MachineCSE to correctly handle implicit defs.
3> Convert SUB back to CMP if possible at peephole.
Removed pattern matching of (a>b) ? (a-b):0 and like, since they are handled
by peephole now.
rdar://11873276
llvm-svn: 161462
|
| |
|
|
|
|
|
|
|
|
| |
We can't rematerialize a PIC base after register allocation anyway, and
scanning physreg use-def chains is very expensive in a function with
many calls.
<rdar://problem/12047515>
llvm-svn: 161461
|
| |
|
|
|
|
|
|
| |
do so when the high bits are known zero. This caused a subtle miscompilation.
rdar://12027825
llvm-svn: 161451
|
| |
|
|
|
|
| |
Thanks to Alex Rosenberg for the suggestion.
llvm-svn: 161428
|
| |
|
|
|
|
|
|
| |
--- Reverse-merging r161371 into '.':
U include/llvm/Target/TargetData.h
U lib/Target/TargetData.cpp
llvm-svn: 161394
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
initialize fields of the class that it used.
The result was nonsense code.
Before:
0000000000000000 <foo>:
0: 00441100 0x441100
4: 03e00008 jr ra
8: 00000000 nop
After:
0000000000000000 <foo>:
0: 00041000 sll v0,a0,0x0
4: 03e00008 jr ra
8: 00000000 nop
llvm-svn: 161377
|
| |
|
|
| |
llvm-svn: 161371
|
| |
|
|
|
|
|
|
|
|
|
| |
This allows codegen passes to query properties like
InstrItins->SchedModel->IssueWidth. It also ensure's that
computeOperandLatency returns the X86 defaults for loads and "high
latency ops". This should have no significant impact on existing
schedulers because X86 defaults happen to be the same as global
defaults.
llvm-svn: 161370
|
| |
|
|
|
|
|
|
| |
I hit this in a very large program (spirit.cpp), but
have not figured out how to make a small make check
test for it.
llvm-svn: 161366
|
| |
|
|
|
|
|
|
|
|
| |
were using a class defined for 32 bit instructions and
thus the instruction was for addiu instead of daddiu.
This was corrected by adding the instruction opcode as a
field in the base class to be filled in by the defs.
llvm-svn: 161359
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
These 2 relocations gain access to the
highest and the second highest 16 bits
of a 64 bit object.
R_MIPS_HIGHER %higher(A+S)
The %higher(x) function is [ (((long long) x + 0x80008000LL) >> 32) & 0xffff ].
R_MIPS_HIGHEST %highest(A+S)
The %highest(x) function is [ (((long long) x + 0x800080008000LL) >> 48) & 0xffff ].
llvm-svn: 161348
|
| |
|
|
|
|
|
|
|
|
|
| |
The MFTB instruction itself is being phased out, and its functionality
is provided by MFSPR. According to the ISA docs, using MFSPR works on all known
chips except for the 601 (which did not have a timebase register anyway)
and the POWER3.
Thanks to Adhemerval Zanella for pointing this out!
llvm-svn: 161346
|
| |
|
|
|
|
| |
Patch by David Hill.
llvm-svn: 161344
|
| |
|
|
| |
llvm-svn: 161328
|
| |
|
|
|
|
| |
custom handling in DAGISelToDAG due to limitations in TableGen's implicit def handling. Fixes PR11305.
llvm-svn: 161318
|
| |
|
|
|
|
| |
represented in a pattern.
llvm-svn: 161306
|
| |
|
|
|
|
| |
for pcmpestrm/pcmpistrm. Allows the register allocator to handle it better and prevent wasted identity moves.
llvm-svn: 161305
|
| |
|
|
|
|
|
|
| |
On PPC64, this can be done with a simple TableGen pattern.
To enable this, I've added the (otherwise missing) readcyclecounter
SDNode definition to TargetSelectionDAG.td.
llvm-svn: 161302
|
| |
|
|
| |
llvm-svn: 161301
|
| |
|
|
|
|
|
|
|
| |
stuff
(this corresponds by spilling/reloading regs in DTriple / DQuad reg classes).
No testcase, found by inspection.
llvm-svn: 161300
|
| |
|
|
|
|
|
|
| |
classes, which
were missed for no reason. This fixes PR13377
llvm-svn: 161299
|
| |
|
|
|
|
|
|
|
| |
Change these to patterns.
2. Add another 16 instructions.
Patch by Reed Kotler.
llvm-svn: 161272
|
| |
|
|
|
|
|
|
| |
this makes this hack a bit more bearable
for poor souls who need to pass custom
preprocessor flags to the build process
llvm-svn: 161240
|
| |
|
|
|
|
|
|
|
|
| |
Fast isel doesn't currently have support for translating builtin function
calls to target instructions. For embedded environments where the library
functions are not available, this is a matter of correctness and not
just optimization. Most of this patch is just arranging to make the
TargetLibraryInfo available in fast isel. <rdar://problem/12008746>
llvm-svn: 161232
|
| |
|
|
|
|
|
|
| |
This just provides a way to look up a LibFunc::Func enum value for a
function name. Alphabetize the enums and function names so we can use a
binary search.
llvm-svn: 161231
|
| |
|
|
| |
llvm-svn: 161230
|
| |
|
|
|
|
|
|
| |
but somehow managed to be dropped later.
Patch by Karel Gardas.
llvm-svn: 161226
|
| |
|
|
| |
llvm-svn: 161222
|
| |
|
|
| |
llvm-svn: 161220
|
| |
|
|
|
|
|
|
| |
Now that TableGen supports references to NAME w/o it being explicitly
referenced in the definition's own name, use that to simplify
assembly InstAlias definitions in multiclasses.
llvm-svn: 161218
|
| |
|
|
|
|
|
|
|
|
| |
Add more comments and use early returns to reduce nesting in isLoadFoldable.
Also disable folding for V_SET0 to avoid introducing a const pool entry and
a const pool load.
rdar://10554090 and rdar://11873276
llvm-svn: 161207
|
| |
|
|
|
|
| |
of MipsTargetMachine.cpp.
llvm-svn: 161191
|
| |
|
|
|
|
| |
test o32_cc_vararg.ll.
llvm-svn: 161189
|
| |
|
|
| |
llvm-svn: 161163
|
| |
|
|
|
|
| |
index issue.
llvm-svn: 161162
|
| |
|
|
| |
llvm-svn: 161161
|
| |
|
|
| |
llvm-svn: 161159
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Machine CSE and other optimizations can remove instructions so folding
is possible at peephole while not possible at ISel.
This patch is a rework of r160919 and was tested on clang self-host on my local
machine.
rdar://10554090 and rdar://11873276
llvm-svn: 161152
|
| |
|
|
| |
llvm-svn: 161143
|
| |
|
|
| |
llvm-svn: 161134
|
| |
|
|
| |
llvm-svn: 161133
|
| |
|
|
| |
llvm-svn: 161132
|