1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2 ; RUN: opt -S --passes=slp-vectorizer -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s
5 ; CHECK-LABEL: define i8 @test() {
6 ; CHECK-NEXT: [[ENTRY:.*:]]
7 ; CHECK-NEXT: [[TMP0:%.*]] = trunc i32 0 to i8
8 ; CHECK-NEXT: [[TMP1:%.*]] = trunc i32 0 to i8
9 ; CHECK-NEXT: [[TMP2:%.*]] = trunc i32 0 to i8
10 ; CHECK-NEXT: [[TMP3:%.*]] = trunc i32 0 to i8
11 ; CHECK-NEXT: [[TMP4:%.*]] = call i8 @llvm.vector.reduce.or.v8i8(<8 x i8> zeroinitializer)
12 ; CHECK-NEXT: [[OP_RDX:%.*]] = or i8 [[TMP4]], [[TMP0]]
13 ; CHECK-NEXT: [[OP_RDX1:%.*]] = or i8 [[OP_RDX]], [[TMP2]]
14 ; CHECK-NEXT: [[OP_RDX2:%.*]] = or i8 [[OP_RDX1]], [[TMP0]]
15 ; CHECK-NEXT: [[OP_RDX3:%.*]] = or i8 [[OP_RDX2]], [[TMP1]]
16 ; CHECK-NEXT: [[OP_RDX4:%.*]] = or i8 [[OP_RDX3]], [[TMP3]]
17 ; CHECK-NEXT: ret i8 [[OP_RDX4]]
20 %0 = trunc i32 0 to i8
25 %5 = trunc i32 0 to i8
31 %conv4 = or i8 %10, %1
32 %11 = trunc i32 0 to i8
34 %conv7 = or i8 %conv4, %12
38 %16 = trunc i32 0 to i8
43 %conv5 = or i8 %20, %conv7
44 %21 = trunc i32 0 to i8
45 %conv6 = or i8 %21, %conv5