summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-exceptions.ll
Commit message (Collapse)AuthorAgeFilesLines
* GlobalISel: add G_IMPLICIT_DEF instruction.Tim Northover2017-06-301-1/+1
| | | | | | | | | It looks like there are two target-independent but not GISel instructions that need legalization, IMPLICIT_DEF and PHI. These are already anomalies since their operands have important LLTs attached, so to make things more uniform it seems like a good idea to add generic variants. Starting with G_IMPLICIT_DEF. llvm-svn: 306875
* GlobalISel: use inserts for landingpad instead of sequences.Tim Northover2017-03-071-1/+3
| | | | llvm-svn: 297237
* GlobalISel: restrict G_EXTRACT instruction to just one operand.Tim Northover2017-03-061-1/+2
| | | | | | | A bit more painful than G_INSERT because it was more widely used, but this should simplify the handling of extract operations in most locations. llvm-svn: 297100
* GlobalISel: constrain G_INSERT to inserting just one value per instruction.Tim Northover2017-03-031-1/+1
| | | | | | | It's much easier to reason about single-value inserts and no-one was actually using the variadic variants before. llvm-svn: 296923
* GlobalISel: the translation of an invoke must branch to the good block.Tim Northover2017-01-311-0/+1
| | | | | | | Otherwise bad things happen if the basic block order isn't trivial after an invoke. llvm-svn: 293679
* GlobalISel: merge invoke and call translation paths.Tim Northover2017-01-311-0/+31
| | | | | | | | Well, sort of. But the lower-level code that invoke used to be using completely botched the handling of varargs functions, which hopefully won't be possible if they're using the same code. llvm-svn: 293670
* GlobalISel: correctly translate invoke when callee is a register.Tim Northover2017-01-301-1/+15
| | | | | | This should fix the GlobalISel verifier. llvm-svn: 293550
* GlobalISel: account for differing exception selector sizes.Tim Northover2017-01-301-1/+2
| | | | | | | | | For some reason the exception selector register must be a pointer (that's assumed by SDag); on the other hand, it gets moved into an IR-level type which might be entirely different (i32 on AArch64). IRTranslator needs to be aware of this. llvm-svn: 293546
* GlobalISel: Use the correct types when translating landingpad instructionsJustin Bogner2017-01-251-2/+2
| | | | | | | | | | | There was a bug here where we were using p0 instead of s32 for the selector type in the landingpad. Instead of hardcoding these types we should get the types from the landingpad instruction directly. Note that we replicate an assert from SDAG here to only support two-valued landingpads. llvm-svn: 292995
* [GlobalISel] Add support for address-taken basic blocksKristof Beyls2017-01-051-2/+2
| | | | | | | | | | | | | | | | | To make this work, pointers from the MachineBasicBlock to the LLVM-IR-level basic blocks need to be initialized, as the AsmPrinter uses this link to be able to print out labels for the basic blocks that are address-taken. Most of the changes in this commit are about adapting existing tests to include the basic block name that is now printed out in the MIR format, now that the name becomes available as the link to the LLVM-IR basic block is initialized. The relevant test change for the functionality added in this patch are the added "(address-taken)" strings in test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll. Differential Revision: https://reviews.llvm.org/D28123 llvm-svn: 291105
* [IRTranslator] Merge the entry and ABI lowering blocks.Quentin Colombet2016-12-151-2/+1
| | | | | | | | | | | | | | | The IRTranslator uses an additional block before the LLVM-IR entry block to perform all the ABI lowering and the constant hoisting. Thus, this block is the actual entry block and it falls through the LLVM-IR entry block. However, with such representation, we end up with two basic blocks that are not maximal. Therefore, this patch adds a bit of canonicalization by merging both the LLVM-IR entry block and the ABI lowering/constants hoisting into one block, making the resulting block more likely to be maximal (indeed the LLVM-IR entry block might not have been maximal). llvm-svn: 289891
* GlobalISel: simplify MachineIRBuilder interface.Tim Northover2016-12-071-3/+4
| | | | | | | | | | | | MachineIRBuilder had weird before/after and beginning/end flags for the insert point. Unfortunately the non-default means that instructions will be inserted in reverse order which is almost never what anyone wants. Really, I think we just want (like IRBuilder has) the ability to insert at any C++ iterator-style point (i.e. before any instruction or before MBB.end()). So this fixes MIRBuilders to behave like IRBuilders in this respect. llvm-svn: 288980
* GlobalISel: make G_CONSTANT take a ConstantInt rather than int64_t.Tim Northover2016-12-051-1/+1
| | | | | | | | This makes it more similar to the floating-point constant, and also allows for larger constants to be translated later. There's no real functional change in this patch though, just syntax updates. llvm-svn: 288712
* GlobalISel: translate invoke and landingpad instructionsTim Northover2016-11-091-0/+44
Pretty bare-bones support for exception handling (no weird MSVC stuff, no SjLj etc), but it should get things going. llvm-svn: 286407
OpenPOWER on IntegriCloud