| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
| |
(PR24475)
This is a follow-on to:
http://reviews.llvm.org/rL255700
http://reviews.llvm.org/rL256454
http://reviews.llvm.org/rL256510
llvm-svn: 256522
|
| |
|
|
|
|
|
|
|
|
| |
InlineCostAnalysis is an analysis pass without any need for it to be one.
Once it stops being an analysis pass, it doesn't maintain any useful state
and the member functions inside can be made free functions. NFC.
Differential Revision: http://reviews.llvm.org/D15701
llvm-svn: 256521
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Previously, only the outer (last) bitcast was rematerialized, resulting in a
use of the unrelocated inner (first) bitcast after the statepoint. See the
test case for an example.
Reviewers: igor-laevsky, reames
Subscribers: reames, alex, llvm-commits, sanjoy
Differential Revision: http://reviews.llvm.org/D15789
llvm-svn: 256520
|
| |
|
|
|
|
|
|
|
| |
The cost is calculated for all X86 targets. When gather/scatter instruction
is not supported we calculate the cost of scalar sequence.
Differential revision: http://reviews.llvm.org/D15677
llvm-svn: 256519
|
| |
|
|
|
|
|
|
| |
This is a follow-on to:
http://reviews.llvm.org/rL255700
http://reviews.llvm.org/rL256454
llvm-svn: 256510
|
| |
|
|
| |
llvm-svn: 256506
|
| |
|
|
| |
llvm-svn: 256505
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
lib/Transforms/ObjCARC
Summary: Use clang-tidy to simplify boolean conditional return statements
Reviewers: craig.topper, bkramer, chandlerc, gottesmm
Subscribers: llvm-commits
Patch by Richard Thomson!
Differential Revision: http://reviews.llvm.org/D9999
llvm-svn: 256502
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Use clang-tidy to simplify boolean conditional return statements
Reviewers: rafael, bkramer, ddunbar, Bigcheese, chandlerc, chapuni, nicholas, alexfh
Subscribers: alexfh, craig.topper, llvm-commits
Patch by Richard Thomson!
Differential Revision: http://reviews.llvm.org/D9978
llvm-svn: 256500
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds support for the MCU psABI in a way different from r251223 and r251224,
basically reverting most of these two patches. The problem with the approach
taken in r251223/4 is that it only handled libcalls that originated from the backend.
However, the mid-end also inserts quite a few libcalls and assumes these use the
platform's default calling convention.
The previous patch tried to insert inregs when necessary both in the FE and,
somewhat hackily, in the CG. Instead, we now define a new default calling convention
for the MCU, which doesn't use inreg marking at all, similarly to what x86-64 does.
Differential Revision: http://reviews.llvm.org/D15054
llvm-svn: 256494
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Use clang-tidy to simplify boolean conditional return statements
Reviewers: uweigand, rafael, wschmidt
Subscribers: craig.topper, llvm-commits
Patch by Richard Thomson!
Differential Revision: http://reviews.llvm.org/D9984
llvm-svn: 256493
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
lower broadcast<type>x<vector> to shuffles.
there are two cases:
1.src is 128 bits and dest is 512 bits: in this case we will lower it to shuffle with imm = 0.
2.src is 256 bit and dest is 512 bits: in this case we will lower it to shuffle with imm = 01000100b (0x44) that way we will broadcast the 256bit source: ymm[0,1,2,3] => zmm[0,1,2,3,0,1,2,3] then it will mask it with the passthru value (in case it's mask op).
Differential Revision: http://reviews.llvm.org/D15790
llvm-svn: 256490
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D15790
llvm-svn: 256489
|
| |
|
|
|
|
| |
from the Intel docs these instructions require the L-bit to be 0.
llvm-svn: 256486
|
| |
|
|
| |
llvm-svn: 256484
|
| |
|
|
|
|
|
|
| |
names. Add a missing encoding to disassembler and assembler.
I believe this also fixes a case where a 64-bit memory form that is documented as being unsupported in 32-bit mode was able to be selected there.
llvm-svn: 256483
|
| |
|
|
| |
llvm-svn: 256482
|
| |
|
|
|
|
| |
instructions.
llvm-svn: 256481
|
| |
|
|
| |
llvm-svn: 256480
|
| |
|
|
|
|
| |
ctlz_zero_undef. Change the operation for CTLZ_ZERO_UNDEF to Expand so SelectionDAG will convert them to CTLZ before lowering.
llvm-svn: 256477
|
| |
|
|
|
|
| |
CTTZ_ZERO_UNDEF if the non-ZERO_UNDEF form is legal or custom. Will be used to simplify X86 code in a follow on commit.
llvm-svn: 256476
|
| |
|
|
|
|
| |
and VMOVSLDUP. They don't have any tests and I don't think they can be selected. If they are truly needed they should be implemented with patterns against the normal instructions and not separate instructions.
llvm-svn: 256475
|
| |
|
|
|
|
|
|
|
| |
Fix TRUNCATE lowering vector to vector i1, use LSB and not MSB.
Implement VPMOVB/W/D/Q2M intrinsic.
Differential Revision: http://reviews.llvm.org/D15675
llvm-svn: 256470
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D15786
llvm-svn: 256469
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a standalone pass.
There is no call graph or even interesting analysis for this part of
function attributes -- it is literally inferring attributes based on the
target library identification. As such, we can do it using a much
simpler module pass that just walks the declarations. This can also
happen much earlier in the pass pipeline which has benefits for any
number of other passes.
In the process, I've cleaned up one particular aspect of the logic which
was necessary in order to separate the two passes cleanly. It now counts
inferred attributes independently rather than just counting all the
inferred attributes as one, and the counts are more clearly explained.
The two test cases we had for this code path are both ... woefully
inadequate and copies of each other. I've kept the superset test and
updated it. We need more testing here, but I had to pick somewhere to
stop fixing everything broken I saw here.
Differential Revision: http://reviews.llvm.org/D15676
llvm-svn: 256466
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
is (by default) run much earlier than FuncitonAttrs proper.
This allows forcing optnone or other widely impactful attributes. It is
also a bit simpler as the force attribute behavior needs no specific
iteration order.
I've added the pass into the default module pass pipeline and LTO pass
pipeline which mirrors where function attrs itself was being run.
Differential Revision: http://reviews.llvm.org/D15668
llvm-svn: 256465
|
| |
|
|
|
|
| |
no tests for them and I don't see any way to select them anyway. If they are really needed they should be implemented as patterns and not full fledged instructions.
llvm-svn: 256462
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A frame pointer must be used if stack pointer is modified after the
prologue. LLVM will emit pushf/popf if we need to save/restore the
FLAGS register, requiring us to have a frame pointer for the function.
There is a small twist: this sequence might exist in user code via
inline-assembly. For now, conservatively assume that such functions
require a frame pointer. For real world justification, please see
clang's implementation of __readeflags.
This fixes PR25945.
llvm-svn: 256456
|
| |
|
|
|
|
|
| |
This is aids in debugging WinEH, similar functionality is present for
DWARF EH.
llvm-svn: 256455
|
| |
|
|
|
|
|
| |
This is a follow-on to:
http://reviews.llvm.org/rL255700
llvm-svn: 256454
|
| |
|
|
| |
llvm-svn: 256453
|
| |
|
|
| |
llvm-svn: 256452
|
| |
|
|
|
|
| |
statements. NFC
llvm-svn: 256451
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
instead of i32 type
Summary: This patch changes gc.statepoint intrinsic's return type to token type instead of i32 type. Using token types could prevent LLVM to merge different gc.statepoint nodes into PHI nodes and cause further problems with gc relocations. The patch also changes the way on how gc.relocate and gc.result look for their corresponding gc.statepoint on unwind path. The current implementation uses the selector value extracted from a { i8*, i32 } landingpad as a hook to find the gc.statepoint, while the patch directly uses a token type landingpad (http://reviews.llvm.org/D15405) to find the gc.statepoint.
Reviewers: sanjoy, JosephTremoulet, pgavlin, igor-laevsky, mjacob
Subscribers: reames, mjacob, sanjoy, llvm-commits
Differential Revision: http://reviews.llvm.org/D15662
llvm-svn: 256443
|
| |
|
|
|
|
| |
Constant type not matching due to folding in the constant pool and to get VPERMILPD correct.
llvm-svn: 256433
|
| |
|
|
|
|
| |
code.
llvm-svn: 256431
|
| |
|
|
|
|
| |
library to fix the bots.
llvm-svn: 256430
|
| |
|
|
| |
llvm-svn: 256429
|
| |
|
|
|
|
| |
used by AsmParser library without depending on X86CodeGen library.
llvm-svn: 256428
|
| |
|
|
|
|
| |
InstPrinters. NFC
llvm-svn: 256427
|
| |
|
|
|
|
| |
violation in AsmParser.
llvm-svn: 256426
|
| |
|
|
|
|
|
|
| |
getX86SubSuperRegister with just an unsigned representing size.
This a is step towards fixing a layering violation so the X86 AsmParser won't depending on CodeGen types.
llvm-svn: 256425
|
| |
|
|
|
|
| |
getX86SubSuperRegister. Most place don't care about this argument. NFC
llvm-svn: 256424
|
| |
|
|
|
|
| |
recursively. It should call itself instead. Otherwise it might fire an assertion when it was designed not too.
llvm-svn: 256422
|
| |
|
|
|
|
| |
getMemoryOperandNo. These aren't used by any instructions, but could be someday. NFC
llvm-svn: 256421
|
| |
|
|
| |
llvm-svn: 256420
|
| |
|
|
| |
llvm-svn: 256419
|
| |
|
|
|
|
|
|
| |
We already know how to properly print out basic blocks in
printAsOperand, we should not roll it ourselves in
AsmPrinter::EmitBasicBlockStart. No functionality change is intended.
llvm-svn: 256413
|
| |
|
|
|
|
| |
definitions to DerivedTypes.h so they can be inlined by the compiler.
llvm-svn: 256406
|
| |
|
|
| |
llvm-svn: 256405
|