Skip to content

Commit 148fd6e

Browse files
AnnuCodeRKSimon
andauthored
[DAG] Adding abdu/abds to canCreateUndefOrPoison (#149017)
Fixes #147695 - [Alive2 test - freeze abdu](https://alive2.llvm.org/ce/z/aafeJs) - [Alive 2 test - freeze abds](https://alive2.llvm.org/ce/z/XrSmP4) --------- Co-authored-by: Simon Pilgrim <[email protected]>
1 parent d737fe2 commit 148fd6e

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5544,6 +5544,8 @@ bool SelectionDAG::canCreateUndefOrPoison(SDValue Op, const APInt &DemandedElts,
55445544
case ISD::USUBSAT:
55455545
case ISD::MULHU:
55465546
case ISD::MULHS:
5547+
case ISD::ABDU:
5548+
case ISD::ABDS:
55475549
case ISD::SMIN:
55485550
case ISD::SMAX:
55495551
case ISD::UMIN:

llvm/test/CodeGen/AArch64/freeze.ll

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,3 +395,37 @@ define i64 @freeze_array() {
395395
%t1 = add i64 %v1, %v2
396396
ret i64 %t1
397397
}
398+
399+
define <8 x i16> @freeze_abdu(<8 x i16> %a, <8 x i16> %b) {
400+
; CHECK-SD-LABEL: freeze_abdu:
401+
; CHECK-SD: // %bb.0:
402+
; CHECK-SD-NEXT: uaba v0.8h, v0.8h, v1.8h
403+
; CHECK-SD-NEXT: ret
404+
;
405+
; CHECK-GI-LABEL: freeze_abdu:
406+
; CHECK-GI: // %bb.0:
407+
; CHECK-GI-NEXT: uabd v1.8h, v0.8h, v1.8h
408+
; CHECK-GI-NEXT: add v0.8h, v0.8h, v1.8h
409+
; CHECK-GI-NEXT: ret
410+
%d = call <8 x i16> @llvm.aarch64.neon.uabd.v8i16(<8 x i16> %a, <8 x i16> %b)
411+
%f = freeze <8 x i16> %d
412+
%r = add <8 x i16> %a, %f
413+
ret <8 x i16> %r
414+
}
415+
416+
define <8 x i16> @freeze_abds(<8 x i16> %a, <8 x i16> %b) {
417+
; CHECK-SD-LABEL: freeze_abds:
418+
; CHECK-SD: // %bb.0:
419+
; CHECK-SD-NEXT: saba v0.8h, v0.8h, v1.8h
420+
; CHECK-SD-NEXT: ret
421+
;
422+
; CHECK-GI-LABEL: freeze_abds:
423+
; CHECK-GI: // %bb.0:
424+
; CHECK-GI-NEXT: sabd v1.8h, v0.8h, v1.8h
425+
; CHECK-GI-NEXT: add v0.8h, v0.8h, v1.8h
426+
; CHECK-GI-NEXT: ret
427+
%d = call <8 x i16> @llvm.aarch64.neon.sabd.v8i16(<8 x i16> %a, <8 x i16> %b)
428+
%f = freeze <8 x i16> %d
429+
%r = add <8 x i16> %a, %f
430+
ret <8 x i16> %r
431+
}

0 commit comments

Comments
 (0)