Skip to content

Commit 0cd3fd4

Browse files
committed
[RISCV][test] Add (add x, C) -> (sub x, -C) tests
1 parent c2d47a9 commit 0cd3fd4

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc -mtriple=riscv64 < %s | FileCheck %s --check-prefixes=CHECK,NOZBS
3+
; RUN: llc -mtriple=riscv64 -mattr=+zbs < %s | FileCheck %s --check-prefixes=CHECK,ZBS
4+
5+
define i64 @add_b31(i64 %x) {
6+
; NOZBS-LABEL: add_b31:
7+
; NOZBS: # %bb.0:
8+
; NOZBS-NEXT: li a1, 1
9+
; NOZBS-NEXT: slli a1, a1, 31
10+
; NOZBS-NEXT: add a0, a0, a1
11+
; NOZBS-NEXT: ret
12+
;
13+
; ZBS-LABEL: add_b31:
14+
; ZBS: # %bb.0:
15+
; ZBS-NEXT: bseti a1, zero, 31
16+
; ZBS-NEXT: add a0, a0, a1
17+
; ZBS-NEXT: ret
18+
%add = add i64 %x, 2147483648
19+
ret i64 %add
20+
}
21+
22+
define i64 @add_b32(i64 %x) {
23+
; CHECK-LABEL: add_b32:
24+
; CHECK: # %bb.0:
25+
; CHECK-NEXT: li a1, -1
26+
; CHECK-NEXT: slli a1, a1, 32
27+
; CHECK-NEXT: add a0, a0, a1
28+
; CHECK-NEXT: ret
29+
%add = add i64 %x, -4294967296
30+
ret i64 %add
31+
}
32+
33+
define i64 @sub_0xffffffffff(i64 %x) {
34+
; CHECK-LABEL: sub_0xffffffffff:
35+
; CHECK: # %bb.0:
36+
; CHECK-NEXT: li a1, -1
37+
; CHECK-NEXT: slli a1, a1, 40
38+
; CHECK-NEXT: addi a1, a1, 1
39+
; CHECK-NEXT: add a0, a0, a1
40+
; CHECK-NEXT: ret
41+
%sub = sub i64 %x, 1099511627775
42+
ret i64 %sub
43+
}
44+
45+
define i64 @add_multiuse(i64 %x) {
46+
; CHECK-LABEL: add_multiuse:
47+
; CHECK: # %bb.0:
48+
; CHECK-NEXT: li a1, -1
49+
; CHECK-NEXT: slli a1, a1, 40
50+
; CHECK-NEXT: addi a1, a1, 1
51+
; CHECK-NEXT: add a0, a0, a1
52+
; CHECK-NEXT: and a0, a0, a1
53+
; CHECK-NEXT: ret
54+
%add = add i64 %x, -1099511627775
55+
%xor = and i64 %add, -1099511627775
56+
ret i64 %xor
57+
}

0 commit comments

Comments
 (0)