|
2 | 2 | ; RUN: llc --mtriple=loongarch64 -mattr=+d,-div32 < %s | FileCheck %s --check-prefix=LA64
|
3 | 3 | ; RUN: llc --mtriple=loongarch64 -mattr=+d,+div32 < %s | FileCheck %s --check-prefix=LA64-DIV32
|
4 | 4 |
|
5 |
| -; TODO: Use div.w/mod.w for sdiv/srem i32 |
6 |
| - |
7 | 5 | define i32 @divw(i64 %a, i64 %b) {
|
8 | 6 | ; LA64-LABEL: divw:
|
9 | 7 | ; LA64: # %bb.0:
|
10 |
| -; LA64-NEXT: addi.w $a0, $a0, 0 |
11 | 8 | ; LA64-NEXT: addi.w $a1, $a1, 0
|
12 |
| -; LA64-NEXT: div.d $a0, $a0, $a1 |
| 9 | +; LA64-NEXT: addi.w $a0, $a0, 0 |
| 10 | +; LA64-NEXT: div.w $a0, $a0, $a1 |
13 | 11 | ; LA64-NEXT: ret
|
14 | 12 | ;
|
15 | 13 | ; LA64-DIV32-LABEL: divw:
|
16 | 14 | ; LA64-DIV32: # %bb.0:
|
17 |
| -; LA64-DIV32-NEXT: addi.w $a0, $a0, 0 |
18 |
| -; LA64-DIV32-NEXT: addi.w $a1, $a1, 0 |
19 |
| -; LA64-DIV32-NEXT: div.d $a0, $a0, $a1 |
| 15 | +; LA64-DIV32-NEXT: div.w $a0, $a0, $a1 |
20 | 16 | ; LA64-DIV32-NEXT: ret
|
21 | 17 | %conv1 = trunc i64 %a to i32
|
22 | 18 | %conv2 = trunc i64 %b to i32
|
@@ -45,16 +41,14 @@ define i32 @divwu(i64 %a, i64 %b) {
|
45 | 41 | define i32 @modw(i64 %a, i64 %b) {
|
46 | 42 | ; LA64-LABEL: modw:
|
47 | 43 | ; LA64: # %bb.0:
|
48 |
| -; LA64-NEXT: addi.w $a0, $a0, 0 |
49 | 44 | ; LA64-NEXT: addi.w $a1, $a1, 0
|
50 |
| -; LA64-NEXT: mod.d $a0, $a0, $a1 |
| 45 | +; LA64-NEXT: addi.w $a0, $a0, 0 |
| 46 | +; LA64-NEXT: mod.w $a0, $a0, $a1 |
51 | 47 | ; LA64-NEXT: ret
|
52 | 48 | ;
|
53 | 49 | ; LA64-DIV32-LABEL: modw:
|
54 | 50 | ; LA64-DIV32: # %bb.0:
|
55 |
| -; LA64-DIV32-NEXT: addi.w $a0, $a0, 0 |
56 |
| -; LA64-DIV32-NEXT: addi.w $a1, $a1, 0 |
57 |
| -; LA64-DIV32-NEXT: mod.d $a0, $a0, $a1 |
| 51 | +; LA64-DIV32-NEXT: mod.w $a0, $a0, $a1 |
58 | 52 | ; LA64-DIV32-NEXT: ret
|
59 | 53 | %conv1 = trunc i64 %a to i32
|
60 | 54 | %conv2 = trunc i64 %b to i32
|
|
0 commit comments