| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 251888
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ScheduleDAGInstrs doesn't behave differently before or after register
allocation. It was only used in a method of MachineSchedulerBase which
behaved differently in MachineScheduler/PostMachineScheduler. Change
this to let MachineScheduler/PostMachineScheduler just pass in a
parameter to that function.
The order of the LiveIntervals* and bool RemoveKillFlags paramters have
been switched to make out-of-tree code fail instead of unintentionally
passing a value intended for the IsPostRA flag to the (previously
following and default initialized) RemoveKillFlags.
Differential Revision: http://reviews.llvm.org/D14245
llvm-svn: 251883
|
|
|
|
| |
llvm-svn: 251867
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was causing a variety of test failures when v2i64
is added as a legal type.
SIFixSGPRCopies should correctly handle the case of vector inputs
to a scalar reg_sequence, so this isn't necessary anymore. This
was hiding some deficiencies in how reg_sequence is handled later,
but this shouldn't be a problem anymore since the register class
copy of a reg_sequence is now done before the reg_sequence.
llvm-svn: 251860
|
|
|
|
| |
llvm-svn: 251859
|
|
|
|
|
|
|
|
| |
I've found myself pointlessly debugging problems from running
graphics tests with an HSA triple a few times, so stop this from
happening again.
llvm-svn: 251858
|
|
|
|
|
|
|
| |
Make the REG_SEQUENCE be a VGPR, and do the register class
copy first.
llvm-svn: 251855
|
|
|
|
|
|
|
|
| |
Replace some hacky code with the proper way to get at this data.
No functional change.
llvm-svn: 251848
|
|
|
|
| |
llvm-svn: 251814
|
|
|
|
|
|
|
|
|
|
| |
This revision has introduced an issue that only affects bootstrapped compiler
when it is printing the ASM. It turns out that the new code path taken due to
legalizing a scalar_to_vector of i64 -> v2i64 exposes a missing check in a
micro optimization to change a load followed by a scalar_to_vector into a
load and splat instruction on PPC.
llvm-svn: 251798
|
|
|
|
|
|
|
|
| |
VBROADCASTF32x2 instructions.
Differential Revision: http://reviews.llvm.org/D14216
llvm-svn: 251781
|
|
|
|
|
|
| |
intrinsics. Nothing upstream prevented illegal values from getting here.
llvm-svn: 251780
|
|
|
|
| |
llvm-svn: 251778
|
|
|
|
| |
llvm-svn: 251777
|
|
|
|
|
|
| |
unreachable in their default case.
llvm-svn: 251776
|
|
|
|
| |
llvm-svn: 251775
|
|
|
|
| |
llvm-svn: 251774
|
|
|
|
| |
llvm-svn: 251772
|
|
|
|
| |
llvm-svn: 251769
|
|
|
|
|
|
|
|
|
|
|
|
| |
Optimized <8 x i32> to <8 x i16>
<4 x i64> to < 4 x i32>
<16 x i16> to <16 x i8>
All these oprtrations use now AVX512F set (KNL). Before this change it was implemented with AVX2 set.
Differential Revision: http://reviews.llvm.org/D14108
llvm-svn: 251764
|
|
|
|
|
|
| |
already known to be a vector. This should result in slightly less code. NFC
llvm-svn: 251751
|
|
|
|
|
|
| |
the type is simple. NFC
llvm-svn: 251745
|
|
|
|
|
|
| |
getScalarType().getScalarSizeInBits(). NFC
llvm-svn: 251744
|
|
|
|
|
|
| |
just use normal object creation syntax. NFC
llvm-svn: 251743
|
|
|
|
| |
llvm-svn: 251742
|
|
|
|
| |
llvm-svn: 251741
|
|
|
|
|
|
| |
subvectors and elements by exploiting the fact that all supported vector types have a power 2 number of elements.
llvm-svn: 251740
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Imports should be generated like (param i32 f32...) not (param i32) (param f32) ...
Author: binji
Reviewers: jfb
Subscribers: jfb, dschuff
llvm-svn: 251714
|
|
|
|
|
|
| |
getSizeInBits == in some places. NFC
llvm-svn: 251687
|
|
|
|
| |
llvm-svn: 251686
|
|
|
|
|
|
| |
Prior to this the compiled code probably had extra checks for extended types that won't ever execute.
llvm-svn: 251682
|
|
|
|
|
|
|
|
| |
This patch generalizes the zeroing of vector elements with the BLEND instructions. Currently a zero vector will only blend if the shuffled elements are correctly inline, this patch recognises when a vector input is zero (or zeroable) and modifies a local copy of the shuffle mask to support a blend. As a zeroable vector input may not be all zeroes, the zeroable vector is regenerated if necessary.
Differential Revision: http://reviews.llvm.org/D14050
llvm-svn: 251659
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was discovered to be necessary while running memchr-01.ll with
-verify-machinstrs, because it is not allowed to have a phys reg live
accross block boundaries while on SSA form, if the register is
allocatable (expect in entry block and landing pads).
In this test case, stringRRE pseudos are expanded after isel by adding
a loop block which produces a live out CC register. To make the test
pass, it was also necessary to not say that StringRRELoop pseudo uses
R0L, this is only true for the StringRRE opcode.
-verify-machineinstrs added to memchr-01.ll test.
New test case int-cmp-51.ll to test that MachineCSE can eliminate
an identical compare (which it couldn't do before).
Reviewed by Ulrich Weigand
llvm-svn: 251634
|
|
|
|
| |
llvm-svn: 251632
|
|
|
|
| |
llvm-svn: 251631
|
|
|
|
| |
llvm-svn: 251630
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This commit resolves wrong opcodes for ll and sc instructions for r6 architecutres, which were generated in method MipsTargetLowering::emitAtomicBinary.
Author: Jelena.Losic
Reviewers: dsanders
Subscribers: dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D13593
llvm-svn: 251629
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
ARMv6KZ cores were set up incorrectly in ARM.td; also, the SMI mnemonic
(the old name for SMC, as defined in ARMv6KZ) wasn't supported.
Reviewers: jmolloy, rengolin
Subscribers: aemerson, rengolin, llvm-commits
Differential Revision: http://reviews.llvm.org/D14154
llvm-svn: 251627
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
with $zero in microMIPS.
Summary:
The microMIPS register class GPRMM16 does not contain the $zero register.
However, MipsSEDAGToDAGISel::replaceUsesWithZeroReg() would replace uses
of the $dst register:
[d]addiu, $dst, $zero, 0
with the $zero register, without checking for membership in the register
class of the target machine operand.
Reviewers: dsanders
Subscribers: llvm-commits, dsanders
Differential Revision: http://reviews.llvm.org/D13984
llvm-svn: 251622
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Conversion opcode name format should be f64.convert_u/i64 not f64_convert_u
Author: s3ththompson
Reviewers: jfb
Subscribers: sunfish, jfb, llvm-commits, dschuff
Differential Revision: http://reviews.llvm.org/D14160
llvm-svn: 251613
|
|
|
|
| |
llvm-svn: 251594
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We cannot form ctr-based loops around function calls, including calls to
__tls_get_addr used for PIC TLS variables. References to such TLS variables,
however, might be buried within constant expressions, and so we need to search
the entire constant expression to be sure that no references to such TLS
variables exist.
Fixes PR25256, reported by Eric Schweitz. This is a slightly-modified version
of the patch suggested by Eric in the bug report, and a test case I created.
llvm-svn: 251582
|
|
|
|
|
|
|
|
|
| |
As a follow-up to r251566, do the same for the other optionally-supported
register classes (mostly for vector registers). Don't return an unavailable
register class (which would cause an assert later), but fail cleanly when
provided an unsupported inline asm constraint.
llvm-svn: 251575
|
|
|
|
| |
llvm-svn: 251573
|
|
|
|
|
|
|
| |
The most substantial changes are again for watchOS: libcalls are hard-float if
needed and sincos has a different calling convention.
llvm-svn: 251571
|
|
|
|
|
|
|
| |
At the LLVM level this ABI is essentially a minimal modification of AAPCS to
support 16-byte alignment for vector types and the stack.
llvm-svn: 251570
|
|
|
|
|
|
|
|
| |
These MachO file directives are used by linkers and other tools to provide
compatibility information, much like the existing .ios_version_min and
.macosx_version_min.
llvm-svn: 251569
|
|
|
|
|
|
|
| |
When crbits are disabled, cleanly reject the constraint (return the register
class only to cause an assert later).
llvm-svn: 251566
|
|
|
|
|
|
| |
simple before calling getSimpleVT().
llvm-svn: 251538
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This patch handles assembly and disassembly, but not codegen, as of yet.
Additionally, it fixes a bug whereby SP and PC as shifted-reg operands
were treated as predictable in ARMv7 Thumb; and it enables the tests
for invalid and unpredictable instructions to run on both ARMv7 and ARMv8.
Reviewers: jmolloy, rengolin
Subscribers: aemerson, rengolin, llvm-commits
Differential Revision: http://reviews.llvm.org/D14141
llvm-svn: 251516
|