84 lines · plain
1; REQUIRES: asserts2;3; Disable all misched clustering4; RUN: llc -mtriple=riscv32 -verify-misched \5; RUN: -mattr=+disable-misched-load-clustering,+disable-misched-store-clustering \6; RUN: -debug-only=machine-scheduler -o - 2>&1 < %s \7; RUN: | FileCheck -check-prefix=NOCLUSTER %s8; RUN: llc -mtriple=riscv64 -verify-misched \9; RUN: -mattr=+disable-misched-load-clustering,+disable-misched-store-clustering \10; RUN: -debug-only=machine-scheduler -o - 2>&1 < %s \11; RUN: | FileCheck -check-prefix=NOCLUSTER %s12;13; ST misched clustering only14; RUN: llc -mtriple=riscv32 -verify-misched \15; RUN: -mattr=+disable-misched-load-clustering \16; RUN: -debug-only=machine-scheduler -o - 2>&1 < %s \17; RUN: | FileCheck -check-prefix=STCLUSTER %s18; RUN: llc -mtriple=riscv64 -verify-misched \19; RUN: -mattr=+disable-misched-load-clustering \20; RUN: -debug-only=machine-scheduler -o - 2>&1 < %s \21; RUN: | FileCheck -check-prefix=STCLUSTER %s22;23; LD misched clustering only24; RUN: llc -mtriple=riscv32 -verify-misched \25; RUN: -mattr=+disable-misched-store-clustering \26; RUN: -debug-only=machine-scheduler -o - 2>&1 < %s \27; RUN: | FileCheck -check-prefix=LDCLUSTER %s28; RUN: llc -mtriple=riscv64 -verify-misched \29; RUN: -mattr=+disable-misched-store-clustering \30; RUN: -debug-only=machine-scheduler -o - 2>&1 < %s \31; RUN: | FileCheck -check-prefix=LDCLUSTER %s32;33; Default misched cluster settings (i.e. both LD and ST clustering)34; RUN: llc -mtriple=riscv32 -verify-misched \35; RUN: -debug-only=machine-scheduler -o - 2>&1 < %s \36; RUN: | FileCheck -check-prefix=DEFAULTCLUSTER %s37; RUN: llc -mtriple=riscv64 -verify-misched \38; RUN: -debug-only=machine-scheduler -o - 2>&1 < %s \39; RUN: | FileCheck -check-prefix=DEFAULTCLUSTER %s40 41define i32 @store_clustering_1(ptr nocapture %p, i32 %v) {42; NOCLUSTER: ********** MI Scheduling **********43; NOCLUSTER-LABEL: store_clustering_1:%bb.044; NOCLUSTER: *** Final schedule for %bb.0 ***45; NOCLUSTER: SU(2): SW %1:gpr, %0:gpr, 12 :: (store (s32) into %ir.arrayidx0)46; NOCLUSTER: SU(3): SW %1:gpr, %0:gpr, 8 :: (store (s32) into %ir.arrayidx1)47; NOCLUSTER: SU(4): SW %1:gpr, %0:gpr, 4 :: (store (s32) into %ir.arrayidx2)48; NOCLUSTER: SU(5): SW %1:gpr, %0:gpr, 16 :: (store (s32) into %ir.arrayidx3)49;50; STCLUSTER: ********** MI Scheduling **********51; STCLUSTER-LABEL: store_clustering_1:%bb.052; STCLUSTER: *** Final schedule for %bb.0 ***53; STCLUSTER: SU(4): SW %1:gpr, %0:gpr, 4 :: (store (s32) into %ir.arrayidx2)54; STCLUSTER: SU(3): SW %1:gpr, %0:gpr, 8 :: (store (s32) into %ir.arrayidx1)55; STCLUSTER: SU(2): SW %1:gpr, %0:gpr, 12 :: (store (s32) into %ir.arrayidx0)56; STCLUSTER: SU(5): SW %1:gpr, %0:gpr, 16 :: (store (s32) into %ir.arrayidx3)57;58; LDCLUSTER: ********** MI Scheduling **********59; LDCLUSTER-LABEL: store_clustering_1:%bb.060; LDCLUSTER: *** Final schedule for %bb.0 ***61; LDCLUSTER: SU(2): SW %1:gpr, %0:gpr, 12 :: (store (s32) into %ir.arrayidx0)62; LDCLUSTER: SU(3): SW %1:gpr, %0:gpr, 8 :: (store (s32) into %ir.arrayidx1)63; LDCLUSTER: SU(4): SW %1:gpr, %0:gpr, 4 :: (store (s32) into %ir.arrayidx2)64; LDCLUSTER: SU(5): SW %1:gpr, %0:gpr, 16 :: (store (s32) into %ir.arrayidx3)65;66; DEFAULTCLUSTER: ********** MI Scheduling **********67; DEFAULTCLUSTER-LABEL: store_clustering_1:%bb.068; DEFAULTCLUSTER: *** Final schedule for %bb.0 ***69; DEFAULTCLUSTER: SU(4): SW %1:gpr, %0:gpr, 4 :: (store (s32) into %ir.arrayidx2)70; DEFAULTCLUSTER: SU(3): SW %1:gpr, %0:gpr, 8 :: (store (s32) into %ir.arrayidx1)71; DEFAULTCLUSTER: SU(2): SW %1:gpr, %0:gpr, 12 :: (store (s32) into %ir.arrayidx0)72; DEFAULTCLUSTER: SU(5): SW %1:gpr, %0:gpr, 16 :: (store (s32) into %ir.arrayidx3)73entry:74 %arrayidx0 = getelementptr inbounds i32, ptr %p, i32 375 store i32 %v, ptr %arrayidx076 %arrayidx1 = getelementptr inbounds i32, ptr %p, i32 277 store i32 %v, ptr %arrayidx178 %arrayidx2 = getelementptr inbounds i32, ptr %p, i32 179 store i32 %v, ptr %arrayidx280 %arrayidx3 = getelementptr inbounds i32, ptr %p, i32 481 store i32 %v, ptr %arrayidx382 ret i32 %v83}84