Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d98e735

Browse files
committed
[GlobalISel] Add G_ABS computeKnownBits
1 parent 6747139 commit d98e735

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

llvm/lib/CodeGen/GlobalISel/GISelValueTracking.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -697,6 +697,14 @@ void GISelValueTracking::computeKnownBitsImpl(Register R, KnownBits &Known,
697697
}
698698
break;
699699
}
700+
case TargetOpcode::G_ABS: {
701+
Register SrcReg = MI.getOperand(1).getReg();
702+
computeKnownBitsImpl(SrcReg, Known, DemandedElts, Depth + 1);
703+
Known = Known.abs();
704+
Known.Zero.setHighBits(computeNumSignBits(SrcReg, DemandedElts, Depth + 1) -
705+
1);
706+
break;
707+
}
700708
}
701709

702710
LLVM_DEBUG(dumpResult(MI, Known, Depth));
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_givaluetracking_test_checks.py UTC_ARGS: --version 5
2+
# RUN: llc -mtriple aarch64 -passes="print<gisel-value-tracking>" %s -filetype=null 2>&1 | FileCheck %s
3+
4+
---
5+
name: Cst
6+
body: |
7+
bb.0:
8+
; CHECK-LABEL: name: @Cst
9+
; CHECK-NEXT: %0:_ KnownBits:00010011 SignBits:3
10+
; CHECK-NEXT: %1:_ KnownBits:00010011 SignBits:3
11+
%0:_(s8) = G_CONSTANT i8 19
12+
%1:_(s8) = G_ABS %0
13+
...
14+
---
15+
name: CstNeg
16+
body: |
17+
bb.0:
18+
; CHECK-LABEL: name: @CstNeg
19+
; CHECK-NEXT: %0:_ KnownBits:11101110 SignBits:3
20+
; CHECK-NEXT: %1:_ KnownBits:00010010 SignBits:3
21+
%0:_(s8) = G_CONSTANT i8 238
22+
%1:_(s8) = G_ABS %0
23+
...

0 commit comments

Comments
 (0)