68 lines · plain
1; RUN: llc < %s -mtriple aarch64 -mcpu=falkor -disable-post-ra | FileCheck %s2 3; Check that strided load tag collisions are avoided on Falkor.4 5; CHECK-LABEL: hwpf1:6; CHECK: ldp {{w[0-9]+}}, {{w[0-9]+}}, [x[[BASE:[0-9]+]], #-16]7; CHECK: mov x[[BASE2:[0-9]+]], x[[BASE]]8; CHECK: ldp {{w[0-9]+}}, {{w[0-9]+}}, [x[[BASE2]], #-8]9; CHECK: ldp {{w[0-9]+}}, {{w[0-9]+}}, [x[[BASE3:[0-9]+]]]10; CHECK: mov x[[BASE4:[0-9]+]], x[[BASE3]]11; CHECK: ldp {{w[0-9]+}}, {{w[0-9]+}}, [x[[BASE4]], #8]12 13define void @hwpf1(ptr %p, ptr %sp, ptr %sp2, ptr %sp3, ptr %sp4) {14entry:15 br label %loop16 17loop:18 %iv = phi i32 [ 0, %entry ], [ %inc, %loop ]19 20 %gep = getelementptr inbounds i32, ptr %p, i32 %iv21 %load1 = load i32, ptr %gep22 23 %gep2 = getelementptr inbounds i32, ptr %gep, i32 124 %load2 = load i32, ptr %gep225 26 %add = add i32 %load1, %load227 %storegep = getelementptr inbounds i32, ptr %sp, i32 %iv28 store i32 %add, ptr %storegep29 30 %gep3 = getelementptr inbounds i32, ptr %gep, i32 231 %load3 = load i32, ptr %gep332 33 %gep4 = getelementptr inbounds i32, ptr %gep, i32 334 %load4 = load i32, ptr %gep435 36 %add2 = add i32 %load3, %load437 %storegep2 = getelementptr inbounds i32, ptr %sp2, i32 %iv38 store i32 %add2, ptr %storegep239 40 %gep5 = getelementptr inbounds i32, ptr %gep, i32 441 %load5 = load i32, ptr %gep542 43 %gep6 = getelementptr inbounds i32, ptr %gep, i32 544 %load6 = load i32, ptr %gep645 46 %add3 = add i32 %load5, %load647 %storegep3 = getelementptr inbounds i32, ptr %sp3, i32 %iv48 store i32 %add3, ptr %storegep349 50 %gep7 = getelementptr inbounds i32, ptr %gep, i32 651 %load7 = load i32, ptr %gep752 53 %gep8 = getelementptr inbounds i32, ptr %gep, i32 754 %load8 = load i32, ptr %gep855 56 %add4 = add i32 %load7, %load857 %storegep4 = getelementptr inbounds i32, ptr %sp4, i32 %iv58 store i32 %add4, ptr %storegep459 60 %inc = add i32 %iv, 861 %exitcnd = icmp uge i32 %inc, 102462 br i1 %exitcnd, label %exit, label %loop63 64exit:65 ret void66}67 68