brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · 19eb7bf Raw
90 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=x86_64-unknown-linux-gnu -slp-threshold=-10 < %s | FileCheck %s3 4define void @test(ptr %0, i32 %1, i32 %2) {5; CHECK-LABEL: define void @test(6; CHECK-SAME: ptr [[TMP0:%.*]], i32 [[TMP1:%.*]], i32 [[TMP2:%.*]]) {7; CHECK-NEXT:  [[ENTRY:.*:]]8; CHECK-NEXT:    [[TMP3:%.*]] = getelementptr i8, ptr [[TMP0]], i64 489; CHECK-NEXT:    [[TMP5:%.*]] = getelementptr i8, ptr [[TMP0]], i64 5610; CHECK-NEXT:    [[TMP7:%.*]] = and i32 [[TMP2]], [[TMP1]]11; CHECK-NEXT:    [[ADD_NARROWED_I_I:%.*]] = shl i32 [[TMP1]], 112; CHECK-NEXT:    [[TMP10:%.*]] = lshr i32 [[TMP7]], 113; CHECK-NEXT:    [[TMP18:%.*]] = zext i32 [[ADD_NARROWED_I_I]] to i6414; CHECK-NEXT:    [[TMP19:%.*]] = add i64 [[TMP18]], -115; CHECK-NEXT:    [[TMP21:%.*]] = trunc i64 [[TMP19]] to i3216; CHECK-NEXT:    [[TMP28:%.*]] = insertelement <2 x i32> poison, i32 [[TMP21]], i32 017; CHECK-NEXT:    [[TMP11:%.*]] = shufflevector <2 x i32> [[TMP28]], <2 x i32> poison, <2 x i32> zeroinitializer18; CHECK-NEXT:    [[TMP12:%.*]] = and <2 x i32> [[TMP11]], splat (i32 -2)19; CHECK-NEXT:    [[TMP13:%.*]] = insertelement <2 x i32> <i32 poison, i32 -2>, i32 [[TMP1]], i32 020; CHECK-NEXT:    [[TMP14:%.*]] = or <2 x i32> [[TMP13]], [[TMP12]]21; CHECK-NEXT:    [[TMP15:%.*]] = xor <2 x i32> [[TMP13]], [[TMP12]]22; CHECK-NEXT:    [[TMP16:%.*]] = shufflevector <2 x i32> [[TMP14]], <2 x i32> [[TMP15]], <2 x i32> <i32 0, i32 3>23; CHECK-NEXT:    [[TMP17:%.*]] = load <2 x i32>, ptr [[TMP5]], align 824; CHECK-NEXT:    [[TMP32:%.*]] = insertelement <2 x i32> <i32 1, i32 poison>, i32 [[TMP1]], i32 125; CHECK-NEXT:    [[TMP33:%.*]] = and <2 x i32> [[TMP17]], [[TMP32]]26; CHECK-NEXT:    call void @llvm.stackrestore.p0(ptr null)27; CHECK-NEXT:    [[TMP20:%.*]] = shufflevector <2 x i32> [[TMP33]], <2 x i32> poison, <2 x i32> <i32 poison, i32 0>28; CHECK-NEXT:    [[TMP34:%.*]] = insertelement <2 x i32> [[TMP20]], i32 [[TMP10]], i32 029; CHECK-NEXT:    [[TMP22:%.*]] = zext <2 x i32> [[TMP34]] to <2 x i64>30; CHECK-NEXT:    [[TMP23:%.*]] = zext <2 x i32> [[TMP33]] to <2 x i64>31; CHECK-NEXT:    [[TMP35:%.*]] = shl <2 x i64> [[TMP23]], splat (i64 1)32; CHECK-NEXT:    [[TMP25:%.*]] = or <2 x i64> [[TMP35]], [[TMP22]]33; CHECK-NEXT:    [[TMP26:%.*]] = trunc <2 x i64> [[TMP25]] to <2 x i32>34; CHECK-NEXT:    [[TMP27:%.*]] = trunc <2 x i64> [[TMP25]] to <2 x i32>35; CHECK-NEXT:    [[TMP24:%.*]] = tail call i32 asm sideeffect "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 0)36; CHECK-NEXT:    store <2 x i32> [[TMP16]], ptr [[TMP3]], align 1637; CHECK-NEXT:    [[TMP29:%.*]] = shufflevector <2 x i32> [[TMP32]], <2 x i32> poison, <2 x i32> <i32 1, i32 1>38; CHECK-NEXT:    [[TMP30:%.*]] = and <2 x i32> [[TMP29]], [[TMP26]]39; CHECK-NEXT:    [[TMP31:%.*]] = or <2 x i32> [[TMP30]], [[TMP27]]40; CHECK-NEXT:    store <2 x i32> [[TMP31]], ptr [[TMP5]], align 841; CHECK-NEXT:    ret void42;43entry:44  %3 = getelementptr i8, ptr %0, i64 4845  %4 = getelementptr i8, ptr %0, i64 5246  %5 = getelementptr i8, ptr %0, i64 5647  %6 = getelementptr i8, ptr %0, i64 6048  %.pre21.i = load i32, ptr %5, align 849  %.pre23.i = load i32, ptr %6, align 450  %7 = and i32 %2, %151  %8 = and i32 %.pre21.i, 152  %9 = and i32 %1, %.pre23.i53  call void @llvm.stackrestore.p0(ptr null)54  %add.narrowed.i.i = shl i32 %1, 155  %10 = lshr i32 %7, 156  %11 = zext i32 %10 to i6457  %12 = zext i32 %8 to i6458  %reass.add1.i = shl i64 %12, 159  %13 = or i64 %reass.add1.i, %1160  %14 = trunc i64 %13 to i3261  %15 = zext i32 %9 to i6462  %reass.add2.i = shl i64 %15, 163  %16 = or i64 %reass.add2.i, %1264  %17 = trunc i64 %16 to i3265  %18 = zext i32 %add.narrowed.i.i to i6466  %19 = add i64 %18, -167  %20 = trunc i64 %19 to i3268  %21 = trunc i64 %19 to i3269  %22 = trunc i64 %13 to i3270  %23 = trunc i64 %16 to i3271  %24 = tail call i32 asm sideeffect "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 0)72  %25 = and i32 %20, -273  %26 = or i32 %1, %2574  store i32 %26, ptr %3, align 1675  %27 = and i32 %21, -276  %28 = xor i32 %27, -277  store i32 %28, ptr %4, align 478  %29 = and i32 %1, %1479  %30 = or i32 %29, %2280  store i32 %30, ptr %5, align 881  %31 = and i32 %1, %1782  %32 = or i32 %31, %2383  store i32 %32, ptr %6, align 484  ret void85}86 87declare void @llvm.stackrestore.p0(ptr) #088 89attributes #0 = { nocallback nofree nosync nounwind willreturn }90