brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 6da0ece Raw
76 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 42; RUN: opt -passes=slp-vectorizer -S -slp-threshold=-7 -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s3 4define void @test(i64 %d.promoted.i) {5; CHECK-LABEL: define void @test(6; CHECK-SAME: i64 [[D_PROMOTED_I:%.*]]) {7; CHECK-NEXT:  entry:8; CHECK-NEXT:    [[TMP1:%.*]] = insertelement <2 x i64> <i64 poison, i64 0>, i64 [[D_PROMOTED_I]], i32 09; CHECK-NEXT:    [[TMP2:%.*]] = and <2 x i64> zeroinitializer, [[TMP1]]10; CHECK-NEXT:    [[TMP3:%.*]] = trunc <2 x i64> [[TMP2]] to <2 x i1>11; CHECK-NEXT:    [[TMP4:%.*]] = shufflevector <2 x i1> [[TMP3]], <2 x i1> poison, <16 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>12; CHECK-NEXT:    [[TMP5:%.*]] = shufflevector <16 x i1> [[TMP4]], <16 x i1> <i1 poison, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 poison, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false>, <16 x i32> <i32 0, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 1, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>13; CHECK-NEXT:    [[TMP6:%.*]] = mul <16 x i1> [[TMP5]], zeroinitializer14; CHECK-NEXT:    [[TMP8:%.*]] = call i1 @llvm.vector.reduce.or.v16i1(<16 x i1> [[TMP6]])15; CHECK-NEXT:    [[TMP9:%.*]] = zext i1 [[TMP8]] to i3216; CHECK-NEXT:    [[TMP10:%.*]] = and i32 [[TMP9]], 017; CHECK-NEXT:    store i32 [[TMP10]], ptr null, align 418; CHECK-NEXT:    ret void19;20entry:21  %add.1.i = add i64 0, 022  %and.1.i = and i64 %add.1.i, %d.promoted.i23  %conv12.1.i = trunc i64 %and.1.i to i3224  %mul.i.1.i = mul i32 %conv12.1.i, 025  %conv12.i = trunc i64 0 to i3226  %mul.i.i = mul i32 %conv12.i, 027  %conv14104.i = or i32 %mul.i.1.i, %mul.i.i28  %conv12.2.i = trunc i64 0 to i3229  %mul.i.2.i = mul i32 %conv12.2.i, 030  %0 = or i32 %conv14104.i, %mul.i.2.i31  %conv12.182.i = trunc i64 0 to i3232  %mul.i.183.i = mul i32 %conv12.182.i, 033  %1 = or i32 %0, %mul.i.183.i34  %conv12.1.1.i = trunc i64 0 to i3235  %mul.i.1.1.i = mul i32 %conv12.1.1.i, 036  %2 = or i32 %1, %mul.i.1.1.i37  %conv12.2.1.i = trunc i64 0 to i3238  %mul.i.2.1.i = mul i32 %conv12.2.1.i, 039  %3 = or i32 %2, %mul.i.2.1.i40  %conv12.297.i = trunc i64 0 to i3241  %mul.i.298.i = mul i32 %conv12.297.i, 042  %4 = or i32 %3, %mul.i.298.i43  %conv12.1.2.i = trunc i64 0 to i3244  %mul.i.1.2.i = mul i32 %conv12.1.2.i, 045  %5 = or i32 %4, %mul.i.1.2.i46  %add.1.i.1 = add i64 0, 047  %and.1.i.1 = and i64 %add.1.i.1, 048  %conv12.1.i.1 = trunc i64 %and.1.i.1 to i3249  %mul.i.1.i.1 = mul i32 %conv12.1.i.1, 050  %conv12.i.1 = trunc i64 0 to i3251  %mul.i.i.1 = mul i32 %conv12.i.1, 052  %conv14104.i.1 = or i32 %mul.i.1.i.1, %mul.i.i.153  %conv12.2.i.1 = trunc i64 0 to i3254  %mul.i.2.i.1 = mul i32 %conv12.2.i.1, 055  %6 = or i32 %conv14104.i.1, %mul.i.2.i.156  %conv12.182.i.1 = trunc i64 0 to i3257  %mul.i.183.i.1 = mul i32 %conv12.182.i.1, 058  %7 = or i32 %6, %mul.i.183.i.159  %conv12.1.1.i.1 = trunc i64 0 to i3260  %mul.i.1.1.i.1 = mul i32 %conv12.1.1.i.1, 061  %8 = or i32 %7, %mul.i.1.1.i.162  %conv12.2.1.i.1 = trunc i64 0 to i3263  %mul.i.2.1.i.1 = mul i32 %conv12.2.1.i.1, 064  %9 = or i32 %8, %mul.i.2.1.i.165  %conv12.297.i.1 = trunc i64 0 to i3266  %mul.i.298.i.1 = mul i32 %conv12.297.i.1, 067  %10 = or i32 %9, %mul.i.298.i.168  %conv12.1.2.i.1 = trunc i64 0 to i3269  %mul.i.1.2.i.1 = mul i32 %conv12.1.2.i.1, 070  %11 = or i32 %10, %mul.i.1.2.i.171  %12 = or i32 %5, %1172  %13 = and i32 %12, 073  store i32 %13, ptr null, align 474  ret void75}76