| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
This matches AVX512 version and is more consistent overall. And improves our scheduler models.
In some cases this adds _Int to instructions that didn't have any Int_ before. It's a side effect of the adjustments made to some of the multiclasses.
llvm-svn: 320325
|
|
|
|
| |
llvm-svn: 320322
|
|
|
|
|
|
|
|
| |
suffix. Fix the scheduling information for some of them.
Some of the scheduling information was only present for the 'rb' version' and not the 'rr' version. Now we match 'rr(b?)'
llvm-svn: 320320
|
|
|
|
| |
llvm-svn: 320319
|
|
|
|
| |
llvm-svn: 320318
|
|
|
|
|
|
| |
model.
llvm-svn: 320317
|
|
|
|
|
|
| |
This makes things consistent with our normal instruction naming.
llvm-svn: 320316
|
|
|
|
| |
llvm-svn: 320315
|
|
|
|
| |
llvm-svn: 320314
|
|
|
|
|
|
|
|
| |
models instead of just instregexs.
This separates the CPU specific scheduler model includes to occur after the instructions. Moves the instruction includes between the basic scheduler information and the CPU specific scheduler models.
llvm-svn: 320313
|
|
|
|
|
|
|
| |
Follow-up for a bug that's similar to:
https://bugs.llvm.org/show_bug.cgi?id=35601
llvm-svn: 320312
|
|
|
|
|
|
|
| |
This should fix the larger problem with sqrt shown in:
https://bugs.llvm.org/show_bug.cgi?id=35601
llvm-svn: 320310
|
|
|
|
|
|
| |
Locally tag COPY as WriteMove, which has caused some reg-reg + reg-mem instruction tests to reorder.
llvm-svn: 320308
|
|
|
|
| |
llvm-svn: 320306
|
|
|
|
|
|
| |
We just have to locally tag COPY as WriteMove
llvm-svn: 320304
|
|
|
|
|
|
| |
We just have to locally tag COPY as WriteMove
llvm-svn: 320303
|
|
|
|
| |
llvm-svn: 320302
|
|
|
|
| |
llvm-svn: 320301
|
|
|
|
|
|
| |
We just have to locally tag COPY as WriteMove
llvm-svn: 320300
|
|
|
|
| |
llvm-svn: 320299
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
CreateAddRecFromPHIWithCastsImpl() adds an IncrementNUSW overflow predicate
which allows the PSCEV rewriter to rewrite this scev expression:
(zext i8 {0, + , (trunc i32 step to i8)} to i32)
into
{0, +, (sext i8 (trunc i32 step to i8) to i32)}
But then it adds the wrong Equal predicate:
%step == (zext i8 (trunc i32 %step to i8) to i32).
instead of:
%step == (sext i8 (trunc i32 %step to i8) to i32)
This is fixed here.
Differential Revision: https://reviews.llvm.org/D40641
llvm-svn: 320298
|
|
|
|
| |
llvm-svn: 320296
|
|
|
|
|
|
|
|
| |
Z128 to Z256
Based on the fact that the 'Y' version of the instruction is next to this, I assume Z256 is the intended value.
llvm-svn: 320295
|
|
|
|
|
|
| |
The VEX versions were present but not the legacy SSE versions.
llvm-svn: 320294
|
|
|
|
|
|
| |
Sandybridge,Haswell,Broadwell,Skylake
llvm-svn: 320293
|
|
|
|
|
|
| |
Sandy Bridge is also missing it, but it has other issues. See PR35590.
llvm-svn: 320292
|
|
|
|
|
|
| |
Similar for all sizes of AND/OR/XOR/SUB/ADC/SBB/CMP.
llvm-svn: 320291
|
|
|
|
|
|
| |
replacing an 'r'
llvm-svn: 320290
|
|
|
|
|
|
| |
Somehow CMPSSrr/rm was there and the VEX version was there, but this was consistently missing.
llvm-svn: 320289
|
|
|
|
|
|
|
|
|
|
|
| |
This adds assembly & disassembly support for the e500mc "external pid"
instructions.
See https://reviews.llvm.org/D39249.
Patch by vit9696 <vit9696@avp.su>
llvm-svn: 320287
|
|
|
|
| |
llvm-svn: 320285
|
|
|
|
|
|
| |
they can only be selected by intrinsics.
llvm-svn: 320283
|
|
|
|
|
|
| |
correct order relative to _Int
llvm-svn: 320282
|
|
|
|
|
|
|
|
| |
This affects CVTSD2SS, FMA, RCP28, RSQRT28, and SQRT scalar instructions
'b' here refers to 'sae' not broadcast. These aren't memory instructions.
llvm-svn: 320281
|
|
|
|
|
|
|
|
|
|
| |
should be outside of multicharacter parenthesized expressions
If the question mark is inside the parentheses it only applies to the single character proceeding it.
I had to make a few additional cleanups to fix some duplicate warnings that were exposed by fixing this.
llvm-svn: 320279
|
|
|
|
| |
llvm-svn: 320278
|
|
|
|
|
|
| |
sandybridge,haswell,broadwell,skylakeclient scheduler models.
llvm-svn: 320277
|
|
|
|
| |
llvm-svn: 320276
|
|
|
|
|
| |
Note: We may be too pessimistic here and should possibly use something closer to the LOCK arithmetic instructions
llvm-svn: 320275
|
|
|
|
| |
llvm-svn: 320274
|
|
|
|
| |
llvm-svn: 320273
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch improves performance on Cavium T99 as shown here (libquantum 0.2.4):
https://docs.google.com/spreadsheets/d/1Lo1o2E1NjrpkwS7DvYYWsiVvPdd93h7KBaqeptMrZPY/edit?usp=sharing
By increasing the LoopMicroOpsBufferSize in the Cavium T99 Scheduler file,
loop unrolling becomes more aggressive. This helps performance on T99.
Test case included.
Patch by Stefan Teleman
Differential Revision: https://reviews.llvm.org/D40695
llvm-svn: 320272
|
|
|
|
|
|
| |
Don't assume that the pattern matched SRL can be cast to an Instruction (might be ConstExpr etc.)
llvm-svn: 320270
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
are known
When the lowest bits of the operands to an integer multiply are known, the low bits of the result are deducible.
Code to deduce known-zero bottom bits already existed, but this change improves on that by deducing known-ones.
Patch by: Pedro Ferreira
Reviewers: craig.topper, sanjoy, efriedma
Differential Revision: https://reviews.llvm.org/D34029
llvm-svn: 320269
|
|
|
|
| |
llvm-svn: 320268
|
|
|
|
|
|
|
|
| |
(insert_subvector zero, vec, 0) for zeroing upper bits.
This can be better recognized during isel when the producer already zeroed the upper bits.
llvm-svn: 320267
|
|
|
|
| |
llvm-svn: 320266
|
|
|
|
| |
llvm-svn: 320265
|
|
|
|
| |
llvm-svn: 320264
|
|
|
|
| |
llvm-svn: 320263
|