| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
| |
In X86FastISel::X86SelectStore(), improperly aligned stores are rejected and
handled by the DAG-based ISel. However, X86FastISel::X86SelectLoad() makes
no such requirement. There doesn't appear to be an x86 architectural
correctness issue with allowing potentially unaligned store instructions.
This patch removes this restriction.
Patch by Jim Stichnot.
llvm-svn: 179774
|
| |
|
|
| |
llvm-svn: 179765
|
| |
|
|
| |
llvm-svn: 179764
|
| |
|
|
| |
llvm-svn: 179751
|
| |
|
|
| |
llvm-svn: 179741
|
| |
|
|
| |
llvm-svn: 179739
|
| |
|
|
|
|
| |
This patch should not have any functional changes.
llvm-svn: 179737
|
| |
|
|
|
|
| |
Differential Revision: http://llvm-reviews.chandlerc.com/D598
llvm-svn: 179725
|
| |
|
|
| |
llvm-svn: 179724
|
| |
|
|
|
|
|
|
|
|
|
| |
unable to handle cases such as __asm mov eax, 8*-8.
This patch also attempts to simplify the state machine. Further, the error
reporting has been improved. Test cases included, but more will be added to
the clang side shortly.
rdar://13668445
llvm-svn: 179719
|
| |
|
|
|
|
|
|
|
| |
for the sdiv/srem/udiv/urem bitcode instructions. This is done for the i8,
i16, and i32 types, as well as i64 for the x86_64 target.
Patch by Jim Stichnoth
llvm-svn: 179715
|
| |
|
|
|
|
|
|
| |
getSimpleVT can only handle simple value types.
radar://13676022
llvm-svn: 179714
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The reference manual defines only 5 permitted values for the immediate field of the "hint" instruction:
1. nop (imm == 0)
2. yield (imm == 1)
3. wfe (imm == 2)
4. wfi (imm == 3)
5. sev (imm == 4)
Therefore, restrict the permitted values for the "hint" instruction to 0 through 4.
Patch by Mihail Popa <Mihail.Popa@arm.com>
llvm-svn: 179707
|
| |
|
|
|
|
|
|
|
|
| |
A couple of recently introduced conditional branch patterns
also need to be marked as isCodeGenOnly since they cannot
be handled by the asm parser.
No change in generated code.
llvm-svn: 179690
|
| |
|
|
| |
llvm-svn: 179686
|
| |
|
|
| |
llvm-svn: 179685
|
| |
|
|
| |
llvm-svn: 179684
|
| |
|
|
|
|
| |
Broken in r179657.
llvm-svn: 179669
|
| |
|
|
|
|
|
|
|
|
| |
This patch allows the Mips assembler to parse and emit nested
expressions as instruction operands. It also extends the
expansion of memory instructions when an offset is given as
an expression.
Contributer: Vladimir Medic
llvm-svn: 179657
|
| |
|
|
|
|
|
| |
cases to be submitted on clang side shortly.
rdar://13663768 and PR15760
llvm-svn: 179655
|
| |
|
|
| |
llvm-svn: 179648
|
| |
|
|
| |
llvm-svn: 179611
|
| |
|
|
| |
llvm-svn: 179610
|
| |
|
|
| |
llvm-svn: 179607
|
| |
|
|
| |
llvm-svn: 179593
|
| |
|
|
| |
llvm-svn: 179591
|
| |
|
|
| |
llvm-svn: 179582
|
| |
|
|
|
|
|
|
|
| |
These are aliases for VACGT and VACGE, respectively, with the source
operands reversed.
rdar://13638090
llvm-svn: 179575
|
| |
|
|
|
|
|
|
|
|
| |
This patch allows the assembler to recognize $fcc0
as a valid register for conditional move instructions.
Corresponding test cases have been added.
Contributer: Vladimir Medic
llvm-svn: 179567
|
| |
|
|
|
|
|
|
| |
Instead of emitting config values in a predefined order, the code
emitter will now emit a 32-bit register index followed by the 32-bit
config value.
llvm-svn: 179546
|
| |
|
|
| |
llvm-svn: 179545
|
| |
|
|
| |
llvm-svn: 179544
|
| |
|
|
|
|
|
|
|
|
| |
Now that the CR spilling issues have been resolved, we can remove the
unmodeled-side-effect attributes from the comparison instructions (and also
mark them as isCompare). By allowing these, by default, to have unmodeled side
effects, we were hiding problems with CR spilling; but everything seems much
happier now.
llvm-svn: 179502
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes an ABI bug for non-Darwin PPC64. For the callee-saved condition
registers, the spill location is specified relative to the stack pointer (SP +
8). However, this is not relative to the SP after the new stack frame is
established, but instead relative to the caller's stack pointer (it is stored
into the linkage area of the parent's stack frame).
So, like with the link register, we don't directly spill the CRs with other
callee-saved registers, but just mark them to be spilled during prologue
generation.
In practice, this reverts r179457 for PPC64 (but leaves it in place for PPC32).
llvm-svn: 179500
|
| |
|
|
|
|
| |
Test case by llvm-stress.
llvm-svn: 179477
|
| |
|
|
|
|
| |
For when 16 TB just isn't enough.
llvm-svn: 179474
|
| |
|
|
|
|
|
| |
This is the default model for non-PIC 64-bit code. It supports
text+data+bss linked anywhere in the low 16 TB of the address space.
llvm-svn: 179473
|
| |
|
|
|
|
|
| |
64-bit code models need multiple relocations that can't be inferred from
the opcode like they can in 32-bit code.
llvm-svn: 179472
|
| |
|
|
|
|
|
| |
Constant pool entries are accessed exactly the same way as global
variables.
llvm-svn: 179471
|
| |
|
|
|
|
| |
This fixes the pic32 code model for SPARC v9.
llvm-svn: 179469
|
| |
|
|
|
|
|
|
|
| |
SDNodes and MachineOperands get target flags representing the %hi() and
%lo() assembly annotations that eventually become relocations.
Also define flags to be used by the 64-bit code models.
llvm-svn: 179468
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Leaving MFCR has having unmodeled side effects is not enough to prevent
unwanted instruction reordering post-RA. We could probably apply a stronger
barrier attribute, but there is a better way: Add all (not just the first) CR
to be spilled as live-in to the entry block, and add all CRs to the MFCR
instruction as implicitly killed.
Unfortunately, I don't have a small test case.
llvm-svn: 179465
|
| |
|
|
|
|
|
| |
Currently, only abs32 and pic32 are implemented. Add a test case for
abs32 with 64-bit code. 64-bit PIC code is currently broken.
llvm-svn: 179463
|
| |
|
|
|
|
|
| |
It doesn't seem like anybody is checking types this late in isel, so no
test case.
llvm-svn: 179462
|
| |
|
|
|
|
|
|
|
|
| |
For functions that need to spill CRs, and have dynamic stack allocations, the
value of the SP during the restore is not what it was during the save, and so
we need to use the FP in these cases (as for all of the other spills and
restores, but the CR restore has a special code path because its reserved slot,
like the link register, is specified directly relative to the adjusted SP).
llvm-svn: 179457
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The initial values were arbitrary. I want them to be more
conservative. This represents the number of latency cycles hidden by
OOO execution. In practice, I think it should be within a small factor
of the complex floating point operation latency so the scheduler can
make some attempt to hide latency even for smallish blocks.
These are by no means the best values, just a starting point for
tuning heuristics. Some benchmarks such as TSVC run faster with this
lower value for SandyBridge. I haven't run anything on Haswell, but
it's shouldn't be 2x SB.
llvm-svn: 179450
|
| |
|
|
|
|
|
|
|
|
| |
I need to handle this for the test case in my following scheduler
commit.
Work is already under way to redesign the mechanism for node order
propagation because this case by case approach is unmaintainable.
llvm-svn: 179448
|
| |
|
|
|
|
|
|
| |
lowerINTRINSIC_WO_CHAIN into MipsSETargetLowering.
No functionality changes.
llvm-svn: 179444
|
| |
|
|
| |
llvm-svn: 179434
|
| |
|
|
| |
llvm-svn: 179433
|