File: gathered-loads-non-full-reg.ll

package info (click to toggle)
llvm-toolchain-20 1%3A20.1.6-1~exp1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 2,111,304 kB
  • sloc: cpp: 7,438,677; ansic: 1,393,822; asm: 1,012,926; python: 241,650; f90: 86,635; objc: 75,479; lisp: 42,144; pascal: 17,286; sh: 10,027; ml: 5,082; perl: 4,730; awk: 3,523; makefile: 3,349; javascript: 2,251; xml: 892; fortran: 672
file content (140 lines) | stat: -rw-r--r-- 7,695 bytes parent folder | download | duplicates (6)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
; 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 -mcpu=cascadelake < %s | FileCheck %s

@solid_ = external global [608 x i8]

define void @test(ptr noalias %0) {
; CHECK-LABEL: define void @test(
; CHECK-SAME: ptr noalias [[TMP0:%.*]]) #[[ATTR0:[0-9]+]] {
; CHECK-NEXT:  [[_LR_PH1019:.*:]]
; CHECK-NEXT:    [[TMP1:%.*]] = getelementptr i8, ptr [[TMP0]], i64 8
; CHECK-NEXT:    [[TMP2:%.*]] = getelementptr i8, ptr [[TMP0]], i64 32
; CHECK-NEXT:    [[TMP3:%.*]] = getelementptr i8, ptr [[TMP0]], i64 128
; CHECK-NEXT:    [[TMP4:%.*]] = getelementptr i8, ptr [[TMP0]], i64 200
; CHECK-NEXT:    [[TMP5:%.*]] = getelementptr i8, ptr [[TMP0]], i64 208
; CHECK-NEXT:    [[TMP6:%.*]] = getelementptr i8, ptr [[TMP0]], i64 232
; CHECK-NEXT:    [[TMP7:%.*]] = getelementptr i8, ptr [[TMP0]], i64 288
; CHECK-NEXT:    [[TMP8:%.*]] = getelementptr i8, ptr [[TMP0]], i64 320
; CHECK-NEXT:    [[TMP9:%.*]] = getelementptr i8, ptr [[TMP0]], i64 304
; CHECK-NEXT:    [[TMP10:%.*]] = getelementptr i8, ptr [[TMP0]], i64 424
; CHECK-NEXT:    [[TMP11:%.*]] = getelementptr i8, ptr [[TMP0]], i64 480
; CHECK-NEXT:    [[TMP12:%.*]] = getelementptr i8, ptr [[TMP0]], i64 504
; CHECK-NEXT:    [[TMP13:%.*]] = getelementptr i8, ptr [[TMP0]], i64 632
; CHECK-NEXT:    [[TMP14:%.*]] = getelementptr i8, ptr [[TMP0]], i64 720
; CHECK-NEXT:    [[TMP15:%.*]] = load double, ptr [[TMP1]], align 8
; CHECK-NEXT:    [[TMP16:%.*]] = load double, ptr [[TMP2]], align 8
; CHECK-NEXT:    [[TMP17:%.*]] = fadd double [[TMP16]], [[TMP15]]
; CHECK-NEXT:    [[TMP18:%.*]] = load double, ptr [[TMP3]], align 8
; CHECK-NEXT:    [[TMP19:%.*]] = load double, ptr [[TMP4]], align 8
; CHECK-NEXT:    [[TMP20:%.*]] = load double, ptr [[TMP5]], align 8
; CHECK-NEXT:    [[TMP21:%.*]] = load double, ptr [[TMP6]], align 8
; CHECK-NEXT:    [[TMP22:%.*]] = fadd double [[TMP21]], [[TMP20]]
; CHECK-NEXT:    [[TMP23:%.*]] = load double, ptr [[TMP7]], align 8
; CHECK-NEXT:    [[TMP24:%.*]] = load double, ptr [[TMP8]], align 8
; CHECK-NEXT:    [[TMP25:%.*]] = load double, ptr [[TMP9]], align 8
; CHECK-NEXT:    [[TMP26:%.*]] = load double, ptr [[TMP10]], align 8
; CHECK-NEXT:    [[TMP27:%.*]] = load double, ptr [[TMP11]], align 8
; CHECK-NEXT:    [[TMP28:%.*]] = load double, ptr [[TMP12]], align 8
; CHECK-NEXT:    [[TMP29:%.*]] = fadd double [[TMP28]], [[TMP27]]
; CHECK-NEXT:    [[TMP30:%.*]] = fmul double [[TMP22]], [[TMP18]]
; CHECK-NEXT:    [[TMP31:%.*]] = fmul double [[TMP30]], 0.000000e+00
; CHECK-NEXT:    [[TMP32:%.*]] = fsub double 0.000000e+00, [[TMP25]]
; CHECK-NEXT:    [[TMP33:%.*]] = fmul double [[TMP32]], 0.000000e+00
; CHECK-NEXT:    [[TMP34:%.*]] = fadd double [[TMP33]], 0.000000e+00
; CHECK-NEXT:    [[TMP35:%.*]] = fmul double [[TMP34]], 0.000000e+00
; CHECK-NEXT:    [[TMP36:%.*]] = fmul double [[TMP29]], [[TMP26]]
; CHECK-NEXT:    [[TMP37:%.*]] = fmul double [[TMP36]], 0.000000e+00
; CHECK-NEXT:    [[TMP38:%.*]] = fadd double [[TMP37]], 0.000000e+00
; CHECK-NEXT:    [[TMP39:%.*]] = fsub double [[TMP17]], [[TMP19]]
; CHECK-NEXT:    [[TMP40:%.*]] = fmul double [[TMP39]], [[TMP23]]
; CHECK-NEXT:    [[TMP41:%.*]] = fmul double [[TMP40]], 0.000000e+00
; CHECK-NEXT:    [[TMP42:%.*]] = load double, ptr [[TMP0]], align 8
; CHECK-NEXT:    [[TMP43:%.*]] = load double, ptr [[TMP13]], align 8
; CHECK-NEXT:    [[TMP44:%.*]] = fmul double [[TMP43]], [[TMP31]]
; CHECK-NEXT:    [[TMP45:%.*]] = load double, ptr [[TMP14]], align 8
; CHECK-NEXT:    [[TMP46:%.*]] = fmul double [[TMP35]], 0.000000e+00
; CHECK-NEXT:    [[TMP47:%.*]] = fadd double [[TMP44]], 0.000000e+00
; CHECK-NEXT:    [[TMP48:%.*]] = fmul double [[TMP45]], [[TMP38]]
; CHECK-NEXT:    [[TMP49:%.*]] = fmul double [[TMP45]], [[TMP41]]
; CHECK-NEXT:    store double [[TMP46]], ptr getelementptr inbounds (i8, ptr @solid_, i64 384), align 8
; CHECK-NEXT:    store double [[TMP47]], ptr getelementptr inbounds (i8, ptr @solid_, i64 408), align 8
; CHECK-NEXT:    store double [[TMP48]], ptr getelementptr inbounds (i8, ptr @solid_, i64 392), align 8
; CHECK-NEXT:    store double [[TMP49]], ptr getelementptr inbounds (i8, ptr @solid_, i64 400), align 8
; CHECK-NEXT:    [[DOTNEG965:%.*]] = fmul double [[TMP48]], [[TMP24]]
; CHECK-NEXT:    [[REASS_ADD993:%.*]] = fadd double [[DOTNEG965]], 0.000000e+00
; CHECK-NEXT:    [[TMP50:%.*]] = fadd double [[TMP42]], [[REASS_ADD993]]
; CHECK-NEXT:    [[TMP51:%.*]] = fsub double 0.000000e+00, [[TMP50]]
; CHECK-NEXT:    store double [[TMP51]], ptr getelementptr inbounds (i8, ptr @solid_, i64 296), align 8
; CHECK-NEXT:    [[DOTNEG969:%.*]] = fmul double [[TMP49]], 0.000000e+00
; CHECK-NEXT:    [[REASS_ADD996:%.*]] = fadd double [[DOTNEG969]], 0.000000e+00
; CHECK-NEXT:    [[TMP52:%.*]] = fadd double [[TMP45]], [[REASS_ADD996]]
; CHECK-NEXT:    [[TMP53:%.*]] = fsub double 0.000000e+00, [[TMP52]]
; CHECK-NEXT:    store double [[TMP53]], ptr getelementptr inbounds (i8, ptr @solid_, i64 304), align 8
; CHECK-NEXT:    ret void
;
.lr.ph1019:
  %1 = getelementptr i8, ptr %0, i64 8
  %2 = getelementptr i8, ptr %0, i64 32
  %3 = getelementptr i8, ptr %0, i64 128
  %4 = getelementptr i8, ptr %0, i64 200
  %5 = getelementptr i8, ptr %0, i64 208
  %6 = getelementptr i8, ptr %0, i64 232
  %7 = getelementptr i8, ptr %0, i64 288
  %8 = getelementptr i8, ptr %0, i64 320
  %9 = getelementptr i8, ptr %0, i64 304
  %10 = getelementptr i8, ptr %0, i64 424
  %11 = getelementptr i8, ptr %0, i64 480
  %12 = getelementptr i8, ptr %0, i64 504
  %13 = getelementptr i8, ptr %0, i64 632
  %14 = getelementptr i8, ptr %0, i64 720
  %15 = load double, ptr %1, align 8
  %16 = load double, ptr %2, align 8
  %17 = fadd double %16, %15
  %18 = load double, ptr %3, align 8
  %19 = load double, ptr %4, align 8
  %20 = load double, ptr %5, align 8
  %21 = load double, ptr %6, align 8
  %22 = fadd double %21, %20
  %23 = load double, ptr %7, align 8
  %24 = load double, ptr %8, align 8
  %25 = load double, ptr %9, align 8
  %26 = load double, ptr %10, align 8
  %27 = load double, ptr %11, align 8
  %28 = load double, ptr %12, align 8
  %29 = fadd double %28, %27
  %30 = fmul double %22, %18
  %31 = fmul double %30, 0.000000e+00
  %32 = fsub double 0.000000e+00, %25
  %33 = fmul double %32, 0.000000e+00
  %34 = fadd double %33, 0.000000e+00
  %35 = fmul double %34, 0.000000e+00
  %36 = fmul double %29, %26
  %37 = fmul double %36, 0.000000e+00
  %38 = fadd double %37, 0.000000e+00
  %39 = fsub double %17, %19
  %40 = fmul double %39, %23
  %41 = fmul double %40, 0.000000e+00
  %42 = load double, ptr %0, align 8
  %43 = load double, ptr %13, align 8
  %44 = fmul double %43, %31
  %45 = load double, ptr %14, align 8
  %46 = fmul double %35, 0.000000e+00
  %47 = fadd double %44, 0.000000e+00
  %48 = fmul double %45, %38
  %49 = fmul double %45, %41
  store double %46, ptr getelementptr inbounds (i8, ptr @solid_, i64 384), align 8
  store double %47, ptr getelementptr inbounds (i8, ptr @solid_, i64 408), align 8
  store double %48, ptr getelementptr inbounds (i8, ptr @solid_, i64 392), align 8
  store double %49, ptr getelementptr inbounds (i8, ptr @solid_, i64 400), align 8
  %.neg965 = fmul double %48, %24
  %reass.add993 = fadd double %.neg965, 0.000000e+00
  %50 = fadd double %42, %reass.add993
  %51 = fsub double 0.000000e+00, %50
  store double %51, ptr getelementptr inbounds (i8, ptr @solid_, i64 296), align 8
  %.neg969 = fmul double %49, 0.000000e+00
  %reass.add996 = fadd double %.neg969, 0.000000e+00
  %52 = fadd double %45, %reass.add996
  %53 = fsub double 0.000000e+00, %52
  store double %53, ptr getelementptr inbounds (i8, ptr @solid_, i64 304), align 8
  ret void
}