Skip to content

Commit 20de053

Browse files
[CGP] Add pre-commit test for Fix matching of uadd overflow
Add tests where uadd overflow intrinsic is matched for: `Add = add A,(uint64_t)-1; Cmp = icmp ne A, 0` instead of: `Add = add A,-1; Cmp = icmp ne A, 0` where -1 is represented in 256 bits. Signed-off-by: Vladimir Radosavljevic <[email protected]>
1 parent 72ae8fe commit 20de053

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2+
; RUN: llc -O3 --cgp-verify-bfi-updates=false < %s | FileCheck %s
3+
; Verification of BFI updates is disabled because of https://github.com/llvm/llvm-project/issues/64197
4+
5+
target datalayout = "E-p:256:256-i256:256:256-S32-a:256:256"
6+
target triple = "eravm"
7+
8+
define i256 @dont_match(i256 %a) {
9+
; CHECK-LABEL: dont_match:
10+
; CHECK: ; %bb.0: ; %entry
11+
; CHECK-NEXT: add r1, r0, r2
12+
; CHECK-NEXT: add @CPI0_0[0], r2, r1
13+
; CHECK-NEXT: add! @CPI0_0[0], r2, r2
14+
; CHECK-NEXT: jump.lt @.BB0_2
15+
; CHECK-NEXT: ; %bb.1: ; %else
16+
; CHECK-NEXT: ret
17+
; CHECK-NEXT: .BB0_2: ; %then
18+
; CHECK-NEXT: add r0, r0, r1
19+
; CHECK-NEXT: ret
20+
entry:
21+
%add = add i256 %a, 18446744073709551615
22+
%cmp = icmp ne i256 %a, 0
23+
br i1 %cmp, label %then, label %else
24+
25+
then:
26+
ret i256 0
27+
28+
else:
29+
ret i256 %add
30+
}
31+
32+
define i256 @match(i256 %a) {
33+
; CHECK-LABEL: match:
34+
; CHECK: ; %bb.0: ; %entry
35+
; CHECK-NEXT: sub! r1, r0, r2
36+
; CHECK-NEXT: sub.s.eq 1, r1, r1
37+
; CHECK-NEXT: add.ne r0, r0, r1
38+
; CHECK-NEXT: ret
39+
entry:
40+
%add = add i256 %a, -1
41+
%cmp = icmp ne i256 %a, 0
42+
br i1 %cmp, label %then, label %else
43+
44+
then:
45+
ret i256 0
46+
47+
else:
48+
ret i256 %add
49+
}

0 commit comments

Comments
 (0)