| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
const_casts, and it reinforces the design of the Target classes being
immutable.
SelectionDAGISel::IsLegalToFold is now a static member function, because
PIC16 uses it in an unconventional way. There is more room for API
cleanup here.
And PIC16's AsmPrinter no longer uses TargetLowering.
llvm-svn: 101635
|
|
|
|
|
|
| |
MachineFunctionInfo subclasses.
llvm-svn: 101634
|
|
|
|
|
|
|
|
|
| |
may be called when either the source or destination type is i64, and my
change also hadn't fixed the most obvious problem -- assuming that i64 will
only be bitconverted to f64, ignoring the various vector types.
Radar 7873160.
llvm-svn: 101615
|
|
|
|
|
|
| |
is doing the right thing and codegen looks correct for both Thumb and Thumb2.
llvm-svn: 101410
|
|
|
|
| |
llvm-svn: 101335
|
|
|
|
| |
llvm-svn: 101334
|
|
|
|
|
|
|
|
| |
kernel linker happier when dealing with kexts.
Radar 7805069
llvm-svn: 101303
|
|
|
|
|
|
|
| |
does not have a legal type. The legalizer does not know how to handle those
nodes. Radar 7854640.
llvm-svn: 101282
|
|
|
|
|
|
| |
such that the entire second half is in memory. Radar 7855014.
llvm-svn: 101181
|
|
|
|
|
|
| |
Radar 7770501.
llvm-svn: 100568
|
|
|
|
|
|
|
| |
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
llvm-svn: 100304
|
|
|
|
| |
llvm-svn: 100199
|
|
|
|
|
|
|
| |
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
llvm-svn: 100191
|
|
|
|
| |
llvm-svn: 99948
|
|
|
|
|
|
|
|
|
| |
memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
A update of langref will occur in a subsequent checkin.
llvm-svn: 99928
|
|
|
|
| |
llvm-svn: 99402
|
|
|
|
|
|
| |
test run permformance numbers say as to whether it helps.
llvm-svn: 99355
|
|
|
|
|
|
|
|
|
|
|
|
| |
--- Reverse-merging r98889 into '.':
U lib/Target/ARM/ARMInstrNEON.td
U lib/Target/ARM/ARMISelLowering.h
U lib/Target/ARM/ARMInstrInfo.td
U lib/Target/ARM/ARMInstrVFP.td
U lib/Target/ARM/ARMISelLowering.cpp
U lib/Target/ARM/ARMInstrFormats.td
llvm-svn: 99010
|
|
|
|
| |
llvm-svn: 98889
|
|
|
|
| |
llvm-svn: 98888
|
|
|
|
|
|
| |
Radar 7459078.
llvm-svn: 98586
|
|
|
|
|
|
| |
section, remove the target-specific code that performs this.
llvm-svn: 98580
|
|
|
|
| |
llvm-svn: 98503
|
|
|
|
| |
llvm-svn: 98502
|
|
|
|
|
|
|
|
|
|
|
|
| |
Place the LSDA into the TEXT section for ARM platforms. This involves making the
encoding indirect, pcrel, and sdata4 instead of an absolute pointer. The
references to the type infos are then non-lazy pointers. Revision 98019 changed
the encoding of non-lazy pointers to add the symbol to the non-lazy pointer
definition if it's a local symbol (otherwise, it's external and set to '0' so
that the loader can adjust it to the real value). This paved the way for this
change to work on ARM.
llvm-svn: 98068
|
|
|
|
|
|
| |
bear with the awful code. It won't last in its current state beyond tonight.
llvm-svn: 98040
|
|
|
|
| |
llvm-svn: 97536
|
|
|
|
|
|
|
|
| |
greater-than-or-equal SELECT_CCs to NEON vmin/vmax instructions. This is
only allowed when UnsafeFPMath is set or when at least one of the operands
is known to be nonzero.
llvm-svn: 97065
|
|
|
|
|
|
|
| |
Machine instruction selection is much happier when operands are in virtual
registers.
llvm-svn: 97012
|
|
|
|
|
|
| |
Radar 7461718.
llvm-svn: 96572
|
|
|
|
|
|
| |
change to SelectionDAG build APIs.
llvm-svn: 96230
|
|
|
|
| |
llvm-svn: 95603
|
|
|
|
| |
llvm-svn: 95160
|
|
|
|
|
|
| |
sibcall eligibility.
llvm-svn: 95130
|
|
|
|
|
|
|
|
|
| |
Even if they are suported by the core, they can be disabled
(this is just a configuration bit inside some register).
Allow unaligned memops on darwin and conservatively disallow them otherwise.
llvm-svn: 94889
|
|
|
|
|
|
|
|
|
| |
Target independent isel should always pass along the "tail call" property. Change
target hook LowerCall's parameter "isTailCall" into a refernce. If the target
decides it's impossible to honor the tail call request, it should set isTailCall
to false to make target independent isel happy.
llvm-svn: 94626
|
|
|
|
| |
llvm-svn: 93940
|
|
|
|
|
|
|
| |
"On ARMv6T2 this turns cttz into rbit, clz instead of the 4 instruction
sequence it is now."
llvm-svn: 93758
|
|
|
|
| |
llvm-svn: 93480
|
|
|
|
|
|
| |
EmitAtomicBinary() already does this.
llvm-svn: 93479
|
|
|
|
|
|
|
|
|
| |
This is consistent with llvm-gcc's arm/constraints.md.
Certain instructions (e.g. CBZ, CBNZ) require a low register, even in Thumb2
mode.
llvm-svn: 93436
|
|
|
|
| |
llvm-svn: 93342
|
|
|
|
|
|
|
|
| |
return partial registers. This affected the back-end lowering code some.
Also patch up some places I missed before in the "get" functions.
llvm-svn: 91880
|
|
|
|
| |
llvm-svn: 91836
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MI was not being used but it was also not being deleted, so it was kept in the garbage list. The memory itself was freed once the function code gen was done.
Once in a while the codegen of another function would create an instruction on the same address. Adding it to the garbage group would work once, but when another pointer was added it would cause an assert as "Cache" was about to be pushed to Ts.
For a patch that make us detect problems like this earlier, take a look at
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20091214/092758.html
With that patch we assert as soon and the new instruction is added to the garbage set.
llvm-svn: 91691
|
|
|
|
|
|
|
|
| |
The change in SelectionDAGBuilder is needed to allow using bitcasts to convert
between f64 (the default type for ARM "d" registers) and 64-bit Neon vector
types. Radar 7457110.
llvm-svn: 91649
|
|
|
|
| |
llvm-svn: 91371
|
|
|
|
| |
llvm-svn: 91329
|
|
|
|
| |
llvm-svn: 91321
|
|
|
|
| |
llvm-svn: 91260
|