| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
Attributes class.
llvm-svn: 164308
|
| |
|
|
|
|
| |
hundred bytes of static data. Change unsigned char in same table to uint8_t for explicitness.
llvm-svn: 164285
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Rewrite/merge pseudo-atomic instruction emitters to address the
following issue:
* Reduce one unnecessary load in spin-loop
previously the spin-loop looks like
thisMBB:
newMBB:
ld t1 = [bitinstr.addr]
op t2 = t1, [bitinstr.val]
not t3 = t2 (if Invert)
mov EAX = t1
lcs dest = [bitinstr.addr], t3 [EAX is implicit]
bz newMBB
fallthrough -->nextMBB
the 'ld' at the beginning of newMBB should be lift out of the loop
as lcs (or CMPXCHG on x86) will load the current memory value into
EAX. This loop is refined as:
thisMBB:
EAX = LOAD [MI.addr]
mainMBB:
t1 = OP [MI.val], EAX
LCMPXCHG [MI.addr], t1, [EAX is implicitly used & defined]
JNE mainMBB
sinkMBB:
* Remove immopc as, so far, all pseudo-atomic instructions has
all-register form only, there is no immedidate operand.
* Remove unnecessary attributes/modifiers in pseudo-atomic instruction
td
* Fix issues in PR13458
- Add comprehensive tests on atomic ops on various data types.
NOTE: Some of them are turned off due to missing functionality.
- Revise tests due to the new spin-loop generated.
llvm-svn: 164281
|
| |
|
|
|
|
|
|
|
|
|
| |
- Merge the processing of LOAD_ADD with other atomic load-arith
operations
- Separate the logic getting target constant for atomic-load-op and add
an optimization for atomic-load-add on i16 with negative value
- Optimize a minor case for atomic-fetch-add i16 with negative operand. Test
case is revised.
llvm-svn: 164243
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
lib/Target/PowerPC/PPCISelLowering.{h,cpp}
Rename LowerFormalArguments_Darwin to LowerFormalArguments_Darwin_Or_64SVR4.
Rename LowerFormalArguments_SVR4 to LowerFormalArguments_32SVR4.
Receive small structs right-justified in LowerFormalArguments_Darwin_Or_64SVR4.
Rename LowerCall_Darwin to LowerCall_Darwin_Or_64SVR4.
Rename LowerCall_SVR4 to LowerCall_32SVR4.
Pass small structs right-justified in LowerCall_Darwin_Or_64SVR4.
test/CodeGen/PowerPC/structsinregs.ll
New test.
llvm-svn: 164228
|
| |
|
|
|
|
| |
code emitters and the disassembler table builder. Fix a couple instructions that were still missing VEX_L.
llvm-svn: 164204
|
| |
|
|
|
|
| |
remove code from the code emitters that examined operands to set the L-bit.
llvm-svn: 164202
|
| |
|
|
| |
llvm-svn: 164169
|
| |
|
|
| |
llvm-svn: 164155
|
| |
|
|
| |
llvm-svn: 164150
|
| |
|
|
|
|
| |
Patch by Adhemerval Zanella.
llvm-svn: 164141
|
| |
|
|
| |
llvm-svn: 164139
|
| |
|
|
|
|
| |
Patch by Adhemerval Zanella.
llvm-svn: 164138
|
| |
|
|
|
|
|
|
|
| |
store this and use it to not emit long nops when the CPU is geode which
doesnt support them.
Fixes PR11212.
llvm-svn: 164132
|
| |
|
|
|
|
| |
- when we may clobber the other S-lane by converting an S to a D instruction, make an effort to work out if the S lane is clobberable or not.
llvm-svn: 164114
|
| |
|
|
|
|
| |
model.
llvm-svn: 164092
|
| |
|
|
|
|
|
|
|
| |
aligned address. Based on patch by David Peixotto.
Also use vld1.64 / vst1.64 with 128-bit alignment to take advantage of alignment
hints. rdar://12090772, rdar://12238782
llvm-svn: 164089
|
| |
|
|
|
|
|
| |
I have to work out the Target/CodeGen header dependencies
before putting this back.
llvm-svn: 164072
|
| |
|
|
|
|
| |
model.
llvm-svn: 164061
|
| |
|
|
|
|
| |
While we are setting the earlier def to true, also make it live.
llvm-svn: 164056
|
| |
|
|
|
|
|
|
| |
we will do that when we implement the full save/restore.
Patch by Reed Kotler.
llvm-svn: 164051
|
| |
|
|
|
|
| |
function warnings use LLVM_ATTRIBUTE_UNUSED.
llvm-svn: 164036
|
| |
|
|
| |
llvm-svn: 164030
|
| |
|
|
| |
llvm-svn: 164001
|
| |
|
|
|
|
|
|
|
|
|
| |
wide vector types.
It had patterns for zext-loading and extending. This commit adds patterns for loading a wide type, performing a bitcast,
and extending. This is an odd pattern, but it is commonly used when writing code with intrinsics.
rdar://11897677
llvm-svn: 163995
|
| |
|
|
| |
llvm-svn: 163974
|
| |
|
|
| |
llvm-svn: 163973
|
| |
|
|
|
|
| |
This was only an issue if sse is disabled.
llvm-svn: 163967
|
| |
|
|
|
|
|
|
|
|
| |
use load/store fragments defined in TargetSelectionDAG.td in place of them.
Unaligned loads/stores are either expanded or lowered to target-specific nodes,
so instruction selection should see only aligned load/store nodes.
No changes in functionality.
llvm-svn: 163960
|
| |
|
|
|
|
| |
Patch by Reed Kotler.
llvm-svn: 163956
|
| |
|
|
| |
llvm-svn: 163922
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This models the A9 processor at the level of instruction operands, as
opposed to the itinerary, which models each operation at the level of
pipeline stages.
The two primary motivations are:
1) Allow MachineScheduler to model A9 as an out-of-order processor. It
can now distinguish between hazards that force interlocking vs.
buffered resources.
2) Reduce long-term maintenance by allowing the itinerary and target
hooks to eventually be removed. Note that almost all of the complexity
in the new model exists to model instruction variants, which the
itinerary cannot handle. Instead the scheduler previously relied on
processor-specific target hooks which are incomplete and buggy.
llvm-svn: 163921
|
| |
|
|
|
|
|
|
| |
This patch introduces a possibility for Hexagon MI scheduler
to perform some target specific post- processing on the scheduling
DAG prior to scheduling.
llvm-svn: 163903
|
| |
|
|
|
|
|
|
|
|
| |
* wrap code blocks in \code ... \endcode;
* refer to parameter names in paragraphs correctly (\arg is not what most
people want -- it starts a new paragraph);
* use \param instead of \arg to document parameters in order to be consistent
with the rest of the codebase.
llvm-svn: 163902
|
| |
|
|
|
|
| |
clang warned about this being unused in Release builds.
llvm-svn: 163899
|
| |
|
|
|
|
|
|
|
| |
1. Add MoveR3216
2. Correct spelling for Move32R16
Patch by Reed Kotler.
llvm-svn: 163869
|
| |
|
|
| |
llvm-svn: 163835
|
| |
|
|
|
|
|
|
| |
- Enhance the fix to PR12312 to support wider integer, such as 256-bit
integer. If more than 1 fully evaluated vectors are found, POR them
first followed by the final PTEST.
llvm-svn: 163832
|
| |
|
|
|
|
|
|
|
|
| |
Add a PatFrag to match X86tcret using 6 fixed registers or less. This
avoids folding loads into TCRETURNmi64 using 7 or more volatile
registers.
<rdar://problem/12282281>
llvm-svn: 163819
|
| |
|
|
|
|
|
|
| |
immediate operands to be copied.
Patch by Reed Kotler.
llvm-svn: 163811
|
| |
|
|
|
|
| |
The patch caused "Wrong topological sorting" assertions.
llvm-svn: 163810
|
| |
|
|
| |
llvm-svn: 163803
|
| |
|
|
|
|
| |
byte represent 8 instructions and the reg modRM byte represents up to 64 instructions. Reduces modRM table from 43k entreis to 25k entries. Based on a patch from Manman Ren.
llvm-svn: 163774
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
We don't have enough GR64_TC registers when calling a varargs function
with 6 arguments. Since %al holds the number of vector registers used,
only %r11 is available as a scratch register.
This means that addressing modes using both base and index registers
can't be folded into TCRETURNmi64.
<rdar://problem/12282281>
llvm-svn: 163761
|
| |
|
|
|
|
|
|
|
| |
1. Remove RA from list of allocatable registers
2. Enable d,y,r constraint inline assembly instructions
Patch by Reed Kotler.
llvm-svn: 163753
|
| |
|
|
|
|
|
|
|
|
|
| |
- BlockAddress has no support of BA + offset form and there is no way to
propagate that offset into machine operand;
- Add BA + offset support and a new interface 'getTargetBlockAddress' to
simplify target block address forming;
- All targets are modified to use new interface and X86 backend is enhanced to
support BA + offset addressing.
llvm-svn: 163743
|
| |
|
|
| |
llvm-svn: 163729
|
| |
|
|
| |
llvm-svn: 163721
|
| |
|
|
|
|
| |
was fixed in r163713.
llvm-svn: 163715
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
nonvolatile condition register fields across calls under the SVR4 ABIs.
* With the 64-bit ABI, the save location is at a fixed offset of 8 from
the stack pointer. The frame pointer cannot be used to access this
portion of the stack frame since the distance from the frame pointer may
change with alloca calls.
* With the 32-bit ABI, the save location is just below the general
register save area, and is accessed via the frame pointer like the rest
of the save areas. This is an optional slot, so it must only be created
if any of CR2, CR3, and CR4 were modified.
* For both ABIs, save/restore logic is generated only if one of the
nonvolatile CR fields were modified.
I also took this opportunity to clean up an extra FIXME in
PPCFrameLowering.h. Save area offsets for 32-bit GPRs are meaningless
for the 64-bit ABI, so I removed them for correctness and efficiency.
Fixes PR13708 and partially also PR13623. It lets us enable exception handling
on PPC64.
Patch by William J. Schmidt!
llvm-svn: 163713
|