| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 319477
|
| |
|
|
|
|
|
| |
No test yet because the relevant rules are blocked on the atomic_load,
and atomic_store nodes.
llvm-svn: 319475
|
| |
|
|
| |
llvm-svn: 319470
|
| |
|
|
|
|
|
|
| |
instruction.
The 32-bit version is shorter to encode and the zext we emit for the promotion is likely going to be a 32-bit zero extend anyway.
llvm-svn: 319468
|
| |
|
|
|
|
|
|
|
|
|
| |
G_ATOMICRMW_* is generally legal on AArch64. The exception is G_ATOMICRMW_NAND.
G_ATOMIC_CMPXCHG_WITH_SUCCESS needs to be lowered to G_ATOMIC_CMPXCHG with an
external comparison.
Note that IRTranslator doesn't generate these instructions yet.
llvm-svn: 319466
|
| |
|
|
|
|
|
|
|
|
|
|
| |
loads/stores/args/returns.
This fixes PR35358.
rdar://35619533
Differential Revision: https://reviews.llvm.org/D40604
llvm-svn: 319465
|
| |
|
|
|
|
|
|
|
|
|
| |
varargs."
The patch broke Emscripten's EM_ASM macros, which utiltize unprototyped
functions.
See https://bugs.llvm.org/show_bug.cgi?id=35385 for details.
llvm-svn: 319452
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
output
As part of the unification of the debug format and the MIR format,
always use `printReg` to print all kinds of registers.
Updated the tests using '_' instead of '%noreg' until we decide which
one we want to be the default one.
Differential Revision: https://reviews.llvm.org/D40421
llvm-svn: 319445
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This re-commits everything that was pulled in r314244. The transformation
is off by default (patch to enable it to follow). The code is refactored
to have a single entry-point and provide fine-grained control over patterns
that it selects. This patch also fixes the bugs in the original code.
Everything that failed with the original patch has been re-tested with this
patch (with the transformation turned on). So the patch to turn this on is
soon to follow.
Differential Revision: https://reviews.llvm.org/D38575
llvm-svn: 319434
|
| |
|
|
| |
llvm-svn: 319433
|
| |
|
|
|
|
|
| |
Fallback if we have a byval parameter or argument since we don't support
them yet.
llvm-svn: 319428
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As part of the unification of the debug format and the MIR format, avoid
printing "vreg" for virtual registers (which is one of the current MIR
possibilities).
Basically:
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" \) -type f -print0 | xargs -0 sed -i '' -E "s/%vreg([0-9]+)/%\1/g"
* grep -nr '%vreg' . and fix if needed
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" \) -type f -print0 | xargs -0 sed -i '' -E "s/ vreg([0-9]+)/ %\1/g"
* grep -nr 'vreg[0-9]\+' . and fix if needed
Differential Revision: https://reviews.llvm.org/D40420
llvm-svn: 319427
|
| |
|
|
| |
llvm-svn: 319424
|
| |
|
|
| |
llvm-svn: 319418
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Csmith generated a program where a store after load to the same address did
not get chained after the new load created during DAG legalizing, and so
performed an illegal overwrite of the expected value.
When the new zero-extending load is created, the chain users of the original
load must be updated, which was not done previously.
A similar case was also found and handled in lowerBITCAST.
Review: Ulrich Weigand
https://reviews.llvm.org/D40542
llvm-svn: 319409
|
| |
|
|
|
|
| |
Normal type legalization will widen everything. This requires forcing 0s into the mask register. We can instead choose the form that only reads 2 elements without zeroing the mask.
llvm-svn: 319406
|
| |
|
|
|
|
| |
We don't use k-registers and instead use the MSB so we need to make sure we sign extend the mask to the msb.
llvm-svn: 319405
|
| |
|
|
|
|
|
|
| |
GFX9 does not enable bounds checking for the resource descriptors
used for private access, so it should be OK to use vaddr with
a potentially negative value.
llvm-svn: 319393
|
| |
|
|
|
|
|
|
|
|
| |
a VZEXT to create a larger VSEXT.
If the input the vzext was signed this would do the wrong thing.
Not sure how to test this.
llvm-svn: 319382
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- add -ppc-reg-with-percent-prefix option to use %r3 etc as register
names
- split off logic for Darwinish verbose conditional codes into a helper
function
- be explicit about Darwin vs AIX vs GNUish assembler flavors
Based on the patch from Alexandre Yukio Yamashita
Differential Revision: https://reviews.llvm.org/D39016
llvm-svn: 319381
|
| |
|
|
|
|
|
|
|
| |
I believe these were recently fixed by:
https://reviews.llvm.org/rL319186
Differential Revision: https://reviews.llvm.org/D40619
llvm-svn: 319380
|
| |
|
|
|
|
|
| |
To fully avoid trapping on wasm, fptoui needs a second check to ensure that
the operand isn't below the supported range.
llvm-svn: 319354
|
| |
|
|
| |
llvm-svn: 319352
|
| |
|
|
| |
llvm-svn: 319351
|
| |
|
|
|
|
| |
Accidental commit of incomplete patch
llvm-svn: 319346
|
| |
|
|
| |
llvm-svn: 319338
|
| |
|
|
|
|
| |
scheduler classes
llvm-svn: 319337
|
| |
|
|
|
|
|
|
| |
Partially reverting enabling of post-legalization store merge
(r319036) for just ARM backend as it is causing incorrect code
in some Thumb2 cases.
llvm-svn: 319331
|
| |
|
|
|
|
| |
All default to NoItinerary
llvm-svn: 319326
|
| |
|
|
|
|
| |
used by any instructions).
llvm-svn: 319321
|
| |
|
|
| |
llvm-svn: 319316
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Patch [1/4] in a series to add parsing of predicates and properly parse SVE ZIP1/ZIP2 instructions.
Reviewers: rengolin, kristof.beyls, fhahn, mcrosier, evandro, echristo, efriedma
Reviewed By: fhahn
Subscribers: aemerson, javed.absar, llvm-commits, tschuett
Differential Revision: https://reviews.llvm.org/D40360
llvm-svn: 319315
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
When lowering a G_BRCOND, we generate a TSTri of the condition against
1, which sets the flags, and then a Bcc which branches based on the
value of the flags.
Unfortunately, we were using the wrong condition code to check whether
we need to branch (EQ instead of NE), which caused all our branches to
do the opposite of what they were intended to do. This patch fixes the
issue by using the correct condition code.
llvm-svn: 319313
|
| |
|
|
|
|
| |
instruction scheduler classes
llvm-svn: 319312
|
| |
|
|
|
|
|
|
|
|
|
| |
When translating pseudo to MC, v_add/sub/subrev_u32 shall be mapped via a separate table as GFX8 has opcodes with the same names.
These instructions shall also be labelled as renamed for pseudoToMCOpcode to handle them correctly.
Reviewers: arsenm
Differential Revision: https://reviews.llvm.org/D40550
llvm-svn: 319311
|
| |
|
|
|
|
| |
NFCI.
llvm-svn: 319310
|
| |
|
|
|
|
| |
templates. NFCI.
llvm-svn: 319308
|
| |
|
|
|
|
|
|
|
|
|
| |
This will allow compilation of assembly files targeting armv7e-m without having
to specify the Tag_CPU_arch attribute as a workaround.
Differential revision: https://reviews.llvm.org/D40370
Patch by Ian Tessier!
llvm-svn: 319303
|
| |
|
|
|
|
|
|
| |
MVT::v8i16/v16i8/v16i16.
A DAG combine ensures these ops are always promoted to vXi32.
llvm-svn: 319298
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Separate the handling of AND/AND8 out from PHI/OR/ISEL checking. The reasoning
is the others need all their operands to be sign/zero extended for their output
to also be sign/zero extended. This is true for AND and sign-extension, but for
zero-extension we only need at least one of the input operands to be zero
extended for the result to also be zero extended.
Differential Revision: https://reviews.llvm.org/D39078
llvm-svn: 319289
|
| |
|
|
|
|
|
|
|
|
|
| |
The object can't straddle the address space
wrap around, so I think it's OK to assume any
offsets added to the base object pointer can't
overflow. Similar logic already appears to be
applied in SelectionDAGBuilder when lowering
aggregate returns.
llvm-svn: 319272
|
| |
|
|
|
|
|
|
|
| |
GFX9 stopped using m0 for most DS instructions. Select
a different instruction without the use. I think this will
be less error prone than trying to manually maintain m0
uses as needed.
llvm-svn: 319270
|
| |
|
|
| |
llvm-svn: 319266
|
| |
|
|
|
|
|
|
|
|
| |
legal. Fix infinite loop in op legalization when promotion requires 2 steps.
Previously we had an isel pattern to add the truncate. Instead use Promote to add the truncate to the DAG before isel.
The Promote legalization code had to be updated to prevent an infinite loop if promotion took multiple steps because it wasn't remembering the previously tried value.
llvm-svn: 319259
|
| |
|
|
| |
llvm-svn: 319256
|
| |
|
|
| |
llvm-svn: 319253
|
| |
|
|
|
|
|
|
| |
Update multi-classes to take the scheduling OpndItins instead of hard coding it.
Will be reused in the AVX512 equivalents.
llvm-svn: 319249
|
| |
|
|
|
|
|
|
| |
Update multi-classes to take the scheduling OpndItins instead of hard coding it.
Will be reused in the AVX512 equivalents.
llvm-svn: 319245
|
| |
|
|
|
|
|
|
| |
Update multi-classes to take the scheduling OpndItins instead of hard coding it.
SSE_PACK will be reused in the AVX512 equivalents.
llvm-svn: 319243
|
| |
|
|
| |
llvm-svn: 319240
|