Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Recommit "[PowerPC] Fix assert from machine verify pass that unmatched ↵ | Zi Xuan Wu | 2019-01-10 | 1 | -7/+7 |
| | | | | | | | | | | register class about fcmp selection in fast-isel" This re-commit r350685. Differential Revision: https://reviews.llvm.org/D55686 llvm-svn: 350799 | ||||
* | Revert "[PowerPC] Fix assert from machine verify pass that unmatched ↵ | Zi Xuan Wu | 2019-01-09 | 1 | -7/+7 |
| | | | | | | | | | | register class about fcmp selection in fast-isel" This reverts commit r350685. See compile assert in compiler-rt. llvm-svn: 350693 | ||||
* | [PowerPC] Fix assert from machine verify pass that unmatched register class ↵ | Zi Xuan Wu | 2019-01-09 | 1 | -7/+7 |
| | | | | | | | | | | | | | | | | | | | | | about fcmp selection in fast-isel Bad machine code: Illegal virtual register for instruction function: TestULE basic block: %bb.0 entry (0x1000a39b158) instruction: %2:crrc = FCMPUD %1:vsfrc, %3:f8rc operand 1: %1:vsfrc Fix assert about missing match between fcmp instruction and register class. We should use vsx related cmp instruction xvcmpudp instead of fcmpu when vsx is opened. add -verifymachineinstrs option into related test cases to enable the verify pass. Differential Revision: https://reviews.llvm.org/D55686 llvm-svn: 350685 | ||||
* | [PPC] Generate positive FP zero using xor insn instead of loading from ↵ | Ehsan Amiri | 2016-10-24 | 1 | -6/+6 |
| | | | | | | | | | | | constant area https://reviews.llvm.org/D23614 Currently we load +0.0 from constant area. That can change to be generated using XOR instruction. llvm-svn: 284995 | ||||
* | [PPC, FastISel] Fix ordered/unordered fcmp | Tim Shen | 2016-03-17 | 1 | -0/+187 |
For fcmp, major concern about the following 6 cases is NaN result. The comparison result consists of 4 bits, indicating lt, eq, gt and un (unordered), only one of which will be set. The result is generated by fcmpu instruction. However, bc instruction only inspects one of the first 3 bits, so when un is set, bc instruction may jump to to an undesired place. More specifically, if we expect an unordered comparison and un is set, we expect to always go to true branch; in such case UEQ, UGT and ULT still give false, which are undesired; but UNE, UGE, ULE happen to give true, since they are tested by inspecting !eq, !lt, !gt, respectively. Similarly, for ordered comparison, when un is set, we always expect the result to be false. In such case OGT, OLT and OEQ is good, since they are actually testing GT, LT, and EQ respectively, which are false. OGE, OLE and ONE are tested through !lt, !gt and !eq, and these are true. llvm-svn: 263753 |