76 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S --passes=slp-vectorizer -mtriple=riscv64-unknown-linux-gnu -mattr=+v,+zvl512b < %s | FileCheck %s3 4define void @test(ptr %c) {5; CHECK-LABEL: define void @test(6; CHECK-SAME: ptr [[C:%.*]]) #[[ATTR0:[0-9]+]] {7; CHECK-NEXT: [[ENTRY:.*]]:8; CHECK-NEXT: [[TMP0:%.*]] = insertelement <8 x ptr> poison, ptr [[C]], i32 09; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <8 x ptr> [[TMP0]], <8 x ptr> poison, <8 x i32> zeroinitializer10; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, <8 x ptr> [[TMP1]], <8 x i64> <i64 222, i64 228, i64 276, i64 279, i64 282, i64 285, i64 288, i64 0>11; CHECK-NEXT: [[TMP3:%.*]] = getelementptr i8, <8 x ptr> [[TMP1]], <8 x i64> <i64 0, i64 345, i64 348, i64 351, i64 354, i64 357, i64 360, i64 363>12; CHECK-NEXT: [[TMP4:%.*]] = call <8 x i8> @llvm.masked.gather.v8i8.v8p0(<8 x ptr> align 1 [[TMP2]], <8 x i1> splat (i1 true), <8 x i8> poison)13; CHECK-NEXT: [[TMP5:%.*]] = call <8 x i8> @llvm.masked.gather.v8i8.v8p0(<8 x ptr> align 1 [[TMP3]], <8 x i1> splat (i1 true), <8 x i8> poison)14; CHECK-NEXT: [[TMP6:%.*]] = shufflevector <8 x i8> [[TMP5]], <8 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>15; CHECK-NEXT: [[TMP7:%.*]] = shufflevector <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>16; CHECK-NEXT: br label %[[FOR_COND:.*]]17; CHECK: [[FOR_COND]]:18; CHECK-NEXT: [[A_PROMOTED2226:%.*]] = phi i8 [ 0, %[[ENTRY]] ], [ [[TMP8:%.*]], %[[FOR_COND]] ]19; CHECK-NEXT: [[TMP9:%.*]] = shufflevector <8 x i8> [[TMP4]], <8 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>20; CHECK-NEXT: [[TMP8]] = call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> [[TMP7]])21; CHECK-NEXT: br label %[[FOR_COND]]22;23entry:24 %arrayidx8.5.3 = getelementptr i8, ptr %c, i64 22225 %0 = load i8, ptr %arrayidx8.5.3, align 126 %arrayidx8.7.3 = getelementptr i8, ptr %c, i64 22827 %1 = load i8, ptr %arrayidx8.7.3, align 128 %arrayidx8.434 = getelementptr i8, ptr %c, i64 27629 %2 = load i8, ptr %arrayidx8.434, align 130 %arrayidx8.1.4 = getelementptr i8, ptr %c, i64 27931 %3 = load i8, ptr %arrayidx8.1.4, align 132 %arrayidx8.2.4 = getelementptr i8, ptr %c, i64 28233 %4 = load i8, ptr %arrayidx8.2.4, align 134 %arrayidx8.3.4 = getelementptr i8, ptr %c, i64 28535 %5 = load i8, ptr %arrayidx8.3.4, align 136 %arrayidx8.4.4 = getelementptr i8, ptr %c, i64 28837 %6 = load i8, ptr %arrayidx8.4.4, align 138 %7 = load i8, ptr %c, align 139 %8 = load i8, ptr %c, align 140 %arrayidx8.536 = getelementptr i8, ptr %c, i64 34541 %9 = load i8, ptr %arrayidx8.536, align 142 %arrayidx8.1.5 = getelementptr i8, ptr %c, i64 34843 %10 = load i8, ptr %arrayidx8.1.5, align 144 %arrayidx8.2.5 = getelementptr i8, ptr %c, i64 35145 %11 = load i8, ptr %arrayidx8.2.5, align 146 %arrayidx8.3.5 = getelementptr i8, ptr %c, i64 35447 %12 = load i8, ptr %arrayidx8.3.5, align 148 %arrayidx8.4.5 = getelementptr i8, ptr %c, i64 35749 %13 = load i8, ptr %arrayidx8.4.5, align 150 %arrayidx8.5.5 = getelementptr i8, ptr %c, i64 36051 %14 = load i8, ptr %arrayidx8.5.5, align 152 %arrayidx8.6.5 = getelementptr i8, ptr %c, i64 36353 %15 = load i8, ptr %arrayidx8.6.5, align 154 br label %for.cond55 56for.cond:57 %a.promoted2226 = phi i8 [ 0, %entry ], [ %or18.6.5, %for.cond ]58 %or18.7.3 = or i8 %0, %159 %or18.435 = or i8 %or18.7.3, %260 %or18.1.4 = or i8 %or18.435, %361 %or18.2.4 = or i8 %or18.1.4, %462 %or18.3.4 = or i8 %or18.2.4, %563 %or18.4.4 = or i8 %or18.3.4, %664 %or18.5.4 = or i8 %or18.4.4, %765 %or18.6.4 = or i8 %or18.5.4, %866 %or18.537 = or i8 %or18.6.4, %967 %or18.1.5 = or i8 %or18.537, %1068 %or18.2.5 = or i8 %or18.1.5, %1169 %or18.3.5 = or i8 %or18.2.5, %1270 %or18.4.5 = or i8 %or18.3.5, %1371 %or18.5.5 = or i8 %or18.4.5, %1472 %or18.6.5 = or i8 %or18.5.5, %1573 br label %for.cond74}75 76