Skip to content

Commit 38a936b

Browse files
committed
Ignore fneg(-0.0)
1 parent 507e931 commit 38a936b

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30667,6 +30667,9 @@ bool AArch64TargetLowering::isTargetCanonicalConstantNode(SDValue Op) const {
3066730667
Op.getOpcode() == AArch64ISD::MOVIedit ||
3066830668
Op.getOpcode() == AArch64ISD::MVNIshift ||
3066930669
Op.getOpcode() == AArch64ISD::MVNImsl ||
30670+
(Op.getOpcode() == ISD::FNEG &&
30671+
Op.getOperand(0).getOpcode() == AArch64ISD::MOVIedit &&
30672+
Op.getOperand(0).getConstantOperandVal(0) == 0) ||
3067030673
(Op.getOpcode() == ISD::EXTRACT_SUBVECTOR &&
3067130674
Op.getOperand(0).getOpcode() == AArch64ISD::DUP) ||
3067230675
TargetLowering::isTargetCanonicalConstantNode(Op);

llvm/test/CodeGen/AArch64/urem-vector-lkk.ll

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ define <4 x i16> @fold_urem_vec_1(<4 x i16> %x) {
88
; CHECK-NEXT: ldr d1, [x8, :lo12:.LCPI0_0]
99
; CHECK-NEXT: adrp x8, .LCPI0_1
1010
; CHECK-NEXT: ldr d2, [x8, :lo12:.LCPI0_1]
11-
; CHECK-NEXT: mov x8, #-9223372036854775808 // =0x8000000000000000
12-
; CHECK-NEXT: ushl v1.4h, v0.4h, v1.4h
13-
; CHECK-NEXT: fmov d3, x8
1411
; CHECK-NEXT: adrp x8, .LCPI0_2
12+
; CHECK-NEXT: ushl v1.4h, v0.4h, v1.4h
1513
; CHECK-NEXT: umull v1.4s, v1.4h, v2.4h
14+
; CHECK-NEXT: movi d2, #0000000000000000
1615
; CHECK-NEXT: shrn v1.4h, v1.4s, #16
17-
; CHECK-NEXT: sub v2.4h, v0.4h, v1.4h
18-
; CHECK-NEXT: umull v2.4s, v2.4h, v3.4h
16+
; CHECK-NEXT: fneg d2, d2
17+
; CHECK-NEXT: sub v3.4h, v0.4h, v1.4h
18+
; CHECK-NEXT: umull v2.4s, v3.4h, v2.4h
1919
; CHECK-NEXT: shrn v2.4h, v2.4s, #16
2020
; CHECK-NEXT: add v1.4h, v2.4h, v1.4h
2121
; CHECK-NEXT: ldr d2, [x8, :lo12:.LCPI0_2]

0 commit comments

Comments
 (0)