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
}
|