blob: fae9830619d9dede7f35eca97c4bd9ca4ccdfbb8 [file] [log] [blame]
Wesley Pecka70f28c2010-02-23 19:15:24 +00001; Ensure that multiplication is lowered to function calls when the multiplier
2; unit is not available in the hardware and that function calls are not used
3; when the multiplier unit is available in the hardware.
4;
5; RUN: llc < %s -march=mblaze | FileCheck -check-prefix=FUN %s
6; RUN: llc < %s -march=mblaze -mattr=+div | FileCheck -check-prefix=DIV %s
7
8define i8 @test_i8(i8 %a, i8 %b) {
9 ; FUN: test_i8:
10 ; DIV: test_i8:
11
12 %tmp.1 = udiv i8 %a, %b
13 ; FUN-NOT: idiv
14 ; FUN: brlid
15 ; DIV-NOT: brlid
16 ; DIV: idivu
17
18 %tmp.2 = sdiv i8 %a, %b
19 ; FUN-NOT: idiv
20 ; FUN: brlid
21 ; DIV-NOT: brlid
22 ; DIV-NOT: idivu
23 ; DIV: idiv
24
25 %tmp.3 = add i8 %tmp.1, %tmp.2
26 ret i8 %tmp.3
27 ; FUN: rtsd
28 ; DIV: rtsd
29}
30
31define i16 @test_i16(i16 %a, i16 %b) {
32 ; FUN: test_i16:
33 ; DIV: test_i16:
34
35 %tmp.1 = udiv i16 %a, %b
36 ; FUN-NOT: idiv
37 ; FUN: brlid
38 ; DIV-NOT: brlid
39 ; DIV: idivu
40
41 %tmp.2 = sdiv i16 %a, %b
42 ; FUN-NOT: idiv
43 ; FUN: brlid
44 ; DIV-NOT: brlid
45 ; DIV-NOT: idivu
46 ; DIV: idiv
47
48 %tmp.3 = add i16 %tmp.1, %tmp.2
49 ret i16 %tmp.3
50 ; FUN: rtsd
51 ; DIV: rtsd
52}
53
54define i32 @test_i32(i32 %a, i32 %b) {
55 ; FUN: test_i32:
56 ; DIV: test_i32:
57
58 %tmp.1 = udiv i32 %a, %b
59 ; FUN-NOT: idiv
60 ; FUN: brlid
61 ; DIV-NOT: brlid
62 ; DIV: idivu
63
64 %tmp.2 = sdiv i32 %a, %b
65 ; FUN-NOT: idiv
66 ; FUN: brlid
67 ; DIV-NOT: brlid
68 ; DIV-NOT: idivu
69 ; DIV: idiv
70
71 %tmp.3 = add i32 %tmp.1, %tmp.2
72 ret i32 %tmp.3
73 ; FUN: rtsd
74 ; DIV: rtsd
75}