Skip to content

Commit d3d8ef7

Browse files
committed
[PowerPC] licm-xxsplti.ll - regenerate test checks
1 parent 45d6792 commit d3d8ef7

File tree

1 file changed

+146
-116
lines changed

1 file changed

+146
-116
lines changed

llvm/test/CodeGen/PowerPC/licm-xxsplti.ll

Lines changed: 146 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
12
;; Test hoisting `xxspltib` out of the loop.
23

34
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff --mcpu=pwr10 \
@@ -10,27 +11,166 @@
1011
; RUN: %s -o - 2>&1 | FileCheck --check-prefix=LINUX64LE %s
1112

1213
define void @_Z3fooPfS_Pi(ptr noalias nocapture noundef %_a, ptr noalias nocapture %In_a, ptr noalias nocapture %n) {
14+
; AIX64-LABEL: _Z3fooPfS_Pi:
15+
; AIX64: # %bb.0: # %entry
16+
; AIX64-NEXT: lwz 5, 0(5)
17+
; AIX64-NEXT: cmpwi 5, 1
18+
; AIX64-NEXT: bltlr 0
19+
; AIX64-NEXT: # %bb.1: # %for.body.preheader
20+
; AIX64-NEXT: li 6, 0
21+
; AIX64-NEXT: cmplwi 5, 1
22+
; AIX64-NEXT: beq 0, L..BB0_4
23+
; AIX64-NEXT: # %bb.2: # %for.body.preheader.new
24+
; AIX64-NEXT: rlwinm 6, 5, 0, 1, 30
25+
; AIX64-NEXT: xxspltib 0, 6
26+
; AIX64-NEXT: addi 9, 4, -8
27+
; AIX64-NEXT: addi 7, 3, -8
28+
; AIX64-NEXT: li 8, 8
29+
; AIX64-NEXT: li 10, 12
30+
; AIX64-NEXT: li 11, 4
31+
; AIX64-NEXT: addi 6, 6, -2
32+
; AIX64-NEXT: rldicl 6, 6, 63, 1
33+
; AIX64-NEXT: addi 6, 6, 1
34+
; AIX64-NEXT: mtctr 6
35+
; AIX64-NEXT: li 6, 0
36+
; AIX64-NEXT: .align 4
37+
; AIX64-NEXT: L..BB0_3: # %for.body
38+
; AIX64-NEXT: #
39+
; AIX64-NEXT: lxvwsx 1, 9, 8
40+
; AIX64-NEXT: addi 6, 6, 2
41+
; AIX64-NEXT: xxland 1, 1, 0
42+
; AIX64-NEXT: xscvspdpn 1, 1
43+
; AIX64-NEXT: stfsu 1, 8(7)
44+
; AIX64-NEXT: lxvwsx 1, 9, 10
45+
; AIX64-NEXT: addi 9, 9, 8
46+
; AIX64-NEXT: xxland 1, 1, 0
47+
; AIX64-NEXT: xxsldwi 1, 1, 1, 3
48+
; AIX64-NEXT: stfiwx 1, 7, 11
49+
; AIX64-NEXT: bdnz L..BB0_3
50+
; AIX64-NEXT: L..BB0_4: # %for.cond.cleanup.loopexit.unr-lcssa
51+
; AIX64-NEXT: andi. 5, 5, 1
52+
; AIX64-NEXT: bclr 4, 1, 0
53+
; AIX64-NEXT: # %bb.5: # %for.body.epil
54+
; AIX64-NEXT: sldi 5, 6, 2
55+
; AIX64-NEXT: xxspltib 1, 6
56+
; AIX64-NEXT: lxvwsx 0, 4, 5
57+
; AIX64-NEXT: xxland 0, 0, 1
58+
; AIX64-NEXT: xxsldwi 0, 0, 0, 3
59+
; AIX64-NEXT: stfiwx 0, 3, 5
60+
; AIX64-NEXT: blr
61+
;
62+
; AIX32-LABEL: _Z3fooPfS_Pi:
63+
; AIX32: # %bb.0: # %entry
64+
; AIX32-NEXT: lwz 5, 0(5)
65+
; AIX32-NEXT: cmpwi 5, 1
66+
; AIX32-NEXT: bltlr 0
67+
; AIX32-NEXT: # %bb.1: # %for.body.preheader
68+
; AIX32-NEXT: li 6, 0
69+
; AIX32-NEXT: beq 0, L..BB0_4
70+
; AIX32-NEXT: # %bb.2: # %for.body.preheader.new
71+
; AIX32-NEXT: xxspltib 0, 6
72+
; AIX32-NEXT: addi 12, 4, -8
73+
; AIX32-NEXT: addi 9, 3, -8
74+
; AIX32-NEXT: rlwinm 7, 5, 0, 1, 30
75+
; AIX32-NEXT: li 8, 0
76+
; AIX32-NEXT: li 10, 8
77+
; AIX32-NEXT: li 11, 12
78+
; AIX32-NEXT: .align 4
79+
; AIX32-NEXT: L..BB0_3: # %for.body
80+
; AIX32-NEXT: #
81+
; AIX32-NEXT: lxvwsx 1, 12, 10
82+
; AIX32-NEXT: addic 6, 6, 2
83+
; AIX32-NEXT: addze 8, 8
84+
; AIX32-NEXT: xor 0, 6, 7
85+
; AIX32-NEXT: or. 0, 0, 8
86+
; AIX32-NEXT: xxland 1, 1, 0
87+
; AIX32-NEXT: xscvspdpn 1, 1
88+
; AIX32-NEXT: stfsu 1, 8(9)
89+
; AIX32-NEXT: lxvwsx 1, 12, 11
90+
; AIX32-NEXT: addi 12, 12, 8
91+
; AIX32-NEXT: xxland 1, 1, 0
92+
; AIX32-NEXT: xscvspdpn 1, 1
93+
; AIX32-NEXT: stfs 1, 4(9)
94+
; AIX32-NEXT: bne 0, L..BB0_3
95+
; AIX32-NEXT: L..BB0_4: # %for.cond.cleanup.loopexit.unr-lcssa
96+
; AIX32-NEXT: andi. 5, 5, 1
97+
; AIX32-NEXT: bclr 4, 1, 0
98+
; AIX32-NEXT: # %bb.5: # %for.body.epil
99+
; AIX32-NEXT: slwi 5, 6, 2
100+
; AIX32-NEXT: xxspltib 1, 6
101+
; AIX32-NEXT: lxvwsx 0, 4, 5
102+
; AIX32-NEXT: xxland 0, 0, 1
103+
; AIX32-NEXT: xscvspdpn 0, 0
104+
; AIX32-NEXT: stfsx 0, 3, 5
105+
; AIX32-NEXT: blr
106+
;
107+
; LINUX64LE-LABEL: _Z3fooPfS_Pi:
108+
; LINUX64LE: # %bb.0: # %entry
109+
; LINUX64LE-NEXT: lwz 5, 0(5)
110+
; LINUX64LE-NEXT: cmpwi 5, 1
111+
; LINUX64LE-NEXT: bltlr 0
112+
; LINUX64LE-NEXT: # %bb.1: # %for.body.preheader
113+
; LINUX64LE-NEXT: li 6, 0
114+
; LINUX64LE-NEXT: cmplwi 5, 1
115+
; LINUX64LE-NEXT: beq 0, .LBB0_4
116+
; LINUX64LE-NEXT: # %bb.2: # %for.body.preheader.new
117+
; LINUX64LE-NEXT: rlwinm 6, 5, 0, 1, 30
118+
; LINUX64LE-NEXT: xxspltib 0, 6
119+
; LINUX64LE-NEXT: addi 8, 4, -8
120+
; LINUX64LE-NEXT: addi 7, 3, -8
121+
; LINUX64LE-NEXT: li 9, 8
122+
; LINUX64LE-NEXT: li 10, 12
123+
; LINUX64LE-NEXT: li 11, 4
124+
; LINUX64LE-NEXT: addi 6, 6, -2
125+
; LINUX64LE-NEXT: rldicl 6, 6, 63, 1
126+
; LINUX64LE-NEXT: addi 6, 6, 1
127+
; LINUX64LE-NEXT: mtctr 6
128+
; LINUX64LE-NEXT: li 6, 0
129+
; LINUX64LE-NEXT: .p2align 4
130+
; LINUX64LE-NEXT: .LBB0_3: # %for.body
131+
; LINUX64LE-NEXT: #
132+
; LINUX64LE-NEXT: lxvwsx 1, 8, 9
133+
; LINUX64LE-NEXT: addi 6, 6, 2
134+
; LINUX64LE-NEXT: xxland 1, 1, 0
135+
; LINUX64LE-NEXT: xxsldwi 1, 1, 1, 3
136+
; LINUX64LE-NEXT: xscvspdpn 1, 1
137+
; LINUX64LE-NEXT: stfsu 1, 8(7)
138+
; LINUX64LE-NEXT: lxvwsx 1, 8, 10
139+
; LINUX64LE-NEXT: addi 8, 8, 8
140+
; LINUX64LE-NEXT: xxland 1, 1, 0
141+
; LINUX64LE-NEXT: stxvrwx 1, 7, 11
142+
; LINUX64LE-NEXT: bdnz .LBB0_3
143+
; LINUX64LE-NEXT: .LBB0_4: # %for.cond.cleanup.loopexit.unr-lcssa
144+
; LINUX64LE-NEXT: andi. 5, 5, 1
145+
; LINUX64LE-NEXT: bclr 4, 1, 0
146+
; LINUX64LE-NEXT: # %bb.5: # %for.body.epil
147+
; LINUX64LE-NEXT: sldi 5, 6, 2
148+
; LINUX64LE-NEXT: xxspltib 1, 6
149+
; LINUX64LE-NEXT: lxvwsx 0, 4, 5
150+
; LINUX64LE-NEXT: xxland 0, 0, 1
151+
; LINUX64LE-NEXT: stxvrwx 0, 3, 5
152+
; LINUX64LE-NEXT: blr
13153
entry:
14154
%0 = load i32, ptr %n, align 4
15155
%cmp9 = icmp sgt i32 %0, 0
16156
br i1 %cmp9, label %for.body.preheader, label %for.cond.cleanup
17157

18-
for.body.preheader:
158+
for.body.preheader:
19159
%wide.trip.count = zext nneg i32 %0 to i64
20160
%xtraiter = and i64 %wide.trip.count, 1
21161
%1 = icmp eq i32 %0, 1
22162
br i1 %1, label %for.cond.cleanup.loopexit.unr-lcssa, label %for.body.preheader.new
23163

24-
for.body.preheader.new:
164+
for.body.preheader.new:
25165
%unroll_iter = and i64 %wide.trip.count, 2147483646
26166
br label %for.body
27167

28-
for.cond.cleanup.loopexit.unr-lcssa:
168+
for.cond.cleanup.loopexit.unr-lcssa:
29169
%indvars.iv.unr = phi i64 [ 0, %for.body.preheader ], [ %indvars.iv.next.1, %for.body ]
30170
%lcmp.mod.not = icmp eq i64 %xtraiter, 0
31171
br i1 %lcmp.mod.not, label %for.cond.cleanup, label %for.body.epil
32172

33-
for.body.epil:
173+
for.body.epil:
34174
%arrayidx.epil = getelementptr inbounds nuw float, ptr %In_a, i64 %indvars.iv.unr
35175
%2 = load float, ptr %arrayidx.epil, align 4
36176
%vecins.i.epil = insertelement <4 x float> poison, float %2, i64 0
@@ -42,10 +182,10 @@ for.body.epil:
42182
store float %vecext.i.epil, ptr %arrayidx5.epil, align 4
43183
br label %for.cond.cleanup
44184

45-
for.cond.cleanup:
185+
for.cond.cleanup:
46186
ret void
47187

48-
for.body:
188+
for.body:
49189
%indvars.iv = phi i64 [ 0, %for.body.preheader.new ], [ %indvars.iv.next.1, %for.body ]
50190
%niter = phi i64 [ 0, %for.body.preheader.new ], [ %niter.next.1, %for.body ]
51191
%arrayidx = getelementptr inbounds nuw float, ptr %In_a, i64 %indvars.iv
@@ -72,113 +212,3 @@ for.body:
72212
%niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
73213
br i1 %niter.ncmp.1, label %for.cond.cleanup.loopexit.unr-lcssa, label %for.body
74214
}
75-
76-
; AIX32: ._Z3fooPfS_Pi:
77-
; AIX32-NEXT: # %bb.0: # %entry
78-
; AIX32-NEXT: lwz 5, 0(5)
79-
; AIX32-NEXT: cmpwi 5, 1
80-
; AIX32-NEXT: bltlr 0
81-
; AIX32-NEXT: # %bb.1: # %for.body.preheader
82-
; AIX32-NEXT: li 6, 0
83-
; AIX32-NEXT: beq 0, L..BB0_4
84-
; AIX32-NEXT: # %bb.2: # %for.body.preheader.new
85-
; AIX32-NEXT: xxspltib 0, 6
86-
; AIX32-NEXT: addi 12, 4, -8
87-
; AIX32-NEXT: addi 9, 3, -8
88-
; AIX32-NEXT: rlwinm 7, 5, 0, 1, 30
89-
; AIX32-NEXT: li 8, 0
90-
; AIX32-NEXT: li 10, 8
91-
; AIX32-NEXT: li 11, 12
92-
; AIX32-NEXT: .align 4
93-
; AIX32-NEXT: L..BB0_3: # %for.body
94-
; AIX32-NEXT: # =>This Inner Loop Header: Depth=1
95-
; AIX32-NEXT: lxvwsx 1, 12, 10
96-
; AIX32-NEXT: addic 6, 6, 2
97-
; AIX32-NEXT: addze 8, 8
98-
; AIX32-NEXT: xor 0, 6, 7
99-
; AIX32-NEXT: or. 0, 0, 8
100-
; AIX32-NEXT: xxland 1, 1, 0
101-
; AIX32-NEXT: xscvspdpn 1, 1
102-
; AIX32-NEXT: stfsu 1, 8(9)
103-
; AIX32-NEXT: lxvwsx 1, 12, 11
104-
; AIX32-NEXT: addi 12, 12, 8
105-
; AIX32-NEXT: xxland 1, 1, 0
106-
; AIX32-NEXT: xscvspdpn 1, 1
107-
; AIX32-NEXT: stfs 1, 4(9)
108-
; AIX32-NEXT: bne 0, L..BB0_3
109-
110-
; AIX64: ._Z3fooPfS_Pi:
111-
; AIX64-NEXT: # %bb.0: # %entry
112-
; AIX64-NEXT: lwz 5, 0(5)
113-
; AIX64-NEXT: cmpwi 5, 1
114-
; AIX64-NEXT: bltlr 0
115-
; AIX64-NEXT: # %bb.1: # %for.body.preheader
116-
; AIX64-NEXT: li 6, 0
117-
; AIX64-NEXT: cmplwi 5, 1
118-
; AIX64-NEXT: beq 0, L..BB0_4
119-
; AIX64-NEXT: # %bb.2: # %for.body.preheader.new
120-
; AIX64-NEXT: rlwinm 6, 5, 0, 1, 30
121-
; AIX64-NEXT: xxspltib 0, 6
122-
; AIX64-NEXT: addi 9, 4, -8
123-
; AIX64-NEXT: addi 7, 3, -8
124-
; AIX64-NEXT: li 8, 8
125-
; AIX64-NEXT: li 10, 12
126-
; AIX64-NEXT: li 11, 4
127-
; AIX64-NEXT: addi 6, 6, -2
128-
; AIX64-NEXT: rldicl 6, 6, 63, 1
129-
; AIX64-NEXT: addi 6, 6, 1
130-
; AIX64-NEXT: mtctr 6
131-
; AIX64-NEXT: li 6, 0
132-
; AIX64-NEXT: .align 4
133-
; AIX64-NEXT: L..BB0_3: # %for.body
134-
; AIX64-NEXT: # =>This Inner Loop Header: Depth=1
135-
; AIX64-NEXT: lxvwsx 1, 9, 8
136-
; AIX64-NEXT: addi 6, 6, 2
137-
; AIX64-NEXT: xxland 1, 1, 0
138-
; AIX64-NEXT: xscvspdpn 1, 1
139-
; AIX64-NEXT: stfsu 1, 8(7)
140-
; AIX64-NEXT: lxvwsx 1, 9, 10
141-
; AIX64-NEXT: addi 9, 9, 8
142-
; AIX64-NEXT: xxland 1, 1, 0
143-
; AIX64-NEXT: xxsldwi 1, 1, 1, 3
144-
; AIX64-NEXT: stfiwx 1, 7, 11
145-
; AIX64-NEXT: bdnz L..BB0_3
146-
147-
; LINUX64LE: _Z3fooPfS_Pi: # @_Z3fooPfS_Pi
148-
; LINUX64LE-NEXT: .Lfunc_begin0:
149-
; LINUX64LE-NEXT: .cfi_startproc
150-
; LINUX64LE-NEXT: # %bb.0: # %entry
151-
; LINUX64LE-NEXT: lwz 5, 0(5)
152-
; LINUX64LE-NEXT: cmpwi 5, 1
153-
; LINUX64LE-NEXT: bltlr 0
154-
; LINUX64LE-NEXT: # %bb.1: # %for.body.preheader
155-
; LINUX64LE-NEXT: li 6, 0
156-
; LINUX64LE-NEXT: cmplwi 5, 1
157-
; LINUX64LE-NEXT: beq 0, .LBB0_4
158-
; LINUX64LE-NEXT: # %bb.2: # %for.body.preheader.new
159-
; LINUX64LE-NEXT: rlwinm 6, 5, 0, 1, 30
160-
; LINUX64LE-NEXT: xxspltib 0, 6
161-
; LINUX64LE-NEXT: addi 8, 4, -8
162-
; LINUX64LE-NEXT: addi 7, 3, -8
163-
; LINUX64LE-NEXT: li 9, 8
164-
; LINUX64LE-NEXT: li 10, 12
165-
; LINUX64LE-NEXT: li 11, 4
166-
; LINUX64LE-NEXT: addi 6, 6, -2
167-
; LINUX64LE-NEXT: rldicl 6, 6, 63, 1
168-
; LINUX64LE-NEXT: addi 6, 6, 1
169-
; LINUX64LE-NEXT: mtctr 6
170-
; LINUX64LE-NEXT: li 6, 0
171-
; LINUX64LE-NEXT: .p2align 4
172-
; LINUX64LE-NEXT: .LBB0_3: # %for.body
173-
; LINUX64LE-NEXT: # =>This Inner Loop Header: Depth=1
174-
; LINUX64LE-NEXT: lxvwsx 1, 8, 9
175-
; LINUX64LE-NEXT: addi 6, 6, 2
176-
; LINUX64LE-NEXT: xxland 1, 1, 0
177-
; LINUX64LE-NEXT: xxsldwi 1, 1, 1, 3
178-
; LINUX64LE-NEXT: xscvspdpn 1, 1
179-
; LINUX64LE-NEXT: stfsu 1, 8(7)
180-
; LINUX64LE-NEXT: lxvwsx 1, 8, 10
181-
; LINUX64LE-NEXT: addi 8, 8, 8
182-
; LINUX64LE-NEXT: xxland 1, 1, 0
183-
; LINUX64LE-NEXT: stxvrwx 1, 7, 11
184-
; LINUX64LE-NEXT: bdnz .LBB0_3

0 commit comments

Comments
 (0)