Skip to content

Commit 1d0477f

Browse files
committed
add a test
1 parent a01c311 commit 1d0477f

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc --mtriple=loongarch64 -mattr=+d,-div32 < %s | FileCheck %s --check-prefix=LA64
3+
; RUN: llc --mtriple=loongarch64 -mattr=+d,+div32 < %s | FileCheck %s --check-prefix=LA64-DIV32
4+
5+
define dso_local noundef signext i32 @divw(i64 noundef %0, i64 noundef %1) local_unnamed_addr #0 {
6+
; LA64-LABEL: divw:
7+
; LA64: # %bb.0:
8+
; LA64-NEXT: addi.w $a1, $a1, 0
9+
; LA64-NEXT: addi.w $a0, $a0, 0
10+
; LA64-NEXT: div.w $a0, $a0, $a1
11+
; LA64-NEXT: ret
12+
;
13+
; LA64-DIV32-LABEL: divw:
14+
; LA64-DIV32: # %bb.0:
15+
; LA64-DIV32-NEXT: div.w $a0, $a0, $a1
16+
; LA64-DIV32-NEXT: ret
17+
%3 = trunc i64 %0 to i32
18+
%4 = trunc i64 %1 to i32
19+
%5 = sdiv i32 %3, %4
20+
ret i32 %5
21+
}
22+
23+
define dso_local noundef signext i32 @divwu(i64 noundef %0, i64 noundef %1) local_unnamed_addr #0 {
24+
; LA64-LABEL: divwu:
25+
; LA64: # %bb.0:
26+
; LA64-NEXT: addi.w $a1, $a1, 0
27+
; LA64-NEXT: addi.w $a0, $a0, 0
28+
; LA64-NEXT: div.wu $a0, $a0, $a1
29+
; LA64-NEXT: ret
30+
;
31+
; LA64-DIV32-LABEL: divwu:
32+
; LA64-DIV32: # %bb.0:
33+
; LA64-DIV32-NEXT: div.wu $a0, $a0, $a1
34+
; LA64-DIV32-NEXT: ret
35+
%3 = trunc i64 %0 to i32
36+
%4 = trunc i64 %1 to i32
37+
%5 = udiv i32 %3, %4
38+
ret i32 %5
39+
}
40+
41+
define dso_local signext range(i32 -2147483647, -2147483648) i32 @modw(i64 noundef %0, i64 noundef %1) local_unnamed_addr #0 {
42+
; LA64-LABEL: modw:
43+
; LA64: # %bb.0:
44+
; LA64-NEXT: addi.w $a1, $a1, 0
45+
; LA64-NEXT: addi.w $a0, $a0, 0
46+
; LA64-NEXT: mod.w $a0, $a0, $a1
47+
; LA64-NEXT: ret
48+
;
49+
; LA64-DIV32-LABEL: modw:
50+
; LA64-DIV32: # %bb.0:
51+
; LA64-DIV32-NEXT: mod.w $a0, $a0, $a1
52+
; LA64-DIV32-NEXT: ret
53+
%3 = trunc i64 %0 to i32
54+
%4 = trunc i64 %1 to i32
55+
%5 = srem i32 %3, %4
56+
ret i32 %5
57+
}
58+
59+
define dso_local signext range(i32 0, -1) i32 @modwu(i64 noundef %0, i64 noundef %1) local_unnamed_addr #0 {
60+
; LA64-LABEL: modwu:
61+
; LA64: # %bb.0:
62+
; LA64-NEXT: addi.w $a1, $a1, 0
63+
; LA64-NEXT: addi.w $a0, $a0, 0
64+
; LA64-NEXT: mod.wu $a0, $a0, $a1
65+
; LA64-NEXT: ret
66+
;
67+
; LA64-DIV32-LABEL: modwu:
68+
; LA64-DIV32: # %bb.0:
69+
; LA64-DIV32-NEXT: mod.wu $a0, $a0, $a1
70+
; LA64-DIV32-NEXT: ret
71+
%3 = trunc i64 %0 to i32
72+
%4 = trunc i64 %1 to i32
73+
%5 = urem i32 %3, %4
74+
ret i32 %5
75+
}

0 commit comments

Comments
 (0)