xref: /llvm-project/llvm/test/CodeGen/RISCV/misched-load-clustering.ll (revision 2967e5f8007d873a3e9d97870d2461d0827a3976)
185c9c168SAlex Bradbury; REQUIRES: asserts
2*2967e5f8SAlex Bradbury; RUN: llc -mtriple=riscv32 -verify-misched -riscv-misched-load-store-clustering=false \
314c4f28eSAlex Bradbury; RUN:     -debug-only=machine-scheduler -o - 2>&1 < %s \
485c9c168SAlex Bradbury; RUN:   | FileCheck -check-prefix=NOCLUSTER %s
5*2967e5f8SAlex Bradbury; RUN: llc -mtriple=riscv64 -verify-misched -riscv-misched-load-store-clustering=false \
614c4f28eSAlex Bradbury; RUN:     -debug-only=machine-scheduler -o - 2>&1 < %s \
785c9c168SAlex Bradbury; RUN:   | FileCheck -check-prefix=NOCLUSTER %s
814c4f28eSAlex Bradbury; RUN: llc -mtriple=riscv32 -verify-misched \
985c9c168SAlex Bradbury; RUN:     -debug-only=machine-scheduler -o - 2>&1 < %s \
1085c9c168SAlex Bradbury; RUN:   | FileCheck -check-prefix=LDCLUSTER %s
1114c4f28eSAlex Bradbury; RUN: llc -mtriple=riscv64 -verify-misched \
1285c9c168SAlex Bradbury; RUN:     -debug-only=machine-scheduler -o - 2>&1 < %s \
1385c9c168SAlex Bradbury; RUN:   | FileCheck -check-prefix=LDCLUSTER %s
1485c9c168SAlex Bradbury
1585c9c168SAlex Bradbury
1685c9c168SAlex Bradburydefine i32 @load_clustering_1(ptr nocapture %p) {
1785c9c168SAlex Bradbury; NOCLUSTER: ********** MI Scheduling **********
1885c9c168SAlex Bradbury; NOCLUSTER-LABEL: load_clustering_1:%bb.0
1985c9c168SAlex Bradbury; NOCLUSTER: *** Final schedule for %bb.0 ***
2085c9c168SAlex Bradbury; NOCLUSTER: SU(1): %1:gpr = LW %0:gpr, 12
2185c9c168SAlex Bradbury; NOCLUSTER: SU(2): %2:gpr = LW %0:gpr, 8
2285c9c168SAlex Bradbury; NOCLUSTER: SU(4): %4:gpr = LW %0:gpr, 4
2385c9c168SAlex Bradbury; NOCLUSTER: SU(5): %6:gpr = LW %0:gpr, 16
2485c9c168SAlex Bradbury;
2585c9c168SAlex Bradbury; LDCLUSTER: ********** MI Scheduling **********
2685c9c168SAlex Bradbury; LDCLUSTER-LABEL: load_clustering_1:%bb.0
2785c9c168SAlex Bradbury; LDCLUSTER: *** Final schedule for %bb.0 ***
2885c9c168SAlex Bradbury; LDCLUSTER: SU(4): %4:gpr = LW %0:gpr, 4
2984f7fb62SAlex Bradbury; LDCLUSTER: SU(2): %2:gpr = LW %0:gpr, 8
3084f7fb62SAlex Bradbury; LDCLUSTER: SU(1): %1:gpr = LW %0:gpr, 12
3184f7fb62SAlex Bradbury; LDCLUSTER: SU(5): %6:gpr = LW %0:gpr, 16
3285c9c168SAlex Bradburyentry:
3385c9c168SAlex Bradbury  %arrayidx0 = getelementptr inbounds i32, ptr %p, i32 3
34ff9af4c4SNikita Popov  %val0 = load i32, ptr %arrayidx0
3585c9c168SAlex Bradbury  %arrayidx1 = getelementptr inbounds i32, ptr %p, i32 2
36ff9af4c4SNikita Popov  %val1 = load i32, ptr %arrayidx1
3785c9c168SAlex Bradbury  %tmp0 = add i32 %val0, %val1
3885c9c168SAlex Bradbury  %arrayidx2 = getelementptr inbounds i32, ptr %p, i32 1
39ff9af4c4SNikita Popov  %val2 = load i32, ptr %arrayidx2
4085c9c168SAlex Bradbury  %tmp1 = add i32 %tmp0, %val2
4185c9c168SAlex Bradbury  %arrayidx3 = getelementptr inbounds i32, ptr %p, i32 4
42ff9af4c4SNikita Popov  %val3 = load i32, ptr %arrayidx3
4385c9c168SAlex Bradbury  %tmp2 = add i32 %tmp1, %val3
4485c9c168SAlex Bradbury  ret i32 %tmp2
4585c9c168SAlex Bradbury}
46