brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · 42ed26d Raw
177 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 42; RUN: opt -S --passes=slp-vectorizer -mtriple=x86_64-unknown-linux < %s | FileCheck %s3 4define i64 @test(ptr %p) {5; CHECK-LABEL: define i64 @test(6; CHECK-SAME: ptr [[P:%.*]]) {7; CHECK-NEXT:    [[TMP1:%.*]] = getelementptr i8, ptr [[P]], i64 128; CHECK-NEXT:    [[TMP2:%.*]] = xor <4 x i32> zeroinitializer, zeroinitializer9; CHECK-NEXT:    [[TMP3:%.*]] = xor <4 x i32> [[TMP2]], zeroinitializer10; CHECK-NEXT:    [[TMP4:%.*]] = xor <4 x i32> [[TMP3]], zeroinitializer11; CHECK-NEXT:    [[TMP5:%.*]] = xor <4 x i32> [[TMP4]], zeroinitializer12; CHECK-NEXT:    [[TMP6:%.*]] = xor <4 x i32> [[TMP5]], zeroinitializer13; CHECK-NEXT:    [[TMP7:%.*]] = xor <4 x i32> [[TMP6]], zeroinitializer14; CHECK-NEXT:    [[TMP8:%.*]] = xor <4 x i32> [[TMP7]], zeroinitializer15; CHECK-NEXT:    [[TMP9:%.*]] = xor <4 x i32> [[TMP8]], zeroinitializer16; CHECK-NEXT:    [[TMP10:%.*]] = xor <4 x i32> [[TMP9]], zeroinitializer17; CHECK-NEXT:    [[TMP11:%.*]] = xor <4 x i32> [[TMP10]], zeroinitializer18; CHECK-NEXT:    [[TMP12:%.*]] = trunc <4 x i32> [[TMP11]] to <4 x i8>19; CHECK-NEXT:    store <4 x i8> [[TMP12]], ptr [[TMP1]], align 120; CHECK-NEXT:    ret i64 021;22  %1 = getelementptr i8, ptr %p, i64 1323  %2 = getelementptr i8, ptr %p, i64 1424  %3 = getelementptr i8, ptr %p, i64 1525  %4 = getelementptr i8, ptr %p, i64 1226  %5 = zext i8 0 to i3227  %6 = and i32 %5, 028  %.not866 = icmp eq i32 %6, 029  %7 = select i1 %.not866, i32 0, i32 030  %8 = xor i32 0, %731  %9 = zext i8 0 to i3232  %10 = and i32 %9, 033  %.not871 = icmp eq i32 %10, 034  %11 = select i1 %.not871, i32 0, i32 035  %12 = xor i32 0, %1136  %13 = xor i32 %9, 037  %14 = xor i32 %13, 038  %15 = xor i32 %14, 039  %16 = xor i32 %15, 040  %17 = xor i32 %16, 041  %18 = xor i32 %17, %1242  %19 = xor i32 %18, 043  %20 = xor i32 %19, 044  %21 = xor i32 %20, 045  %22 = xor i32 %21, 046  %23 = trunc i32 %22 to i847  store i8 %23, ptr %4, align 148  %24 = xor i32 %9, 049  %25 = xor i32 %24, 050  %26 = xor i32 %25, 051  %27 = xor i32 %26, 052  %28 = xor i32 %27, 053  %29 = xor i32 %28, %854  %30 = xor i32 %29, 055  %31 = xor i32 %30, 056  %32 = xor i32 %31, 057  %33 = xor i32 %32, 058  %34 = trunc i32 %33 to i859  store i8 %34, ptr %1, align 160  %35 = xor i32 0, %561  %36 = xor i32 %35, 062  %37 = xor i32 %36, 063  %38 = xor i32 %37, 064  %39 = xor i32 %38, 065  %40 = xor i32 %39, %866  %41 = xor i32 %40, 067  %42 = xor i32 %41, 068  %43 = xor i32 %42, 069  %44 = xor i32 %43, 070  %45 = trunc i32 %44 to i871  store i8 %45, ptr %2, align 172  %46 = xor i32 %35, 073  %47 = xor i32 %46, 074  %48 = xor i32 %47, 075  %49 = xor i32 %48, 076  %50 = xor i32 %49, %877  %51 = xor i32 %50, 078  %52 = xor i32 %51, 079  %53 = xor i32 %52, 080  %54 = xor i32 %53, 081  %55 = trunc i32 %54 to i882  store i8 %55, ptr %3, align 183  ret i64 084}85 86define i64 @test1(ptr %p) {87; CHECK-LABEL: define i64 @test1(88; CHECK-SAME: ptr [[P:%.*]]) {89; CHECK-NEXT:    [[TMP1:%.*]] = getelementptr i8, ptr [[P]], i64 1290; CHECK-NEXT:    [[TMP2:%.*]] = xor <4 x i32> zeroinitializer, zeroinitializer91; CHECK-NEXT:    [[TMP3:%.*]] = xor <4 x i32> [[TMP2]], zeroinitializer92; CHECK-NEXT:    [[TMP4:%.*]] = xor <4 x i32> [[TMP3]], zeroinitializer93; CHECK-NEXT:    [[TMP5:%.*]] = xor <4 x i32> [[TMP4]], zeroinitializer94; CHECK-NEXT:    [[TMP6:%.*]] = xor <4 x i32> [[TMP5]], zeroinitializer95; CHECK-NEXT:    [[TMP7:%.*]] = xor <4 x i32> [[TMP6]], zeroinitializer96; CHECK-NEXT:    [[TMP8:%.*]] = xor <4 x i32> [[TMP7]], zeroinitializer97; CHECK-NEXT:    [[TMP9:%.*]] = xor <4 x i32> [[TMP8]], zeroinitializer98; CHECK-NEXT:    [[TMP10:%.*]] = xor <4 x i32> [[TMP9]], zeroinitializer99; CHECK-NEXT:    [[TMP11:%.*]] = xor <4 x i32> [[TMP10]], zeroinitializer100; CHECK-NEXT:    [[TMP12:%.*]] = trunc <4 x i32> [[TMP11]] to <4 x i8>101; CHECK-NEXT:    store <4 x i8> [[TMP12]], ptr [[TMP1]], align 1102; CHECK-NEXT:    ret i64 0103;104  %1 = getelementptr i8, ptr %p, i64 13105  %2 = getelementptr i8, ptr %p, i64 14106  %3 = getelementptr i8, ptr %p, i64 15107  %4 = getelementptr i8, ptr %p, i64 12108  %5 = zext i8 0 to i32109  %6 = and i32 %5, 0110  %.not866 = icmp eq i32 %6, 0111  %7 = select i1 %.not866, i32 0, i32 0112  %8 = xor i32 0, %7113  %9 = zext i8 0 to i32114  %10 = and i32 %9, 0115  %.not869 = icmp eq i32 %10, 0116  %11 = select i1 %.not869, i32 0, i32 0117  %12 = xor i32 0, %11118  %13 = zext i8 0 to i32119  %14 = and i32 %13, 0120  %.not871 = icmp eq i32 %14, 0121  %15 = select i1 %.not871, i32 0, i32 0122  %16 = xor i32 0, %15123  %17 = zext i8 0 to i32124  %18 = and i32 %17, 0125  %.not874 = icmp eq i32 %18, 0126  %19 = select i1 %.not874, i32 0, i32 0127  %20 = xor i32 0, %19128  %21 = xor i32 %13, 0129  %22 = xor i32 %21, 0130  %23 = xor i32 %22, 0131  %24 = xor i32 %23, 0132  %25 = xor i32 %24, 0133  %26 = xor i32 %25, 0134  %27 = xor i32 %26, %8135  %28 = xor i32 %27, 0136  %29 = xor i32 %28, 0137  %30 = xor i32 %29, 0138  %31 = trunc i32 %30 to i8139  store i8 %31, ptr %4, align 1140  %32 = xor i32 %13, 0141  %33 = xor i32 %32, 0142  %34 = xor i32 %33, 0143  %35 = xor i32 %34, 0144  %36 = xor i32 %35, 0145  %37 = xor i32 %36, 0146  %38 = xor i32 %37, %20147  %39 = xor i32 %38, 0148  %40 = xor i32 %39, 0149  %41 = xor i32 %40, 0150  %42 = trunc i32 %41 to i8151  store i8 %42, ptr %1, align 1152  %43 = xor i32 %9, 0153  %44 = xor i32 %43, 0154  %45 = xor i32 %44, 0155  %46 = xor i32 %45, 0156  %47 = xor i32 %46, 0157  %48 = xor i32 %47, 0158  %49 = xor i32 %48, %16159  %50 = xor i32 %49, 0160  %51 = xor i32 %50, 0161  %52 = xor i32 %51, 0162  %53 = trunc i32 %52 to i8163  store i8 %53, ptr %2, align 1164  %54 = xor i32 %43, 0165  %55 = xor i32 %54, 0166  %56 = xor i32 %55, 0167  %57 = xor i32 %56, 0168  %58 = xor i32 %57, 0169  %59 = xor i32 %58, %12170  %60 = xor i32 %59, 0171  %61 = xor i32 %60, 0172  %62 = xor i32 %61, 0173  %63 = trunc i32 %62 to i8174  store i8 %63, ptr %3, align 1175  ret i64 0176}177