Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | [RISCV] Switch to the Machine Scheduler | Luis Marques | 2019-09-17 | 1 | -43/+41 |
| | | | | | | | | | Most of the test changes are trivial instruction reorderings and differing register allocations, without any obvious performance impact. Differential Revision: https://reviews.llvm.org/D66973 llvm-svn: 372106 | ||||
* | Revert Patch from Phabricator | Luis Marques | 2019-09-17 | 1 | -41/+43 |
| | | | | | | This reverts r372092 (git commit e38695a0255c9e7b53639f349f8101bae1ce5c04) llvm-svn: 372104 | ||||
* | Patch from Phabricator | Luis Marques | 2019-09-17 | 1 | -43/+41 |
| | | | | llvm-svn: 372092 | ||||
* | [RISCV] Only mark fp as reserved if the function has a dedicated frame pointer | Alex Bradbury | 2019-03-13 | 1 | -8/+8 |
| | | | | | | | | This follows similar logic in the ARM and Mips backends, and allows the free use of s0 in functions without a dedicated frame pointer. The changes in callee-saved-gprs.ll most clearly show the effect of this patch. llvm-svn: 356063 | ||||
* | [RISCV] Add RV64F codegen support | Alex Bradbury | 2019-01-31 | 1 | -0/+76 |
| | | | | | | | | | | | | | This requires a little extra work due tothe fact i32 is not a legal type. When call lowering happens post-legalisation (e.g. when an intrinsic was inserted during legalisation). A bitcast from f32 to i32 can't be introduced. This is similar to the challenges with RV32D. To handle this, we introduce target-specific DAG nodes that perform bitcast+anyext for f32->i64 and trunc+bitcast for i64->f32. Differential Revision: https://reviews.llvm.org/D53235 llvm-svn: 352807 | ||||
* | [RISCV] Separate base from offset in lowerGlobalAddress | Sameer AbuAsal | 2018-05-17 | 1 | -3/+3 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: When lowering global address, lower the base as a TargetGlobal first then create an SDNode for the offset separately and chain it to the address calculation This optimization will create a DAG where the base address of a global access will be reused between different access. The offset can later be folded into the immediate part of the memory access instruction. With this optimization we generate: lui a0, %hi(s) addi a0, a0, %lo(s) ; shared base address. addi a1, zero, 20 ; 2 instructions per access. sw a1, 44(a0) addi a1, zero, 10 sw a1, 8(a0) addi a1, zero, 30 sw a1, 80(a0) Instead of: lui a0, %hi(s+44) ; 3 instructions per access. addi a1, zero, 20 sw a1, %lo(s+44)(a0) lui a0, %hi(s+8) addi a1, zero, 10 sw a1, %lo(s+8)(a0) lui a0, %hi(s+80) addi a1, zero, 30 sw a1, %lo(s+80)(a0) Which will save one instruction per access. Reviewers: asb, apazos Reviewed By: asb Subscribers: rbar, johnrusso, simoncook, jordy.potman.lists, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, mgrang, apazos, asb, llvm-commits Differential Revision: https://reviews.llvm.org/D46989 llvm-svn: 332641 | ||||
* | [RISCV] Expand function call to "call" pseudoinstruction | Shiva Chen | 2018-04-25 | 1 | -6/+2 |
| | | | | | | | | | | | | | | | | To do this: 1. Change GlobalAddress SDNode to TargetGlobalAddress to avoid legalizer split the symbol. 2. Change ExternalSymbol SDNode to TargetExternalSymbol to avoid legalizer split the symbol. 3. Let PseudoCALL match direct call with target operand TargetGlobalAddress and TargetExternalSymbol. Differential Revision: https://reviews.llvm.org/D44885 llvm-svn: 330827 | ||||
* | [RISCV] Add tests missed from r327979 | Alex Bradbury | 2018-03-21 | 1 | -0/+53 |
| | | | | llvm-svn: 328102 | ||||
* | [RISCV] Add codegen for RV32F floating point load/store | Alex Bradbury | 2018-03-20 | 1 | -0/+84 |
As part of this, add support for load/store from the constant pool. This is used to materialise f32 constants. llvm-svn: 327979 |