Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | GlobalISel: Legalization for inttoptr/ptrtoint | Matt Arsenault | 2019-02-02 | 1 | -6/+44 | |
| | | | | llvm-svn: 352973 | |||||
* | GlobalISel: Handle odd splits in fewerElementsVector for load/store | Matt Arsenault | 2019-01-31 | 1 | -1/+2 | |
| | | | | llvm-svn: 352720 | |||||
* | GlobalISel: Implement narrowScalar for bswap | Matt Arsenault | 2019-01-31 | 1 | -1/+5 | |
| | | | | llvm-svn: 352719 | |||||
* | GlobalISel: Allow bitcount ops to have different result type | Matt Arsenault | 2019-01-31 | 1 | -5/+10 | |
| | | | | | | For AMDGPU the result is always 32-bit for 64-bit inputs. llvm-svn: 352717 | |||||
* | GlobalISel: Implement fewerElementsVector for select | Matt Arsenault | 2019-01-30 | 1 | -1/+20 | |
| | | | | llvm-svn: 352601 | |||||
* | AMDGPU/GlobalISel: Fix clamping shifts with 16-bit insts | Matt Arsenault | 2019-01-30 | 1 | -2/+3 | |
| | | | | llvm-svn: 352599 | |||||
* | GlobalISel: Support narrowScalar for uneven loads | Matt Arsenault | 2019-01-30 | 1 | -0/+8 | |
| | | | | llvm-svn: 352594 | |||||
* | GlobalISel: Partially implement widenScalar for MERGE_VALUES | Matt Arsenault | 2019-01-29 | 1 | -7/+8 | |
| | | | | llvm-svn: 352560 | |||||
* | GlobalISel: Fix narrowScalar for load/store with different mem size | Matt Arsenault | 2019-01-29 | 1 | -2/+22 | |
| | | | | | | | | | | This was ignoring the memory size, and producing multiple loads/stores if the operand size was different from the memory size. I assume this is the intent of not having an explicit G_ANYEXTLOAD (although I think that would probably be better). llvm-svn: 352523 | |||||
* | GlobalISel: Implement narrowScalar for mul | Matt Arsenault | 2019-01-27 | 1 | -0/+1 | |
| | | | | llvm-svn: 352300 | |||||
* | GlobalISel: fewerElementsVector for intrinsic_trunc/intrinsic_round | Matt Arsenault | 2019-01-27 | 1 | -1/+2 | |
| | | | | llvm-svn: 352298 | |||||
* | AMDGPU/GlobalISel: Use scalarize instead of clampMaxNumElements | Matt Arsenault | 2019-01-26 | 1 | -2/+1 | |
| | | | | llvm-svn: 352297 | |||||
* | AMDGPU/GlobalISel: Legalize more bit ops | Matt Arsenault | 2019-01-26 | 1 | -4/+7 | |
| | | | | llvm-svn: 352295 | |||||
* | AMDGPU/GlobalISel: Widen small uaddo/usubo | Matt Arsenault | 2019-01-26 | 1 | -1/+2 | |
| | | | | llvm-svn: 352294 | |||||
* | AMDGPU/GlobalISel: Remove leftover setAction | Matt Arsenault | 2019-01-25 | 1 | -11/+8 | |
| | | | | | | Also move G_GEP actions together. llvm-svn: 352168 | |||||
* | AMDGPU/GlobalISel: Scalarize add/sub | Matt Arsenault | 2019-01-25 | 1 | -3/+1 | |
| | | | | llvm-svn: 352167 | |||||
* | GlobalISel: fewerElementsVector for more cast types | Matt Arsenault | 2019-01-25 | 1 | -3/+6 | |
| | | | | llvm-svn: 352166 | |||||
* | GlobalISel: fewerElementsVector for a few more trivial ops | Matt Arsenault | 2019-01-25 | 1 | -5/+5 | |
| | | | | llvm-svn: 352165 | |||||
* | AMDGPU/GlobalISel: Legalize smulh/umulh and scalarize mul | Matt Arsenault | 2019-01-25 | 1 | -1/+4 | |
| | | | | llvm-svn: 352162 | |||||
* | GlobalISel: Support fewerElementsVector for icmp/fcmp | Matt Arsenault | 2019-01-25 | 1 | -6/+8 | |
| | | | | | | Also legalize 64-bit compares for AMDGPU llvm-svn: 352157 | |||||
* | GlobalISel: Implement fewerElementsVector for extensions | Matt Arsenault | 2019-01-25 | 1 | -2/+7 | |
| | | | | llvm-svn: 352155 | |||||
* | GlobalISel: Add convenience mutatations to scalarize | Matt Arsenault | 2019-01-25 | 1 | -29/+9 | |
| | | | | llvm-svn: 352143 | |||||
* | AMDGPU/GlobalISel: Start selectively legalizing 16-bit operations | Matt Arsenault | 2019-01-22 | 1 | -4/+9 | |
| | | | | | | | | It might be a bit nicer to use the fancy .legalIf and co. predicates, but this was requiring more boilerplate and disables the coverage assertions. llvm-svn: 351886 | |||||
* | AMDGPU/GlobalISel: Handle legality/regbanks for 32/64-bit shifts | Matt Arsenault | 2019-01-22 | 1 | -2/+3 | |
| | | | | llvm-svn: 351884 | |||||
* | GlobalISel: Allow shift amount to be a different type | Matt Arsenault | 2019-01-22 | 1 | -0/+2 | |
| | | | | | | | | | For AMDGPU the shift amount is never 64-bit, and this needs to use a 32-bit shift. X86 uses i8, but seemed to be hacking around this before. llvm-svn: 351882 | |||||
* | GlobalISel: Implement widen for extract_vector_elt elt type | Matt Arsenault | 2019-01-22 | 1 | -3/+16 | |
| | | | | llvm-svn: 351871 | |||||
* | GlobalISel: Implement fewerElementsVector for basic FP ops | Matt Arsenault | 2019-01-22 | 1 | -20/+28 | |
| | | | | llvm-svn: 351866 | |||||
* | AMDGPU/GlobalISel: Remove vectors from legal constant types | Matt Arsenault | 2019-01-22 | 1 | -1/+1 | |
| | | | | llvm-svn: 351859 | |||||
* | GlobalISel: Support narrowing zextload/sextload | Matt Arsenault | 2019-01-22 | 1 | -0/+18 | |
| | | | | llvm-svn: 351856 | |||||
* | AMDGPU/GlobalISel: Legalize more fp<->int conversions | Matt Arsenault | 2019-01-22 | 1 | -10/+4 | |
| | | | | llvm-svn: 351767 | |||||
* | AMDGPU: Legalize more bitcasts | Matt Arsenault | 2019-01-20 | 1 | -5/+7 | |
| | | | | llvm-svn: 351700 | |||||
* | AMDGPU/GlobalISel: Really legalize exts from i1 | Matt Arsenault | 2019-01-20 | 1 | -1/+2 | |
| | | | | | | | | There is a combine that was hiding these tests not actually testing what they should be, although they were producing the expected end result. llvm-svn: 351698 | |||||
* | GlobalISel: Implement widenScalar for basic FP ops | Matt Arsenault | 2019-01-20 | 1 | -6/+8 | |
| | | | | llvm-svn: 351696 | |||||
* | AMDGPU/GlobalISel: Legalize f32->f16 fptrunc | Matt Arsenault | 2019-01-20 | 1 | -1/+1 | |
| | | | | llvm-svn: 351695 | |||||
* | AMDGPU/GlobalISel: Fix some crashs in g_unmerge_values/g_merge_values | Matt Arsenault | 2019-01-20 | 1 | -12/+73 | |
| | | | | | | | | | | | This was crashing in the predicate function assuming the value is a vector. Copy more of what AArch64 uses. This probably needs more refinement later, but I don't exactly understand what it means in some cases, particularly since any legalization for these seems to be missing. llvm-svn: 351693 | |||||
* | AMDGPU/GlobalISel: Cleanup legality for extensions | Matt Arsenault | 2019-01-20 | 1 | -10/+6 | |
| | | | | llvm-svn: 351691 | |||||
* | Update the file headers across all of the LLVM projects in the monorepo | Chandler Carruth | 2019-01-19 | 1 | -4/+3 | |
| | | | | | | | | | | | | | | | | | to reflect the new license. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. llvm-svn: 351636 | |||||
* | AMDGPU/GlobalISel: Legalize more types for select | Matt Arsenault | 2019-01-18 | 1 | -2/+4 | |
| | | | | llvm-svn: 351599 | |||||
* | AMDGPU/GlobalISel: Legalize illegal g_constant | Matt Arsenault | 2019-01-18 | 1 | -4/+9 | |
| | | | | llvm-svn: 351596 | |||||
* | AMDGPU/GlobalISel: Legalize concat_vectors | Matt Arsenault | 2019-01-08 | 1 | -0/+12 | |
| | | | | llvm-svn: 350598 | |||||
* | RegBankSelect: Fix copy insertion point for terminators | Matt Arsenault | 2019-01-08 | 1 | -0/+2 | |
| | | | | | | | | | | | | | | | If a copy was needed to handle the condition of brcond, it was being inserted before the defining instruction. Add tests for iterator edge cases. I find the existing code here suspect for the case where it's looking for terminators that modify the register. It's going to insert a copy in the middle of the terminators, which isn't allowed (it might be necessary to have a COPY_terminator if anybody actually needs this). Also legalize brcond for AMDGPU. llvm-svn: 350595 | |||||
* | AMDGPU/GlobalISel: RegBankSelect for carry-in | Matt Arsenault | 2019-01-08 | 1 | -1/+2 | |
| | | | | | | | | I'm not sure we should be allowing the truncate to s1 for the inputs. It may be necessary to create a new VCC reg bank. llvm-svn: 350592 | |||||
* | AMDGPU/GlobalISel: RegBankSelect for add/sub with carry out | Matt Arsenault | 2019-01-08 | 1 | -0/+3 | |
| | | | | llvm-svn: 350589 | |||||
* | AMDGPU/GlobalISel: RegBankSelect for some fp ops | Matt Arsenault | 2018-12-21 | 1 | -0/+7 | |
| | | | | llvm-svn: 349880 | |||||
* | AMDGPU/GlobalISel: Redo legality for build_vector | Matt Arsenault | 2018-12-21 | 1 | -10/+38 | |
| | | | | | | | | | | It seems better to avoid using the callback if possible since there are coverage assertions which are disabled if this is used. Also fix missing tests. Only test the legal cases since it seems legalization for build_vector is quite lacking. llvm-svn: 349878 | |||||
* | AMDGPU: Make i1/i64/v2i32 and/or/xor legal | Matt Arsenault | 2018-12-20 | 1 | -3/+5 | |
| | | | | | | | The 64-bit types do depend on the register bank, but that's another issue to deal with later. llvm-svn: 349716 | |||||
* | AMDGPU/GlobalISel: RegBankSelect for fp conversions | Matt Arsenault | 2018-12-20 | 1 | -0/+6 | |
| | | | | llvm-svn: 349709 | |||||
* | AMDGPU/GlobalISel: Legality/regbankselect for atomicrmw/atomic_cmpxchg | Matt Arsenault | 2018-12-20 | 1 | -0/+10 | |
| | | | | llvm-svn: 349708 | |||||
* | AMDGPU: Legalize/regbankselect frame_index | Matt Arsenault | 2018-12-18 | 1 | -0/+2 | |
| | | | | llvm-svn: 349468 | |||||
* | AMDGPU: Legalize/regbankselect fma | Matt Arsenault | 2018-12-18 | 1 | -1/+1 | |
| | | | | llvm-svn: 349467 |