aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/Transforms/SLPVectorizer/X86/user-node-no-state.ll
blob: 237f308e55e422af2f09d1041066a2c0527d6ec7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt -S --passes=slp-vectorizer -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s

@g = global [128 x i8] zeroinitializer, align 16

define i64 @test() {
; CHECK-LABEL: define i64 @test() {
; CHECK-NEXT:  [[ENTRY:.*:]]
; CHECK-NEXT:    [[TMP0:%.*]] = load i64, ptr @g, align 8
; CHECK-NEXT:    br label %[[FUNC_154_EXIT_FUNC_146_EXIT_CRIT_EDGE_I:.*]]
; CHECK:       [[FUNC_154_EXIT_FUNC_146_EXIT_CRIT_EDGE_I]]:
; CHECK-NEXT:    [[TMP1:%.*]] = load i64, ptr getelementptr inbounds nuw (i8, ptr @g, i64 80), align 16
; CHECK-NEXT:    [[TMP2:%.*]] = load i64, ptr getelementptr inbounds nuw (i8, ptr @g, i64 88), align 8
; CHECK-NEXT:    [[TMP3:%.*]] = load i64, ptr getelementptr inbounds nuw (i8, ptr @g, i64 32), align 16
; CHECK-NEXT:    [[TMP4:%.*]] = load i64, ptr @g, align 16
; CHECK-NEXT:    [[TMP5:%.*]] = load i64, ptr getelementptr inbounds nuw (i8, ptr @g, i64 8), align 8
; CHECK-NEXT:    [[TMP6:%.*]] = load i64, ptr @g, align 16
; CHECK-NEXT:    [[TMP7:%.*]] = load i64, ptr getelementptr inbounds nuw (i8, ptr @g, i64 24), align 8
; CHECK-NEXT:    [[TMP8:%.*]] = xor i64 [[TMP1]], [[TMP2]]
; CHECK-NEXT:    [[TMP9:%.*]] = xor i64 [[TMP8]], [[TMP3]]
; CHECK-NEXT:    [[TMP10:%.*]] = xor i64 [[TMP9]], [[TMP4]]
; CHECK-NEXT:    [[TMP11:%.*]] = xor i64 [[TMP10]], [[TMP5]]
; CHECK-NEXT:    [[TMP12:%.*]] = xor i64 [[TMP11]], [[TMP6]]
; CHECK-NEXT:    [[TMP13:%.*]] = xor i64 [[TMP12]], [[TMP7]]
; CHECK-NEXT:    [[TMP14:%.*]] = xor i64 [[TMP13]], [[TMP0]]
; CHECK-NEXT:    ret i64 [[TMP14]]
;
entry:
  %0 = load i64, ptr @g, align 8
  br label %func_154.exit.func_146.exit_crit_edge.i

func_154.exit.func_146.exit_crit_edge.i:
  %1 = load i64, ptr getelementptr inbounds nuw (i8, ptr @g, i64 80), align 16
  %2 = load i64, ptr getelementptr inbounds nuw (i8, ptr @g, i64 88), align 8
  %3 = load i64, ptr getelementptr inbounds nuw (i8, ptr @g, i64 32), align 16
  %4 = load i64, ptr @g, align 16
  %5 = load i64, ptr getelementptr inbounds nuw (i8, ptr @g, i64 8), align 8
  %6 = load i64, ptr @g, align 16
  %7 = load i64, ptr getelementptr inbounds nuw (i8, ptr @g, i64 24), align 8
  %8 = xor i64 %1, %2
  %9 = xor i64 %8, %3
  %10 = xor i64 %9, %4
  %11 = xor i64 %10, %5
  %12 = xor i64 %11, %6
  %13 = xor i64 %12, %7
  %14 = xor i64 %13, %0
  ret i64 %14
}