forked from OSchip/llvm-project
[RISCV] Select vl op to X0 when it is equal to ~0.
Now the backend will select ~0 vl to a register and load instruction, we could use X0 to replace it. Differential Revision: https://reviews.llvm.org/D116798
This commit is contained in:
parent
99c1acf3f1
commit
d0554ae4cf
|
@ -1793,7 +1793,8 @@ bool RISCVDAGToDAGISel::hasAllNBitUsers(SDNode *Node, unsigned Bits) const {
|
|||
// allows us to choose betwen VSETIVLI or VSETVLI later.
|
||||
bool RISCVDAGToDAGISel::selectVLOp(SDValue N, SDValue &VL) {
|
||||
auto *C = dyn_cast<ConstantSDNode>(N);
|
||||
if (C && isUInt<5>(C->getZExtValue()))
|
||||
if (C && (isUInt<5>(C->getZExtValue()) ||
|
||||
C->getSExtValue() == RISCV::VLMaxSentinel))
|
||||
VL = CurDAG->getTargetConstant(C->getZExtValue(), SDLoc(N),
|
||||
N->getValueType(0));
|
||||
else
|
||||
|
|
|
@ -242,8 +242,7 @@ entry:
|
|||
define <vscale x 1 x double> @test13(<vscale x 1 x double> %a, <vscale x 1 x double> %b) nounwind {
|
||||
; CHECK-LABEL: test13:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: li a0, -1
|
||||
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu
|
||||
; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
|
||||
; CHECK-NEXT: vfadd.vv v8, v8, v9
|
||||
; CHECK-NEXT: ret
|
||||
entry:
|
||||
|
|
Loading…
Reference in New Issue