• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; 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}
76