86 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -mtriple=riscv64 -mattr=+m,+v \3; RUN: -passes=slp-vectorizer \4; RUN: -slp-disable-tree-reorder=true -slp-force-strided-loads=true \5; RUN: -S < %s | FileCheck %s6 7define void @const_stride_reversed(ptr %pl, ptr %ps) {8; CHECK-LABEL: define void @const_stride_reversed(9; CHECK-SAME: ptr [[PL:%.*]], ptr [[PS:%.*]]) #[[ATTR0:[0-9]+]] {10; CHECK-NEXT: [[GEP_L15:%.*]] = getelementptr inbounds i8, ptr [[PL]], i64 1511; CHECK-NEXT: [[GEP_S0:%.*]] = getelementptr inbounds i8, ptr [[PS]], i64 012; CHECK-NEXT: [[TMP2:%.*]] = call <16 x i8> @llvm.experimental.vp.strided.load.v16i8.p0.i64(ptr align 16 [[GEP_L15]], i64 -1, <16 x i1> splat (i1 true), i32 16)13; CHECK-NEXT: store <16 x i8> [[TMP2]], ptr [[GEP_S0]], align 1614; CHECK-NEXT: ret void15;16 %gep_l0 = getelementptr inbounds i8, ptr %pl, i64 017 %gep_l1 = getelementptr inbounds i8, ptr %pl, i64 118 %gep_l2 = getelementptr inbounds i8, ptr %pl, i64 219 %gep_l3 = getelementptr inbounds i8, ptr %pl, i64 320 %gep_l4 = getelementptr inbounds i8, ptr %pl, i64 421 %gep_l5 = getelementptr inbounds i8, ptr %pl, i64 522 %gep_l6 = getelementptr inbounds i8, ptr %pl, i64 623 %gep_l7 = getelementptr inbounds i8, ptr %pl, i64 724 %gep_l8 = getelementptr inbounds i8, ptr %pl, i64 825 %gep_l9 = getelementptr inbounds i8, ptr %pl, i64 926 %gep_l10 = getelementptr inbounds i8, ptr %pl, i64 1027 %gep_l11 = getelementptr inbounds i8, ptr %pl, i64 1128 %gep_l12 = getelementptr inbounds i8, ptr %pl, i64 1229 %gep_l13 = getelementptr inbounds i8, ptr %pl, i64 1330 %gep_l14 = getelementptr inbounds i8, ptr %pl, i64 1431 %gep_l15 = getelementptr inbounds i8, ptr %pl, i64 1532 33 %load0 = load i8, ptr %gep_l0 , align 1634 %load1 = load i8, ptr %gep_l1 , align 1635 %load2 = load i8, ptr %gep_l2 , align 1636 %load3 = load i8, ptr %gep_l3 , align 1637 %load4 = load i8, ptr %gep_l4 , align 1638 %load5 = load i8, ptr %gep_l5 , align 1639 %load6 = load i8, ptr %gep_l6 , align 1640 %load7 = load i8, ptr %gep_l7 , align 1641 %load8 = load i8, ptr %gep_l8 , align 1642 %load9 = load i8, ptr %gep_l9 , align 1643 %load10 = load i8, ptr %gep_l10, align 1644 %load11 = load i8, ptr %gep_l11, align 1645 %load12 = load i8, ptr %gep_l12, align 1646 %load13 = load i8, ptr %gep_l13, align 1647 %load14 = load i8, ptr %gep_l14, align 1648 %load15 = load i8, ptr %gep_l15, align 1649 50 %gep_s0 = getelementptr inbounds i8, ptr %ps, i64 051 %gep_s1 = getelementptr inbounds i8, ptr %ps, i64 152 %gep_s2 = getelementptr inbounds i8, ptr %ps, i64 253 %gep_s3 = getelementptr inbounds i8, ptr %ps, i64 354 %gep_s4 = getelementptr inbounds i8, ptr %ps, i64 455 %gep_s5 = getelementptr inbounds i8, ptr %ps, i64 556 %gep_s6 = getelementptr inbounds i8, ptr %ps, i64 657 %gep_s7 = getelementptr inbounds i8, ptr %ps, i64 758 %gep_s8 = getelementptr inbounds i8, ptr %ps, i64 859 %gep_s9 = getelementptr inbounds i8, ptr %ps, i64 960 %gep_s10 = getelementptr inbounds i8, ptr %ps, i64 1061 %gep_s11 = getelementptr inbounds i8, ptr %ps, i64 1162 %gep_s12 = getelementptr inbounds i8, ptr %ps, i64 1263 %gep_s13 = getelementptr inbounds i8, ptr %ps, i64 1364 %gep_s14 = getelementptr inbounds i8, ptr %ps, i64 1465 %gep_s15 = getelementptr inbounds i8, ptr %ps, i64 1566 67 store i8 %load0, ptr %gep_s15, align 1668 store i8 %load1, ptr %gep_s14, align 1669 store i8 %load2, ptr %gep_s13, align 1670 store i8 %load3, ptr %gep_s12, align 1671 store i8 %load4, ptr %gep_s11, align 1672 store i8 %load5, ptr %gep_s10, align 1673 store i8 %load6, ptr %gep_s9, align 1674 store i8 %load7, ptr %gep_s8, align 1675 store i8 %load8, ptr %gep_s7, align 1676 store i8 %load9, ptr %gep_s6, align 1677 store i8 %load10, ptr %gep_s5, align 1678 store i8 %load11, ptr %gep_s4, align 1679 store i8 %load12, ptr %gep_s3, align 1680 store i8 %load13, ptr %gep_s2, align 1681 store i8 %load14, ptr %gep_s1, align 1682 store i8 %load15, ptr %gep_s0, align 1683 84 ret void85}86