|
Revision tags: llvmorg-3.7.0, llvmorg-3.7.0-rc4, llvmorg-3.7.0-rc3, llvmorg-3.7.0-rc2, llvmorg-3.7.0-rc1, llvmorg-3.6.2, llvmorg-3.6.2-rc1 |
|
| #
3e5de88d |
| 11-Jun-2015 |
Daniel Sanders <[email protected]> |
Replace string GNU Triples with llvm::Triple in TargetMachine. NFC.
Summary: For the moment, TargetMachine::getTargetTriple() still returns a StringRef.
This continues the patch series to eliminate
Replace string GNU Triples with llvm::Triple in TargetMachine. NFC.
Summary: For the moment, TargetMachine::getTargetTriple() still returns a StringRef.
This continues the patch series to eliminate StringRef forms of GNU triples from the internals of LLVM that began in r239036.
Reviewers: rengolin
Reviewed By: rengolin
Subscribers: ted, llvm-commits, rengolin, jholewinski
Differential Revision: http://reviews.llvm.org/D10362
llvm-svn: 239554
show more ...
|
| #
ed64d62c |
| 11-Jun-2015 |
Daniel Sanders <[email protected]> |
Replace string GNU Triples with llvm::Triple in computeDataLayout(). NFC.
Summary: This continues the patch series to eliminate StringRef forms of GNU triples from the internals of LLVM that began i
Replace string GNU Triples with llvm::Triple in computeDataLayout(). NFC.
Summary: This continues the patch series to eliminate StringRef forms of GNU triples from the internals of LLVM that began in r239036.
Reviewers: rengolin
Reviewed By: rengolin
Subscribers: llvm-commits, jfb, rengolin
Differential Revision: http://reviews.llvm.org/D10361
llvm-svn: 239538
show more ...
|
| #
a73f1fdb |
| 10-Jun-2015 |
Daniel Sanders <[email protected]> |
Replace string GNU Triples with llvm::Triple in MCSubtargetInfo and create*MCSubtargetInfo(). NFC.
Summary: This continues the patch series to eliminate StringRef forms of GNU triples from the inter
Replace string GNU Triples with llvm::Triple in MCSubtargetInfo and create*MCSubtargetInfo(). NFC.
Summary: This continues the patch series to eliminate StringRef forms of GNU triples from the internals of LLVM that began in r239036.
Reviewers: rafael
Reviewed By: rafael
Subscribers: rafael, ted, jfb, llvm-commits, rengolin, jholewinski
Differential Revision: http://reviews.llvm.org/D10311
llvm-svn: 239467
show more ...
|
|
Revision tags: llvmorg-3.6.1, llvmorg-3.6.1-rc1 |
|
| #
ce4c1095 |
| 05-May-2015 |
Ulrich Weigand <[email protected]> |
[SystemZ] Add CodeGen support for integer vector types
This the first of a series of patches to add CodeGen support exploiting the instructions of the z13 vector facility. This patch adds support f
[SystemZ] Add CodeGen support for integer vector types
This the first of a series of patches to add CodeGen support exploiting the instructions of the z13 vector facility. This patch adds support for the native integer vector types (v16i8, v8i16, v4i32, v2i64).
When the vector facility is present, we default to the new vector ABI. This is characterized by two major differences: - Vector types are passed/returned in vector registers (except for unnamed arguments of a variable-argument list function). - Vector types are at most 8-byte aligned.
The reason for the choice of 8-byte vector alignment is that the hardware is able to efficiently load vectors at 8-byte alignment, and the ABI only guarantees 8-byte alignment of the stack pointer, so requiring any higher alignment for vectors would require dynamic stack re-alignment code.
However, for compatibility with old code that may use vector types, when *not* using the vector facility, the old alignment rules (vector types are naturally aligned) remain in use.
These alignment rules are not only implemented at the C language level (implemented in clang), but also at the LLVM IR level. This is done by selecting a different DataLayout string depending on whether the vector ABI is in effect or not.
Based on a patch by Richard Sandiford.
llvm-svn: 236521
show more ...
|
| #
1f6666a4 |
| 31-Mar-2015 |
Ulrich Weigand <[email protected]> |
[SystemZ] Provide basic TargetTransformInfo implementation
This hooks up the TargetTransformInfo machinery for SystemZ, and provides an implementation of getIntImmCost.
In addition, the patch adds
[SystemZ] Provide basic TargetTransformInfo implementation
This hooks up the TargetTransformInfo machinery for SystemZ, and provides an implementation of getIntImmCost.
In addition, the patch adds the isLegalICmpImmediate and isLegalAddImmediate TargetLowering overrides, and updates a couple of test cases where we now generate slightly better code.
llvm-svn: 233688
show more ...
|
|
Revision tags: llvmorg-3.5.2, llvmorg-3.5.2-rc1 |
|
| #
93e1ea16 |
| 12-Mar-2015 |
Mehdi Amini <[email protected]> |
Move the DataLayout to the generic TargetMachine, making it mandatory.
Summary: I don't know why every singled backend had to redeclare its own DataLayout. There was a virtual getDataLayout() on the
Move the DataLayout to the generic TargetMachine, making it mandatory.
Summary: I don't know why every singled backend had to redeclare its own DataLayout. There was a virtual getDataLayout() on the common base TargetMachine, the default implementation returned nullptr. It was not clear from this that we could assume at call site that a DataLayout will be available with each Target.
Now getDataLayout() is no longer virtual and return a pointer to the DataLayout member of the common base TargetMachine. I plan to turn it into a reference in a future patch.
The only backend that didn't have a DataLayout previsouly was the CPPBackend. It now initializes the default DataLayout. This commit is NFC for all the other backends.
Test Plan: clang+llvm ninja check-all
Reviewers: echristo
Subscribers: jfb, jholewinski, llvm-commits
Differential Revision: http://reviews.llvm.org/D8243
From: Mehdi Amini <[email protected]> llvm-svn: 231987
show more ...
|
|
Revision tags: llvmorg-3.6.0, llvmorg-3.6.0-rc4 |
|
| #
7db6918e |
| 18-Feb-2015 |
Ulrich Weigand <[email protected]> |
[SystemZ] Support all TLS access models - CodeGen part
The current SystemZ back-end only supports the local-exec TLS access model. This patch adds all required CodeGen support for the other TLS mode
[SystemZ] Support all TLS access models - CodeGen part
The current SystemZ back-end only supports the local-exec TLS access model. This patch adds all required CodeGen support for the other TLS models, which means in particular:
- Expand initial-exec TLS accesses by loading TLS offsets from the GOT using @indntpoff relocations.
- Expand general-dynamic and local-dynamic accesses by generating the appropriate calls to __tls_get_offset. Note that this routine has a non-standard ABI and requires loading the GOT pointer into %r12, so the patch also adds support for the GLOBAL_OFFSET_TABLE ISD node.
- Add a new platform-specific optimization pass to remove redundant __tls_get_offset calls in the local-dynamic model (modeled after the corresponding X86 pass).
- Add test cases verifying all access models and optimizations.
llvm-svn: 229654
show more ...
|
|
Revision tags: llvmorg-3.6.0-rc3, llvmorg-3.6.0-rc2 |
|
| #
8b770651 |
| 26-Jan-2015 |
Eric Christopher <[email protected]> |
Move DataLayout back to the TargetMachine from TargetSubtargetInfo derived classes.
Since global data alignment, layout, and mangling is often based on the DataLayout, move it to the TargetMachine.
Move DataLayout back to the TargetMachine from TargetSubtargetInfo derived classes.
Since global data alignment, layout, and mangling is often based on the DataLayout, move it to the TargetMachine. This ensures that global data is going to be layed out and mangled consistently if the subtarget changes on a per function basis. Prior to this all targets(*) have had subtarget dependent code moved out and onto the TargetMachine.
*One target hasn't been migrated as part of this change: R600. The R600 port has, as a subtarget feature, the size of pointers and this affects global data layout. I've currently hacked in a FIXME to enable progress, but the port needs to be updated to either pass the 64-bitness to the TargetMachine, or fix the DataLayout to avoid subtarget dependent features.
llvm-svn: 227113
show more ...
|
|
Revision tags: llvmorg-3.6.0-rc1, llvmorg-3.5.1, llvmorg-3.5.1-rc2 |
|
| #
7e37a5f5 |
| 11-Dec-2014 |
Matthias Braun <[email protected]> |
[CodeGen] Add print and verify pass after each MachineFunctionPass by default
Previously print+verify passes were added in a very unsystematic way, which is annoying when debugging as you miss inter
[CodeGen] Add print and verify pass after each MachineFunctionPass by default
Previously print+verify passes were added in a very unsystematic way, which is annoying when debugging as you miss intermediate steps and allows bugs to stay unnotice when no verification is performed.
To make this change practical I added the possibility to explicitely disable verification. I used this option on all places where no verification was performed previously (because alot of places actually don't pass the MachineVerifier). In the long term these problems should be fixed properly and verification enabled after each pass. I'll enable some more verification in subsequent commits.
This is the 2nd attempt at this after realizing that PassManager::add() may actually delete the pass.
llvm-svn: 224059
show more ...
|
| #
01c73610 |
| 11-Dec-2014 |
Rafael Espindola <[email protected]> |
This reverts commit r224043 and r224042.
check-llvm was failing.
llvm-svn: 224045
|
| #
a7c82a9f |
| 11-Dec-2014 |
Matthias Braun <[email protected]> |
[CodeGen] Add print and verify pass after each MachineFunctionPass by default
Previously print+verify passes were added in a very unsystematic way, which is annoying when debugging as you miss inter
[CodeGen] Add print and verify pass after each MachineFunctionPass by default
Previously print+verify passes were added in a very unsystematic way, which is annoying when debugging as you miss intermediate steps and allows bugs to stay unnotice when no verification is performed.
To make this change practical I added the possibility to explicitely disable verification. I used this option on all places where no verification was performed previously (because alot of places actually don't pass the MachineVerifier). In the long term these problems should be fixed properly and verification enabled after each pass. I'll enable some more verification in subsequent commits.
llvm-svn: 224042
show more ...
|
|
Revision tags: llvmorg-3.5.1-rc1 |
|
| #
357600ea |
| 20-Nov-2014 |
Reid Kleckner <[email protected]> |
Add out of line virtual destructors to all LLVMTargetMachine subclasses
These recently all grew a unique_ptr<TargetLoweringObjectFile> member in r221878. When anyone calls a virtual method of a cla
Add out of line virtual destructors to all LLVMTargetMachine subclasses
These recently all grew a unique_ptr<TargetLoweringObjectFile> member in r221878. When anyone calls a virtual method of a class, clang-cl requires all virtual methods to be semantically valid. This includes the implicit virtual destructor, which triggers instantiation of the unique_ptr destructor, which fails because the type being deleted is incomplete.
This is just part of the ongoing saga of PR20337, which is affecting Blink as well. Because the MSVC ABI doesn't have key functions, we end up referencing the vtable and implicit destructor on any virtual call through a class. We don't actually end up emitting the dtor, so it'd be good if we could avoid this unneeded type completion work.
llvm-svn: 222480
show more ...
|
| #
a2719329 |
| 13-Nov-2014 |
Aditya Nandakumar <[email protected]> |
This patch changes the ownership of TLOF from TargetLoweringBase to TargetMachine so that different subtargets could share the TLOF effectively
llvm-svn: 221878
|
|
Revision tags: llvmorg-3.5.0, llvmorg-3.5.0-rc4, llvmorg-3.5.0-rc3, llvmorg-3.5.0-rc2 |
|
| #
bc9fed82 |
| 23-Jul-2014 |
James Molloy <[email protected]> |
Enable partial libcall inlining for all targets by default.
This pass attempts to speculatively use a sqrt instruction if one exists on the target, falling back to a libcall if the target instructio
Enable partial libcall inlining for all targets by default.
This pass attempts to speculatively use a sqrt instruction if one exists on the target, falling back to a libcall if the target instruction returned NaN.
This was enabled for MIPS and System-Z, but is well guarded and is good for most targets - GCC does this for (that I've checked) X86, ARM and AArch64.
llvm-svn: 213752
show more ...
|
|
Revision tags: llvmorg-3.5.0-rc1 |
|
| #
5234995e |
| 01-Jul-2014 |
Eric Christopher <[email protected]> |
Move the subtarget dependent features from SystemZTargetMachine down to the subtarget. Add an initialization routine to assist.
llvm-svn: 212124
|
| #
f1bd22df |
| 01-Jul-2014 |
Eric Christopher <[email protected]> |
Remove the use and initialization of the target machine and subtarget from SystemZFrameLowering.
llvm-svn: 212123
|
| #
673b3afa |
| 27-Jun-2014 |
Eric Christopher <[email protected]> |
Remove target machine caching from SystemZInstrInfo and SystemZRegisterInfo and replace it with the subtarget as that's all they needed in the first place. Update all uses and calls accordingly.
llv
Remove target machine caching from SystemZInstrInfo and SystemZRegisterInfo and replace it with the subtarget as that's all they needed in the first place. Update all uses and calls accordingly.
llvm-svn: 211877
show more ...
|
| #
bb712eda |
| 27-Jun-2014 |
Eric Christopher <[email protected]> |
Have SystemZSelectionDAGInfo constructor take a DataLayout rather than a target machine since it doesn't need anything past the DataLayout.
llvm-svn: 211870
|
| #
2c356f3a |
| 05-Jun-2014 |
Ulrich Weigand <[email protected]> |
[SystemZ] Do not install IfConverter pass at -O0
When not optimizing, do not run the IfConverter pass, this makes debugging more difficult (and causes a testsuite failure in DebugInfo/unconditional-
[SystemZ] Do not install IfConverter pass at -O0
When not optimizing, do not run the IfConverter pass, this makes debugging more difficult (and causes a testsuite failure in DebugInfo/unconditional-branch.ll).
llvm-svn: 210263
show more ...
|
|
Revision tags: llvmorg-3.4.2, llvmorg-3.4.2-rc1, llvmorg-3.4.1, llvmorg-3.4.1-rc2, llvmorg-3.4.1-rc1 |
|
| #
b4d67b59 |
| 06-Mar-2014 |
Richard Sandiford <[email protected]> |
[SystemZ] Remove "virtual" from override methods
Also fix a couple of cases where "override" was missing. No behavioural change intended.
llvm-svn: 203110
|
| #
73156025 |
| 02-Mar-2014 |
Craig Topper <[email protected]> |
Switch all uses of LLVM_OVERRIDE to just use 'override' directly.
llvm-svn: 202621
|
| #
58873566 |
| 03-Jan-2014 |
Rafael Espindola <[email protected]> |
Make the llvm mangler depend only on DataLayout.
Before this patch any program that wanted to know the final symbol name of a GlobalValue had to link with Target.
This patch implements a compromise
Make the llvm mangler depend only on DataLayout.
Before this patch any program that wanted to know the final symbol name of a GlobalValue had to link with Target.
This patch implements a compromise solution where the mangler uses DataLayout. This way, any tool that already links with Target (llc, clang) gets the exact behavior as before and new IR files can be mangled without linking with Target.
With this patch the mangler is constructed with just a DataLayout and DataLayout is extended to include the information the Mangler needs.
llvm-svn: 198438
show more ...
|
|
Revision tags: llvmorg-3.4.0, llvmorg-3.4.0-rc3 |
|
| #
8afbb28c |
| 16-Dec-2013 |
Rafael Espindola <[email protected]> |
On DataLayout, omit the default of p:64:64:64.
llvm-svn: 197397
|
| #
3db95838 |
| 12-Dec-2013 |
Rafael Espindola <[email protected]> |
Simplify the SystemZ datalayout string.
Reviewed by Richard Sandiford.
llvm-svn: 197170
|
| #
e8f4d587 |
| 12-Dec-2013 |
Rafael Espindola <[email protected]> |
Use "a" instead of "a0" in DataLayout.
It means exactly the same and is just a bit shorter.
llvm-svn: 197169
|