Skip to content

Commit de416e1

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 de416e1

File tree

1 file changed

+48
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)