blob: d221501a31536d51f6e9720d10e0afa495dc0ebc [file] [log] [blame]
Akira Hatanakaf8941992013-05-20 18:07:43 +00001; RUN: llc -march=mips < %s | FileCheck %s -check-prefix=TRAP
2; RUN: llc -march=mips -mnocheck-zero-division < %s |\
3; RUN: FileCheck %s -check-prefix=NOCHECK
Bruno Cardoso Lopes38b5e862011-03-04 21:03:24 +00004
Akira Hatanakaf8941992013-05-20 18:07:43 +00005; TRAP: sdiv1:
6; TRAP: div $zero, ${{[0-9]+}}, $[[R0:[0-9]+]]
7; TRAP: teq $[[R0]], $zero, 7
8; TRAP: mflo
9
10; NOCHECK: sdiv1:
11; NOCHECK-NOT: teq
12; NOCHECK: .end sdiv1
13
Bruno Cardoso Lopes38b5e862011-03-04 21:03:24 +000014define i32 @sdiv1(i32 %a0, i32 %a1) nounwind readnone {
15entry:
16 %div = sdiv i32 %a0, %a1
17 ret i32 %div
18}
19
Akira Hatanakaf8941992013-05-20 18:07:43 +000020; TRAP: srem1:
21; TRAP: div $zero, ${{[0-9]+}}, $[[R0:[0-9]+]]
22; TRAP: teq $[[R0]], $zero, 7
23; TRAP: mfhi
24
Bruno Cardoso Lopes38b5e862011-03-04 21:03:24 +000025define i32 @srem1(i32 %a0, i32 %a1) nounwind readnone {
26entry:
27 %rem = srem i32 %a0, %a1
28 ret i32 %rem
29}
30
Akira Hatanakaf8941992013-05-20 18:07:43 +000031; TRAP: udiv1:
32; TRAP: divu $zero, ${{[0-9]+}}, $[[R0:[0-9]+]]
33; TRAP: teq $[[R0]], $zero, 7
34; TRAP: mflo
35
Bruno Cardoso Lopes38b5e862011-03-04 21:03:24 +000036define i32 @udiv1(i32 %a0, i32 %a1) nounwind readnone {
37entry:
38 %div = udiv i32 %a0, %a1
39 ret i32 %div
40}
41
Akira Hatanakaf8941992013-05-20 18:07:43 +000042; TRAP: urem1:
43; TRAP: divu $zero, ${{[0-9]+}}, $[[R0:[0-9]+]]
44; TRAP: teq $[[R0]], $zero, 7
45; TRAP: mfhi
46
Bruno Cardoso Lopes38b5e862011-03-04 21:03:24 +000047define i32 @urem1(i32 %a0, i32 %a1) nounwind readnone {
48entry:
49 %rem = urem i32 %a0, %a1
50 ret i32 %rem
51}
52
Akira Hatanakaf8941992013-05-20 18:07:43 +000053; TRAP: div $zero,
Bruno Cardoso Lopes38b5e862011-03-04 21:03:24 +000054define i32 @sdivrem1(i32 %a0, i32 %a1, i32* nocapture %r) nounwind {
55entry:
56 %rem = srem i32 %a0, %a1
Manman Ren2dc50d32013-04-30 17:52:57 +000057 store i32 %rem, i32* %r, align 4
Bruno Cardoso Lopes38b5e862011-03-04 21:03:24 +000058 %div = sdiv i32 %a0, %a1
59 ret i32 %div
60}
61
Akira Hatanakaf8941992013-05-20 18:07:43 +000062; TRAP: divu $zero,
Bruno Cardoso Lopes38b5e862011-03-04 21:03:24 +000063define i32 @udivrem1(i32 %a0, i32 %a1, i32* nocapture %r) nounwind {
64entry:
65 %rem = urem i32 %a0, %a1
Manman Ren2dc50d32013-04-30 17:52:57 +000066 store i32 %rem, i32* %r, align 4
Bruno Cardoso Lopes38b5e862011-03-04 21:03:24 +000067 %div = udiv i32 %a0, %a1
68 ret i32 %div
69}