Skip to content

Commit 52e10b2

Browse files
committed
Pre-commit tests
1 parent ab17ff0 commit 52e10b2

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc < %s -mtriple=riscv64 -mattr=+m | FileCheck %s
3+
4+
define i32 @signed(i32 %0, ptr %1) {
5+
; CHECK-LABEL: signed:
6+
; CHECK: # %bb.0:
7+
; CHECK-NEXT: sraiw a0, a0, 8
8+
; CHECK-NEXT: sw zero, 0(a1)
9+
; CHECK-NEXT: ret
10+
%rem = srem i32 %0, 256
11+
store i32 %rem, ptr %1, align 4
12+
%div = sdiv exact i32 %0, 256
13+
ret i32 %div
14+
}
15+
16+
define i32 @unsigned(i32 %0, ptr %1) {
17+
; CHECK-LABEL: unsigned:
18+
; CHECK: # %bb.0:
19+
; CHECK-NEXT: srliw a0, a0, 3
20+
; CHECK-NEXT: lui a2, 699051
21+
; CHECK-NEXT: addi a2, a2, -1365
22+
; CHECK-NEXT: mulw a0, a0, a2
23+
; CHECK-NEXT: sw zero, 0(a1)
24+
; CHECK-NEXT: ret
25+
%rem = urem i32 %0, 24
26+
store i32 %rem, ptr %1, align 4
27+
%div = udiv exact i32 %0, 24
28+
ret i32 %div
29+
}
30+
31+
define i32 @signed_div_first(i32 %0, ptr %1) {
32+
; CHECK-LABEL: signed_div_first:
33+
; CHECK: # %bb.0:
34+
; CHECK-NEXT: sraiw a2, a0, 31
35+
; CHECK-NEXT: srliw a2, a2, 24
36+
; CHECK-NEXT: add a3, a0, a2
37+
; CHECK-NEXT: sraiw a2, a3, 8
38+
; CHECK-NEXT: andi a3, a3, -256
39+
; CHECK-NEXT: subw a0, a0, a3
40+
; CHECK-NEXT: sw a0, 0(a1)
41+
; CHECK-NEXT: mv a0, a2
42+
; CHECK-NEXT: ret
43+
%div = sdiv exact i32 %0, 256
44+
%rem = srem i32 %0, 256
45+
store i32 %rem, ptr %1, align 4
46+
ret i32 %div
47+
}
48+
49+
define i32 @unsigned_div_first(i32 %0, ptr %1) {
50+
; CHECK-LABEL: unsigned_div_first:
51+
; CHECK: # %bb.0:
52+
; CHECK-NEXT: slli a2, a0, 32
53+
; CHECK-NEXT: lui a3, 699051
54+
; CHECK-NEXT: addi a3, a3, -1365
55+
; CHECK-NEXT: slli a3, a3, 32
56+
; CHECK-NEXT: mulhu a2, a2, a3
57+
; CHECK-NEXT: srli a2, a2, 36
58+
; CHECK-NEXT: slli a3, a2, 5
59+
; CHECK-NEXT: slli a4, a2, 3
60+
; CHECK-NEXT: subw a4, a4, a3
61+
; CHECK-NEXT: add a0, a0, a4
62+
; CHECK-NEXT: sw a0, 0(a1)
63+
; CHECK-NEXT: mv a0, a2
64+
; CHECK-NEXT: ret
65+
%div = udiv exact i32 %0, 24
66+
%rem = urem i32 %0, 24
67+
store i32 %rem, ptr %1, align 4
68+
ret i32 %div
69+
}

0 commit comments

Comments
 (0)