77 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 < %s | FileCheck %s3 4@r = external global [8 x i8]5 6define void @test(i64 %0, ptr %1) {7; CHECK-LABEL: define void @test(8; CHECK-SAME: i64 [[TMP0:%.*]], ptr [[TMP1:%.*]]) #[[ATTR0:[0-9]+]] {9; CHECK-NEXT: [[TMP3:%.*]] = load i8, ptr @r, align 110; CHECK-NEXT: [[TMP4:%.*]] = trunc i8 [[TMP3]] to i111; CHECK-NEXT: [[TMP5:%.*]] = select i1 [[TMP4]], i64 [[TMP0]], i64 012; CHECK-NEXT: [[TMP6:%.*]] = getelementptr i8, ptr @r, i64 [[TMP5]]13; CHECK-NEXT: [[TMP7:%.*]] = load i8, ptr [[TMP6]], align 114; CHECK-NEXT: [[TMP8:%.*]] = icmp ule i8 [[TMP3]], [[TMP7]]15; CHECK-NEXT: [[TMP9:%.*]] = sext i1 [[TMP8]] to i3216; CHECK-NEXT: [[TMP10:%.*]] = load i8, ptr getelementptr (i8, ptr @r, i64 -8049), align 117; CHECK-NEXT: [[TMP11:%.*]] = trunc i8 [[TMP10]] to i118; CHECK-NEXT: [[TMP12:%.*]] = select i1 [[TMP11]], i64 [[TMP0]], i64 019; CHECK-NEXT: [[TMP13:%.*]] = getelementptr i8, ptr @r, i64 [[TMP12]]20; CHECK-NEXT: [[TMP14:%.*]] = load i8, ptr [[TMP13]], align 121; CHECK-NEXT: [[TMP15:%.*]] = icmp ule i8 [[TMP10]], [[TMP14]]22; CHECK-NEXT: [[TMP16:%.*]] = sext i1 [[TMP15]] to i3223; CHECK-NEXT: [[TMP17:%.*]] = add i32 [[TMP9]], [[TMP16]]24; CHECK-NEXT: [[TMP18:%.*]] = load i8, ptr getelementptr (i8, ptr @r, i64 -16098), align 125; CHECK-NEXT: [[TMP19:%.*]] = trunc i8 [[TMP18]] to i126; CHECK-NEXT: [[TMP20:%.*]] = select i1 [[TMP19]], i64 [[TMP0]], i64 027; CHECK-NEXT: [[TMP21:%.*]] = getelementptr i8, ptr @r, i64 [[TMP20]]28; CHECK-NEXT: [[TMP22:%.*]] = load i8, ptr [[TMP21]], align 129; CHECK-NEXT: [[TMP23:%.*]] = icmp ule i8 [[TMP18]], [[TMP22]]30; CHECK-NEXT: [[TMP24:%.*]] = sext i1 [[TMP23]] to i3231; CHECK-NEXT: [[TMP25:%.*]] = add i32 [[TMP17]], [[TMP24]]32; CHECK-NEXT: [[TMP26:%.*]] = load i8, ptr getelementptr (i8, ptr @r, i64 -24147), align 133; CHECK-NEXT: [[TMP27:%.*]] = trunc i8 [[TMP26]] to i134; CHECK-NEXT: [[TMP28:%.*]] = select i1 [[TMP27]], i64 [[TMP0]], i64 035; CHECK-NEXT: [[TMP29:%.*]] = getelementptr i8, ptr @r, i64 [[TMP28]]36; CHECK-NEXT: [[TMP30:%.*]] = load i8, ptr [[TMP29]], align 137; CHECK-NEXT: [[TMP31:%.*]] = icmp ule i8 [[TMP26]], [[TMP30]]38; CHECK-NEXT: [[TMP32:%.*]] = sext i1 [[TMP31]] to i3239; CHECK-NEXT: [[TMP33:%.*]] = add i32 [[TMP25]], [[TMP32]]40; CHECK-NEXT: store i32 [[TMP33]], ptr [[TMP1]], align 441; CHECK-NEXT: ret void42;43 %3 = load i8, ptr @r, align 144 %4 = trunc i8 %3 to i145 %5 = select i1 %4, i64 %0, i64 046 %6 = getelementptr i8, ptr @r, i64 %547 %7 = load i8, ptr %6, align 148 %8 = icmp ule i8 %3, %749 %9 = sext i1 %8 to i3250 %10 = load i8, ptr getelementptr (i8, ptr @r, i64 -8049), align 151 %11 = trunc i8 %10 to i152 %12 = select i1 %11, i64 %0, i64 053 %13 = getelementptr i8, ptr @r, i64 %1254 %14 = load i8, ptr %13, align 155 %15 = icmp ule i8 %10, %1456 %16 = sext i1 %15 to i3257 %17 = add i32 %9, %1658 %18 = load i8, ptr getelementptr (i8, ptr @r, i64 -16098), align 159 %19 = trunc i8 %18 to i160 %20 = select i1 %19, i64 %0, i64 061 %21 = getelementptr i8, ptr @r, i64 %2062 %22 = load i8, ptr %21, align 163 %23 = icmp ule i8 %18, %2264 %24 = sext i1 %23 to i3265 %25 = add i32 %17, %2466 %26 = load i8, ptr getelementptr (i8, ptr @r, i64 -24147), align 167 %27 = trunc i8 %26 to i168 %28 = select i1 %27, i64 %0, i64 069 %29 = getelementptr i8, ptr @r, i64 %2870 %30 = load i8, ptr %29, align 171 %31 = icmp ule i8 %26, %3072 %32 = sext i1 %31 to i3273 %33 = add i32 %25, %3274 store i32 %33, ptr %1, align 475 ret void76}77