- Dec 13, 2017
-
-
Simon Pilgrim authored
llvm-svn: 320586
-
Simon Pilgrim authored
llvm-svn: 320585
-
Simon Pilgrim authored
llvm-svn: 320583
-
Simon Pilgrim authored
llvm-svn: 320582
-
Simon Pilgrim authored
Add missing RDTSCP itinerary llvm-svn: 320581
-
Simon Pilgrim authored
llvm-svn: 320580
-
Simon Pilgrim authored
Pass the input vector through SimplifyDemandedBits as we only need the sign bit from each vector element of MOVMSK We'd probably get more hits if SimplifyDemandedBits was better at handling vectors... Differential Revision: https://reviews.llvm.org/D41119 llvm-svn: 320570
-
Francis Visoiu Mistrih authored
Work towards the unification of MIR and debug output by printing `%const.0 + 8` instead of `<cp#0+8>` and `%const.0 - 8` instead of `<cp#0-8>`. Only debug syntax is affected. Differential Revision: https://reviews.llvm.org/D41116 llvm-svn: 320564
-
Serguei Katkov authored
Causes: Assertion `ScaledReg == nullptr' failed. This actually a revert of rL320551. llvm-svn: 320553
-
Serguei Katkov authored
Enable select instruction handling in complex addr modes. Reviewers: john.brawn, reames, aaboud Reviewed By: reames Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D40634 llvm-svn: 320551
-
- Dec 12, 2017
-
-
Sanjoy Das authored
This reverts commit r320508, in effect re-applying r320308. Simon has already reverted the parts that caused the crash that motivated the revert in r320492. llvm-svn: 320512
-
Sanjoy Das authored
This reverts commit r320308. r320308 crashes LLC, please see the llvm-commits thread for a reproducer. llvm-svn: 320508
-
Nirav Dave authored
Summary: Simplify and generalize chain handling and search for 64-bit load-store pairs. Nontemporal test now converts 64-bit integer load-store into f64 which it realizes directly instead of splitting into two i32 pairs. Reviewers: craig.topper, spatel Reviewed By: craig.topper Subscribers: hiraditya, llvm-commits Differential Revision: https://reviews.llvm.org/D40918 llvm-svn: 320505
-
Geoff Berry authored
Summary: Add isRenamable() predicate to MachineOperand. This predicate can be used by machine passes after register allocation to determine whether it is safe to rename a given register operand. Register operands that aren't marked as renamable may be required to be assigned their current register to satisfy constraints that are not captured by the machine IR (e.g. ABI or ISA constraints). Reviewers: qcolombet, MatzeB, hfinkel Subscribers: nemanjai, mcrosier, javed.absar, llvm-commits Differential Revision: https://reviews.llvm.org/D39400 llvm-svn: 320503
-
Simon Pilgrim authored
The checks we have for complete models are not great and miss many cases - e.g. in PR35636 it failed to recognise that only the first output (of 2) was actually tagged by the InstRW Raised PR35639 and PR35643 as examples llvm-svn: 320492
-
Ayman Musa authored
[X86] Recognize constant arrays with special values and replace loads from it with subtract and shift instructions, which then will be replaced by X86 BZHI machine instruction. Recognize constant arrays with the following values: 0x0, 0x1, 0x3, 0x7, 0xF, 0x1F, .... , 2^(size - 1) -1 where //size// is the size of the array. the result of a load with index //idx// from this array is equivalent to the result of the following: (0xFFFFFFFF >> (sub 32, idx)) (assuming the array of type 32-bit integer). And the result of an 'AND' operation on the returned value of such a load and another input, is exactly equivalent to the X86 BZHI instruction behavior. See test cases in the LIT test for better understanding. Differential Revision: https://reviews.llvm.org/D34141 llvm-svn: 320481
-
Craig Topper authored
llvm-svn: 320459
-
Craig Topper authored
llvm-svn: 320458
-
- Dec 11, 2017
-
-
Simon Pilgrim authored
llvm-svn: 320403
-
Simon Pilgrim authored
llvm-svn: 320402
-
Simon Pilgrim authored
llvm-svn: 320400
-
Simon Pilgrim authored
llvm-svn: 320397
-
Simon Pilgrim authored
llvm-svn: 320395
-
Simon Pilgrim authored
llvm-svn: 320392
-
Simon Pilgrim authored
Tag LWP instructions as WriteSystem llvm-svn: 320387
-
Simon Pilgrim authored
llvm-svn: 320386
-
Simon Pilgrim authored
llvm-svn: 320385
-
Simon Pilgrim authored
llvm-svn: 320384
-
Simon Pilgrim authored
llvm-svn: 320383
-
Simon Pilgrim authored
llvm-svn: 320382
-
Simon Pilgrim authored
llvm-svn: 320380
-
Nirav Dave authored
llvm-svn: 320379
-
Simon Pilgrim authored
llvm-svn: 320376
-
Sanjay Patel authored
At first, I tried to thread the x86 needle and use a target hook (isVectorShiftByScalarCheap()) to disable the transform only for non-splat pow-of-2 constants, but not AVX2, but only some element types, but...it's difficult. Here we just avoid the loop with the x86 vector transform that conflicts with the general DAG combine and preserve all of the existing behavior AFAICT otherwise. Some tests that will probably fail if someone does try to restrict this in a more targeted way for x86-only may be found in: test/CodeGen/X86/combine-mul.ll test/CodeGen/X86/vector-mul.ll test/CodeGen/X86/widen_arith-5.ll This should prevent the infinite looping seen with: https://bugs.llvm.org/show_bug.cgi?id=35579 Differential Revision: https://reviews.llvm.org/D41040 llvm-svn: 320374
-
Simon Pilgrim authored
llvm-svn: 320371
-
Simon Pilgrim authored
llvm-svn: 320370
-
Simon Pilgrim authored
llvm-svn: 320361
-
Simon Pilgrim authored
llvm-svn: 320356
-
Craig Topper authored
We should probably also fold (mulhs/u X, 1) for vectors, but that's harder. llvm-svn: 320344
-
Craig Topper authored
llvm-svn: 320342
-