57 lines · plain
1; REQUIRES: asserts2; RUN: llc %s -mtriple=lanai-unknown-unknown -debug-only=machine-scheduler -o /dev/null 2>&1 | FileCheck %s3 4; Make sure there are no control dependencies between memory operations that5; are trivially disjoint.6 7; Function Attrs: norecurse nounwind uwtable8define i32 @foo(ptr inreg nocapture %x) {9entry:10 %0 = bitcast ptr %x to ptr11 store i32 1, ptr %0, align 412 %arrayidx1 = getelementptr inbounds i8, ptr %x, i32 413 %1 = bitcast ptr %arrayidx1 to ptr14 store i32 2, ptr %1, align 415 %arrayidx2 = getelementptr inbounds i8, ptr %x, i32 1216 %2 = bitcast ptr %arrayidx2 to ptr17 %3 = load i32, ptr %2, align 418 %arrayidx3 = getelementptr inbounds i8, ptr %x, i32 1019 %4 = bitcast ptr %arrayidx3 to ptr20 store i16 3, ptr %4, align 221 %5 = bitcast ptr %arrayidx2 to ptr22 store i16 4, ptr %5, align 223 %arrayidx5 = getelementptr inbounds i8, ptr %x, i32 1424 store i8 5, ptr %arrayidx5, align 125 %arrayidx6 = getelementptr inbounds i8, ptr %x, i32 1526 store i8 6, ptr %arrayidx6, align 127 %arrayidx7 = getelementptr inbounds i8, ptr %x, i32 1628 store i8 7, ptr %arrayidx7, align 129 ret i32 %330}31 32; CHECK-LABEL: foo33; CHECK-LABEL: SU({{.*}}): SW_RI{{.*}}, 0,34; CHECK: # preds left : 235; CHECK: # succs left : 036; CHECK-LABEL: SU({{.*}}): SW_RI{{.*}}, 4,37; CHECK: # preds left : 238; CHECK: # succs left : 039; CHECK-LABEL: SU({{.*}}): %{{.*}} = LDW_RI{{.*}}, 12,40; CHECK: # preds left : 141; CHECK: # succs left : 442; CHECK-LABEL: SU({{.*}}): STH_RI{{.*}}, 10,43; CHECK: # preds left : 244; CHECK: # succs left : 045; CHECK-LABEL: SU({{.*}}): STH_RI{{.*}}, 12,46; CHECK: # preds left : 347; CHECK: # succs left : 048; CHECK-LABEL: SU({{.*}}): STB_RI{{.*}}, 14,49; CHECK: # preds left : 350; CHECK: # succs left : 051; CHECK-LABEL: SU({{.*}}): STB_RI{{.*}}, 15,52; CHECK: # preds left : 353; CHECK: # succs left : 054; CHECK-LABEL: SU({{.*}}): STB_RI{{.*}}, 16,55; CHECK: # preds left : 256; CHECK: # succs left : 057