1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2 ; RUN: opt -S --passes=slp-vectorizer -mtriple=s390x-unknown-linux -mcpu=z16 < %s | FileCheck %s
5 ; CHECK-LABEL: define void @test(
6 ; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
7 ; CHECK-NEXT: [[TMP1:%.*]] = call i64 @llvm.vector.reduce.xor.v8i64(<8 x i64> zeroinitializer)
8 ; CHECK-NEXT: store i64 [[TMP1]], ptr null, align 8
13 %3 = icmp ult i32 %2, 0
16 %narrow = select i1 %3, i32 0, i32 %5
17 %6 = zext i32 %narrow to i64
20 %9 = icmp ult i32 %8, 0
23 %narrow.1 = select i1 %9, i32 0, i32 %11
24 %12 = zext i32 %narrow.1 to i64
26 %14 = zext i8 0 to i32
28 %16 = icmp ult i32 %15, 0
31 %narrow.2 = select i1 %16, i32 0, i32 %18
32 %19 = zext i32 %narrow.2 to i64
33 %20 = xor i64 %13, %19
34 %21 = icmp ult i32 %8, 0
37 %narrow.3 = select i1 %21, i32 0, i32 %23
38 %24 = zext i32 %narrow.3 to i64
39 %25 = xor i64 %20, %24
40 %26 = icmp ult i32 %15, 0
43 %narrow.4 = select i1 %26, i32 0, i32 %28
44 %29 = zext i32 %narrow.4 to i64
45 %30 = xor i64 %25, %29
46 %31 = icmp ult i32 %8, 0
49 %narrow.5 = select i1 %31, i32 0, i32 %33
50 %34 = zext i32 %narrow.5 to i64
51 %35 = xor i64 %30, %34
52 %36 = icmp ult i32 %15, 0
55 %narrow.6 = select i1 %36, i32 0, i32 %38
56 %39 = zext i32 %narrow.6 to i64
57 %40 = xor i64 %35, %39
58 %41 = icmp ult i32 %8, 0
61 %narrow.7 = select i1 %41, i32 0, i32 %43
62 %44 = zext i32 %narrow.7 to i64
63 %45 = xor i64 %40, %44
64 store i64 %45, ptr null, align 8