| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
Most of the cases belong into an anonymous namespace. No
functionality change intended.
llvm-svn: 251515
|
| |
|
|
|
|
|
|
| |
and WAIT instructions
Differential Revision: http://reviews.llvm.org/D12628
llvm-svn: 251510
|
| |
|
|
|
|
| |
mentioning all the relevant types in an initializer list. NFC
llvm-svn: 251500
|
| |
|
|
|
|
| |
array. NFC
llvm-svn: 251494
|
| |
|
|
|
|
|
|
| |
same type.
This also lets us remove the versions of the functions that took a statically sized array as we can rely on ArrayRef implicit conversion now.
llvm-svn: 251490
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
cntlz is the old POWER mnemonic. cntlzw is the PowerPC mnemonic.
This change fixes an issue when -no-integrated-as: The opcode cntlz is
unrecognized by gas
Alias the POWER mnemonic cntlz[.] to the PowerPC mnemonic cntlzw[.]
This is done for because the POWER cntlz mnemonic has be used by LLVM for
a very long time. We need to make sure that assembly programs
that are using the cntlz[.] do not break with this change.
Change PowerPC tests to reflect the insn change from cntlz to cntlzw.
Add assembly test to verify cntlz[.] is encoded correctly.
Patch by Tom Rix!
llvm-svn: 251489
|