|
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