95 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S --passes=slp-vectorizer -slp-threshold=-300 -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s3 4define void @test() {5; CHECK-LABEL: define void @test() {6; CHECK-NEXT: [[TMP1:%.*]] = insertelement <16 x i64> poison, i64 1, i32 37; CHECK-NEXT: [[TMP6:%.*]] = shufflevector <16 x i64> <i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 1, i64 0, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i64> [[TMP1]], <16 x i32> <i32 0, i32 1, i32 2, i32 19, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 poison, i32 poison, i32 poison>8; CHECK-NEXT: [[TMP7:%.*]] = shufflevector <16 x i64> [[TMP6]], <16 x i64> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 3, i32 7, i32 8, i32 9, i32 3, i32 10, i32 11, i32 12, i32 3>9; CHECK-NEXT: [[TMP8:%.*]] = trunc <16 x i64> [[TMP7]] to <16 x i1>10; CHECK-NEXT: [[TMP9:%.*]] = or <16 x i1> [[TMP8]], zeroinitializer11; CHECK-NEXT: [[TMP10:%.*]] = freeze <16 x i1> [[TMP9]]12; CHECK-NEXT: [[TMP11:%.*]] = zext <16 x i1> [[TMP10]] to <16 x i16>13; CHECK-NEXT: [[TMP12:%.*]] = icmp eq <16 x i16> [[TMP11]], zeroinitializer14; CHECK-NEXT: ret void15;16 %xor108.i.i.i = xor i64 0, 117 %conv115.i.i.i = trunc i64 %xor108.i.i.i to i1618 %add.i.i.i.i = or i16 %conv115.i.i.i, 019 %add.i.frozen.i.i.i = freeze i16 %add.i.i.i.i20 %.cmp.not.i.i.i = icmp eq i16 %add.i.frozen.i.i.i, 021 %cond.i1002.1.i.i.i = lshr i64 0, 022 %conv115.1.i.i.i = trunc i64 %cond.i1002.1.i.i.i to i1623 %add.i.1.i.i.i = or i16 %conv115.1.i.i.i, 024 %add.i.frozen.1.i.i.i = freeze i16 %add.i.1.i.i.i25 %.cmp.not.1.i.i.i = icmp eq i16 %add.i.frozen.1.i.i.i, 026 %cond.i1002.2.i.i.i = lshr i64 %xor108.i.i.i, 027 %conv115.2.i.i.i = trunc i64 %cond.i1002.2.i.i.i to i1628 %add.i.2.i.i.i = or i16 %conv115.2.i.i.i, 029 %add.i.frozen.2.i.i.i = freeze i16 %add.i.2.i.i.i30 %.cmp.not.2.i.i.i = icmp eq i16 %add.i.frozen.2.i.i.i, 031 %cond.i1002.3.i.i.i = lshr i64 0, 032 %conv115.3.i.i.i = trunc i64 %cond.i1002.3.i.i.i to i1633 %add.i.3.i.i.i = or i16 %conv115.3.i.i.i, 034 %add.i.frozen.3.i.i.i = freeze i16 %add.i.3.i.i.i35 %.cmp.not.3.i.i.i = icmp eq i16 %add.i.frozen.3.i.i.i, 036 %conv115.i.i.i.1 = trunc i64 %xor108.i.i.i to i1637 %add.i.i.i.i.1 = or i16 %conv115.i.i.i.1, 038 %add.i.frozen.i.i.i.1 = freeze i16 %add.i.i.i.i.139 %.cmp.not.i.i.i.1 = icmp eq i16 %add.i.frozen.i.i.i.1, 040 %cond.i1002.1.i.i.i.1 = lshr i64 0, 041 %conv115.1.i.i.i.1 = trunc i64 %cond.i1002.1.i.i.i.1 to i1642 %add.i.1.i.i.i.1 = or i16 %conv115.1.i.i.i.1, 043 %add.i.frozen.1.i.i.i.1 = freeze i16 %add.i.1.i.i.i.144 %.cmp.not.1.i.i.i.1 = icmp eq i16 %add.i.frozen.1.i.i.i.1, 045 %cond.i1002.2.i.i.i.1 = lshr i64 0, 046 %conv115.2.i.i.i.1 = trunc i64 %cond.i1002.2.i.i.i.1 to i1647 %add.i.2.i.i.i.1 = or i16 %conv115.2.i.i.i.1, 048 %add.i.frozen.2.i.i.i.1 = freeze i16 %add.i.2.i.i.i.149 %.cmp.not.2.i.i.i.1 = icmp eq i16 %add.i.frozen.2.i.i.i.1, 050 %cond.i1002.3.i.i.i.1 = lshr i64 0, 051 %conv115.3.i.i.i.1 = trunc i64 %cond.i1002.3.i.i.i.1 to i1652 %add.i.3.i.i.i.1 = or i16 %conv115.3.i.i.i.1, 053 %add.i.frozen.3.i.i.i.1 = freeze i16 %add.i.3.i.i.i.154 %.cmp.not.3.i.i.i.1 = icmp eq i16 %add.i.frozen.3.i.i.i.1, 055 %conv115.i.i.i.2 = trunc i64 %xor108.i.i.i to i1656 %add.i.i.i.i.2 = or i16 %conv115.i.i.i.2, 057 %add.i.frozen.i.i.i.2 = freeze i16 %add.i.i.i.i.258 %.cmp.not.i.i.i.2 = icmp eq i16 %add.i.frozen.i.i.i.2, 059 %cond.i1002.1.i.i.i.2 = lshr i64 0, 060 %conv115.1.i.i.i.2 = trunc i64 %cond.i1002.1.i.i.i.2 to i1661 %add.i.1.i.i.i.2 = or i16 %conv115.1.i.i.i.2, 062 %add.i.frozen.1.i.i.i.2 = freeze i16 %add.i.1.i.i.i.263 %.cmp.not.1.i.i.i.2 = icmp eq i16 %add.i.frozen.1.i.i.i.2, 064 %cond.i1002.2.i.i.i.2 = lshr i64 0, 065 %conv115.2.i.i.i.2 = trunc i64 %cond.i1002.2.i.i.i.2 to i1666 %add.i.2.i.i.i.2 = or i16 %conv115.2.i.i.i.2, 067 %add.i.frozen.2.i.i.i.2 = freeze i16 %add.i.2.i.i.i.268 %.cmp.not.2.i.i.i.2 = icmp eq i16 %add.i.frozen.2.i.i.i.2, 069 %cond.i1002.3.i.i.i.2 = lshr i64 0, 070 %conv115.3.i.i.i.2 = trunc i64 %cond.i1002.3.i.i.i.2 to i1671 %add.i.3.i.i.i.2 = or i16 %conv115.3.i.i.i.2, 072 %add.i.frozen.3.i.i.i.2 = freeze i16 %add.i.3.i.i.i.273 %.cmp.not.3.i.i.i.2 = icmp eq i16 %add.i.frozen.3.i.i.i.2, 074 %conv115.i.i.i.3 = trunc i64 %xor108.i.i.i to i1675 %add.i.i.i.i.3 = or i16 %conv115.i.i.i.3, 076 %add.i.frozen.i.i.i.3 = freeze i16 %add.i.i.i.i.377 %.cmp.not.i.i.i.3 = icmp eq i16 %add.i.frozen.i.i.i.3, 078 %cond.i1002.1.i.i.i.3 = lshr i64 0, 079 %conv115.1.i.i.i.3 = trunc i64 %cond.i1002.1.i.i.i.3 to i1680 %add.i.1.i.i.i.3 = or i16 %conv115.1.i.i.i.3, 081 %add.i.frozen.1.i.i.i.3 = freeze i16 %add.i.1.i.i.i.382 %.cmp.not.1.i.i.i.3 = icmp eq i16 %add.i.frozen.1.i.i.i.3, 083 %cond.i1002.2.i.i.i.3 = lshr i64 0, 084 %conv115.2.i.i.i.3 = trunc i64 %cond.i1002.2.i.i.i.3 to i1685 %add.i.2.i.i.i.3 = or i16 %conv115.2.i.i.i.3, 086 %add.i.frozen.2.i.i.i.3 = freeze i16 %add.i.2.i.i.i.387 %.cmp.not.2.i.i.i.3 = icmp eq i16 %add.i.frozen.2.i.i.i.3, 088 %cond.i1002.3.i.i.i.3 = lshr i64 0, 089 %conv115.3.i.i.i.3 = trunc i64 %cond.i1002.3.i.i.i.3 to i1690 %add.i.3.i.i.i.3 = or i16 %conv115.3.i.i.i.3, 091 %add.i.frozen.3.i.i.i.3 = freeze i16 %add.i.3.i.i.i.392 %.cmp.not.3.i.i.i.3 = icmp eq i16 %add.i.frozen.3.i.i.i.3, 093 ret void94}95