Skip to content

Commit a5c90e4

Browse files
authored
[LoongArch] Switch to the Machine Scheduler (llvm#83759)
The SelectionDAG scheduling preference now becomes source order scheduling (machine scheduler generates better code -- even without there being a machine model defined for LoongArch yet). Most of the test changes are trivial instruction reorderings and differing register allocations, without any obvious performance impact. This is similar to commit: 3d0fbaf
1 parent 275fe3a commit a5c90e4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+5866
-5304
lines changed

llvm/lib/Target/LoongArch/LoongArchSubtarget.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ class LoongArchSubtarget : public LoongArchGenSubtargetInfo {
113113
Align getPrefFunctionAlignment() const { return PrefFunctionAlignment; }
114114
Align getPrefLoopAlignment() const { return PrefLoopAlignment; }
115115
unsigned getMaxBytesForAlignment() const { return MaxBytesForAlignment; }
116+
bool enableMachineScheduler() const override { return true; }
116117
};
117118
} // end namespace llvm
118119

llvm/test/CodeGen/LoongArch/alloca.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,15 +126,15 @@ define void @alloca_callframe(i32 %n) nounwind {
126126
; LA32-NEXT: st.w $a1, $sp, 8
127127
; LA32-NEXT: ori $a1, $zero, 10
128128
; LA32-NEXT: st.w $a1, $sp, 4
129-
; LA32-NEXT: ori $a1, $zero, 9
130-
; LA32-NEXT: st.w $a1, $sp, 0
129+
; LA32-NEXT: ori $t0, $zero, 9
131130
; LA32-NEXT: ori $a1, $zero, 2
132131
; LA32-NEXT: ori $a2, $zero, 3
133132
; LA32-NEXT: ori $a3, $zero, 4
134133
; LA32-NEXT: ori $a4, $zero, 5
135134
; LA32-NEXT: ori $a5, $zero, 6
136135
; LA32-NEXT: ori $a6, $zero, 7
137136
; LA32-NEXT: ori $a7, $zero, 8
137+
; LA32-NEXT: st.w $t0, $sp, 0
138138
; LA32-NEXT: bl %plt(func)
139139
; LA32-NEXT: addi.w $sp, $sp, 16
140140
; LA32-NEXT: addi.w $sp, $fp, -16
@@ -162,15 +162,15 @@ define void @alloca_callframe(i32 %n) nounwind {
162162
; LA64-NEXT: st.d $a1, $sp, 16
163163
; LA64-NEXT: ori $a1, $zero, 10
164164
; LA64-NEXT: st.d $a1, $sp, 8
165-
; LA64-NEXT: ori $a1, $zero, 9
166-
; LA64-NEXT: st.d $a1, $sp, 0
165+
; LA64-NEXT: ori $t0, $zero, 9
167166
; LA64-NEXT: ori $a1, $zero, 2
168167
; LA64-NEXT: ori $a2, $zero, 3
169168
; LA64-NEXT: ori $a3, $zero, 4
170169
; LA64-NEXT: ori $a4, $zero, 5
171170
; LA64-NEXT: ori $a5, $zero, 6
172171
; LA64-NEXT: ori $a6, $zero, 7
173172
; LA64-NEXT: ori $a7, $zero, 8
173+
; LA64-NEXT: st.d $t0, $sp, 0
174174
; LA64-NEXT: bl %plt(func)
175175
; LA64-NEXT: addi.d $sp, $sp, 32
176176
; LA64-NEXT: addi.d $sp, $fp, -16

llvm/test/CodeGen/LoongArch/alsl.ll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ entry:
5353
define i64 @alsl_i64(i64 signext %a, i64 signext %b) nounwind {
5454
; LA32-LABEL: alsl_i64:
5555
; LA32: # %bb.0: # %entry
56-
; LA32-NEXT: slli.w $a1, $a1, 4
5756
; LA32-NEXT: srli.w $a4, $a0, 28
57+
; LA32-NEXT: slli.w $a1, $a1, 4
5858
; LA32-NEXT: or $a1, $a1, $a4
59-
; LA32-NEXT: add.w $a1, $a3, $a1
6059
; LA32-NEXT: alsl.w $a0, $a0, $a2, 4
6160
; LA32-NEXT: sltu $a2, $a0, $a2
61+
; LA32-NEXT: add.w $a1, $a3, $a1
6262
; LA32-NEXT: add.w $a1, $a1, $a2
6363
; LA32-NEXT: ret
6464
;
@@ -189,14 +189,14 @@ entry:
189189
define i64 @mul_add_i64(i64 signext %a, i64 signext %b) nounwind {
190190
; LA32-LABEL: mul_add_i64:
191191
; LA32: # %bb.0: # %entry
192-
; LA32-NEXT: slli.w $a4, $a1, 4
193-
; LA32-NEXT: sub.w $a1, $a4, $a1
194192
; LA32-NEXT: ori $a4, $zero, 15
195193
; LA32-NEXT: mulh.wu $a4, $a0, $a4
194+
; LA32-NEXT: slli.w $a5, $a1, 4
195+
; LA32-NEXT: sub.w $a1, $a5, $a1
196196
; LA32-NEXT: add.w $a1, $a4, $a1
197+
; LA32-NEXT: slli.w $a4, $a0, 4
198+
; LA32-NEXT: sub.w $a0, $a4, $a0
197199
; LA32-NEXT: add.w $a1, $a3, $a1
198-
; LA32-NEXT: slli.w $a3, $a0, 4
199-
; LA32-NEXT: sub.w $a0, $a3, $a0
200200
; LA32-NEXT: add.w $a0, $a2, $a0
201201
; LA32-NEXT: sltu $a2, $a0, $a2
202202
; LA32-NEXT: add.w $a1, $a1, $a2
@@ -342,9 +342,9 @@ define i64 @mul_add_neg_i64(i64 signext %a, i64 signext %b) nounwind {
342342
; LA32-NEXT: mulh.wu $a4, $a0, $a4
343343
; LA32-NEXT: sub.w $a4, $a4, $a0
344344
; LA32-NEXT: add.w $a1, $a4, $a1
345+
; LA32-NEXT: slli.w $a4, $a0, 4
346+
; LA32-NEXT: sub.w $a0, $a0, $a4
345347
; LA32-NEXT: add.w $a1, $a3, $a1
346-
; LA32-NEXT: slli.w $a3, $a0, 4
347-
; LA32-NEXT: sub.w $a0, $a0, $a3
348348
; LA32-NEXT: add.w $a0, $a2, $a0
349349
; LA32-NEXT: sltu $a2, $a0, $a2
350350
; LA32-NEXT: add.w $a1, $a1, $a2

0 commit comments

Comments
 (0)