[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / CodeGen / PowerPC / convert-rr-to-ri-instrs.mir
blob3401a42108515089c69734798bbfe9a9a706332c
1 # RUN: llc -run-pass ppc-mi-peepholes -ppc-convert-rr-to-ri %s -o - -verify-machineinstrs | FileCheck %s
2 # RUN: llc -start-after ppc-mi-peepholes -ppc-late-peephole %s -o - -verify-machineinstrs | FileCheck %s --check-prefix=CHECK-LATE
4 --- |
5   ; ModuleID = 'convert-rr-to-ri-instrs.ll'
6   source_filename = "convert-rr-to-ri-instrs.c"
7   target datalayout = "e-m:e-i64:64-n32:64"
8   target triple = "powerpc64le-unknown-linux-gnu"
9   
10   ; Function Attrs: norecurse nounwind readnone
11   define signext i32 @testADD4(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {
12   entry:
13     %add = add nsw i32 %a, 33
14     %add1 = add nsw i32 %add, %b
15     ret i32 %add1
16   }
17   
18   ; Function Attrs: norecurse nounwind readnone
19   define i64 @testADD8(i64 %a, i64 %b) local_unnamed_addr #0 {
20   entry:
21     %add = add nsw i64 %a, 33
22     %add1 = add nsw i64 %add, %b
23     ret i64 %add1
24   }
25   
26   ; Function Attrs: norecurse nounwind readnone
27   define i128 @testADDC(i128 %a, i128 %b) local_unnamed_addr #0 {
28   entry:
29     %add = add nsw i128 %b, %a
30     ret i128 %add
31   }
32   
33   ; Function Attrs: norecurse nounwind readnone
34   define i128 @testADDC8(i128 %a, i128 %b) local_unnamed_addr #0 {
35   entry:
36     %add = add nsw i128 %b, %a
37     ret i128 %add
38   }
39   
40   ; Function Attrs: norecurse nounwind readnone
41   define i64 @testADDCo(i64 %a, i64 %b) local_unnamed_addr #0 {
42   entry:
43     %add = add nsw i64 %b, %a
44     %cmp = icmp eq i64 %add, 0
45     %neg = sext i1 %cmp to i64
46     %retval.0 = xor i64 %add, %neg
47     ret i64 %retval.0
48   }
49   
50   ; Function Attrs: norecurse nounwind readnone
51   define signext i32 @testADDI(i32 signext %a) local_unnamed_addr #0 {
52   entry:
53     %add = add nsw i32 %a, 44
54     ret i32 %add
55   }
56   
57   ; Function Attrs: norecurse nounwind readnone
58   define signext i32 @testADDI8(i32 signext %a) local_unnamed_addr #0 {
59   entry:
60     %add = add nsw i32 %a, 44
61     ret i32 %add
62   }
63   
64   ; Function Attrs: norecurse nounwind readnone
65   define signext i32 @testANDo(i64 %a, i64 %b) local_unnamed_addr #0 {
66   entry:
67     %and = and i64 %b, %a
68     %tobool = icmp eq i64 %and, 0
69     %cond = select i1 %tobool, i64 %b, i64 %a
70     %conv = trunc i64 %cond to i32
71     ret i32 %conv
72   }
73   
74   ; Function Attrs: norecurse nounwind readnone
75   define i64 @testAND8o(i64 %a, i64 %b) local_unnamed_addr #0 {
76   entry:
77     %and = and i64 %b, %a
78     %tobool = icmp eq i64 %and, 0
79     %cond = select i1 %tobool, i64 %b, i64 %a
80     ret i64 %cond
81   }
82   
83   ; Function Attrs: norecurse nounwind readnone
84   define i64 @testCMPD(i64 %a, i64 %b) local_unnamed_addr #0 {
85   entry:
86     %cmp = icmp sgt i64 %a, %b
87     %add = select i1 %cmp, i64 0, i64 %a
88     %cond = add nsw i64 %add, %b
89     ret i64 %cond
90   }
91   
92   ; Function Attrs: norecurse nounwind readnone
93   define i64 @testCMPDI(i64 %a, i64 %b) local_unnamed_addr #0 {
94   entry:
95     %cmp = icmp sgt i64 %a, 87
96     %add = select i1 %cmp, i64 0, i64 %a
97     %cond = add nsw i64 %add, %b
98     ret i64 %cond
99   }
100   
101   ; Function Attrs: norecurse nounwind readnone
102   define i64 @testCMPDI_F(i64 %a, i64 %b) local_unnamed_addr #0 {
103   entry:
104     %cmp = icmp sgt i64 %a, 87
105     %add = select i1 %cmp, i64 0, i64 %a
106     %cond = add nsw i64 %add, %b
107     ret i64 %cond
108   }
109   
110   ; Function Attrs: norecurse nounwind readnone
111   define i64 @testCMPLD(i64 %a, i64 %b) local_unnamed_addr #0 {
112   entry:
113     %cmp = icmp ugt i64 %a, %b
114     %add = select i1 %cmp, i64 0, i64 %a
115     %cond = add i64 %add, %b
116     ret i64 %cond
117   }
118   
119   ; Function Attrs: norecurse nounwind readnone
120   define i64 @testCMPLDI(i64 %a, i64 %b) local_unnamed_addr #0 {
121   entry:
122     %cmp = icmp ugt i64 %a, 87
123     %add = select i1 %cmp, i64 0, i64 %a
124     %cond = add i64 %add, %b
125     ret i64 %cond
126   }
127   
128   ; Function Attrs: norecurse nounwind readnone
129   define signext i32 @testCMPW(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {
130   entry:
131     %cmp = icmp sgt i32 %a, %b
132     %add = select i1 %cmp, i32 0, i32 %a
133     %cond = add nsw i32 %add, %b
134     ret i32 %cond
135   }
136   
137   ; Function Attrs: norecurse nounwind readnone
138   define signext i32 @testCMPWI(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {
139   entry:
140     %cmp = icmp sgt i32 %a, 87
141     %add = select i1 %cmp, i32 0, i32 %a
142     %cond = add nsw i32 %add, %b
143     ret i32 %cond
144   }
145   
146   ; Function Attrs: norecurse nounwind readnone
147   define zeroext i32 @testCMPLW(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {
148   entry:
149     %cmp = icmp ugt i32 %a, %b
150     %add = select i1 %cmp, i32 0, i32 %a
151     %cond = add i32 %add, %b
152     ret i32 %cond
153   }
154   
155   ; Function Attrs: norecurse nounwind readnone
156   define zeroext i32 @testCMPLWI(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {
157   entry:
158     %cmp = icmp ugt i32 %a, 87
159     %add = select i1 %cmp, i32 0, i32 %a
160     %cond = add i32 %add, %b
161     ret i32 %cond
162   }
163   
164   ; Function Attrs: norecurse nounwind readonly
165   define zeroext i8 @testLBZUX(i8* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
166   entry:
167     %add = add i32 %idx, 1
168     %idxprom = zext i32 %add to i64
169     %arrayidx = getelementptr inbounds i8, i8* %ptr, i64 %idxprom
170     %0 = load i8, i8* %arrayidx, align 1, !tbaa !3
171     %conv = zext i8 %0 to i32
172     %add1 = add i32 %idx, 2
173     %idxprom2 = zext i32 %add1 to i64
174     %arrayidx3 = getelementptr inbounds i8, i8* %ptr, i64 %idxprom2
175     %1 = load i8, i8* %arrayidx3, align 1, !tbaa !3
176     %conv4 = zext i8 %1 to i32
177     %add5 = add nuw nsw i32 %conv4, %conv
178     %conv6 = trunc i32 %add5 to i8
179     ret i8 %conv6
180   }
181   
182   ; Function Attrs: norecurse nounwind readonly
183   define zeroext i8 @testLBZX(i8* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
184   entry:
185     %add = add i32 %idx, 1
186     %idxprom = zext i32 %add to i64
187     %arrayidx = getelementptr inbounds i8, i8* %ptr, i64 %idxprom
188     %0 = load i8, i8* %arrayidx, align 1, !tbaa !3
189     %conv = zext i8 %0 to i32
190     %add1 = add i32 %idx, 2
191     %idxprom2 = zext i32 %add1 to i64
192     %arrayidx3 = getelementptr inbounds i8, i8* %ptr, i64 %idxprom2
193     %1 = load i8, i8* %arrayidx3, align 1, !tbaa !3
194     %conv4 = zext i8 %1 to i32
195     %add5 = add nuw nsw i32 %conv4, %conv
196     %conv6 = trunc i32 %add5 to i8
197     ret i8 %conv6
198   }
199   
200   ; Function Attrs: norecurse nounwind readonly
201   define zeroext i16 @testLHZUX(i16* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
202   entry:
203     %add = add i32 %idx, 1
204     %idxprom = zext i32 %add to i64
205     %arrayidx = getelementptr inbounds i16, i16* %ptr, i64 %idxprom
206     %0 = load i16, i16* %arrayidx, align 2, !tbaa !6
207     %conv = zext i16 %0 to i32
208     %add1 = add i32 %idx, 2
209     %idxprom2 = zext i32 %add1 to i64
210     %arrayidx3 = getelementptr inbounds i16, i16* %ptr, i64 %idxprom2
211     %1 = load i16, i16* %arrayidx3, align 2, !tbaa !6
212     %conv4 = zext i16 %1 to i32
213     %add5 = add nuw nsw i32 %conv4, %conv
214     %conv6 = trunc i32 %add5 to i16
215     ret i16 %conv6
216   }
217   
218   ; Function Attrs: norecurse nounwind readonly
219   define zeroext i16 @testLHZX(i16* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
220   entry:
221     %add = add i32 %idx, 1
222     %idxprom = zext i32 %add to i64
223     %arrayidx = getelementptr inbounds i16, i16* %ptr, i64 %idxprom
224     %0 = load i16, i16* %arrayidx, align 2, !tbaa !6
225     %conv = zext i16 %0 to i32
226     %add1 = add i32 %idx, 2
227     %idxprom2 = zext i32 %add1 to i64
228     %arrayidx3 = getelementptr inbounds i16, i16* %ptr, i64 %idxprom2
229     %1 = load i16, i16* %arrayidx3, align 2, !tbaa !6
230     %conv4 = zext i16 %1 to i32
231     %add5 = add nuw nsw i32 %conv4, %conv
232     %conv6 = trunc i32 %add5 to i16
233     ret i16 %conv6
234   }
235   
236   ; Function Attrs: norecurse nounwind readonly
237   define signext i16 @testLHAUX(i16* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
238   entry:
239     %add = add i32 %idx, 1
240     %idxprom = zext i32 %add to i64
241     %arrayidx = getelementptr inbounds i16, i16* %ptr, i64 %idxprom
242     %0 = load i16, i16* %arrayidx, align 2, !tbaa !6
243     %conv9 = zext i16 %0 to i32
244     %add1 = add i32 %idx, 2
245     %idxprom2 = zext i32 %add1 to i64
246     %arrayidx3 = getelementptr inbounds i16, i16* %ptr, i64 %idxprom2
247     %1 = load i16, i16* %arrayidx3, align 2, !tbaa !6
248     %conv410 = zext i16 %1 to i32
249     %add5 = add nuw nsw i32 %conv410, %conv9
250     %conv6 = trunc i32 %add5 to i16
251     ret i16 %conv6
252   }
253   
254   ; Function Attrs: norecurse nounwind readonly
255   define signext i16 @testLHAX(i16* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
256   entry:
257     %add = add i32 %idx, 1
258     %idxprom = zext i32 %add to i64
259     %arrayidx = getelementptr inbounds i16, i16* %ptr, i64 %idxprom
260     %0 = load i16, i16* %arrayidx, align 2, !tbaa !6
261     %conv9 = zext i16 %0 to i32
262     %add1 = add i32 %idx, 2
263     %idxprom2 = zext i32 %add1 to i64
264     %arrayidx3 = getelementptr inbounds i16, i16* %ptr, i64 %idxprom2
265     %1 = load i16, i16* %arrayidx3, align 2, !tbaa !6
266     %conv410 = zext i16 %1 to i32
267     %add5 = add nuw nsw i32 %conv410, %conv9
268     %conv6 = trunc i32 %add5 to i16
269     ret i16 %conv6
270   }
271   
272   ; Function Attrs: norecurse nounwind readonly
273   define zeroext i32 @testLWZUX(i32* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
274   entry:
275     %add = add i32 %idx, 1
276     %idxprom = zext i32 %add to i64
277     %arrayidx = getelementptr inbounds i32, i32* %ptr, i64 %idxprom
278     %0 = load i32, i32* %arrayidx, align 4, !tbaa !8
279     %add1 = add i32 %idx, 2
280     %idxprom2 = zext i32 %add1 to i64
281     %arrayidx3 = getelementptr inbounds i32, i32* %ptr, i64 %idxprom2
282     %1 = load i32, i32* %arrayidx3, align 4, !tbaa !8
283     %add4 = add i32 %1, %0
284     ret i32 %add4
285   }
286   
287   ; Function Attrs: norecurse nounwind readonly
288   define zeroext i32 @testLWZX(i32* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
289   entry:
290     %add = add i32 %idx, 1
291     %idxprom = zext i32 %add to i64
292     %arrayidx = getelementptr inbounds i32, i32* %ptr, i64 %idxprom
293     %0 = load i32, i32* %arrayidx, align 4, !tbaa !8
294     %add1 = add i32 %idx, 2
295     %idxprom2 = zext i32 %add1 to i64
296     %arrayidx3 = getelementptr inbounds i32, i32* %ptr, i64 %idxprom2
297     %1 = load i32, i32* %arrayidx3, align 4, !tbaa !8
298     %add4 = add i32 %1, %0
299     ret i32 %add4
300   }
301   
302   ; Function Attrs: norecurse nounwind readonly
303   define i64 @testLWAX(i32* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
304   entry:
305     %add = add i32 %idx, 1
306     %idxprom = zext i32 %add to i64
307     %arrayidx = getelementptr inbounds i32, i32* %ptr, i64 %idxprom
308     %0 = load i32, i32* %arrayidx, align 4, !tbaa !8
309     %conv = sext i32 %0 to i64
310     %add1 = add i32 %idx, 2
311     %idxprom2 = zext i32 %add1 to i64
312     %arrayidx3 = getelementptr inbounds i32, i32* %ptr, i64 %idxprom2
313     %1 = load i32, i32* %arrayidx3, align 4, !tbaa !8
314     %conv4 = sext i32 %1 to i64
315     %add5 = add nsw i64 %conv4, %conv
316     ret i64 %add5
317   }
318   
319   ; Function Attrs: norecurse nounwind readonly
320   define i64 @testLDUX(i64* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
321   entry:
322     %add = add i32 %idx, 1
323     %idxprom = zext i32 %add to i64
324     %arrayidx = getelementptr inbounds i64, i64* %ptr, i64 %idxprom
325     %0 = load i64, i64* %arrayidx, align 8, !tbaa !10
326     %add1 = add i32 %idx, 2
327     %idxprom2 = zext i32 %add1 to i64
328     %arrayidx3 = getelementptr inbounds i64, i64* %ptr, i64 %idxprom2
329     %1 = load i64, i64* %arrayidx3, align 8, !tbaa !10
330     %add4 = add i64 %1, %0
331     ret i64 %add4
332   }
333   
334   ; Function Attrs: norecurse nounwind readonly
335   define i64 @testLDX(i64* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
336   entry:
337     %add = add i32 %idx, 1
338     %idxprom = zext i32 %add to i64
339     %arrayidx = getelementptr inbounds i64, i64* %ptr, i64 %idxprom
340     %0 = load i64, i64* %arrayidx, align 8, !tbaa !10
341     %add1 = add i32 %idx, 2
342     %idxprom2 = zext i32 %add1 to i64
343     %arrayidx3 = getelementptr inbounds i64, i64* %ptr, i64 %idxprom2
344     %1 = load i64, i64* %arrayidx3, align 8, !tbaa !10
345     %add4 = add i64 %1, %0
346     ret i64 %add4
347   }
348   
349   ; Function Attrs: norecurse nounwind readonly
350   define double @testLFDUX(double* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #2 {
351   entry:
352     %add = add i32 %idx, 1
353     %idxprom = zext i32 %add to i64
354     %arrayidx = getelementptr inbounds double, double* %ptr, i64 %idxprom
355     %0 = load double, double* %arrayidx, align 8, !tbaa !12
356     %add1 = add i32 %idx, 2
357     %idxprom2 = zext i32 %add1 to i64
358     %arrayidx3 = getelementptr inbounds double, double* %ptr, i64 %idxprom2
359     %1 = load double, double* %arrayidx3, align 8, !tbaa !12
360     %add4 = fadd double %0, %1
361     ret double %add4
362   }
363   
364   ; Function Attrs: norecurse nounwind readonly
365   define double @testLFDX(double* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #2 {
366   entry:
367     %add = add i32 %idx, 1
368     %idxprom = zext i32 %add to i64
369     %arrayidx = getelementptr inbounds double, double* %ptr, i64 %idxprom
370     %0 = load double, double* %arrayidx, align 8, !tbaa !12
371     %add1 = add i32 %idx, 2
372     %idxprom2 = zext i32 %add1 to i64
373     %arrayidx3 = getelementptr inbounds double, double* %ptr, i64 %idxprom2
374     %1 = load double, double* %arrayidx3, align 8, !tbaa !12
375     %add4 = fadd double %0, %1
376     ret double %add4
377   }
378   
379   ; Function Attrs: norecurse nounwind readonly
380   define <4 x float> @testLFSUX(float* nocapture readonly %ptr, i32 signext %idx) local_unnamed_addr #2 {
381   entry:
382     %idxprom = sext i32 %idx to i64
383     %arrayidx = getelementptr inbounds float, float* %ptr, i64 %idxprom
384     %0 = load float, float* %arrayidx, align 4, !tbaa !14
385     %conv = fptoui float %0 to i32
386     %vecinit = insertelement <4 x i32> undef, i32 %conv, i32 0
387     %1 = bitcast float* %ptr to i8*
388     %2 = shl i64 %idxprom, 2
389     %uglygep = getelementptr i8, i8* %1, i64 %2
390     %uglygep2 = getelementptr i8, i8* %uglygep, i64 4
391     %3 = bitcast i8* %uglygep2 to float*
392     %4 = load float, float* %3, align 4, !tbaa !14
393     %conv3 = fptoui float %4 to i32
394     %vecinit4 = insertelement <4 x i32> %vecinit, i32 %conv3, i32 1
395     %uglygep5 = getelementptr i8, i8* %uglygep, i64 8
396     %5 = bitcast i8* %uglygep5 to float*
397     %6 = load float, float* %5, align 4, !tbaa !14
398     %conv8 = fptoui float %6 to i32
399     %vecinit9 = insertelement <4 x i32> %vecinit4, i32 %conv8, i32 2
400     %uglygep8 = getelementptr i8, i8* %uglygep, i64 12
401     %7 = bitcast i8* %uglygep8 to float*
402     %8 = load float, float* %7, align 4, !tbaa !14
403     %conv13 = fptoui float %8 to i32
404     %vecinit14 = insertelement <4 x i32> %vecinit9, i32 %conv13, i32 3
405     %9 = bitcast <4 x i32> %vecinit14 to <4 x float>
406     ret <4 x float> %9
407   }
408   
409   ; Function Attrs: norecurse nounwind readonly
410   define float @testLFSX(float* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #2 {
411   entry:
412     %add = add i32 %idx, 1
413     %idxprom = zext i32 %add to i64
414     %arrayidx = getelementptr inbounds float, float* %ptr, i64 %idxprom
415     %0 = load float, float* %arrayidx, align 4, !tbaa !14
416     %add1 = add i32 %idx, 2
417     %idxprom2 = zext i32 %add1 to i64
418     %arrayidx3 = getelementptr inbounds float, float* %ptr, i64 %idxprom2
419     %1 = load float, float* %arrayidx3, align 4, !tbaa !14
420     %add4 = fadd float %0, %1
421     ret float %add4
422   }
423   
424   ; Function Attrs: norecurse nounwind readonly
425   define double @testLXSDX(double* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
426   entry:
427     %add = add i32 %idx, 1
428     %idxprom = zext i32 %add to i64
429     %arrayidx = getelementptr inbounds double, double* %ptr, i64 %idxprom
430     %0 = load double, double* %arrayidx, align 8, !tbaa !12
431     %add1 = add i32 %idx, 2
432     %idxprom2 = zext i32 %add1 to i64
433     %arrayidx3 = getelementptr inbounds double, double* %ptr, i64 %idxprom2
434     %1 = load double, double* %arrayidx3, align 8, !tbaa !12
435     %add4 = fadd double %0, %1
436     ret double %add4
437   }
438   
439   ; Function Attrs: norecurse nounwind readonly
440   define float @testLXSSPX(float* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
441   entry:
442     %add = add i32 %idx, 1
443     %idxprom = zext i32 %add to i64
444     %arrayidx = getelementptr inbounds float, float* %ptr, i64 %idxprom
445     %0 = load float, float* %arrayidx, align 4, !tbaa !14
446     %add1 = add i32 %idx, 2
447     %idxprom2 = zext i32 %add1 to i64
448     %arrayidx3 = getelementptr inbounds float, float* %ptr, i64 %idxprom2
449     %1 = load float, float* %arrayidx3, align 4, !tbaa !14
450     %add4 = fadd float %0, %1
451     ret float %add4
452   }
453   
454   ; Function Attrs: norecurse nounwind readonly
455   define <4 x i32> @testLXVX(<4 x i32>* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {
456   entry:
457     %add = add i32 %idx, 1
458     %idxprom = zext i32 %add to i64
459     %arrayidx = getelementptr inbounds <4 x i32>, <4 x i32>* %ptr, i64 %idxprom
460     %0 = load <4 x i32>, <4 x i32>* %arrayidx, align 16, !tbaa !3
461     %add1 = add i32 %idx, 2
462     %idxprom2 = zext i32 %add1 to i64
463     %arrayidx3 = getelementptr inbounds <4 x i32>, <4 x i32>* %ptr, i64 %idxprom2
464     %1 = load <4 x i32>, <4 x i32>* %arrayidx3, align 16, !tbaa !3
465     %add4 = add <4 x i32> %1, %0
466     ret <4 x i32> %add4
467   }
468   
469   ; Function Attrs: norecurse nounwind readnone
470   define signext i32 @testOR(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {
471   entry:
472     %or = or i32 %b, %a
473     ret i32 %or
474   }
475   
476   ; Function Attrs: norecurse nounwind readnone
477   define i64 @testOR8(i64 %a, i64 %b) local_unnamed_addr #0 {
478   entry:
479     %or = or i64 %b, %a
480     ret i64 %or
481   }
482   
483   ; Function Attrs: norecurse nounwind readnone
484   define signext i32 @testORI(i32 signext %a) local_unnamed_addr #0 {
485   entry:
486     %or = or i32 %a, 88
487     ret i32 %or
488   }
489   
490   ; Function Attrs: norecurse nounwind readnone
491   define i64 @testORI8(i64 %a) local_unnamed_addr #0 {
492   entry:
493     %or = or i64 %a, 99
494     ret i64 %or
495   }
496   
497   ; Function Attrs: norecurse nounwind readnone
498   define i64 @testRLDCL(i64 %a, i64 %b) local_unnamed_addr #0 {
499   entry:
500     %and = and i64 %b, 63
501     %shl = shl i64 %a, %and
502     %sub = sub nsw i64 64, %and
503     %shr = lshr i64 %a, %sub
504     %or = or i64 %shr, %shl
505     ret i64 %or
506   }
507   
508   ; Function Attrs: norecurse nounwind readnone
509   define i64 @testRLDCLo(i64 %a, i64 %b) local_unnamed_addr #0 {
510   entry:
511     %and = and i64 %b, 63
512     %shl = shl i64 %a, %and
513     %sub = sub nsw i64 64, %and
514     %shr = lshr i64 %a, %sub
515     %or = or i64 %shr, %shl
516     %tobool = icmp eq i64 %or, 0
517     %cond = select i1 %tobool, i64 %and, i64 %a
518     ret i64 %cond
519   }
520   
521   ; Function Attrs: norecurse nounwind readnone
522   define i64 @testRLDCR(i64 %a, i64 %b) local_unnamed_addr #0 {
523   entry:
524     %and = and i64 %b, 63
525     %shl = shl i64 %a, %and
526     %sub = sub nsw i64 64, %and
527     %shr = lshr i64 %a, %sub
528     %or = or i64 %shr, %shl
529     ret i64 %or
530   }
531   
532   ; Function Attrs: norecurse nounwind readnone
533   define i64 @testRLDCRo(i64 %a, i64 %b) local_unnamed_addr #0 {
534   entry:
535     %and = and i64 %b, 63
536     %shl = shl i64 %a, %and
537     %sub = sub nsw i64 64, %and
538     %shr = lshr i64 %a, %sub
539     %or = or i64 %shr, %shl
540     %tobool = icmp eq i64 %or, 0
541     %cond = select i1 %tobool, i64 %and, i64 %a
542     ret i64 %cond
543   }
544   
545   ; Function Attrs: norecurse nounwind readnone
546   define i64 @testRLDICL(i64 %a) local_unnamed_addr #0 {
547   entry:
548     %shr = lshr i64 %a, 11
549     %and = and i64 %shr, 16777215
550     ret i64 %and
551   }
552   
553   ; Function Attrs: norecurse nounwind readnone
554   define i64 @testRLDICLo(i64 %a, i64 %b) local_unnamed_addr #0 {
555   entry:
556     %shr = lshr i64 %a, 11
557     %and = and i64 %shr, 16777215
558     %tobool = icmp eq i64 %and, 0
559     %cond = select i1 %tobool, i64 %b, i64 %and
560     ret i64 %cond
561   }
562   
563   ; Function Attrs: norecurse nounwind readnone
564   define i64 @testRLDICLo2(i64 %a, i64 %b) local_unnamed_addr #0 {
565   entry:
566     %shr = lshr i64 %a, 11
567     %and = and i64 %shr, 16777215
568     %tobool = icmp eq i64 %and, 0
569     %cond = select i1 %tobool, i64 %b, i64 %and
570     ret i64 %cond
571   }
573   ; Function Attrs: norecurse nounwind readnone
574   define i64 @testRLDICLo3(i64 %a, i64 %b) local_unnamed_addr #0 {
575   entry:
576     %shr = lshr i64 %a, 11
577     %and = and i64 %shr, 16777215
578     %tobool = icmp eq i64 %and, 0
579     %cond = select i1 %tobool, i64 %b, i64 %and
580     ret i64 %cond
581   }
582   
583   ; Function Attrs: norecurse nounwind readnone
584   define zeroext i32 @testRLWINM(i32 zeroext %a) local_unnamed_addr #0 {
585   entry:
586     %shl = shl i32 %a, 4
587     %and = and i32 %shl, 4080
588     ret i32 %and
589   }
590   
591   ; Function Attrs: norecurse nounwind readnone
592   define zeroext i32 @testRLWINMFullReg(i32 zeroext %a) local_unnamed_addr #0 {
593   entry:
594     %shl = shl i32 %a, 4
595     %and = and i32 %shl, 4080
596     ret i32 %and
597   }
598   
599   ; Function Attrs: norecurse nounwind readnone
600   define zeroext i32 @testRLWINMFullRegOutOfRange(i32 zeroext %a) local_unnamed_addr #0 {
601   entry:
602     %shl = shl i32 %a, 4
603     %and = and i32 %shl, 4080
604     ret i32 %and
605   }
606   
607   ; Function Attrs: norecurse nounwind readnone
608   define i64 @testRLWINM8(i64 %a) local_unnamed_addr #0 {
609   entry:
610     %shl = shl i64 %a, 4
611     %and = and i64 %shl, 4080
612     ret i64 %and
613   }
614   
615   ; Function Attrs: norecurse nounwind readnone
616   define zeroext i32 @testRLWINMo(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {
617   entry:
618     %and = and i32 %a, 255
619     %tobool = icmp eq i32 %and, 0
620     %cond = select i1 %tobool, i32 %b, i32 %a
621     ret i32 %cond
622   }
623   
624   ; Function Attrs: norecurse nounwind readnone
625   define zeroext i32 @testRLWINMo2(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {
626   entry:
627     %and = and i32 %a, 255
628     %tobool = icmp eq i32 %and, 0
629     %cond = select i1 %tobool, i32 %b, i32 %a
630     ret i32 %cond
631   }
633   ; Function Attrs: norecurse nounwind readnone
634   define i64 @testRLWINM8o(i64 %a, i64 %b) local_unnamed_addr #0 {
635   entry:
636     %a.tr = trunc i64 %a to i32
637     %0 = shl i32 %a.tr, 4
638     %conv = and i32 %0, 4080
639     %tobool = icmp eq i32 %conv, 0
640     %conv1 = zext i32 %conv to i64
641     %cond = select i1 %tobool, i64 %b, i64 %conv1
642     ret i64 %cond
643   }
644   
645   ; Function Attrs: norecurse nounwind readnone
646   define i64 @testSLD(i64 %a, i64 %b) local_unnamed_addr #0 {
647   entry:
648     %shl = shl i64 %a, %b
649     ret i64 %shl
650   }
651   
652   ; Function Attrs: norecurse nounwind readnone
653   define i64 @testSLDo(i64 %a, i64 %b) local_unnamed_addr #0 {
654   entry:
655     %shl = shl i64 %a, %b
656     %tobool = icmp eq i64 %shl, 0
657     %cond = select i1 %tobool, i64 %b, i64 %a
658     ret i64 %cond
659   }
660   
661   ; Function Attrs: norecurse nounwind readnone
662   define i64 @testSRD(i64 %a, i64 %b) local_unnamed_addr #0 {
663   entry:
664     %shr = lshr i64 %a, %b
665     ret i64 %shr
666   }
667   
668   ; Function Attrs: norecurse nounwind readnone
669   define i64 @testSRDo(i64 %a, i64 %b) local_unnamed_addr #0 {
670   entry:
671     %shr = lshr i64 %a, %b
672     %tobool = icmp eq i64 %shr, 0
673     %cond = select i1 %tobool, i64 %b, i64 %a
674     ret i64 %cond
675   }
676   
677   ; Function Attrs: norecurse nounwind readnone
678   define zeroext i32 @testSLW(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {
679   entry:
680     %shl = shl i32 %a, %b
681     ret i32 %shl
682   }
683   
684   ; Function Attrs: norecurse nounwind readnone
685   define zeroext i32 @testSLWo(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {
686   entry:
687     %shl = shl i32 %a, %b
688     %tobool = icmp eq i32 %shl, 0
689     %cond = select i1 %tobool, i32 %b, i32 %a
690     ret i32 %cond
691   }
692   
693   ; Function Attrs: norecurse nounwind readnone
694   define zeroext i32 @testSRW(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {
695   entry:
696     %shr = lshr i32 %a, %b
697     ret i32 %shr
698   }
699   
700   ; Function Attrs: norecurse nounwind readnone
701   define zeroext i32 @testSRWo(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {
702   entry:
703     %shr = lshr i32 %a, %b
704     %tobool = icmp eq i32 %shr, 0
705     %cond = select i1 %tobool, i32 %b, i32 %a
706     ret i32 %cond
707   }
708   
709   ; Function Attrs: norecurse nounwind readnone
710   define signext i32 @testSRAW(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {
711   entry:
712     %shr = ashr i32 %a, %b
713     ret i32 %shr
714   }
715   
716   ; Function Attrs: norecurse nounwind readnone
717   define signext i32 @testSRAWo(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {
718   entry:
719     %shr = ashr i32 %a, %b
720     %tobool = icmp eq i32 %shr, 0
721     %cond = select i1 %tobool, i32 %b, i32 %shr
722     ret i32 %cond
723   }
724   
725   ; Function Attrs: norecurse nounwind readnone
726   define i64 @testSRAD(i64 %a, i64 %b) local_unnamed_addr #0 {
727   entry:
728     %shr = ashr i64 %a, %b
729     ret i64 %shr
730   }
731   
732   ; Function Attrs: norecurse nounwind readnone
733   define i64 @testSRADo(i64 %a, i64 %b) local_unnamed_addr #0 {
734   entry:
735     %shr = ashr i64 %a, %b
736     %tobool = icmp eq i64 %shr, 0
737     %cond = select i1 %tobool, i64 %b, i64 %shr
738     ret i64 %cond
739   }
740   
741   ; Function Attrs: norecurse nounwind
742   define void @testSTBUX(i8* nocapture %ptr, i8 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 {
743   entry:
744     %add = add i32 %idx, 1
745     %idxprom = zext i32 %add to i64
746     %arrayidx = getelementptr inbounds i8, i8* %ptr, i64 %idxprom
747     store i8 %a, i8* %arrayidx, align 1, !tbaa !3
748     %add1 = add i32 %idx, 2
749     %idxprom2 = zext i32 %add1 to i64
750     %arrayidx3 = getelementptr inbounds i8, i8* %ptr, i64 %idxprom2
751     store i8 %a, i8* %arrayidx3, align 1, !tbaa !3
752     ret void
753   }
754   
755   ; Function Attrs: norecurse nounwind
756   define void @testSTBX(i8* nocapture %ptr, i8 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 {
757   entry:
758     %add = add i32 %idx, 1
759     %idxprom = zext i32 %add to i64
760     %arrayidx = getelementptr inbounds i8, i8* %ptr, i64 %idxprom
761     store i8 %a, i8* %arrayidx, align 1, !tbaa !3
762     %add1 = add i32 %idx, 2
763     %idxprom2 = zext i32 %add1 to i64
764     %arrayidx3 = getelementptr inbounds i8, i8* %ptr, i64 %idxprom2
765     store i8 %a, i8* %arrayidx3, align 1, !tbaa !3
766     ret void
767   }
768   
769   ; Function Attrs: norecurse nounwind
770   define void @testSTHUX(i16* nocapture %ptr, i16 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 {
771   entry:
772     %add = add i32 %idx, 1
773     %idxprom = zext i32 %add to i64
774     %arrayidx = getelementptr inbounds i16, i16* %ptr, i64 %idxprom
775     store i16 %a, i16* %arrayidx, align 2, !tbaa !6
776     %add1 = add i32 %idx, 2
777     %idxprom2 = zext i32 %add1 to i64
778     %arrayidx3 = getelementptr inbounds i16, i16* %ptr, i64 %idxprom2
779     store i16 %a, i16* %arrayidx3, align 2, !tbaa !6
780     ret void
781   }
782   
783   ; Function Attrs: norecurse nounwind
784   define void @testSTHX(i16* nocapture %ptr, i16 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 {
785   entry:
786     %add = add i32 %idx, 1
787     %idxprom = zext i32 %add to i64
788     %arrayidx = getelementptr inbounds i16, i16* %ptr, i64 %idxprom
789     store i16 %a, i16* %arrayidx, align 1, !tbaa !3
790     %add1 = add i32 %idx, 2
791     %idxprom2 = zext i32 %add1 to i64
792     %arrayidx3 = getelementptr inbounds i16, i16* %ptr, i64 %idxprom2
793     store i16 %a, i16* %arrayidx3, align 1, !tbaa !3
794     ret void
795   }
796   
797   ; Function Attrs: norecurse nounwind
798   define void @testSTWUX(i32* nocapture %ptr, i32 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 {
799   entry:
800     %add = add i32 %idx, 1
801     %idxprom = zext i32 %add to i64
802     %arrayidx = getelementptr inbounds i32, i32* %ptr, i64 %idxprom
803     store i32 %a, i32* %arrayidx, align 4, !tbaa !8
804     %add1 = add i32 %idx, 2
805     %idxprom2 = zext i32 %add1 to i64
806     %arrayidx3 = getelementptr inbounds i32, i32* %ptr, i64 %idxprom2
807     store i32 %a, i32* %arrayidx3, align 4, !tbaa !8
808     ret void
809   }
810   
811   ; Function Attrs: norecurse nounwind
812   define void @testSTWX(i32* nocapture %ptr, i32 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 {
813   entry:
814     %add = add i32 %idx, 1
815     %idxprom = zext i32 %add to i64
816     %arrayidx = getelementptr inbounds i32, i32* %ptr, i64 %idxprom
817     store i32 %a, i32* %arrayidx, align 4, !tbaa !8
818     %add1 = add i32 %idx, 2
819     %idxprom2 = zext i32 %add1 to i64
820     %arrayidx3 = getelementptr inbounds i32, i32* %ptr, i64 %idxprom2
821     store i32 %a, i32* %arrayidx3, align 4, !tbaa !8
822     ret void
823   }
824   
825   ; Function Attrs: norecurse nounwind
826   define void @testSTDUX(i64* nocapture %ptr, i64 %a, i32 zeroext %idx) local_unnamed_addr #3 {
827   entry:
828     %add = add i32 %idx, 1
829     %idxprom = zext i32 %add to i64
830     %arrayidx = getelementptr inbounds i64, i64* %ptr, i64 %idxprom
831     store i64 %a, i64* %arrayidx, align 8, !tbaa !10
832     %add1 = add i32 %idx, 2
833     %idxprom2 = zext i32 %add1 to i64
834     %arrayidx3 = getelementptr inbounds i64, i64* %ptr, i64 %idxprom2
835     store i64 %a, i64* %arrayidx3, align 8, !tbaa !10
836     ret void
837   }
838   
839   ; Function Attrs: norecurse nounwind
840   define void @testSTDX(i64* nocapture %ptr, i64 %a, i32 zeroext %idx) local_unnamed_addr #3 {
841   entry:
842     %add = add i32 %idx, 1
843     %idxprom = zext i32 %add to i64
844     %arrayidx = getelementptr inbounds i64, i64* %ptr, i64 %idxprom
845     store i64 %a, i64* %arrayidx, align 8, !tbaa !10
846     %add1 = add i32 %idx, 2
847     %idxprom2 = zext i32 %add1 to i64
848     %arrayidx3 = getelementptr inbounds i64, i64* %ptr, i64 %idxprom2
849     store i64 %a, i64* %arrayidx3, align 8, !tbaa !10
850     ret void
851   }
852   
853   ; Function Attrs: norecurse nounwind readonly
854   define void @testSTFSX(float* nocapture %ptr, float %a, i32 zeroext %idx) local_unnamed_addr #2 {
855   entry:
856     %add = add i32 %idx, 1
857     %idxprom = zext i32 %add to i64
858     %arrayidx = getelementptr inbounds float, float* %ptr, i64 %idxprom
859     store float %a, float* %arrayidx, align 4, !tbaa !14
860     %add1 = add i32 %idx, 2
861     %idxprom2 = zext i32 %add1 to i64
862     %arrayidx3 = getelementptr inbounds float, float* %ptr, i64 %idxprom2
863     store float %a, float* %arrayidx3, align 4, !tbaa !14
864     ret void
865   }
866   
867   ; Function Attrs: norecurse nounwind readonly
868   define void @testSTFSUX(float* nocapture %ptr, float %a, i32 zeroext %idx) local_unnamed_addr #2 {
869   entry:
870     %add = add i32 %idx, 1
871     %idxprom = zext i32 %add to i64
872     %arrayidx = getelementptr inbounds float, float* %ptr, i64 %idxprom
873     store float %a, float* %arrayidx, align 4, !tbaa !14
874     %add1 = add i32 %idx, 2
875     %idxprom2 = zext i32 %add1 to i64
876     %arrayidx3 = getelementptr inbounds float, float* %ptr, i64 %idxprom2
877     store float %a, float* %arrayidx3, align 4, !tbaa !14
878     ret void
879   }
880   
881   ; Function Attrs: norecurse nounwind readonly
882   define void @testSTFDX(double* nocapture %ptr, double %a, i32 zeroext %idx) local_unnamed_addr #2 {
883   entry:
884     %add = add i32 %idx, 1
885     %idxprom = zext i32 %add to i64
886     %arrayidx = getelementptr inbounds double, double* %ptr, i64 %idxprom
887     store double %a, double* %arrayidx, align 8, !tbaa !12
888     %add1 = add i32 %idx, 2
889     %idxprom2 = zext i32 %add1 to i64
890     %arrayidx3 = getelementptr inbounds double, double* %ptr, i64 %idxprom2
891     store double %a, double* %arrayidx3, align 8, !tbaa !12
892     ret void
893   }
894   
895   ; Function Attrs: norecurse nounwind readonly
896   define void @testSTFDUX(double* nocapture %ptr, double %a, i32 zeroext %idx) local_unnamed_addr #2 {
897   entry:
898     %add = add i32 %idx, 1
899     %idxprom = zext i32 %add to i64
900     %arrayidx = getelementptr inbounds double, double* %ptr, i64 %idxprom
901     store double %a, double* %arrayidx, align 8, !tbaa !12
902     %add1 = add i32 %idx, 2
903     %idxprom2 = zext i32 %add1 to i64
904     %arrayidx3 = getelementptr inbounds double, double* %ptr, i64 %idxprom2
905     store double %a, double* %arrayidx3, align 8, !tbaa !12
906     ret void
907   }
908   
909   ; Function Attrs: norecurse nounwind
910   define void @testSTXSSPX(float* nocapture %ptr, float %a, i32 zeroext %idx) local_unnamed_addr #3 {
911   entry:
912     %idxprom = zext i32 %idx to i64
913     %arrayidx = getelementptr inbounds float, float* %ptr, i64 %idxprom
914     store float %a, float* %arrayidx, align 4, !tbaa !14
915     ret void
916   }
917   
918   ; Function Attrs: norecurse nounwind
919   define void @testSTXSDX(double* nocapture %ptr, double %a, i32 zeroext %idx) local_unnamed_addr #3 {
920   entry:
921     %idxprom = zext i32 %idx to i64
922     %arrayidx = getelementptr inbounds double, double* %ptr, i64 %idxprom
923     store double %a, double* %arrayidx, align 8, !tbaa !12
924     ret void
925   }
926   
927   ; Function Attrs: norecurse nounwind
928   define void @testSTXVX(<4 x i32>* nocapture %ptr, <4 x i32> %a, i32 zeroext %idx) local_unnamed_addr #3 {
929   entry:
930     %idxprom = zext i32 %idx to i64
931     %arrayidx = getelementptr inbounds <4 x i32>, <4 x i32>* %ptr, i64 %idxprom
932     store <4 x i32> %a, <4 x i32>* %arrayidx, align 16, !tbaa !3
933     ret void
934   }
935   
936   ; Function Attrs: norecurse nounwind readnone
937   define i128 @testSUBFC(i128 %a, i128 %b) local_unnamed_addr #0 {
938   entry:
939     %sub = sub nsw i128 %a, %b
940     ret i128 %sub
941   }
942   
943   ; Function Attrs: norecurse nounwind readnone
944   define i128 @testSUBFC8(i128 %a, i128 %b) local_unnamed_addr #0 {
945   entry:
946     %sub = sub nsw i128 %a, %b
947     ret i128 %sub
948   }
949   
950   ; Function Attrs: norecurse nounwind readnone
951   define signext i32 @testXOR(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {
952   entry:
953     %xor = xor i32 %b, %a
954     ret i32 %xor
955   }
956   
957   ; Function Attrs: norecurse nounwind readnone
958   define i64 @testXOR8(i64 %a, i64 %b) local_unnamed_addr #0 {
959   entry:
960     %xor = xor i64 %b, %a
961     ret i64 %xor
962   }
963   
964   ; Function Attrs: norecurse nounwind readnone
965   define signext i32 @testXORI(i32 signext %a) local_unnamed_addr #0 {
966   entry:
967     %xor = xor i32 %a, 17
968     ret i32 %xor
969   }
970   
971   ; Function Attrs: norecurse nounwind readnone
972   define i64 @testXOR8I(i64 %a) local_unnamed_addr #0 {
973   entry:
974     %xor = xor i64 %a, 17
975     ret i64 %xor
976   }
977   
978   attributes #0 = { norecurse nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pwr9" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+power9-vector,+vsx,-qpx" "unsafe-fp-math"="false" "use-soft-float"="false" }
979   attributes #1 = { norecurse nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pwr9" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+power9-vector,+vsx,-qpx" "unsafe-fp-math"="false" "use-soft-float"="false" }
980   attributes #2 = { norecurse nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pwr9" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+power9-vector,-vsx,-qpx" "unsafe-fp-math"="false" "use-soft-float"="false" }
981   attributes #3 = { norecurse nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pwr9" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+power9-vector,+vsx,-qpx" "unsafe-fp-math"="false" "use-soft-float"="false" }
982   
983   !llvm.module.flags = !{!0, !1}
984   !llvm.ident = !{!2}
985   
986   !0 = !{i32 1, !"wchar_size", i32 4}
987   !1 = !{i32 7, !"PIC Level", i32 2}
988   !2 = !{!"clang version 6.0.0 (trunk 316067)"}
989   !3 = !{!4, !4, i64 0}
990   !4 = !{!"omnipotent char", !5, i64 0}
991   !5 = !{!"Simple C/C++ TBAA"}
992   !6 = !{!7, !7, i64 0}
993   !7 = !{!"short", !4, i64 0}
994   !8 = !{!9, !9, i64 0}
995   !9 = !{!"int", !4, i64 0}
996   !10 = !{!11, !11, i64 0}
997   !11 = !{!"long long", !4, i64 0}
998   !12 = !{!13, !13, i64 0}
999   !13 = !{!"double", !4, i64 0}
1000   !14 = !{!15, !15, i64 0}
1001   !15 = !{!"float", !4, i64 0}
1005 name:            testADD4
1006 # CHECK-ALL: name: testADD4
1007 alignment:       16
1008 exposesReturnsTwice: false
1009 legalized:       false
1010 regBankSelected: false
1011 selected:        false
1012 tracksRegLiveness: true
1013 registers:       
1014   - { id: 0, class: g8rc, preferred-register: '' }
1015   - { id: 1, class: g8rc, preferred-register: '' }
1016   - { id: 2, class: gprc, preferred-register: '' }
1017   - { id: 3, class: gprc, preferred-register: '' }
1018   - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }
1019   - { id: 5, class: gprc, preferred-register: '' }
1020   - { id: 6, class: g8rc, preferred-register: '' }
1021 liveins:         
1022   - { reg: '$x3', virtual-reg: '%0' }
1023   - { reg: '$x4', virtual-reg: '%1' }
1024 frameInfo:       
1025   isFrameAddressTaken: false
1026   isReturnAddressTaken: false
1027   hasStackMap:     false
1028   hasPatchPoint:   false
1029   stackSize:       0
1030   offsetAdjustment: 0
1031   maxAlignment:    0
1032   adjustsStack:    false
1033   hasCalls:        false
1034   stackProtector:  ''
1035   maxCallFrameSize: 4294967295
1036   hasOpaqueSPAdjustment: false
1037   hasVAStart:      false
1038   hasMustTailInVarArgFunc: false
1039   savePoint:       ''
1040   restorePoint:    ''
1041 fixedStack:      
1042 stack:           
1043 constants:       
1044 body:             |
1045   bb.0.entry:
1046     liveins: $x3, $x4
1047   
1048     %1 = COPY $x4
1049     %0 = COPY $x3
1050     %2 = LI 33
1051     %3 = COPY %0.sub_32
1052     %4 = ADD4 killed %3, %2
1053     %5 = ADD4 killed %2, killed %4
1054     ; CHECK: ADDI killed %3, 33
1055     ; CHECK: ADDI killed %4, 33
1056     ; CHECK-LATE: addi 3, 3, 33
1057     ; CHECK-LATE: addi 3, 3, 33
1058     %6 = EXTSW_32_64 killed %5
1059     $x3 = COPY %6
1060     BLR8 implicit $lr8, implicit $rm, implicit $x3
1064 name:            testADD8
1065 # CHECK-ALL: name: testADD8
1066 alignment:       16
1067 exposesReturnsTwice: false
1068 legalized:       false
1069 regBankSelected: false
1070 selected:        false
1071 tracksRegLiveness: true
1072 registers:       
1073   - { id: 0, class: g8rc, preferred-register: '' }
1074   - { id: 1, class: g8rc, preferred-register: '' }
1075   - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1076   - { id: 3, class: g8rc, preferred-register: '' }
1077 liveins:         
1078   - { reg: '$x3', virtual-reg: '%0' }
1079   - { reg: '$x4', virtual-reg: '%1' }
1080 frameInfo:       
1081   isFrameAddressTaken: false
1082   isReturnAddressTaken: false
1083   hasStackMap:     false
1084   hasPatchPoint:   false
1085   stackSize:       0
1086   offsetAdjustment: 0
1087   maxAlignment:    0
1088   adjustsStack:    false
1089   hasCalls:        false
1090   stackProtector:  ''
1091   maxCallFrameSize: 4294967295
1092   hasOpaqueSPAdjustment: false
1093   hasVAStart:      false
1094   hasMustTailInVarArgFunc: false
1095   savePoint:       ''
1096   restorePoint:    ''
1097 fixedStack:      
1098 stack:           
1099 constants:       
1100 body:             |
1101   bb.0.entry:
1102     liveins: $x3, $x4
1103   
1104     %1 = LI8 33
1105     %0 = COPY $x3
1106     %2 = ADD8 %0, %1
1107     %3 = ADD8 killed %1, killed %2
1108     ; CHECK: ADDI8 %0, 33
1109     ; CHECK: ADDI8 killed %2, 33
1110     ; CHECK-LATE: addi 3, 3, 33
1111     ; CHECK-LATE: addi 3, 3, 33
1112     $x3 = COPY %3
1113     BLR8 implicit $lr8, implicit $rm, implicit $x3
1117 name:            testADDC
1118 # CHECK-ALL: name: testADDC
1119 alignment:       16
1120 exposesReturnsTwice: false
1121 legalized:       false
1122 regBankSelected: false
1123 selected:        false
1124 tracksRegLiveness: true
1125 registers:       
1126   - { id: 0, class: g8rc, preferred-register: '' }
1127   - { id: 1, class: g8rc, preferred-register: '' }
1128   - { id: 2, class: g8rc, preferred-register: '' }
1129   - { id: 3, class: g8rc, preferred-register: '' }
1130   - { id: 4, class: gprc, preferred-register: '' }
1131   - { id: 5, class: gprc, preferred-register: '' }
1132   - { id: 6, class: gprc, preferred-register: '' }
1133   - { id: 7, class: g8rc, preferred-register: '' }
1134   - { id: 8, class: g8rc, preferred-register: '' }
1135 liveins:         
1136   - { reg: '$x3', virtual-reg: '%0' }
1137   - { reg: '$x4', virtual-reg: '%1' }
1138   - { reg: '$x5', virtual-reg: '%2' }
1139   - { reg: '$x6', virtual-reg: '%3' }
1140 frameInfo:       
1141   isFrameAddressTaken: false
1142   isReturnAddressTaken: false
1143   hasStackMap:     false
1144   hasPatchPoint:   false
1145   stackSize:       0
1146   offsetAdjustment: 0
1147   maxAlignment:    0
1148   adjustsStack:    false
1149   hasCalls:        false
1150   stackProtector:  ''
1151   maxCallFrameSize: 4294967295
1152   hasOpaqueSPAdjustment: false
1153   hasVAStart:      false
1154   hasMustTailInVarArgFunc: false
1155   savePoint:       ''
1156   restorePoint:    ''
1157 fixedStack:      
1158 stack:           
1159 constants:       
1160 body:             |
1161   bb.0.entry:
1162     liveins: $x3, $x4, $x5, $x6
1163   
1164     %3 = COPY $x6
1165     %2 = COPY $x5
1166     %1 = COPY $x4
1167     %0 = COPY $x3
1168     %4 = COPY %0.sub_32
1169     %5 = LI 55
1170     %6 = ADDC %5, %4, implicit-def $carry
1171     ; CHECK: ADDIC %4, 55, implicit-def $carry
1172     ; CHECK-LATE: addic 3, 3, 55
1173     %7 = ADDE8 %3, %1, implicit-def dead $carry, implicit $carry
1174     %8 = EXTSW_32_64 %6
1175     $x3 = COPY %8
1176     $x4 = COPY %7
1177     BLR8 implicit $lr8, implicit $rm, implicit $x3, implicit $x4
1181 name:            testADDC8
1182 # CHECK-ALL: name: testADDC8
1183 alignment:       16
1184 exposesReturnsTwice: false
1185 legalized:       false
1186 regBankSelected: false
1187 selected:        false
1188 tracksRegLiveness: true
1189 registers:       
1190   - { id: 0, class: g8rc, preferred-register: '' }
1191   - { id: 1, class: g8rc, preferred-register: '' }
1192   - { id: 2, class: g8rc, preferred-register: '' }
1193   - { id: 3, class: g8rc, preferred-register: '' }
1194   - { id: 4, class: g8rc, preferred-register: '' }
1195   - { id: 5, class: g8rc, preferred-register: '' }
1196 liveins:         
1197   - { reg: '$x3', virtual-reg: '%0' }
1198   - { reg: '$x4', virtual-reg: '%1' }
1199   - { reg: '$x5', virtual-reg: '%2' }
1200   - { reg: '$x6', virtual-reg: '%3' }
1201 frameInfo:       
1202   isFrameAddressTaken: false
1203   isReturnAddressTaken: false
1204   hasStackMap:     false
1205   hasPatchPoint:   false
1206   stackSize:       0
1207   offsetAdjustment: 0
1208   maxAlignment:    0
1209   adjustsStack:    false
1210   hasCalls:        false
1211   stackProtector:  ''
1212   maxCallFrameSize: 4294967295
1213   hasOpaqueSPAdjustment: false
1214   hasVAStart:      false
1215   hasMustTailInVarArgFunc: false
1216   savePoint:       ''
1217   restorePoint:    ''
1218 fixedStack:      
1219 stack:           
1220 constants:       
1221 body:             |
1222   bb.0.entry:
1223     liveins: $x3, $x4, $x5, $x6
1224   
1225     %3 = COPY $x6
1226     %2 = COPY $x5
1227     %1 = COPY $x4
1228     %0 = LI8 777
1229     %4 = ADDC8 %2, %0, implicit-def $carry
1230     ; CHECK: ADDIC8 %2, 777, implicit-def $carry
1231     ; CHECK-LATE: addic 3, 5, 777
1232     %5 = ADDE8 %3, %1, implicit-def dead $carry, implicit $carry
1233     $x3 = COPY %4
1234     $x4 = COPY %5
1235     BLR8 implicit $lr8, implicit $rm, implicit $x3, implicit $x4
1239 name:            testADDCo
1240 # CHECK-ALL: name: testADDCo
1241 alignment:       16
1242 exposesReturnsTwice: false
1243 legalized:       false
1244 regBankSelected: false
1245 selected:        false
1246 tracksRegLiveness: true
1247 registers:       
1248   - { id: 0, class: g8rc, preferred-register: '' }
1249   - { id: 1, class: gprc, preferred-register: '' }
1250   - { id: 2, class: gprc, preferred-register: '' }
1251   - { id: 3, class: gprc, preferred-register: '' }
1252   - { id: 4, class: crrc, preferred-register: '' }
1253   - { id: 5, class: crbitrc, preferred-register: '' }
1254   - { id: 6, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1255   - { id: 7, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1256   - { id: 8, class: g8rc, preferred-register: '' }
1257 liveins:         
1258   - { reg: '$x3', virtual-reg: '%0' }
1259   - { reg: '$x4', virtual-reg: '%1' }
1260 frameInfo:       
1261   isFrameAddressTaken: false
1262   isReturnAddressTaken: false
1263   hasStackMap:     false
1264   hasPatchPoint:   false
1265   stackSize:       0
1266   offsetAdjustment: 0
1267   maxAlignment:    0
1268   adjustsStack:    false
1269   hasCalls:        false
1270   stackProtector:  ''
1271   maxCallFrameSize: 4294967295
1272   hasOpaqueSPAdjustment: false
1273   hasVAStart:      false
1274   hasMustTailInVarArgFunc: false
1275   savePoint:       ''
1276   restorePoint:    ''
1277 fixedStack:      
1278 stack:           
1279 constants:       
1280 body:             |
1281   bb.0.entry:
1282     liveins: $x3, $x4
1283   
1284     %1 = LI 433
1285     %0 = COPY $x3
1286     %2 = COPY %0.sub_32
1287     %3 = ADDCo %1, %2, implicit-def $cr0, implicit-def $carry
1288     ; CHECK: ADDICo %2, 433, implicit-def $cr0, implicit-def $carry
1289     ; CHECK-LATE: addic. 3, 3, 433
1290     %4 = COPY killed $cr0
1291     %5 = COPY %4.sub_eq
1292     %6 = LI8 0
1293     %7 = LI8 -1
1294     %8 = ISEL8 %7, %6, %5
1295     $x3 = COPY %8
1296     BLR8 implicit $lr8, implicit $rm, implicit $x3
1300 name:            testADDI
1301 # CHECK-ALL: name: testADDI
1302 alignment:       16
1303 exposesReturnsTwice: false
1304 legalized:       false
1305 regBankSelected: false
1306 selected:        false
1307 tracksRegLiveness: true
1308 registers:       
1309   - { id: 0, class: g8rc, preferred-register: '' }
1310   - { id: 1, class: gprc_and_gprc_nor0, preferred-register: '' }
1311   - { id: 2, class: gprc, preferred-register: '' }
1312   - { id: 3, class: g8rc, preferred-register: '' }
1313 liveins:         
1314   - { reg: '$x3', virtual-reg: '%0' }
1315 frameInfo:       
1316   isFrameAddressTaken: false
1317   isReturnAddressTaken: false
1318   hasStackMap:     false
1319   hasPatchPoint:   false
1320   stackSize:       0
1321   offsetAdjustment: 0
1322   maxAlignment:    0
1323   adjustsStack:    false
1324   hasCalls:        false
1325   stackProtector:  ''
1326   maxCallFrameSize: 4294967295
1327   hasOpaqueSPAdjustment: false
1328   hasVAStart:      false
1329   hasMustTailInVarArgFunc: false
1330   savePoint:       ''
1331   restorePoint:    ''
1332 fixedStack:      
1333 stack:           
1334 constants:       
1335 body:             |
1336   bb.0.entry:
1337     liveins: $x3
1338   
1339     %0 = COPY $x3
1340     %1 = LI 77
1341     %2 = ADDI killed %1, 44
1342     %3 = EXTSW_32_64 killed %2
1343     ; CHECK: LI 121
1344     ; CHECK-LATE: li 3, 121
1345     $x3 = COPY %3
1346     BLR8 implicit $lr8, implicit $rm, implicit $x3
1350 name:            testADDI8
1351 # CHECK-ALL: name: testADDI8
1352 alignment:       16
1353 exposesReturnsTwice: false
1354 legalized:       false
1355 regBankSelected: false
1356 selected:        false
1357 tracksRegLiveness: true
1358 registers:       
1359   - { id: 0, class: g8rc, preferred-register: '' }
1360   - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1361   - { id: 2, class: g8rc, preferred-register: '' }
1362   - { id: 3, class: g8rc, preferred-register: '' }
1363 liveins:         
1364   - { reg: '$x3', virtual-reg: '%0' }
1365 frameInfo:       
1366   isFrameAddressTaken: false
1367   isReturnAddressTaken: false
1368   hasStackMap:     false
1369   hasPatchPoint:   false
1370   stackSize:       0
1371   offsetAdjustment: 0
1372   maxAlignment:    0
1373   adjustsStack:    false
1374   hasCalls:        false
1375   stackProtector:  ''
1376   maxCallFrameSize: 4294967295
1377   hasOpaqueSPAdjustment: false
1378   hasVAStart:      false
1379   hasMustTailInVarArgFunc: false
1380   savePoint:       ''
1381   restorePoint:    ''
1382 fixedStack:      
1383 stack:           
1384 constants:       
1385 body:             |
1386   bb.0.entry:
1387     liveins: $x3
1388   
1389     %0 = COPY $x3
1390     %1 = LI8 333
1391     %2 = ADDI8 killed %1, 44
1392     ; CHECK: LI8 377
1393     ; CHECK-LATE: li 3, 377
1394     %3 = EXTSW killed %2
1395     $x3 = COPY %3
1396     BLR8 implicit $lr8, implicit $rm, implicit $x3
1400 name:            testANDo
1401 # CHECK-ALL: name: testANDo
1402 alignment:       16
1403 exposesReturnsTwice: false
1404 legalized:       false
1405 regBankSelected: false
1406 selected:        false
1407 tracksRegLiveness: true
1408 registers:       
1409   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1410   - { id: 1, class: gprc, preferred-register: '' }
1411   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
1412   - { id: 3, class: gprc, preferred-register: '' }
1413   - { id: 4, class: crrc, preferred-register: '' }
1414   - { id: 5, class: gprc, preferred-register: '' }
1415   - { id: 6, class: g8rc, preferred-register: '' }
1416 liveins:         
1417   - { reg: '$x3', virtual-reg: '%0' }
1418   - { reg: '$x4', virtual-reg: '%1' }
1419 frameInfo:       
1420   isFrameAddressTaken: false
1421   isReturnAddressTaken: false
1422   hasStackMap:     false
1423   hasPatchPoint:   false
1424   stackSize:       0
1425   offsetAdjustment: 0
1426   maxAlignment:    0
1427   adjustsStack:    false
1428   hasCalls:        false
1429   stackProtector:  ''
1430   maxCallFrameSize: 4294967295
1431   hasOpaqueSPAdjustment: false
1432   hasVAStart:      false
1433   hasMustTailInVarArgFunc: false
1434   savePoint:       ''
1435   restorePoint:    ''
1436 fixedStack:      
1437 stack:           
1438 constants:       
1439 body:             |
1440   bb.0.entry:
1441     liveins: $x3, $x4
1442   
1443     %1 = LI 78
1444     %0 = COPY $x3
1445     %2 = COPY %0.sub_32
1446     %3 = ANDo %1, %2, implicit-def $cr0
1447     ; CHECK: ANDIo %2, 78, implicit-def $cr0
1448     ; CHECK-LATE: andi. 5, 3, 78
1449     %4 = COPY killed $cr0
1450     %5 = ISEL %2, %1, %4.sub_eq
1451     %6 = EXTSW_32_64 killed %5
1452     $x3 = COPY %6
1453     BLR8 implicit $lr8, implicit $rm, implicit $x3
1457 name:            testAND8o
1458 # CHECK-ALL: name: testAND8o
1459 alignment:       16
1460 exposesReturnsTwice: false
1461 legalized:       false
1462 regBankSelected: false
1463 selected:        false
1464 tracksRegLiveness: true
1465 registers:       
1466   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1467   - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1468   - { id: 2, class: g8rc, preferred-register: '' }
1469   - { id: 3, class: crrc, preferred-register: '' }
1470   - { id: 4, class: g8rc, preferred-register: '' }
1471 liveins:         
1472   - { reg: '$x3', virtual-reg: '%0' }
1473   - { reg: '$x4', virtual-reg: '%1' }
1474 frameInfo:       
1475   isFrameAddressTaken: false
1476   isReturnAddressTaken: false
1477   hasStackMap:     false
1478   hasPatchPoint:   false
1479   stackSize:       0
1480   offsetAdjustment: 0
1481   maxAlignment:    0
1482   adjustsStack:    false
1483   hasCalls:        false
1484   stackProtector:  ''
1485   maxCallFrameSize: 4294967295
1486   hasOpaqueSPAdjustment: false
1487   hasVAStart:      false
1488   hasMustTailInVarArgFunc: false
1489   savePoint:       ''
1490   restorePoint:    ''
1491 fixedStack:      
1492 stack:           
1493 constants:       
1494 body:             |
1495   bb.0.entry:
1496     liveins: $x3, $x4
1497   
1498     %1 = LI8 321
1499     %0 = COPY $x3
1500     %2 = AND8o %1, %0, implicit-def $cr0
1501     ; CHECK: ANDIo8 %0, 321, implicit-def $cr0
1502     ; CHECK-LATE: andi. 5, 3, 321
1503     %3 = COPY killed $cr0
1504     %4 = ISEL8 %1, %0, %3.sub_eq
1505     $x3 = COPY %4
1506     BLR8 implicit $lr8, implicit $rm, implicit $x3
1510 name:            testCMPD
1511 # CHECK-ALL: name: testCMPD
1512 alignment:       16
1513 exposesReturnsTwice: false
1514 legalized:       false
1515 regBankSelected: false
1516 selected:        false
1517 tracksRegLiveness: true
1518 registers:       
1519   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1520   - { id: 1, class: g8rc, preferred-register: '' }
1521   - { id: 2, class: crrc, preferred-register: '' }
1522   - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1523   - { id: 4, class: g8rc, preferred-register: '' }
1524   - { id: 5, class: g8rc, preferred-register: '' }
1525 liveins:         
1526   - { reg: '$x3', virtual-reg: '%0' }
1527   - { reg: '$x4', virtual-reg: '%1' }
1528 frameInfo:       
1529   isFrameAddressTaken: false
1530   isReturnAddressTaken: false
1531   hasStackMap:     false
1532   hasPatchPoint:   false
1533   stackSize:       0
1534   offsetAdjustment: 0
1535   maxAlignment:    0
1536   adjustsStack:    false
1537   hasCalls:        false
1538   stackProtector:  ''
1539   maxCallFrameSize: 4294967295
1540   hasOpaqueSPAdjustment: false
1541   hasVAStart:      false
1542   hasMustTailInVarArgFunc: false
1543   savePoint:       ''
1544   restorePoint:    ''
1545 fixedStack:      
1546 stack:           
1547 constants:       
1548 body:             |
1549   bb.0.entry:
1550     liveins: $x3, $x4
1551   
1552     %1 = LI8 65533
1553     %0 = COPY $x3
1554     %2 = CMPD %0, %1
1555     ; CHECK: CMPDI %0, -3
1556     ; CHECK-LATE: cmpdi 3, -3
1557     %4 = ISEL8 $zero8, %0, %2.sub_gt
1558     %5 = ADD8 killed %4, %1
1559     $x3 = COPY %5
1560     BLR8 implicit $lr8, implicit $rm, implicit $x3
1564 name:            testCMPDI
1565 # CHECK-ALL: name: testCMPDI
1566 alignment:       16
1567 exposesReturnsTwice: false
1568 legalized:       false
1569 regBankSelected: false
1570 selected:        false
1571 tracksRegLiveness: true
1572 registers:       
1573   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1574   - { id: 1, class: g8rc, preferred-register: '' }
1575   - { id: 2, class: crrc, preferred-register: '' }
1576   - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1577   - { id: 4, class: g8rc, preferred-register: '' }
1578   - { id: 5, class: g8rc, preferred-register: '' }
1579 liveins:         
1580   - { reg: '$x3', virtual-reg: '%0' }
1581   - { reg: '$x4', virtual-reg: '%1' }
1582 frameInfo:       
1583   isFrameAddressTaken: false
1584   isReturnAddressTaken: false
1585   hasStackMap:     false
1586   hasPatchPoint:   false
1587   stackSize:       0
1588   offsetAdjustment: 0
1589   maxAlignment:    0
1590   adjustsStack:    false
1591   hasCalls:        false
1592   stackProtector:  ''
1593   maxCallFrameSize: 4294967295
1594   hasOpaqueSPAdjustment: false
1595   hasVAStart:      false
1596   hasMustTailInVarArgFunc: false
1597   savePoint:       ''
1598   restorePoint:    ''
1599 fixedStack:      
1600 stack:           
1601 constants:       
1602 body:             |
1603   bb.0.entry:
1604     liveins: $x3, $x4
1605   
1606     %1 = COPY $x4
1607     %0 = LI8 89
1608     %2 = CMPDI %0, 87
1609     %4 = ISEL8 $zero8, %0, %2.sub_gt
1610     ; CHECK: LI8 0
1611     %5 = ADD8 killed %4, %1
1612     $x3 = COPY %5
1613     BLR8 implicit $lr8, implicit $rm, implicit $x3
1617 name:            testCMPDI_F
1618 # CHECK-ALL: name: testCMPDI_F
1619 alignment:       16
1620 exposesReturnsTwice: false
1621 legalized:       false
1622 regBankSelected: false
1623 selected:        false
1624 tracksRegLiveness: true
1625 registers:       
1626   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1627   - { id: 1, class: g8rc, preferred-register: '' }
1628   - { id: 2, class: crrc, preferred-register: '' }
1629   - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1630   - { id: 4, class: g8rc, preferred-register: '' }
1631   - { id: 5, class: g8rc, preferred-register: '' }
1632 liveins:         
1633   - { reg: '$x3', virtual-reg: '%0' }
1634   - { reg: '$x4', virtual-reg: '%1' }
1635 frameInfo:       
1636   isFrameAddressTaken: false
1637   isReturnAddressTaken: false
1638   hasStackMap:     false
1639   hasPatchPoint:   false
1640   stackSize:       0
1641   offsetAdjustment: 0
1642   maxAlignment:    0
1643   adjustsStack:    false
1644   hasCalls:        false
1645   stackProtector:  ''
1646   maxCallFrameSize: 4294967295
1647   hasOpaqueSPAdjustment: false
1648   hasVAStart:      false
1649   hasMustTailInVarArgFunc: false
1650   savePoint:       ''
1651   restorePoint:    ''
1652 fixedStack:      
1653 stack:           
1654 constants:       
1655 body:             |
1656   bb.0.entry:
1657     liveins: $x3, $x4
1658   
1659     %1 = COPY $x4
1660     %0 = LI8 87
1661     %2 = CMPDI %0, 87
1662     %4 = ISEL8 $zero8, %0, %2.sub_gt
1663     ; CHECK: COPY %0
1664     %5 = ADD8 killed %4, %1
1665     $x3 = COPY %5
1666     BLR8 implicit $lr8, implicit $rm, implicit $x3
1670 name:            testCMPLD
1671 # CHECK-ALL: name: testCMPLD
1672 alignment:       16
1673 exposesReturnsTwice: false
1674 legalized:       false
1675 regBankSelected: false
1676 selected:        false
1677 tracksRegLiveness: true
1678 registers:       
1679   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1680   - { id: 1, class: g8rc, preferred-register: '' }
1681   - { id: 2, class: crrc, preferred-register: '' }
1682   - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1683   - { id: 4, class: g8rc, preferred-register: '' }
1684   - { id: 5, class: g8rc, preferred-register: '' }
1685 liveins:         
1686   - { reg: '$x3', virtual-reg: '%0' }
1687   - { reg: '$x4', virtual-reg: '%1' }
1688 frameInfo:       
1689   isFrameAddressTaken: false
1690   isReturnAddressTaken: false
1691   hasStackMap:     false
1692   hasPatchPoint:   false
1693   stackSize:       0
1694   offsetAdjustment: 0
1695   maxAlignment:    0
1696   adjustsStack:    false
1697   hasCalls:        false
1698   stackProtector:  ''
1699   maxCallFrameSize: 4294967295
1700   hasOpaqueSPAdjustment: false
1701   hasVAStart:      false
1702   hasMustTailInVarArgFunc: false
1703   savePoint:       ''
1704   restorePoint:    ''
1705 fixedStack:      
1706 stack:           
1707 constants:       
1708 body:             |
1709   bb.0.entry:
1710     liveins: $x3, $x4
1711   
1712     %1 = LI8 99
1713     %0 = COPY $x3
1714     %2 = CMPLD %0, %1
1715     ; CHECK: CMPLDI %0, 99
1716     ; CHECK-LATE: cmpldi 3, 99
1717     %4 = ISEL8 $zero8, %0, %2.sub_gt
1718     %5 = ADD8 killed %4, %1
1719     $x3 = COPY %5
1720     BLR8 implicit $lr8, implicit $rm, implicit $x3
1724 name:            testCMPLDI
1725 # CHECK-ALL: name: testCMPLDI
1726 alignment:       16
1727 exposesReturnsTwice: false
1728 legalized:       false
1729 regBankSelected: false
1730 selected:        false
1731 tracksRegLiveness: true
1732 registers:       
1733   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1734   - { id: 1, class: g8rc, preferred-register: '' }
1735   - { id: 2, class: crrc, preferred-register: '' }
1736   - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' }
1737   - { id: 4, class: g8rc, preferred-register: '' }
1738   - { id: 5, class: g8rc, preferred-register: '' }
1739 liveins:         
1740   - { reg: '$x3', virtual-reg: '%0' }
1741   - { reg: '$x4', virtual-reg: '%1' }
1742 frameInfo:       
1743   isFrameAddressTaken: false
1744   isReturnAddressTaken: false
1745   hasStackMap:     false
1746   hasPatchPoint:   false
1747   stackSize:       0
1748   offsetAdjustment: 0
1749   maxAlignment:    0
1750   adjustsStack:    false
1751   hasCalls:        false
1752   stackProtector:  ''
1753   maxCallFrameSize: 4294967295
1754   hasOpaqueSPAdjustment: false
1755   hasVAStart:      false
1756   hasMustTailInVarArgFunc: false
1757   savePoint:       ''
1758   restorePoint:    ''
1759 fixedStack:      
1760 stack:           
1761 constants:       
1762 body:             |
1763   bb.0.entry:
1764     liveins: $x3, $x4
1765   
1766     %1 = COPY $x4
1767     %0 = LI8 65534
1768     %2 = CMPLDI %0, 65535
1769     %4 = ISEL8 $zero8, %0, %2.sub_gt
1770     ; CHECK: COPY %0
1771     %5 = ADD8 killed %4, %1
1772     $x3 = COPY %5
1773     BLR8 implicit $lr8, implicit $rm, implicit $x3
1777 name:            testCMPW
1778 # CHECK-ALL: name: testCMPW
1779 alignment:       16
1780 exposesReturnsTwice: false
1781 legalized:       false
1782 regBankSelected: false
1783 selected:        false
1784 tracksRegLiveness: true
1785 registers:       
1786   - { id: 0, class: g8rc, preferred-register: '' }
1787   - { id: 1, class: g8rc, preferred-register: '' }
1788   - { id: 2, class: gprc, preferred-register: '' }
1789   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
1790   - { id: 4, class: crrc, preferred-register: '' }
1791   - { id: 5, class: gprc_and_gprc_nor0, preferred-register: '' }
1792   - { id: 6, class: gprc, preferred-register: '' }
1793   - { id: 7, class: gprc, preferred-register: '' }
1794   - { id: 8, class: g8rc, preferred-register: '' }
1795 liveins:         
1796   - { reg: '$x3', virtual-reg: '%0' }
1797   - { reg: '$x4', virtual-reg: '%1' }
1798 frameInfo:       
1799   isFrameAddressTaken: false
1800   isReturnAddressTaken: false
1801   hasStackMap:     false
1802   hasPatchPoint:   false
1803   stackSize:       0
1804   offsetAdjustment: 0
1805   maxAlignment:    0
1806   adjustsStack:    false
1807   hasCalls:        false
1808   stackProtector:  ''
1809   maxCallFrameSize: 4294967295
1810   hasOpaqueSPAdjustment: false
1811   hasVAStart:      false
1812   hasMustTailInVarArgFunc: false
1813   savePoint:       ''
1814   restorePoint:    ''
1815 fixedStack:      
1816 stack:           
1817 constants:       
1818 body:             |
1819   bb.0.entry:
1820     liveins: $x3, $x4
1821   
1822     %1 = COPY $x4
1823     %0 = COPY $x3
1824     %2 = LI -1
1825     %3 = COPY %0.sub_32
1826     %4 = CMPW %3, %2
1827     ; CHECK: CMPWI %3, -1
1828     %6 = ISEL $zero, %3, %4.sub_gt
1829     %7 = ADD4 killed %6, %2
1830     %8 = EXTSW_32_64 killed %7
1831     $x3 = COPY %8
1832     BLR8 implicit $lr8, implicit $rm, implicit $x3
1836 name:            testCMPWI
1837 # CHECK-ALL: name: testCMPWI
1838 alignment:       16
1839 exposesReturnsTwice: false
1840 legalized:       false
1841 regBankSelected: false
1842 selected:        false
1843 tracksRegLiveness: true
1844 registers:       
1845   - { id: 0, class: g8rc, preferred-register: '' }
1846   - { id: 1, class: g8rc, preferred-register: '' }
1847   - { id: 2, class: gprc, preferred-register: '' }
1848   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
1849   - { id: 4, class: crrc, preferred-register: '' }
1850   - { id: 5, class: gprc_and_gprc_nor0, preferred-register: '' }
1851   - { id: 6, class: gprc, preferred-register: '' }
1852   - { id: 7, class: gprc, preferred-register: '' }
1853   - { id: 8, class: g8rc, preferred-register: '' }
1854 liveins:         
1855   - { reg: '$x3', virtual-reg: '%0' }
1856   - { reg: '$x4', virtual-reg: '%1' }
1857 frameInfo:       
1858   isFrameAddressTaken: false
1859   isReturnAddressTaken: false
1860   hasStackMap:     false
1861   hasPatchPoint:   false
1862   stackSize:       0
1863   offsetAdjustment: 0
1864   maxAlignment:    0
1865   adjustsStack:    false
1866   hasCalls:        false
1867   stackProtector:  ''
1868   maxCallFrameSize: 4294967295
1869   hasOpaqueSPAdjustment: false
1870   hasVAStart:      false
1871   hasMustTailInVarArgFunc: false
1872   savePoint:       ''
1873   restorePoint:    ''
1874 fixedStack:      
1875 stack:           
1876 constants:       
1877 body:             |
1878   bb.0.entry:
1879     liveins: $x3, $x4
1880   
1881     %1 = COPY $x4
1882     %0 = COPY $x3
1883     %2 = COPY %1.sub_32
1884     %3 = LI -3
1885     %4 = CMPWI %3, 87
1886     %6 = ISEL $zero, %3, %4.sub_gt
1887     ; CHECK: COPY %3
1888     %7 = ADD4 killed %6, killed %2
1889     %8 = EXTSW_32_64 killed %7
1890     $x3 = COPY %8
1891     BLR8 implicit $lr8, implicit $rm, implicit $x3
1895 name:            testCMPLW
1896 # CHECK-ALL: name: testCMPLW
1897 alignment:       16
1898 exposesReturnsTwice: false
1899 legalized:       false
1900 regBankSelected: false
1901 selected:        false
1902 tracksRegLiveness: true
1903 registers:       
1904   - { id: 0, class: g8rc, preferred-register: '' }
1905   - { id: 1, class: g8rc, preferred-register: '' }
1906   - { id: 2, class: gprc, preferred-register: '' }
1907   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
1908   - { id: 4, class: crrc, preferred-register: '' }
1909   - { id: 5, class: gprc_and_gprc_nor0, preferred-register: '' }
1910   - { id: 6, class: gprc, preferred-register: '' }
1911   - { id: 7, class: gprc, preferred-register: '' }
1912   - { id: 8, class: g8rc, preferred-register: '' }
1913   - { id: 9, class: g8rc, preferred-register: '' }
1914   - { id: 10, class: g8rc, preferred-register: '' }
1915 liveins:         
1916   - { reg: '$x3', virtual-reg: '%0' }
1917   - { reg: '$x4', virtual-reg: '%1' }
1918 frameInfo:       
1919   isFrameAddressTaken: false
1920   isReturnAddressTaken: false
1921   hasStackMap:     false
1922   hasPatchPoint:   false
1923   stackSize:       0
1924   offsetAdjustment: 0
1925   maxAlignment:    0
1926   adjustsStack:    false
1927   hasCalls:        false
1928   stackProtector:  ''
1929   maxCallFrameSize: 4294967295
1930   hasOpaqueSPAdjustment: false
1931   hasVAStart:      false
1932   hasMustTailInVarArgFunc: false
1933   savePoint:       ''
1934   restorePoint:    ''
1935 fixedStack:      
1936 stack:           
1937 constants:       
1938 body:             |
1939   bb.0.entry:
1940     liveins: $x3, $x4
1941   
1942     %1 = COPY $x4
1943     %0 = COPY $x3
1944     %2 = LI 32767
1945     %3 = COPY %0.sub_32
1946     %4 = CMPLW %3, %2
1947     ; CHECK: CMPLWI %3, 32767
1948     ; CHECK-LATE: cmplwi 3, 32767
1949     %6 = ISEL $zero, %3, %4.sub_gt
1950     %7 = ADD4 killed %6, %2
1951     %9 = IMPLICIT_DEF
1952     %8 = INSERT_SUBREG %9, killed %7, 1
1953     %10 = RLDICL killed %8, 0, 32
1954     $x3 = COPY %10
1955     BLR8 implicit $lr8, implicit $rm, implicit $x3
1959 name:            testCMPLWI
1960 # CHECK-ALL: name: testCMPLWI
1961 alignment:       16
1962 exposesReturnsTwice: false
1963 legalized:       false
1964 regBankSelected: false
1965 selected:        false
1966 tracksRegLiveness: true
1967 registers:       
1968   - { id: 0, class: g8rc, preferred-register: '' }
1969   - { id: 1, class: g8rc, preferred-register: '' }
1970   - { id: 2, class: gprc, preferred-register: '' }
1971   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
1972   - { id: 4, class: crrc, preferred-register: '' }
1973   - { id: 5, class: gprc_and_gprc_nor0, preferred-register: '' }
1974   - { id: 6, class: gprc, preferred-register: '' }
1975   - { id: 7, class: gprc, preferred-register: '' }
1976   - { id: 8, class: g8rc, preferred-register: '' }
1977   - { id: 9, class: g8rc, preferred-register: '' }
1978   - { id: 10, class: g8rc, preferred-register: '' }
1979 liveins:         
1980   - { reg: '$x3', virtual-reg: '%0' }
1981   - { reg: '$x4', virtual-reg: '%1' }
1982 frameInfo:       
1983   isFrameAddressTaken: false
1984   isReturnAddressTaken: false
1985   hasStackMap:     false
1986   hasPatchPoint:   false
1987   stackSize:       0
1988   offsetAdjustment: 0
1989   maxAlignment:    0
1990   adjustsStack:    false
1991   hasCalls:        false
1992   stackProtector:  ''
1993   maxCallFrameSize: 4294967295
1994   hasOpaqueSPAdjustment: false
1995   hasVAStart:      false
1996   hasMustTailInVarArgFunc: false
1997   savePoint:       ''
1998   restorePoint:    ''
1999 fixedStack:      
2000 stack:           
2001 constants:       
2002 body:             |
2003   bb.0.entry:
2004     liveins: $x3, $x4
2005   
2006     %1 = COPY $x4
2007     %0 = COPY $x3
2008     %2 = COPY %1.sub_32
2009     %3 = LI -3
2010     %4 = CMPLWI %3, 87
2011     %6 = ISEL $zero, %3, %4.sub_gt
2012     ; CHECK: LI 0
2013     %7 = ADD4 killed %6, killed %2
2014     %9 = IMPLICIT_DEF
2015     %8 = INSERT_SUBREG %9, killed %7, 1
2016     %10 = RLDICL killed %8, 0, 32
2017     $x3 = COPY %10
2018     BLR8 implicit $lr8, implicit $rm, implicit $x3
2022 name:            testLBZUX
2023 # CHECK-ALL: name: testLBZUX
2024 alignment:       16
2025 exposesReturnsTwice: false
2026 legalized:       false
2027 regBankSelected: false
2028 selected:        false
2029 tracksRegLiveness: true
2030 registers:       
2031   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2032   - { id: 1, class: g8rc, preferred-register: '' }
2033   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
2034   - { id: 3, class: gprc, preferred-register: '' }
2035   - { id: 4, class: g8rc, preferred-register: '' }
2036   - { id: 5, class: g8rc, preferred-register: '' }
2037   - { id: 6, class: g8rc, preferred-register: '' }
2038   - { id: 7, class: gprc, preferred-register: '' }
2039   - { id: 8, class: gprc, preferred-register: '' }
2040   - { id: 9, class: g8rc, preferred-register: '' }
2041   - { id: 10, class: g8rc, preferred-register: '' }
2042   - { id: 11, class: g8rc, preferred-register: '' }
2043   - { id: 12, class: gprc, preferred-register: '' }
2044   - { id: 13, class: gprc, preferred-register: '' }
2045   - { id: 14, class: g8rc, preferred-register: '' }
2046   - { id: 15, class: g8rc, preferred-register: '' }
2047   - { id: 16, class: g8rc, preferred-register: '' }
2048   - { id: 17, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2049 liveins:         
2050   - { reg: '$x3', virtual-reg: '%0' }
2051   - { reg: '$x4', virtual-reg: '%1' }
2052 frameInfo:       
2053   isFrameAddressTaken: false
2054   isReturnAddressTaken: false
2055   hasStackMap:     false
2056   hasPatchPoint:   false
2057   stackSize:       0
2058   offsetAdjustment: 0
2059   maxAlignment:    0
2060   adjustsStack:    false
2061   hasCalls:        false
2062   stackProtector:  ''
2063   maxCallFrameSize: 4294967295
2064   hasOpaqueSPAdjustment: false
2065   hasVAStart:      false
2066   hasMustTailInVarArgFunc: false
2067   savePoint:       ''
2068   restorePoint:    ''
2069 fixedStack:      
2070 stack:           
2071 constants:       
2072 body:             |
2073   bb.0.entry:
2074     liveins: $x3, $x4
2075   
2076     %1 = COPY $x4
2077     %0 = COPY $x3
2078     %2 = COPY %1.sub_32
2079     %3 = ADDI %2, 1
2080     %5 = IMPLICIT_DEF
2081     %4 = INSERT_SUBREG %5, killed %3, 1
2082     %6 = RLDICL killed %4, 0, 32
2083     %7 = LBZX %0, killed %6 :: (load 1 from %ir.arrayidx, !tbaa !3)
2084     %8 = ADDI %2, 2
2085     %10 = IMPLICIT_DEF
2086     %9 = INSERT_SUBREG %10, killed %8, 1
2087     %11 = LI8 -15
2088     %12,%17 = LBZUX %0, killed %11 :: (load 1 from %ir.arrayidx3, !tbaa !3)
2089     ; CHECK: LBZU -15, %0
2090     ; CHECK-LATE: lbzu 5, -15(3)
2091     %13 = ADD4 killed %12, killed %7
2092     %15 = IMPLICIT_DEF
2093     %14 = INSERT_SUBREG %15, killed %13, 1
2094     %16 = RLWINM8 killed %14, 0, 24, 31
2095     $x3 = COPY %16
2096     BLR8 implicit $lr8, implicit $rm, implicit $x3
2100 name:            testLBZX
2101 # CHECK-ALL: name: testLBZX
2102 alignment:       16
2103 exposesReturnsTwice: false
2104 legalized:       false
2105 regBankSelected: false
2106 selected:        false
2107 tracksRegLiveness: true
2108 registers:       
2109   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2110   - { id: 1, class: g8rc, preferred-register: '' }
2111   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
2112   - { id: 3, class: gprc, preferred-register: '' }
2113   - { id: 4, class: g8rc, preferred-register: '' }
2114   - { id: 5, class: g8rc, preferred-register: '' }
2115   - { id: 6, class: g8rc, preferred-register: '' }
2116   - { id: 7, class: gprc, preferred-register: '' }
2117   - { id: 8, class: gprc, preferred-register: '' }
2118   - { id: 9, class: g8rc, preferred-register: '' }
2119   - { id: 10, class: g8rc, preferred-register: '' }
2120   - { id: 11, class: g8rc, preferred-register: '' }
2121   - { id: 12, class: gprc, preferred-register: '' }
2122   - { id: 13, class: gprc, preferred-register: '' }
2123   - { id: 14, class: g8rc, preferred-register: '' }
2124   - { id: 15, class: g8rc, preferred-register: '' }
2125   - { id: 16, class: g8rc, preferred-register: '' }
2126 liveins:         
2127   - { reg: '$x3', virtual-reg: '%0' }
2128   - { reg: '$x4', virtual-reg: '%1' }
2129 frameInfo:       
2130   isFrameAddressTaken: false
2131   isReturnAddressTaken: false
2132   hasStackMap:     false
2133   hasPatchPoint:   false
2134   stackSize:       0
2135   offsetAdjustment: 0
2136   maxAlignment:    0
2137   adjustsStack:    false
2138   hasCalls:        false
2139   stackProtector:  ''
2140   maxCallFrameSize: 4294967295
2141   hasOpaqueSPAdjustment: false
2142   hasVAStart:      false
2143   hasMustTailInVarArgFunc: false
2144   savePoint:       ''
2145   restorePoint:    ''
2146 fixedStack:      
2147 stack:           
2148 constants:       
2149 body:             |
2150   bb.0.entry:
2151     liveins: $x3, $x4
2152   
2153     %1 = COPY $x4
2154     %0 = LI8 45
2155     %2 = COPY %1.sub_32
2156     %3 = ADDI %2, 1
2157     %5 = IMPLICIT_DEF
2158     %4 = INSERT_SUBREG %5, killed %3, 1
2159     %6 = RLDICL killed %4, 0, 32
2160     %7 = LBZX %0, killed %6 :: (load 1 from %ir.arrayidx, !tbaa !3)
2161     ; CHECK: LBZ 45, killed %6
2162     ; CHECK-LATE: lbz 5, 45(5)
2163     %8 = ADDI %2, 2
2164     %10 = IMPLICIT_DEF
2165     %9 = INSERT_SUBREG %10, killed %8, 1
2166     %11 = RLDICL killed %9, 0, 32
2167     %12 = LBZX %0, killed %11 :: (load 1 from %ir.arrayidx3, !tbaa !3)
2168     ; CHECK: LBZ 45, killed %11
2169     ; CHECK-LATE: lbz 3, 45(4)
2170     %13 = ADD4 killed %12, killed %7
2171     %15 = IMPLICIT_DEF
2172     %14 = INSERT_SUBREG %15, killed %13, 1
2173     %16 = RLWINM8 killed %14, 0, 24, 31
2174     $x3 = COPY %16
2175     BLR8 implicit $lr8, implicit $rm, implicit $x3
2179 name:            testLHZUX
2180 # CHECK-ALL: name: testLHZUX
2181 alignment:       16
2182 exposesReturnsTwice: false
2183 legalized:       false
2184 regBankSelected: false
2185 selected:        false
2186 tracksRegLiveness: true
2187 registers:       
2188   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2189   - { id: 1, class: g8rc, preferred-register: '' }
2190   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
2191   - { id: 3, class: gprc, preferred-register: '' }
2192   - { id: 4, class: g8rc, preferred-register: '' }
2193   - { id: 5, class: g8rc, preferred-register: '' }
2194   - { id: 6, class: g8rc, preferred-register: '' }
2195   - { id: 7, class: gprc, preferred-register: '' }
2196   - { id: 8, class: gprc, preferred-register: '' }
2197   - { id: 9, class: g8rc, preferred-register: '' }
2198   - { id: 10, class: g8rc, preferred-register: '' }
2199   - { id: 11, class: g8rc, preferred-register: '' }
2200   - { id: 12, class: gprc, preferred-register: '' }
2201   - { id: 13, class: gprc, preferred-register: '' }
2202   - { id: 14, class: g8rc, preferred-register: '' }
2203   - { id: 15, class: g8rc, preferred-register: '' }
2204   - { id: 16, class: g8rc, preferred-register: '' }
2205   - { id: 17, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2206 liveins:         
2207   - { reg: '$x3', virtual-reg: '%0' }
2208   - { reg: '$x4', virtual-reg: '%1' }
2209 frameInfo:       
2210   isFrameAddressTaken: false
2211   isReturnAddressTaken: false
2212   hasStackMap:     false
2213   hasPatchPoint:   false
2214   stackSize:       0
2215   offsetAdjustment: 0
2216   maxAlignment:    0
2217   adjustsStack:    false
2218   hasCalls:        false
2219   stackProtector:  ''
2220   maxCallFrameSize: 4294967295
2221   hasOpaqueSPAdjustment: false
2222   hasVAStart:      false
2223   hasMustTailInVarArgFunc: false
2224   savePoint:       ''
2225   restorePoint:    ''
2226 fixedStack:      
2227 stack:           
2228 constants:       
2229 body:             |
2230   bb.0.entry:
2231     liveins: $x3, $x4
2232   
2233     %1 = COPY $x4
2234     %0 = COPY $x3
2235     %2 = COPY %1.sub_32
2236     %3 = ADDI %2, 1
2237     %5 = IMPLICIT_DEF
2238     %4 = INSERT_SUBREG %5, killed %3, 1
2239     %6 = RLDIC killed %4, 1, 31
2240     %7 = LHZX %0, killed %6 :: (load 2 from %ir.arrayidx, !tbaa !6)
2241     %8 = ADDI %2, 2
2242     %10 = IMPLICIT_DEF
2243     %9 = INSERT_SUBREG %10, killed %8, 1
2244     %11 = LI8 31440
2245     %12,%17 = LHZUX %0, killed %11 :: (load 2 from %ir.arrayidx3, !tbaa !6)
2246     ; CHECK: LHZU 31440, %0
2247     ; CHECK-LATE: lhzu 5, 31440(3)
2248     %13 = ADD4 killed %12, killed %7
2249     %15 = IMPLICIT_DEF
2250     %14 = INSERT_SUBREG %15, killed %13, 1
2251     %16 = RLWINM8 killed %14, 0, 16, 31
2252     $x3 = COPY %16
2253     BLR8 implicit $lr8, implicit $rm, implicit $x3
2257 name:            testLHZX
2258 # CHECK-ALL: name: testLHZX
2259 alignment:       16
2260 exposesReturnsTwice: false
2261 legalized:       false
2262 regBankSelected: false
2263 selected:        false
2264 tracksRegLiveness: true
2265 registers:       
2266   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2267   - { id: 1, class: g8rc, preferred-register: '' }
2268   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
2269   - { id: 3, class: gprc, preferred-register: '' }
2270   - { id: 4, class: g8rc, preferred-register: '' }
2271   - { id: 5, class: g8rc, preferred-register: '' }
2272   - { id: 6, class: g8rc, preferred-register: '' }
2273   - { id: 7, class: gprc, preferred-register: '' }
2274   - { id: 8, class: gprc, preferred-register: '' }
2275   - { id: 9, class: g8rc, preferred-register: '' }
2276   - { id: 10, class: g8rc, preferred-register: '' }
2277   - { id: 11, class: g8rc, preferred-register: '' }
2278   - { id: 12, class: gprc, preferred-register: '' }
2279   - { id: 13, class: gprc, preferred-register: '' }
2280   - { id: 14, class: g8rc, preferred-register: '' }
2281   - { id: 15, class: g8rc, preferred-register: '' }
2282   - { id: 16, class: g8rc, preferred-register: '' }
2283 liveins:         
2284   - { reg: '$x3', virtual-reg: '%0' }
2285   - { reg: '$x4', virtual-reg: '%1' }
2286 frameInfo:       
2287   isFrameAddressTaken: false
2288   isReturnAddressTaken: false
2289   hasStackMap:     false
2290   hasPatchPoint:   false
2291   stackSize:       0
2292   offsetAdjustment: 0
2293   maxAlignment:    0
2294   adjustsStack:    false
2295   hasCalls:        false
2296   stackProtector:  ''
2297   maxCallFrameSize: 4294967295
2298   hasOpaqueSPAdjustment: false
2299   hasVAStart:      false
2300   hasMustTailInVarArgFunc: false
2301   savePoint:       ''
2302   restorePoint:    ''
2303 fixedStack:      
2304 stack:           
2305 constants:       
2306 body:             |
2307   bb.0.entry:
2308     liveins: $x3, $x4
2309   
2310     %1 = COPY $x4
2311     %0 = COPY $x3
2312     %2 = COPY %1.sub_32
2313     %3 = ADDI %2, 1
2314     %5 = IMPLICIT_DEF
2315     %4 = INSERT_SUBREG %5, killed %3, 1
2316     %6 = RLDIC killed %4, 1, 31
2317     %7 = LHZX %0, killed %6 :: (load 2 from %ir.arrayidx, !tbaa !6)
2318     %8 = ADDI %2, 2
2319     %10 = IMPLICIT_DEF
2320     %9 = INSERT_SUBREG %10, killed %8, 1
2321     %11 = LI8 882
2322     %12 = LHZX %0, killed %11 :: (load 2 from %ir.arrayidx3, !tbaa !6)
2323     ; CHECK: LHZ 882, %0
2324     ; CHECK-LATE: lhz 3, 882(3)
2325     %13 = ADD4 killed %12, killed %7
2326     %15 = IMPLICIT_DEF
2327     %14 = INSERT_SUBREG %15, killed %13, 1
2328     %16 = RLWINM8 killed %14, 0, 16, 31
2329     $x3 = COPY %16
2330     BLR8 implicit $lr8, implicit $rm, implicit $x3
2334 name:            testLHAUX
2335 # CHECK-ALL: name: testLHAUX
2336 alignment:       16
2337 exposesReturnsTwice: false
2338 legalized:       false
2339 regBankSelected: false
2340 selected:        false
2341 tracksRegLiveness: true
2342 registers:       
2343   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2344   - { id: 1, class: g8rc, preferred-register: '' }
2345   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
2346   - { id: 3, class: gprc, preferred-register: '' }
2347   - { id: 4, class: g8rc, preferred-register: '' }
2348   - { id: 5, class: g8rc, preferred-register: '' }
2349   - { id: 6, class: g8rc, preferred-register: '' }
2350   - { id: 7, class: gprc, preferred-register: '' }
2351   - { id: 8, class: gprc, preferred-register: '' }
2352   - { id: 9, class: g8rc, preferred-register: '' }
2353   - { id: 10, class: g8rc, preferred-register: '' }
2354   - { id: 11, class: g8rc, preferred-register: '' }
2355   - { id: 12, class: gprc, preferred-register: '' }
2356   - { id: 13, class: gprc, preferred-register: '' }
2357   - { id: 14, class: g8rc, preferred-register: '' }
2358   - { id: 15, class: g8rc, preferred-register: '' }
2359   - { id: 16, class: g8rc, preferred-register: '' }
2360   - { id: 17, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2361 liveins:         
2362   - { reg: '$x3', virtual-reg: '%0' }
2363   - { reg: '$x4', virtual-reg: '%1' }
2364 frameInfo:       
2365   isFrameAddressTaken: false
2366   isReturnAddressTaken: false
2367   hasStackMap:     false
2368   hasPatchPoint:   false
2369   stackSize:       0
2370   offsetAdjustment: 0
2371   maxAlignment:    0
2372   adjustsStack:    false
2373   hasCalls:        false
2374   stackProtector:  ''
2375   maxCallFrameSize: 4294967295
2376   hasOpaqueSPAdjustment: false
2377   hasVAStart:      false
2378   hasMustTailInVarArgFunc: false
2379   savePoint:       ''
2380   restorePoint:    ''
2381 fixedStack:      
2382 stack:           
2383 constants:       
2384 body:             |
2385   bb.0.entry:
2386     liveins: $x3, $x4
2387   
2388     %1 = COPY $x4
2389     %0 = COPY $x3
2390     %2 = COPY %1.sub_32
2391     %3 = ADDI %2, 1
2392     %5 = IMPLICIT_DEF
2393     %4 = INSERT_SUBREG %5, killed %3, 1
2394     %6 = RLDIC %4, 1, 31
2395     %7 = LHZX %0, killed %6 :: (load 2 from %ir.arrayidx, !tbaa !6)
2396     %8 = ADDI %2, 2
2397     %10 = IMPLICIT_DEF
2398     %9 = INSERT_SUBREG %10, killed %8, 1
2399     %11 = LI8 400
2400     %12,%17 = LHAUX %0, killed %11 :: (load 2 from %ir.arrayidx3, !tbaa !6)
2401     ; CHECK: LHAU 400, %0
2402     ; CHECK-LATE: lhau 5, 400(3)
2403     %13 = ADD4 killed %12, killed %7
2404     %15 = IMPLICIT_DEF
2405     %14 = INSERT_SUBREG %15, killed %13, 1
2406     %16 = EXTSH8 killed %14
2407     $x3 = COPY %16
2408     BLR8 implicit $lr8, implicit $rm, implicit $x3
2412 name:            testLHAX
2413 # CHECK-ALL: name: testLHAX
2414 alignment:       16
2415 exposesReturnsTwice: false
2416 legalized:       false
2417 regBankSelected: false
2418 selected:        false
2419 tracksRegLiveness: true
2420 registers:       
2421   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2422   - { id: 1, class: g8rc, preferred-register: '' }
2423   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
2424   - { id: 3, class: gprc, preferred-register: '' }
2425   - { id: 4, class: g8rc, preferred-register: '' }
2426   - { id: 5, class: g8rc, preferred-register: '' }
2427   - { id: 6, class: g8rc, preferred-register: '' }
2428   - { id: 7, class: gprc, preferred-register: '' }
2429   - { id: 8, class: gprc, preferred-register: '' }
2430   - { id: 9, class: g8rc, preferred-register: '' }
2431   - { id: 10, class: g8rc, preferred-register: '' }
2432   - { id: 11, class: g8rc, preferred-register: '' }
2433   - { id: 12, class: gprc, preferred-register: '' }
2434   - { id: 13, class: gprc, preferred-register: '' }
2435   - { id: 14, class: g8rc, preferred-register: '' }
2436   - { id: 15, class: g8rc, preferred-register: '' }
2437   - { id: 16, class: g8rc, preferred-register: '' }
2438 liveins:         
2439   - { reg: '$x3', virtual-reg: '%0' }
2440   - { reg: '$x4', virtual-reg: '%1' }
2441 frameInfo:       
2442   isFrameAddressTaken: false
2443   isReturnAddressTaken: false
2444   hasStackMap:     false
2445   hasPatchPoint:   false
2446   stackSize:       0
2447   offsetAdjustment: 0
2448   maxAlignment:    0
2449   adjustsStack:    false
2450   hasCalls:        false
2451   stackProtector:  ''
2452   maxCallFrameSize: 4294967295
2453   hasOpaqueSPAdjustment: false
2454   hasVAStart:      false
2455   hasMustTailInVarArgFunc: false
2456   savePoint:       ''
2457   restorePoint:    ''
2458 fixedStack:      
2459 stack:           
2460 constants:       
2461 body:             |
2462   bb.0.entry:
2463     liveins: $x3, $x4
2464   
2465     %1 = COPY $x4
2466     %0 = COPY $x3
2467     %2 = COPY %1.sub_32
2468     %3 = ADDI %2, 1
2469     %5 = IMPLICIT_DEF
2470     %4 = INSERT_SUBREG %5, killed %3, 1
2471     %6 = LI8 -999
2472     %7 = LHAX %0, killed %6 :: (load 2 from %ir.arrayidx, !tbaa !6)
2473     ; CHECK: LHA -999, %0
2474     ; CHECK-LATE: lha 4, -999(3)
2475     %8 = ADDI %2, 2
2476     %10 = IMPLICIT_DEF
2477     %9 = INSERT_SUBREG %10, killed %8, 1
2478     %11 = LI8 999
2479     %12 = LHAX %0, killed %11 :: (load 2 from %ir.arrayidx3, !tbaa !6)
2480     ; CHECK: LHA 999, %0 
2481     ; CHECK-LATE: lha 3, 999(3)
2482     %13 = ADD4 killed %12, killed %7
2483     %15 = IMPLICIT_DEF
2484     %14 = INSERT_SUBREG %15, killed %13, 1
2485     %16 = EXTSH8 killed %14
2486     $x3 = COPY %16
2487     BLR8 implicit $lr8, implicit $rm, implicit $x3
2491 name:            testLWZUX
2492 # CHECK-ALL: name: testLWZUX
2493 alignment:       16
2494 exposesReturnsTwice: false
2495 legalized:       false
2496 regBankSelected: false
2497 selected:        false
2498 tracksRegLiveness: true
2499 registers:       
2500   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2501   - { id: 1, class: g8rc, preferred-register: '' }
2502   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
2503   - { id: 3, class: gprc, preferred-register: '' }
2504   - { id: 4, class: g8rc, preferred-register: '' }
2505   - { id: 5, class: g8rc, preferred-register: '' }
2506   - { id: 6, class: g8rc, preferred-register: '' }
2507   - { id: 7, class: gprc, preferred-register: '' }
2508   - { id: 8, class: gprc, preferred-register: '' }
2509   - { id: 9, class: g8rc, preferred-register: '' }
2510   - { id: 10, class: g8rc, preferred-register: '' }
2511   - { id: 11, class: g8rc, preferred-register: '' }
2512   - { id: 12, class: gprc, preferred-register: '' }
2513   - { id: 13, class: gprc, preferred-register: '' }
2514   - { id: 14, class: g8rc, preferred-register: '' }
2515   - { id: 15, class: g8rc, preferred-register: '' }
2516   - { id: 16, class: g8rc, preferred-register: '' }
2517   - { id: 17, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2518   - { id: 18, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2519 liveins:         
2520   - { reg: '$x3', virtual-reg: '%0' }
2521   - { reg: '$x4', virtual-reg: '%1' }
2522 frameInfo:       
2523   isFrameAddressTaken: false
2524   isReturnAddressTaken: false
2525   hasStackMap:     false
2526   hasPatchPoint:   false
2527   stackSize:       0
2528   offsetAdjustment: 0
2529   maxAlignment:    0
2530   adjustsStack:    false
2531   hasCalls:        false
2532   stackProtector:  ''
2533   maxCallFrameSize: 4294967295
2534   hasOpaqueSPAdjustment: false
2535   hasVAStart:      false
2536   hasMustTailInVarArgFunc: false
2537   savePoint:       ''
2538   restorePoint:    ''
2539 fixedStack:      
2540 stack:           
2541 constants:       
2542 body:             |
2543   bb.0.entry:
2544     liveins: $x3, $x4
2545   
2546     %1 = COPY $x4
2547     %0 = COPY $x3
2548     %2 = COPY %1.sub_32
2549     %3 = ADDI %2, 1
2550     %5 = IMPLICIT_DEF
2551     %4 = INSERT_SUBREG %5, killed %3, 1
2552     %6 = LI8 889
2553     %7,%17 = LWZUX %0, killed %6 :: (load 4 from %ir.arrayidx, !tbaa !8)
2554     ; CHECK: LWZU 889, %0
2555     ; CHECK-LATE: lwzu {{[0-9]+}}, 889({{[0-9]+}})
2556     %8 = ADDI %2, 2
2557     %10 = IMPLICIT_DEF
2558     %9 = INSERT_SUBREG %10, killed %8, 1
2559     %11 = LI8 -2
2560     %12,%18 = LWZUX %0, killed %11 :: (load 4 from %ir.arrayidx3, !tbaa !8)
2561     ; CHECK: LWZU -2, %0
2562     ; CHECK-LATE: lwzu {{[0-9]+}}, -2({{[0-9]+}})
2563     %13 = ADD4 killed %12, killed %7
2564     %15 = IMPLICIT_DEF
2565     %14 = INSERT_SUBREG %15, killed %13, 1
2566     %16 = RLDICL killed %14, 0, 32
2567     $x3 = COPY %16
2568     BLR8 implicit $lr8, implicit $rm, implicit $x3
2572 name:            testLWZX
2573 # CHECK-ALL: name: testLWZX
2574 alignment:       16
2575 exposesReturnsTwice: false
2576 legalized:       false
2577 regBankSelected: false
2578 selected:        false
2579 tracksRegLiveness: true
2580 registers:       
2581   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2582   - { id: 1, class: g8rc, preferred-register: '' }
2583   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
2584   - { id: 3, class: gprc, preferred-register: '' }
2585   - { id: 4, class: g8rc, preferred-register: '' }
2586   - { id: 5, class: g8rc, preferred-register: '' }
2587   - { id: 6, class: g8rc, preferred-register: '' }
2588   - { id: 7, class: gprc, preferred-register: '' }
2589   - { id: 8, class: gprc, preferred-register: '' }
2590   - { id: 9, class: g8rc, preferred-register: '' }
2591   - { id: 10, class: g8rc, preferred-register: '' }
2592   - { id: 11, class: g8rc, preferred-register: '' }
2593   - { id: 12, class: gprc, preferred-register: '' }
2594   - { id: 13, class: gprc, preferred-register: '' }
2595   - { id: 14, class: g8rc, preferred-register: '' }
2596   - { id: 15, class: g8rc, preferred-register: '' }
2597   - { id: 16, class: g8rc, preferred-register: '' }
2598 liveins:         
2599   - { reg: '$x3', virtual-reg: '%0' }
2600   - { reg: '$x4', virtual-reg: '%1' }
2601 frameInfo:       
2602   isFrameAddressTaken: false
2603   isReturnAddressTaken: false
2604   hasStackMap:     false
2605   hasPatchPoint:   false
2606   stackSize:       0
2607   offsetAdjustment: 0
2608   maxAlignment:    0
2609   adjustsStack:    false
2610   hasCalls:        false
2611   stackProtector:  ''
2612   maxCallFrameSize: 4294967295
2613   hasOpaqueSPAdjustment: false
2614   hasVAStart:      false
2615   hasMustTailInVarArgFunc: false
2616   savePoint:       ''
2617   restorePoint:    ''
2618 fixedStack:      
2619 stack:           
2620 constants:       
2621 body:             |
2622   bb.0.entry:
2623     liveins: $x3, $x4
2624   
2625     %1 = COPY $x4
2626     %0 = LI8 1000
2627     %2 = COPY %1.sub_32
2628     %3 = ADDI %2, 1
2629     %5 = IMPLICIT_DEF
2630     %4 = INSERT_SUBREG %5, killed %3, 1
2631     %6 = RLDIC %4, 2, 30
2632     %7 = LWZX %0, killed %6 :: (load 4 from %ir.arrayidx, !tbaa !8)
2633     ; CHECK: LWZ 1000, killed %6
2634     ; CHECK-LATE: lwz 5, 1000(5)
2635     %8 = ADDI %2, 2
2636     %10 = IMPLICIT_DEF
2637     %9 = INSERT_SUBREG %10, killed %8, 1
2638     %11 = RLDIC %9, 2, 30
2639     %12 = LWZX %0, killed %11 :: (load 4 from %ir.arrayidx3, !tbaa !8)
2640     ; CHECK: LWZ 1000, killed %11
2641     ; CHECK-LATE: lwz 3, 1000(4)
2642     %13 = ADD4 killed %12, killed %7
2643     %15 = IMPLICIT_DEF
2644     %14 = INSERT_SUBREG %15, killed %13, 1
2645     %16 = RLDICL killed %14, 0, 32
2646     $x3 = COPY %16
2647     BLR8 implicit $lr8, implicit $rm, implicit $x3
2651 name:            testLWAX
2652 # CHECK-ALL: name: testLWAX
2653 alignment:       16
2654 exposesReturnsTwice: false
2655 legalized:       false
2656 regBankSelected: false
2657 selected:        false
2658 tracksRegLiveness: true
2659 registers:       
2660   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2661   - { id: 1, class: g8rc, preferred-register: '' }
2662   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
2663   - { id: 3, class: gprc, preferred-register: '' }
2664   - { id: 4, class: g8rc, preferred-register: '' }
2665   - { id: 5, class: g8rc, preferred-register: '' }
2666   - { id: 6, class: g8rc, preferred-register: '' }
2667   - { id: 7, class: g8rc, preferred-register: '' }
2668   - { id: 8, class: gprc, preferred-register: '' }
2669   - { id: 9, class: g8rc, preferred-register: '' }
2670   - { id: 10, class: g8rc, preferred-register: '' }
2671   - { id: 11, class: g8rc, preferred-register: '' }
2672   - { id: 12, class: g8rc, preferred-register: '' }
2673   - { id: 13, class: g8rc, preferred-register: '' }
2674 liveins:         
2675   - { reg: '$x3', virtual-reg: '%0' }
2676   - { reg: '$x4', virtual-reg: '%1' }
2677 frameInfo:       
2678   isFrameAddressTaken: false
2679   isReturnAddressTaken: false
2680   hasStackMap:     false
2681   hasPatchPoint:   false
2682   stackSize:       0
2683   offsetAdjustment: 0
2684   maxAlignment:    0
2685   adjustsStack:    false
2686   hasCalls:        false
2687   stackProtector:  ''
2688   maxCallFrameSize: 4294967295
2689   hasOpaqueSPAdjustment: false
2690   hasVAStart:      false
2691   hasMustTailInVarArgFunc: false
2692   savePoint:       ''
2693   restorePoint:    ''
2694 fixedStack:      
2695 stack:           
2696 constants:       
2697 body:             |
2698   bb.0.entry:
2699     liveins: $x3, $x4
2700   
2701     %1 = COPY $x4
2702     %0 = LI8 444
2703     %2 = COPY %1.sub_32
2704     %3 = ADDI %2, 1
2705     %5 = IMPLICIT_DEF
2706     %4 = INSERT_SUBREG %5, killed %3, 1
2707     %6 = RLDIC %4, 2, 30
2708     %7 = LWAX %0, killed %6 :: (load 4 from %ir.arrayidx, !tbaa !8)
2709     ; CHECK: LWA 444, killed %6
2710     ; CHECK-LATE: lwa 5, 444(5)
2711     %8 = ADDI %2, 2
2712     %10 = IMPLICIT_DEF
2713     %9 = INSERT_SUBREG %10, killed %8, 1
2714     %11 = RLDIC %9, 2, 30
2715     %12 = LWAX %0, killed %11 :: (load 4 from %ir.arrayidx3, !tbaa !8)
2716     ; CHECK: LWA 444, killed %11
2717     ; CHECK-LATE: lwa 3, 444(4)
2718     %13 = ADD8 killed %12, killed %7
2719     $x3 = COPY %13
2720     BLR8 implicit $lr8, implicit $rm, implicit $x3
2724 name:            testLDUX
2725 # CHECK-ALL: name: testLDUX
2726 alignment:       16
2727 exposesReturnsTwice: false
2728 legalized:       false
2729 regBankSelected: false
2730 selected:        false
2731 tracksRegLiveness: true
2732 registers:       
2733   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2734   - { id: 1, class: g8rc, preferred-register: '' }
2735   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
2736   - { id: 3, class: gprc, preferred-register: '' }
2737   - { id: 4, class: g8rc, preferred-register: '' }
2738   - { id: 5, class: g8rc, preferred-register: '' }
2739   - { id: 6, class: g8rc, preferred-register: '' }
2740   - { id: 7, class: g8rc, preferred-register: '' }
2741   - { id: 8, class: gprc, preferred-register: '' }
2742   - { id: 9, class: g8rc, preferred-register: '' }
2743   - { id: 10, class: g8rc, preferred-register: '' }
2744   - { id: 11, class: g8rc, preferred-register: '' }
2745   - { id: 12, class: g8rc, preferred-register: '' }
2746   - { id: 13, class: g8rc, preferred-register: '' }
2747   - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2748   - { id: 15, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2749 liveins:         
2750   - { reg: '$x3', virtual-reg: '%0' }
2751   - { reg: '$x4', virtual-reg: '%1' }
2752 frameInfo:       
2753   isFrameAddressTaken: false
2754   isReturnAddressTaken: false
2755   hasStackMap:     false
2756   hasPatchPoint:   false
2757   stackSize:       0
2758   offsetAdjustment: 0
2759   maxAlignment:    0
2760   adjustsStack:    false
2761   hasCalls:        false
2762   stackProtector:  ''
2763   maxCallFrameSize: 4294967295
2764   hasOpaqueSPAdjustment: false
2765   hasVAStart:      false
2766   hasMustTailInVarArgFunc: false
2767   savePoint:       ''
2768   restorePoint:    ''
2769 fixedStack:      
2770 stack:           
2771 constants:       
2772 body:             |
2773   bb.0.entry:
2774     liveins: $x3, $x4
2775   
2776     %1 = COPY $x4
2777     %0 = COPY $x3
2778     %2 = COPY %1.sub_32
2779     %3 = ADDI %2, 1
2780     %5 = IMPLICIT_DEF
2781     %4 = INSERT_SUBREG %5, killed %3, 1
2782     %6 = LI8 100
2783     %7,%14 = LDUX %0, killed %6 :: (load 8 from %ir.arrayidx, !tbaa !10)
2784     ; CHECK: LDU 100, %0
2785     ; CHECK-LATE: ldu {{[0-9]+}}, 100({{[0-9]+}})
2786     %8 = ADDI %2, 2
2787     %10 = IMPLICIT_DEF
2788     %9 = INSERT_SUBREG %10, killed %8, 1
2789     %11 = LI8 200
2790     %12,%15 = LDUX %0, killed %11 :: (load 8 from %ir.arrayidx3, !tbaa !10)
2791     ; CHECK: LDU 200, %0
2792     ; CHECK-LATE: ldu {{[0-9]+}}, 200({{[0-9]+}})
2793     %13 = ADD8 killed %12, killed %7
2794     $x3 = COPY %13
2795     BLR8 implicit $lr8, implicit $rm, implicit $x3
2799 name:            testLDX
2800 # CHECK-ALL: name: testLDX
2801 alignment:       16
2802 exposesReturnsTwice: false
2803 legalized:       false
2804 regBankSelected: false
2805 selected:        false
2806 tracksRegLiveness: true
2807 registers:       
2808   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2809   - { id: 1, class: g8rc, preferred-register: '' }
2810   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
2811   - { id: 3, class: gprc, preferred-register: '' }
2812   - { id: 4, class: g8rc, preferred-register: '' }
2813   - { id: 5, class: g8rc, preferred-register: '' }
2814   - { id: 6, class: g8rc, preferred-register: '' }
2815   - { id: 7, class: g8rc, preferred-register: '' }
2816   - { id: 8, class: gprc, preferred-register: '' }
2817   - { id: 9, class: g8rc, preferred-register: '' }
2818   - { id: 10, class: g8rc, preferred-register: '' }
2819   - { id: 11, class: g8rc, preferred-register: '' }
2820   - { id: 12, class: g8rc, preferred-register: '' }
2821   - { id: 13, class: g8rc, preferred-register: '' }
2822 liveins:         
2823   - { reg: '$x3', virtual-reg: '%0' }
2824   - { reg: '$x4', virtual-reg: '%1' }
2825 frameInfo:       
2826   isFrameAddressTaken: false
2827   isReturnAddressTaken: false
2828   hasStackMap:     false
2829   hasPatchPoint:   false
2830   stackSize:       0
2831   offsetAdjustment: 0
2832   maxAlignment:    0
2833   adjustsStack:    false
2834   hasCalls:        false
2835   stackProtector:  ''
2836   maxCallFrameSize: 4294967295
2837   hasOpaqueSPAdjustment: false
2838   hasVAStart:      false
2839   hasMustTailInVarArgFunc: false
2840   savePoint:       ''
2841   restorePoint:    ''
2842 fixedStack:      
2843 stack:           
2844 constants:       
2845 body:             |
2846   bb.0.entry:
2847     liveins: $x3, $x4
2848   
2849     %1 = COPY $x4
2850     %0 = COPY $x3
2851     %2 = COPY %1.sub_32
2852     %3 = ADDI %2, 1
2853     %5 = IMPLICIT_DEF
2854     %4 = INSERT_SUBREG %5, killed %3, 1
2855     %6 = LI8 120
2856     %7 = LDX %0, killed %6 :: (load 8 from %ir.arrayidx, !tbaa !10)
2857     ; CHECK: LD 120, %0
2858     ; CHECK-LATE: ld 4, 120(3)
2859     %8 = ADDI %2, 2
2860     %10 = IMPLICIT_DEF
2861     %9 = INSERT_SUBREG %10, killed %8, 1
2862     %11 = LI8 280
2863     %12 = LDX %0, killed %11 :: (load 8 from %ir.arrayidx3, !tbaa !10)
2864     ; CHECK: LD 280, %0
2865     ; CHECK-LATE: ld 3, 280(3)
2866     %13 = ADD8 killed %12, killed %7
2867     $x3 = COPY %13
2868     BLR8 implicit $lr8, implicit $rm, implicit $x3
2872 name:            testLFDUX
2873 # CHECK-ALL: name: testLFDUX
2874 alignment:       16
2875 exposesReturnsTwice: false
2876 legalized:       false
2877 regBankSelected: false
2878 selected:        false
2879 tracksRegLiveness: true
2880 registers:       
2881   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2882   - { id: 1, class: g8rc, preferred-register: '' }
2883   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
2884   - { id: 3, class: gprc, preferred-register: '' }
2885   - { id: 4, class: g8rc, preferred-register: '' }
2886   - { id: 5, class: g8rc, preferred-register: '' }
2887   - { id: 6, class: g8rc, preferred-register: '' }
2888   - { id: 7, class: f8rc, preferred-register: '' }
2889   - { id: 8, class: gprc, preferred-register: '' }
2890   - { id: 9, class: g8rc, preferred-register: '' }
2891   - { id: 10, class: g8rc, preferred-register: '' }
2892   - { id: 11, class: g8rc, preferred-register: '' }
2893   - { id: 12, class: f8rc, preferred-register: '' }
2894   - { id: 13, class: f8rc, preferred-register: '' }
2895   - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2896   - { id: 15, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2897 liveins:         
2898   - { reg: '$x3', virtual-reg: '%0' }
2899   - { reg: '$x4', virtual-reg: '%1' }
2900 frameInfo:       
2901   isFrameAddressTaken: false
2902   isReturnAddressTaken: false
2903   hasStackMap:     false
2904   hasPatchPoint:   false
2905   stackSize:       0
2906   offsetAdjustment: 0
2907   maxAlignment:    0
2908   adjustsStack:    false
2909   hasCalls:        false
2910   stackProtector:  ''
2911   maxCallFrameSize: 4294967295
2912   hasOpaqueSPAdjustment: false
2913   hasVAStart:      false
2914   hasMustTailInVarArgFunc: false
2915   savePoint:       ''
2916   restorePoint:    ''
2917 fixedStack:      
2918 stack:           
2919 constants:       
2920 body:             |
2921   bb.0.entry:
2922     liveins: $x3, $x4
2923   
2924     %1 = COPY $x4
2925     %0 = COPY $x3
2926     %2 = COPY %1.sub_32
2927     %3 = ADDI %2, 1
2928     %5 = IMPLICIT_DEF
2929     %4 = INSERT_SUBREG %5, killed %3, 1
2930     %6 = LI8 440
2931     %7,%14 = LFDUX %0, killed %6 :: (load 8 from %ir.arrayidx, !tbaa !12)
2932     ; CHECK: LFDU 440, %0
2933     ; CHECK-LATE: lfdu {{[0-9]+}}, 440({{[0-9]+}})
2934     %8 = ADDI %2, 2
2935     %10 = IMPLICIT_DEF
2936     %9 = INSERT_SUBREG %10, killed %8, 1
2937     %11 = LI8 16
2938     %12,%15 = LFDUX %0, killed %11 :: (load 8 from %ir.arrayidx3, !tbaa !12)
2939     ; CHECK: LFDU 16, %0
2940     ; CHECK-LATE: lfdu {{[0-9]+}}, 16({{[0-9]+}})
2941     %13 = FADD killed %7, killed %12, implicit $rm
2942     $f1 = COPY %13
2943     BLR8 implicit $lr8, implicit $rm, implicit $f1
2947 name:            testLFDX
2948 # CHECK-ALL: name: testLFDX
2949 alignment:       16
2950 exposesReturnsTwice: false
2951 legalized:       false
2952 regBankSelected: false
2953 selected:        false
2954 tracksRegLiveness: true
2955 registers:       
2956   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
2957   - { id: 1, class: g8rc, preferred-register: '' }
2958   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
2959   - { id: 3, class: gprc, preferred-register: '' }
2960   - { id: 4, class: g8rc, preferred-register: '' }
2961   - { id: 5, class: g8rc, preferred-register: '' }
2962   - { id: 6, class: g8rc, preferred-register: '' }
2963   - { id: 7, class: f8rc, preferred-register: '' }
2964   - { id: 8, class: gprc, preferred-register: '' }
2965   - { id: 9, class: g8rc, preferred-register: '' }
2966   - { id: 10, class: g8rc, preferred-register: '' }
2967   - { id: 11, class: g8rc, preferred-register: '' }
2968   - { id: 12, class: f8rc, preferred-register: '' }
2969   - { id: 13, class: f8rc, preferred-register: '' }
2970 liveins:         
2971   - { reg: '$x3', virtual-reg: '%0' }
2972   - { reg: '$x4', virtual-reg: '%1' }
2973 frameInfo:       
2974   isFrameAddressTaken: false
2975   isReturnAddressTaken: false
2976   hasStackMap:     false
2977   hasPatchPoint:   false
2978   stackSize:       0
2979   offsetAdjustment: 0
2980   maxAlignment:    0
2981   adjustsStack:    false
2982   hasCalls:        false
2983   stackProtector:  ''
2984   maxCallFrameSize: 4294967295
2985   hasOpaqueSPAdjustment: false
2986   hasVAStart:      false
2987   hasMustTailInVarArgFunc: false
2988   savePoint:       ''
2989   restorePoint:    ''
2990 fixedStack:      
2991 stack:           
2992 constants:       
2993 body:             |
2994   bb.0.entry:
2995     liveins: $x3, $x4
2996   
2997     %1 = COPY $x4
2998     %0 = LI8 -20
2999     %2 = COPY %1.sub_32
3000     %3 = ADDI %2, 1
3001     %5 = IMPLICIT_DEF
3002     %4 = INSERT_SUBREG %5, killed %3, 1
3003     %6 = RLDIC %4, 3, 29
3004     %7 = LFDX %0, killed %6 :: (load 8 from %ir.arrayidx, !tbaa !12)
3005     ; CHECK: LFD -20, killed %6
3006     ; CHECK-LATE: lfd {{[0-9]+}}, -20({{[0-9]+}})
3007     %8 = ADDI %2, 2
3008     %10 = IMPLICIT_DEF
3009     %9 = INSERT_SUBREG %10, killed %8, 1
3010     %11 = RLDIC %9, 3, 29
3011     %12 = LFDX %0, killed %11 :: (load 8 from %ir.arrayidx3, !tbaa !12)
3012     ; CHECK: LFD -20, killed %11
3013     ; CHECK-LATE: lfd {{[0-9]+}}, -20({{[0-9]+}})
3014     %13 = FADD killed %7, killed %12, implicit $rm
3015     $f1 = COPY %13
3016     BLR8 implicit $lr8, implicit $rm, implicit $f1
3020 name:            testLFSUX
3021 # CHECK-ALL: name: testLFSUX
3022 alignment:       16
3023 exposesReturnsTwice: false
3024 legalized:       false
3025 regBankSelected: false
3026 selected:        false
3027 tracksRegLiveness: true
3028 registers:       
3029   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3030   - { id: 1, class: g8rc, preferred-register: '' }
3031   - { id: 2, class: g8rc, preferred-register: '' }
3032   - { id: 3, class: f8rc, preferred-register: '' }
3033   - { id: 4, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3034   - { id: 5, class: f8rc, preferred-register: '' }
3035   - { id: 6, class: g8rc, preferred-register: '' }
3036   - { id: 7, class: gprc, preferred-register: '' }
3037   - { id: 8, class: f8rc, preferred-register: '' }
3038   - { id: 9, class: f8rc, preferred-register: '' }
3039   - { id: 10, class: f8rc, preferred-register: '' }
3040   - { id: 11, class: g8rc, preferred-register: '' }
3041   - { id: 12, class: gprc, preferred-register: '' }
3042   - { id: 13, class: f8rc, preferred-register: '' }
3043   - { id: 14, class: f8rc, preferred-register: '' }
3044   - { id: 15, class: f8rc, preferred-register: '' }
3045   - { id: 16, class: g8rc, preferred-register: '' }
3046   - { id: 17, class: gprc, preferred-register: '' }
3047   - { id: 18, class: f8rc, preferred-register: '' }
3048   - { id: 19, class: f8rc, preferred-register: '' }
3049   - { id: 20, class: f8rc, preferred-register: '' }
3050   - { id: 21, class: g8rc, preferred-register: '' }
3051   - { id: 22, class: gprc, preferred-register: '' }
3052   - { id: 23, class: g8rc, preferred-register: '' }
3053   - { id: 24, class: vrrc, preferred-register: '' }
3054 liveins:         
3055   - { reg: '$x3', virtual-reg: '%0' }
3056   - { reg: '$x4', virtual-reg: '%1' }
3057 frameInfo:       
3058   isFrameAddressTaken: false
3059   isReturnAddressTaken: false
3060   hasStackMap:     false
3061   hasPatchPoint:   false
3062   stackSize:       0
3063   offsetAdjustment: 0
3064   maxAlignment:    16
3065   adjustsStack:    false
3066   hasCalls:        false
3067   stackProtector:  ''
3068   maxCallFrameSize: 4294967295
3069   hasOpaqueSPAdjustment: false
3070   hasVAStart:      false
3071   hasMustTailInVarArgFunc: false
3072   savePoint:       ''
3073   restorePoint:    ''
3074 fixedStack:      
3075 stack:           
3076   - { id: 0, name: '', type: default, offset: 0, size: 16, alignment: 16, 
3077       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
3078       local-offset: -16, debug-info-variable: '', debug-info-expression: '',
3079       debug-info-location: '' }
3080   - { id: 1, name: '', type: default, offset: 0, size: 4, alignment: 4, 
3081       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
3082       local-offset: -20, debug-info-variable: '', debug-info-expression: '',
3083       debug-info-location: '' }
3084   - { id: 2, name: '', type: default, offset: 0, size: 4, alignment: 4, 
3085       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
3086       local-offset: -24, debug-info-variable: '', debug-info-expression: '',
3087       debug-info-location: '' }
3088   - { id: 3, name: '', type: default, offset: 0, size: 4, alignment: 4, 
3089       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
3090       local-offset: -28, debug-info-variable: '', debug-info-expression: '',
3091       debug-info-location: '' }
3092   - { id: 4, name: '', type: default, offset: 0, size: 4, alignment: 4, 
3093       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
3094       local-offset: -32, debug-info-variable: '', debug-info-expression: '',
3095       debug-info-location: '' }
3096 constants:       
3097 body:             |
3098   bb.0.entry:
3099     liveins: $x3, $x4
3100   
3101     %1 = COPY $x4
3102     %0 = COPY $x3
3103     %2 = LI8 72
3104     %3, %4 = LFSUX %0, killed %2 :: (load 4 from %ir.arrayidx, !tbaa !14)
3105     ; CHECK: LFSU 72, %0
3106     ; CHECK-LATE: lfsu 0, 72(3)
3107     %5 = FCTIWUZ killed %3, implicit $rm
3108     %6 = ADDI8 %stack.4, 0
3109     STFIWX killed %5, $zero8, killed %6
3110     %7 = LWZ 0, %stack.4 :: (load 4 from %stack.4)
3111     %8 = LFS 4, %4 :: (load 4 from %ir.3, !tbaa !14)
3112     %10 = FCTIWUZ %8, implicit $rm
3113     %11 = ADDI8 %stack.1, 0
3114     STFIWX killed %10, $zero8, killed %11
3115     %12 = LWZ 0, %stack.1 :: (load 4 from %stack.1)
3116     %13 = LFS 8, %4 :: (load 4 from %ir.5, !tbaa !14)
3117     %15 = FCTIWUZ %13, implicit $rm
3118     %16 = ADDI8 %stack.2, 0
3119     STFIWX killed %15, $zero8, killed %16
3120     %17 = LWZ 0, %stack.2 :: (load 4 from %stack.2)
3121     %18 = LFS 12, %4 :: (load 4 from %ir.7, !tbaa !14)
3122     %20 = FCTIWUZ %18, implicit $rm
3123     %21 = ADDI8 %stack.3, 0
3124     STFIWX killed %20, $zero8, killed %21
3125     %22 = LWZ 0, %stack.3 :: (load 4 from %stack.3)
3126     STW killed %7, 0, %stack.0 :: (store 4 into %stack.0, align 16)
3127     STW killed %22, 12, %stack.0 :: (store 4 into %stack.0 + 12)
3128     STW killed %17, 8, %stack.0 :: (store 4 into %stack.0 + 8, align 8)
3129     STW killed %12, 4, %stack.0 :: (store 4 into %stack.0 + 4)
3130     %23 = ADDI8 %stack.0, 0
3131     %24 = LVX $zero8, killed %23 :: (load 16 from %stack.0)
3132     $v2 = COPY %24
3133     BLR8 implicit $lr8, implicit $rm, implicit $v2
3137 name:            testLFSX
3138 # CHECK-ALL: name: testLFSX
3139 alignment:       16
3140 exposesReturnsTwice: false
3141 legalized:       false
3142 regBankSelected: false
3143 selected:        false
3144 tracksRegLiveness: true
3145 registers:       
3146   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3147   - { id: 1, class: g8rc, preferred-register: '' }
3148   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
3149   - { id: 3, class: gprc, preferred-register: '' }
3150   - { id: 4, class: g8rc, preferred-register: '' }
3151   - { id: 5, class: g8rc, preferred-register: '' }
3152   - { id: 6, class: g8rc, preferred-register: '' }
3153   - { id: 7, class: f4rc, preferred-register: '' }
3154   - { id: 8, class: gprc, preferred-register: '' }
3155   - { id: 9, class: g8rc, preferred-register: '' }
3156   - { id: 10, class: g8rc, preferred-register: '' }
3157   - { id: 11, class: g8rc, preferred-register: '' }
3158   - { id: 12, class: f4rc, preferred-register: '' }
3159   - { id: 13, class: f4rc, preferred-register: '' }
3160 liveins:         
3161   - { reg: '$x3', virtual-reg: '%0' }
3162   - { reg: '$x4', virtual-reg: '%1' }
3163 frameInfo:       
3164   isFrameAddressTaken: false
3165   isReturnAddressTaken: false
3166   hasStackMap:     false
3167   hasPatchPoint:   false
3168   stackSize:       0
3169   offsetAdjustment: 0
3170   maxAlignment:    0
3171   adjustsStack:    false
3172   hasCalls:        false
3173   stackProtector:  ''
3174   maxCallFrameSize: 4294967295
3175   hasOpaqueSPAdjustment: false
3176   hasVAStart:      false
3177   hasMustTailInVarArgFunc: false
3178   savePoint:       ''
3179   restorePoint:    ''
3180 fixedStack:      
3181 stack:           
3182 constants:       
3183 body:             |
3184   bb.0.entry:
3185     liveins: $x3, $x4
3186   
3187     %1 = COPY $x4
3188     %0 = COPY $x3
3189     %2 = COPY %1.sub_32
3190     %3 = ADDI %2, 1
3191     %5 = IMPLICIT_DEF
3192     %4 = INSERT_SUBREG %5, killed %3, 1
3193     %6 = LI8 88
3194     %7 = LFSX %0, killed %6 :: (load 4 from %ir.arrayidx, !tbaa !14)
3195     ; CHECK: LFS 88, %0
3196     ; CHECK-LATE: lfs 0, 88(3)
3197     %8 = ADDI %2, 2
3198     %10 = IMPLICIT_DEF
3199     %9 = INSERT_SUBREG %10, killed %8, 1
3200     %11 = LI8 -88
3201     %12 = LFSX %0, killed %11 :: (load 4 from %ir.arrayidx3, !tbaa !14)
3202     ; CHECK: LFS -88, %0
3203     ; CHECK-LATE: lfs 1, -88(3)
3204     %13 = FADDS killed %7, killed %12, implicit $rm
3205     $f1 = COPY %13
3206     BLR8 implicit $lr8, implicit $rm, implicit $f1
3210 name:            testLXSDX
3211 # CHECK-ALL: name: testLXSDX
3212 alignment:       16
3213 exposesReturnsTwice: false
3214 legalized:       false
3215 regBankSelected: false
3216 selected:        false
3217 tracksRegLiveness: true
3218 registers:       
3219   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3220   - { id: 1, class: g8rc, preferred-register: '' }
3221   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
3222   - { id: 3, class: gprc, preferred-register: '' }
3223   - { id: 4, class: g8rc, preferred-register: '' }
3224   - { id: 5, class: g8rc, preferred-register: '' }
3225   - { id: 6, class: g8rc, preferred-register: '' }
3226   - { id: 7, class: vsfrc, preferred-register: '' }
3227   - { id: 8, class: gprc, preferred-register: '' }
3228   - { id: 9, class: g8rc, preferred-register: '' }
3229   - { id: 10, class: g8rc, preferred-register: '' }
3230   - { id: 11, class: g8rc, preferred-register: '' }
3231   - { id: 12, class: vsfrc, preferred-register: '' }
3232   - { id: 13, class: vsfrc, preferred-register: '' }
3233 liveins:         
3234   - { reg: '$x3', virtual-reg: '%0' }
3235   - { reg: '$x4', virtual-reg: '%1' }
3236 frameInfo:       
3237   isFrameAddressTaken: false
3238   isReturnAddressTaken: false
3239   hasStackMap:     false
3240   hasPatchPoint:   false
3241   stackSize:       0
3242   offsetAdjustment: 0
3243   maxAlignment:    0
3244   adjustsStack:    false
3245   hasCalls:        false
3246   stackProtector:  ''
3247   maxCallFrameSize: 4294967295
3248   hasOpaqueSPAdjustment: false
3249   hasVAStart:      false
3250   hasMustTailInVarArgFunc: false
3251   savePoint:       ''
3252   restorePoint:    ''
3253 fixedStack:      
3254 stack:           
3255 constants:       
3256 body:             |
3257   bb.0.entry:
3258     liveins: $x3, $x4
3259   
3260     %1 = COPY $x4
3261     %0 = COPY $x3
3262     %2 = COPY %1.sub_32
3263     %3 = ADDI %2, 1
3264     %5 = IMPLICIT_DEF
3265     %4 = INSERT_SUBREG %5, killed %3, 1
3266     %6 = LI8 100
3267     %7 = LXSDX %0, killed %6, implicit $rm :: (load 8 from %ir.arrayidx, !tbaa !12)
3268     ; CHECK: DFLOADf64 100, %0
3269     ; CHECK-LATE: lfd 0, 100(3)
3270     %8 = ADDI %2, 2
3271     %10 = IMPLICIT_DEF
3272     %9 = INSERT_SUBREG %10, killed %8, 1
3273     %11 = LI8 -120
3274     %12 = LXSDX %0, killed %11, implicit $rm :: (load 8 from %ir.arrayidx3, !tbaa !12)
3275     ; CHECK: DFLOADf64 -120, %0
3276     ; CHECK-LATE: lfd 1, -120(3)
3277     %13 = XSADDDP killed %7, killed %12, implicit $rm
3278     $f1 = COPY %13
3279     BLR8 implicit $lr8, implicit $rm, implicit $f1
3283 name:            testLXSSPX
3284 # CHECK-ALL: name: testLXSSPX
3285 alignment:       16
3286 exposesReturnsTwice: false
3287 legalized:       false
3288 regBankSelected: false
3289 selected:        false
3290 tracksRegLiveness: true
3291 registers:       
3292   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3293   - { id: 1, class: g8rc, preferred-register: '' }
3294   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
3295   - { id: 3, class: gprc, preferred-register: '' }
3296   - { id: 4, class: g8rc, preferred-register: '' }
3297   - { id: 5, class: g8rc, preferred-register: '' }
3298   - { id: 6, class: g8rc, preferred-register: '' }
3299   - { id: 7, class: vssrc, preferred-register: '' }
3300   - { id: 8, class: gprc, preferred-register: '' }
3301   - { id: 9, class: g8rc, preferred-register: '' }
3302   - { id: 10, class: g8rc, preferred-register: '' }
3303   - { id: 11, class: g8rc, preferred-register: '' }
3304   - { id: 12, class: vssrc, preferred-register: '' }
3305   - { id: 13, class: vssrc, preferred-register: '' }
3306 liveins:         
3307   - { reg: '$x3', virtual-reg: '%0' }
3308   - { reg: '$x4', virtual-reg: '%1' }
3309 frameInfo:       
3310   isFrameAddressTaken: false
3311   isReturnAddressTaken: false
3312   hasStackMap:     false
3313   hasPatchPoint:   false
3314   stackSize:       0
3315   offsetAdjustment: 0
3316   maxAlignment:    0
3317   adjustsStack:    false
3318   hasCalls:        false
3319   stackProtector:  ''
3320   maxCallFrameSize: 4294967295
3321   hasOpaqueSPAdjustment: false
3322   hasVAStart:      false
3323   hasMustTailInVarArgFunc: false
3324   savePoint:       ''
3325   restorePoint:    ''
3326 fixedStack:      
3327 stack:           
3328 constants:       
3329 body:             |
3330   bb.0.entry:
3331     liveins: $x3, $x4
3332   
3333     %1 = COPY $x4
3334     %0 = COPY $x3
3335     %2 = COPY %1.sub_32
3336     %3 = ADDI %2, 1
3337     %5 = IMPLICIT_DEF
3338     %4 = INSERT_SUBREG %5, killed %3, 1
3339     %6 = LI8 96
3340     %7 = LXSSPX %0, killed %6 :: (load 4 from %ir.arrayidx, !tbaa !14)
3341     ; CHECK: DFLOADf32 96, %0
3342     ; CHECK-LATE: lfs 0, 96(3)
3343     %8 = ADDI %2, 2
3344     %10 = IMPLICIT_DEF
3345     %9 = INSERT_SUBREG %10, killed %8, 1
3346     %11 = LI8 -92
3347     %12 = LXSSPX %0, killed %11 :: (load 4 from %ir.arrayidx3, !tbaa !14)
3348     ; CHECK: DFLOADf32 -92, %0
3349     ; CHECK-LATE: lfs 1, -92(3)
3350     %13 = XSADDSP killed %7, killed %12
3351     $f1 = COPY %13
3352     BLR8 implicit $lr8, implicit $rm, implicit $f1
3356 name:            testLXVX
3357 # CHECK-ALL: name: testLXVX
3358 alignment:       16
3359 exposesReturnsTwice: false
3360 legalized:       false
3361 regBankSelected: false
3362 selected:        false
3363 tracksRegLiveness: true
3364 registers:       
3365   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3366   - { id: 1, class: g8rc, preferred-register: '' }
3367   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
3368   - { id: 3, class: gprc, preferred-register: '' }
3369   - { id: 4, class: g8rc, preferred-register: '' }
3370   - { id: 5, class: g8rc, preferred-register: '' }
3371   - { id: 6, class: g8rc, preferred-register: '' }
3372   - { id: 7, class: vrrc, preferred-register: '' }
3373   - { id: 8, class: gprc, preferred-register: '' }
3374   - { id: 9, class: g8rc, preferred-register: '' }
3375   - { id: 10, class: g8rc, preferred-register: '' }
3376   - { id: 11, class: g8rc, preferred-register: '' }
3377   - { id: 12, class: vrrc, preferred-register: '' }
3378   - { id: 13, class: vrrc, preferred-register: '' }
3379 liveins:         
3380   - { reg: '$x3', virtual-reg: '%0' }
3381   - { reg: '$x4', virtual-reg: '%1' }
3382 frameInfo:       
3383   isFrameAddressTaken: false
3384   isReturnAddressTaken: false
3385   hasStackMap:     false
3386   hasPatchPoint:   false
3387   stackSize:       0
3388   offsetAdjustment: 0
3389   maxAlignment:    0
3390   adjustsStack:    false
3391   hasCalls:        false
3392   stackProtector:  ''
3393   maxCallFrameSize: 4294967295
3394   hasOpaqueSPAdjustment: false
3395   hasVAStart:      false
3396   hasMustTailInVarArgFunc: false
3397   savePoint:       ''
3398   restorePoint:    ''
3399 fixedStack:      
3400 stack:           
3401 constants:       
3402 body:             |
3403   bb.0.entry:
3404     liveins: $x3, $x4
3405   
3406     %1 = COPY $x4
3407     %0 = COPY $x3
3408     %2 = COPY %1.sub_32
3409     %3 = ADDI %2, 1
3410     %5 = IMPLICIT_DEF
3411     %4 = INSERT_SUBREG %5, killed %3, 1
3412     %6 = LI8 32
3413     %7 = LXVX %0, killed %6 :: (load 16 from %ir.arrayidx, !tbaa !3)
3414     ; CHECK: LXV 32, %0
3415     ; CHECK-LATE: lxv 34, 32(3)
3416     %8 = ADDI %2, 2
3417     %10 = IMPLICIT_DEF
3418     %9 = INSERT_SUBREG %10, killed %8, 1
3419     %11 = LI8 -16
3420     %12 = LXVX %0, killed %11 :: (load 16 from %ir.arrayidx3, !tbaa !3)
3421     ; CHECK: LXV -16, %0
3422     ; CHECK-LATE: lxv 35, -16(3)
3423     %13 = VADDUWM killed %12, killed %7
3424     $v2 = COPY %13
3425     BLR8 implicit $lr8, implicit $rm, implicit $v2
3429 name:            testOR
3430 # CHECK-ALL: name: testOR
3431 alignment:       16
3432 exposesReturnsTwice: false
3433 legalized:       false
3434 regBankSelected: false
3435 selected:        false
3436 tracksRegLiveness: true
3437 registers:       
3438   - { id: 0, class: gprc, preferred-register: '' }
3439   - { id: 1, class: g8rc, preferred-register: '' }
3440   - { id: 2, class: gprc, preferred-register: '' }
3441   - { id: 3, class: gprc, preferred-register: '' }
3442 liveins:         
3443   - { reg: '$x3', virtual-reg: '%0' }
3444   - { reg: '$x4', virtual-reg: '%1' }
3445 frameInfo:       
3446   isFrameAddressTaken: false
3447   isReturnAddressTaken: false
3448   hasStackMap:     false
3449   hasPatchPoint:   false
3450   stackSize:       0
3451   offsetAdjustment: 0
3452   maxAlignment:    0
3453   adjustsStack:    false
3454   hasCalls:        false
3455   stackProtector:  ''
3456   maxCallFrameSize: 4294967295
3457   hasOpaqueSPAdjustment: false
3458   hasVAStart:      false
3459   hasMustTailInVarArgFunc: false
3460   savePoint:       ''
3461   restorePoint:    ''
3462 fixedStack:      
3463 stack:           
3464 constants:       
3465 body:             |
3466   bb.0.entry:
3467     liveins: $x3, $x4
3468   
3469     %1 = COPY $x4
3470     %0 = LI 99
3471     %3 = COPY %1.sub_32
3472     %2 = OR %0, %3
3473     ; CHECK: ORI %3, 99
3474     ; CHECK-LATE: ori 3, 4, 99
3475     $x3 = EXTSW_32_64 %2
3476     BLR8 implicit $lr8, implicit $rm, implicit $x3
3480 name:            testOR8
3481 # CHECK-ALL: name: testOR8
3482 alignment:       16
3483 exposesReturnsTwice: false
3484 legalized:       false
3485 regBankSelected: false
3486 selected:        false
3487 tracksRegLiveness: true
3488 registers:       
3489   - { id: 0, class: g8rc, preferred-register: '' }
3490   - { id: 1, class: g8rc, preferred-register: '' }
3491   - { id: 2, class: g8rc, preferred-register: '' }
3492 liveins:         
3493   - { reg: '$x3', virtual-reg: '%0' }
3494   - { reg: '$x4', virtual-reg: '%1' }
3495 frameInfo:       
3496   isFrameAddressTaken: false
3497   isReturnAddressTaken: false
3498   hasStackMap:     false
3499   hasPatchPoint:   false
3500   stackSize:       0
3501   offsetAdjustment: 0
3502   maxAlignment:    0
3503   adjustsStack:    false
3504   hasCalls:        false
3505   stackProtector:  ''
3506   maxCallFrameSize: 4294967295
3507   hasOpaqueSPAdjustment: false
3508   hasVAStart:      false
3509   hasMustTailInVarArgFunc: false
3510   savePoint:       ''
3511   restorePoint:    ''
3512 fixedStack:      
3513 stack:           
3514 constants:       
3515 body:             |
3516   bb.0.entry:
3517     liveins: $x3, $x4
3518   
3519     %1 = COPY $x4
3520     %0 = LI8 777
3521     %2 = OR8 %1, %0
3522     ; CHECK: ORI8 %1, 777
3523     ; CHECK-LATE: ori 3, 4, 777
3524     $x3 = COPY %2
3525     BLR8 implicit $lr8, implicit $rm, implicit $x3
3529 name:            testORI
3530 # CHECK-ALL: name: testORI
3531 alignment:       16
3532 exposesReturnsTwice: false
3533 legalized:       false
3534 regBankSelected: false
3535 selected:        false
3536 tracksRegLiveness: true
3537 registers:       
3538   - { id: 0, class: gprc, preferred-register: '' }
3539   - { id: 1, class: gprc, preferred-register: '' }
3540 liveins:         
3541   - { reg: '$x3', virtual-reg: '%0' }
3542 frameInfo:       
3543   isFrameAddressTaken: false
3544   isReturnAddressTaken: false
3545   hasStackMap:     false
3546   hasPatchPoint:   false
3547   stackSize:       0
3548   offsetAdjustment: 0
3549   maxAlignment:    0
3550   adjustsStack:    false
3551   hasCalls:        false
3552   stackProtector:  ''
3553   maxCallFrameSize: 4294967295
3554   hasOpaqueSPAdjustment: false
3555   hasVAStart:      false
3556   hasMustTailInVarArgFunc: false
3557   savePoint:       ''
3558   restorePoint:    ''
3559 fixedStack:      
3560 stack:           
3561 constants:       
3562 body:             |
3563   bb.0.entry:
3564     liveins: $x3
3565   
3566     %0 = LI 777
3567     %1 = ORI %0, 88
3568     ; CHECK: LI 857
3569     ; CHECK-LATE: li 3, 857
3570     $x3 = EXTSW_32_64 %1
3571     BLR8 implicit $lr8, implicit $rm, implicit $x3
3575 name:            testORI8
3576 # CHECK-ALL: name: testORI8
3577 alignment:       16
3578 exposesReturnsTwice: false
3579 legalized:       false
3580 regBankSelected: false
3581 selected:        false
3582 tracksRegLiveness: true
3583 registers:       
3584   - { id: 0, class: g8rc, preferred-register: '' }
3585   - { id: 1, class: g8rc, preferred-register: '' }
3586 liveins:         
3587   - { reg: '$x3', virtual-reg: '%0' }
3588 frameInfo:       
3589   isFrameAddressTaken: false
3590   isReturnAddressTaken: false
3591   hasStackMap:     false
3592   hasPatchPoint:   false
3593   stackSize:       0
3594   offsetAdjustment: 0
3595   maxAlignment:    0
3596   adjustsStack:    false
3597   hasCalls:        false
3598   stackProtector:  ''
3599   maxCallFrameSize: 4294967295
3600   hasOpaqueSPAdjustment: false
3601   hasVAStart:      false
3602   hasMustTailInVarArgFunc: false
3603   savePoint:       ''
3604   restorePoint:    ''
3605 fixedStack:      
3606 stack:           
3607 constants:       
3608 body:             |
3609   bb.0.entry:
3610     liveins: $x3
3611   
3612     %0 = LI8 8721
3613     %1 = ORI8 %0, 99
3614     ; CHECK: LI8 8819
3615     ; CHECK-LATE: li 3, 8819
3616     $x3 = COPY %1
3617     BLR8 implicit $lr8, implicit $rm, implicit $x3
3621 name:            testRLDCL
3622 # CHECK-ALL: name: testRLDCL
3623 alignment:       16
3624 exposesReturnsTwice: false
3625 legalized:       false
3626 regBankSelected: false
3627 selected:        false
3628 tracksRegLiveness: true
3629 registers:       
3630   - { id: 0, class: g8rc, preferred-register: '' }
3631   - { id: 1, class: g8rc, preferred-register: '' }
3632   - { id: 2, class: gprc, preferred-register: '' }
3633   - { id: 3, class: gprc, preferred-register: '' }
3634   - { id: 4, class: g8rc, preferred-register: '' }
3635 liveins:         
3636   - { reg: '$x3', virtual-reg: '%0' }
3637   - { reg: '$x4', virtual-reg: '%1' }
3638 frameInfo:       
3639   isFrameAddressTaken: false
3640   isReturnAddressTaken: false
3641   hasStackMap:     false
3642   hasPatchPoint:   false
3643   stackSize:       0
3644   offsetAdjustment: 0
3645   maxAlignment:    0
3646   adjustsStack:    false
3647   hasCalls:        false
3648   stackProtector:  ''
3649   maxCallFrameSize: 4294967295
3650   hasOpaqueSPAdjustment: false
3651   hasVAStart:      false
3652   hasMustTailInVarArgFunc: false
3653   savePoint:       ''
3654   restorePoint:    ''
3655 fixedStack:      
3656 stack:           
3657 constants:       
3658 body:             |
3659   bb.0.entry:
3660     liveins: $x3, $x4
3661   
3662     %1 = COPY $x4
3663     %0 = COPY $x3
3664     %2 = COPY %1.sub_32
3665     %3 = LI 14
3666     %4 = RLDCL %0, killed %3, 0
3667     ; CHECK: RLDICL %0, 14, 0
3668     ; CHECK-LATE: rotldi 3, 3, 14
3669     $x3 = COPY %4
3670     BLR8 implicit $lr8, implicit $rm, implicit $x3
3674 name:            testRLDCLo
3675 # CHECK-ALL: name: testRLDCLo
3676 alignment:       16
3677 exposesReturnsTwice: false
3678 legalized:       false
3679 regBankSelected: false
3680 selected:        false
3681 tracksRegLiveness: true
3682 registers:       
3683   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3684   - { id: 1, class: g8rc, preferred-register: '' }
3685   - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3686   - { id: 3, class: gprc, preferred-register: '' }
3687   - { id: 4, class: g8rc, preferred-register: '' }
3688   - { id: 5, class: crrc, preferred-register: '' }
3689   - { id: 6, class: g8rc, preferred-register: '' }
3690 liveins:         
3691   - { reg: '$x3', virtual-reg: '%0' }
3692   - { reg: '$x4', virtual-reg: '%1' }
3693 frameInfo:       
3694   isFrameAddressTaken: false
3695   isReturnAddressTaken: false
3696   hasStackMap:     false
3697   hasPatchPoint:   false
3698   stackSize:       0
3699   offsetAdjustment: 0
3700   maxAlignment:    0
3701   adjustsStack:    false
3702   hasCalls:        false
3703   stackProtector:  ''
3704   maxCallFrameSize: 4294967295
3705   hasOpaqueSPAdjustment: false
3706   hasVAStart:      false
3707   hasMustTailInVarArgFunc: false
3708   savePoint:       ''
3709   restorePoint:    ''
3710 fixedStack:      
3711 stack:           
3712 constants:       
3713 body:             |
3714   bb.0.entry:
3715     liveins: $x3, $x4
3716   
3717     %1 = COPY $x4
3718     %0 = COPY $x3
3719     %2 = RLDICL %1, 0, 58
3720     %3 = LI 37
3721     %4 = RLDCLo %0, killed %3, 0, implicit-def $cr0
3722     ; CHECK: RLDICLo %0, 37, 0, implicit-def $cr0
3723     ; CHECK-LATE: rldicl. 5, 3, 37, 0
3724     %5 = COPY killed $cr0
3725     %6 = ISEL8 %2, %0, %5.sub_eq
3726     $x3 = COPY %6
3727     BLR8 implicit $lr8, implicit $rm, implicit $x3
3731 name:            testRLDCR
3732 # CHECK-ALL: name: testRLDCR
3733 alignment:       16
3734 exposesReturnsTwice: false
3735 legalized:       false
3736 regBankSelected: false
3737 selected:        false
3738 tracksRegLiveness: true
3739 registers:       
3740   - { id: 0, class: g8rc, preferred-register: '' }
3741   - { id: 1, class: g8rc, preferred-register: '' }
3742   - { id: 2, class: gprc, preferred-register: '' }
3743   - { id: 3, class: gprc, preferred-register: '' }
3744   - { id: 4, class: g8rc, preferred-register: '' }
3745 liveins:         
3746   - { reg: '$x3', virtual-reg: '%0' }
3747   - { reg: '$x4', virtual-reg: '%1' }
3748 frameInfo:       
3749   isFrameAddressTaken: false
3750   isReturnAddressTaken: false
3751   hasStackMap:     false
3752   hasPatchPoint:   false
3753   stackSize:       0
3754   offsetAdjustment: 0
3755   maxAlignment:    0
3756   adjustsStack:    false
3757   hasCalls:        false
3758   stackProtector:  ''
3759   maxCallFrameSize: 4294967295
3760   hasOpaqueSPAdjustment: false
3761   hasVAStart:      false
3762   hasMustTailInVarArgFunc: false
3763   savePoint:       ''
3764   restorePoint:    ''
3765 fixedStack:      
3766 stack:           
3767 constants:       
3768 body:             |
3769   bb.0.entry:
3770     liveins: $x3, $x4
3771   
3772     %1 = COPY $x4
3773     %0 = COPY $x3
3774     %2 = COPY %1.sub_32
3775     %3 = LI 0
3776     %4 = RLDCR %0, killed %3, 0
3777     ; CHECK: RLDICR %0, 0, 0
3778     ; CHECK-LATE: rldicr 3, 3, 0, 0
3779     $x3 = COPY %4
3780     BLR8 implicit $lr8, implicit $rm, implicit $x3
3784 name:            testRLDCRo
3785 # CHECK-ALL: name: testRLDCRo
3786 alignment:       16
3787 exposesReturnsTwice: false
3788 legalized:       false
3789 regBankSelected: false
3790 selected:        false
3791 tracksRegLiveness: true
3792 registers:       
3793   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3794   - { id: 1, class: g8rc, preferred-register: '' }
3795   - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3796   - { id: 3, class: gprc, preferred-register: '' }
3797   - { id: 4, class: g8rc, preferred-register: '' }
3798   - { id: 5, class: crrc, preferred-register: '' }
3799   - { id: 6, class: g8rc, preferred-register: '' }
3800 liveins:         
3801   - { reg: '$x3', virtual-reg: '%0' }
3802   - { reg: '$x4', virtual-reg: '%1' }
3803 frameInfo:       
3804   isFrameAddressTaken: false
3805   isReturnAddressTaken: false
3806   hasStackMap:     false
3807   hasPatchPoint:   false
3808   stackSize:       0
3809   offsetAdjustment: 0
3810   maxAlignment:    0
3811   adjustsStack:    false
3812   hasCalls:        false
3813   stackProtector:  ''
3814   maxCallFrameSize: 4294967295
3815   hasOpaqueSPAdjustment: false
3816   hasVAStart:      false
3817   hasMustTailInVarArgFunc: false
3818   savePoint:       ''
3819   restorePoint:    ''
3820 fixedStack:      
3821 stack:           
3822 constants:       
3823 body:             |
3824   bb.0.entry:
3825     liveins: $x3, $x4
3826   
3827     %1 = COPY $x4
3828     %0 = COPY $x3
3829     %2 = RLDICL %1, 0, 58
3830     %3 = LI 18
3831     %4 = RLDCRo %0, killed %3, 0, implicit-def $cr0
3832     ; CHECK: RLDICRo %0, 18, 0, implicit-def $cr0
3833     ; CHECK-LATE: rldicr. 5, 3, 18, 0
3834     %5 = COPY killed $cr0
3835     %6 = ISEL8 %2, %0, %5.sub_eq
3836     $x3 = COPY %6
3837     BLR8 implicit $lr8, implicit $rm, implicit $x3
3841 name:            testRLDICL
3842 # CHECK-ALL: name: testRLDICL
3843 alignment:       16
3844 exposesReturnsTwice: false
3845 legalized:       false
3846 regBankSelected: false
3847 selected:        false
3848 tracksRegLiveness: true
3849 registers:       
3850   - { id: 0, class: g8rc, preferred-register: '' }
3851   - { id: 1, class: g8rc, preferred-register: '' }
3852 liveins:         
3853   - { reg: '$x3', virtual-reg: '%0' }
3854 frameInfo:       
3855   isFrameAddressTaken: false
3856   isReturnAddressTaken: false
3857   hasStackMap:     false
3858   hasPatchPoint:   false
3859   stackSize:       0
3860   offsetAdjustment: 0
3861   maxAlignment:    0
3862   adjustsStack:    false
3863   hasCalls:        false
3864   stackProtector:  ''
3865   maxCallFrameSize: 4294967295
3866   hasOpaqueSPAdjustment: false
3867   hasVAStart:      false
3868   hasMustTailInVarArgFunc: false
3869   savePoint:       ''
3870   restorePoint:    ''
3871 fixedStack:      
3872 stack:           
3873 constants:       
3874 body:             |
3875   bb.0.entry:
3876     liveins: $x3
3877   
3878     %0 = LI8 -1
3879     %1 = RLDICL %0, 53, 49
3880     ; CHECK: LI8 32767
3881     ; CHECK-LATE: li 3, 32767
3882     $x3 = COPY %1
3883     BLR8 implicit $lr8, implicit $rm, implicit $x3
3887 name:            testRLDICLo
3888 # CHECK-ALL: name: testRLDICLo
3889 alignment:       16
3890 exposesReturnsTwice: false
3891 legalized:       false
3892 regBankSelected: false
3893 selected:        false
3894 tracksRegLiveness: true
3895 registers:       
3896   - { id: 0, class: g8rc, preferred-register: '' }
3897   - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3898   - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3899   - { id: 3, class: crrc, preferred-register: '' }
3900   - { id: 4, class: g8rc, preferred-register: '' }
3901 liveins:         
3902   - { reg: '$x3', virtual-reg: '%0' }
3903   - { reg: '$x4', virtual-reg: '%1' }
3904 frameInfo:       
3905   isFrameAddressTaken: false
3906   isReturnAddressTaken: false
3907   hasStackMap:     false
3908   hasPatchPoint:   false
3909   stackSize:       0
3910   offsetAdjustment: 0
3911   maxAlignment:    0
3912   adjustsStack:    false
3913   hasCalls:        false
3914   stackProtector:  ''
3915   maxCallFrameSize: 4294967295
3916   hasOpaqueSPAdjustment: false
3917   hasVAStart:      false
3918   hasMustTailInVarArgFunc: false
3919   savePoint:       ''
3920   restorePoint:    ''
3921 fixedStack:      
3922 stack:           
3923 constants:       
3924 body:             |
3925   bb.0.entry:
3926     liveins: $x3, $x4
3927   
3928     %1 = COPY $x4
3929     %0 = LI8 -1
3930     %2 = RLDICLo %0, 53, 48, implicit-def $cr0
3931     ; CHECK: ANDIo8 %0, 65535
3932     ; CHECK-LATE: li 3, -1
3933     ; CHECK-LATE: andi. 3, 3, 65535
3934     %3 = COPY killed $cr0
3935     %4 = ISEL8 %1, %2, %3.sub_eq
3936     $x3 = COPY %4
3937     BLR8 implicit $lr8, implicit $rm, implicit $x3
3941 name:            testRLDICLo2
3942 # CHECK-ALL: name: testRLDICLo2
3943 alignment:       16
3944 exposesReturnsTwice: false
3945 legalized:       false
3946 regBankSelected: false
3947 selected:        false
3948 tracksRegLiveness: true
3949 registers:       
3950   - { id: 0, class: g8rc, preferred-register: '' }
3951   - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3952   - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' }
3953   - { id: 3, class: crrc, preferred-register: '' }
3954   - { id: 4, class: g8rc, preferred-register: '' }
3955 liveins:         
3956   - { reg: '$x3', virtual-reg: '%0' }
3957   - { reg: '$x4', virtual-reg: '%1' }
3958 frameInfo:       
3959   isFrameAddressTaken: false
3960   isReturnAddressTaken: false
3961   hasStackMap:     false
3962   hasPatchPoint:   false
3963   stackSize:       0
3964   offsetAdjustment: 0
3965   maxAlignment:    0
3966   adjustsStack:    false
3967   hasCalls:        false
3968   stackProtector:  ''
3969   maxCallFrameSize: 4294967295
3970   hasOpaqueSPAdjustment: false
3971   hasVAStart:      false
3972   hasMustTailInVarArgFunc: false
3973   savePoint:       ''
3974   restorePoint:    ''
3975 fixedStack:      
3976 stack:           
3977 constants:       
3978 body:             |
3979   bb.0.entry:
3980     liveins: $x3, $x4
3981   
3982     %1 = COPY $x4
3983     %0 = LI8 200
3984     %2 = RLDICLo %0, 61, 3, implicit-def $cr0
3985     ; CHECK: LI8 25
3986     ; CHECK: ANDIo8 %0, 25
3987     ; CHECK-LATE-NOT: andi.
3988     %3 = COPY killed $cr0
3989     %4 = ISEL8 %1, %2, %3.sub_eq
3990     $x3 = COPY %4
3991     BLR8 implicit $lr8, implicit $rm, implicit $x3
3995 name:            testRLDICLo3
3996 # CHECK-ALL: name: testRLDICLo3
3997 alignment:       16
3998 exposesReturnsTwice: false
3999 legalized:       false
4000 regBankSelected: false
4001 selected:        false
4002 tracksRegLiveness: true
4003 registers:       
4004   - { id: 0, class: g8rc, preferred-register: '' }
4005   - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }
4006   - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' }
4007   - { id: 3, class: crrc, preferred-register: '' }
4008   - { id: 4, class: g8rc, preferred-register: '' }
4009 liveins:         
4010   - { reg: '$x3', virtual-reg: '%0' }
4011   - { reg: '$x4', virtual-reg: '%1' }
4012 frameInfo:       
4013   isFrameAddressTaken: false
4014   isReturnAddressTaken: false
4015   hasStackMap:     false
4016   hasPatchPoint:   false
4017   stackSize:       0
4018   offsetAdjustment: 0
4019   maxAlignment:    0
4020   adjustsStack:    false
4021   hasCalls:        false
4022   stackProtector:  ''
4023   maxCallFrameSize: 4294967295
4024   hasOpaqueSPAdjustment: false
4025   hasVAStart:      false
4026   hasMustTailInVarArgFunc: false
4027   savePoint:       ''
4028   restorePoint:    ''
4029 fixedStack:      
4030 stack:           
4031 constants:       
4032 body:             |
4033   bb.0.entry:
4034     liveins: $x3, $x4
4035   
4036     %1 = COPY $x4
4037     %0 = LI8 2
4038     %2 = RLDICLo %0, 32, 32, implicit-def $cr0
4039     ; CHECK: ANDIo8 %0, 0
4040     ; CHECK-LATE: li 3, 2
4041     ; CHECK-LATE: andi. 3, 3, 0
4042     %3 = COPY killed $cr0
4043     %4 = ISEL8 %1, %2, %3.sub_eq
4044     $x3 = COPY %4
4045     BLR8 implicit $lr8, implicit $rm, implicit $x3
4049 name:            testRLWINM
4050 # CHECK-ALL: name: testRLWINM
4051 alignment:       16
4052 exposesReturnsTwice: false
4053 legalized:       false
4054 regBankSelected: false
4055 selected:        false
4056 tracksRegLiveness: true
4057 registers:       
4058   - { id: 0, class: g8rc, preferred-register: '' }
4059   - { id: 1, class: gprc, preferred-register: '' }
4060   - { id: 2, class: gprc, preferred-register: '' }
4061   - { id: 3, class: g8rc, preferred-register: '' }
4062   - { id: 4, class: gprc, preferred-register: '' }
4063 liveins:         
4064   - { reg: '$x3', virtual-reg: '%0' }
4065 frameInfo:       
4066   isFrameAddressTaken: false
4067   isReturnAddressTaken: false
4068   hasStackMap:     false
4069   hasPatchPoint:   false
4070   stackSize:       0
4071   offsetAdjustment: 0
4072   maxAlignment:    0
4073   adjustsStack:    false
4074   hasCalls:        false
4075   stackProtector:  ''
4076   maxCallFrameSize: 4294967295
4077   hasOpaqueSPAdjustment: false
4078   hasVAStart:      false
4079   hasMustTailInVarArgFunc: false
4080   savePoint:       ''
4081   restorePoint:    ''
4082 fixedStack:      
4083 stack:           
4084 constants:       
4085 body:             |
4086   bb.0.entry:
4087     liveins: $x3
4088   
4089     %0 = COPY $x3
4090     %1 = COPY %0.sub_32
4091     %3 = IMPLICIT_DEF
4092     %2 = LI 17
4093     %4 = RLWINM killed %2, 4, 20, 27
4094     ; CHECK: LI 272
4095     ; CHECK-LATE: li 3, 272
4096     $x3 = EXTSW_32_64 %4
4097     BLR8 implicit $lr8, implicit $rm, implicit $x3
4101 name:            testRLWINMFullReg
4102 # CHECK-ALL: name: testRLWINMFullReg
4103 alignment:       16
4104 exposesReturnsTwice: false
4105 legalized:       false
4106 regBankSelected: false
4107 selected:        false
4108 tracksRegLiveness: true
4109 registers:       
4110   - { id: 0, class: g8rc, preferred-register: '' }
4111   - { id: 1, class: gprc, preferred-register: '' }
4112   - { id: 2, class: gprc, preferred-register: '' }
4113   - { id: 3, class: g8rc, preferred-register: '' }
4114   - { id: 4, class: gprc, preferred-register: '' }
4115 liveins:         
4116   - { reg: '$x3', virtual-reg: '%0' }
4117 frameInfo:       
4118   isFrameAddressTaken: false
4119   isReturnAddressTaken: false
4120   hasStackMap:     false
4121   hasPatchPoint:   false
4122   stackSize:       0
4123   offsetAdjustment: 0
4124   maxAlignment:    0
4125   adjustsStack:    false
4126   hasCalls:        false
4127   stackProtector:  ''
4128   maxCallFrameSize: 4294967295
4129   hasOpaqueSPAdjustment: false
4130   hasVAStart:      false
4131   hasMustTailInVarArgFunc: false
4132   savePoint:       ''
4133   restorePoint:    ''
4134 fixedStack:      
4135 stack:           
4136 constants:       
4137 body:             |
4138   bb.0.entry:
4139     liveins: $x3
4140   
4141     %0 = COPY $x3
4142     %1 = COPY %0.sub_32
4143     %3 = IMPLICIT_DEF
4144     %2 = LI 2
4145     %4 = RLWINM killed %2, 31, 0, 31
4146     ; CHECK: LI 1
4147     ; CHECK-LATE: li 3, 1
4148     $x3 = EXTSW_32_64 %4
4149     BLR8 implicit $lr8, implicit $rm, implicit $x3
4153 name:            testRLWINMFullRegOutOfRange
4154 # CHECK-ALL: name: testRLWINMFullRegOutOfRange
4155 alignment:       16
4156 exposesReturnsTwice: false
4157 legalized:       false
4158 regBankSelected: false
4159 selected:        false
4160 tracksRegLiveness: true
4161 registers:       
4162   - { id: 0, class: g8rc, preferred-register: '' }
4163   - { id: 1, class: gprc, preferred-register: '' }
4164   - { id: 2, class: gprc, preferred-register: '' }
4165   - { id: 3, class: g8rc, preferred-register: '' }
4166   - { id: 4, class: gprc, preferred-register: '' }
4167 liveins:         
4168   - { reg: '$x3', virtual-reg: '%0' }
4169 frameInfo:       
4170   isFrameAddressTaken: false
4171   isReturnAddressTaken: false
4172   hasStackMap:     false
4173   hasPatchPoint:   false
4174   stackSize:       0
4175   offsetAdjustment: 0
4176   maxAlignment:    0
4177   adjustsStack:    false
4178   hasCalls:        false
4179   stackProtector:  ''
4180   maxCallFrameSize: 4294967295
4181   hasOpaqueSPAdjustment: false
4182   hasVAStart:      false
4183   hasMustTailInVarArgFunc: false
4184   savePoint:       ''
4185   restorePoint:    ''
4186 fixedStack:      
4187 stack:           
4188 constants:       
4189 body:             |
4190   bb.0.entry:
4191     liveins: $x3
4192   
4193     %0 = COPY $x3
4194     %1 = COPY %0.sub_32
4195     %3 = IMPLICIT_DEF
4196     %2 = LI 1
4197     %4 = RLWINM killed %2, 31, 0, 31
4198     ; CHECK: RLWINM killed %2, 31, 0, 31
4199     ; CHECK-LATE: rotlwi 3, 3, 31
4200     $x3 = EXTSW_32_64 %4
4201     BLR8 implicit $lr8, implicit $rm, implicit $x3
4205 name:            testRLWINM8
4206 # CHECK-ALL: name: testRLWINM8
4207 alignment:       16
4208 exposesReturnsTwice: false
4209 legalized:       false
4210 regBankSelected: false
4211 selected:        false
4212 tracksRegLiveness: true
4213 registers:       
4214   - { id: 0, class: g8rc, preferred-register: '' }
4215   - { id: 1, class: g8rc, preferred-register: '' }
4216 liveins:         
4217   - { reg: '$x3', virtual-reg: '%0' }
4218 frameInfo:       
4219   isFrameAddressTaken: false
4220   isReturnAddressTaken: false
4221   hasStackMap:     false
4222   hasPatchPoint:   false
4223   stackSize:       0
4224   offsetAdjustment: 0
4225   maxAlignment:    0
4226   adjustsStack:    false
4227   hasCalls:        false
4228   stackProtector:  ''
4229   maxCallFrameSize: 4294967295
4230   hasOpaqueSPAdjustment: false
4231   hasVAStart:      false
4232   hasMustTailInVarArgFunc: false
4233   savePoint:       ''
4234   restorePoint:    ''
4235 fixedStack:      
4236 stack:           
4237 constants:       
4238 body:             |
4239   bb.0.entry:
4240     liveins: $x3
4241   
4242     %0 = LI8 234
4243     %1 = RLWINM8 %0, 4, 20, 27
4244     ; CHECK: LI8 3744
4245     ; CHECK-LATE: li 3, 3744
4246     $x3 = COPY %1
4247     BLR8 implicit $lr8, implicit $rm, implicit $x3
4251 name:            testRLWINMo
4252 # CHECK-ALL: name: testRLWINMo
4253 alignment:       16
4254 exposesReturnsTwice: false
4255 legalized:       false
4256 regBankSelected: false
4257 selected:        false
4258 tracksRegLiveness: true
4259 registers:       
4260   - { id: 0, class: g8rc, preferred-register: '' }
4261   - { id: 1, class: g8rc, preferred-register: '' }
4262   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
4263   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
4264   - { id: 4, class: gprc, preferred-register: '' }
4265   - { id: 5, class: crrc, preferred-register: '' }
4266   - { id: 6, class: gprc, preferred-register: '' }
4267   - { id: 7, class: g8rc, preferred-register: '' }
4268   - { id: 8, class: g8rc, preferred-register: '' }
4269   - { id: 9, class: g8rc, preferred-register: '' }
4270 liveins:         
4271   - { reg: '$x3', virtual-reg: '%0' }
4272   - { reg: '$x4', virtual-reg: '%1' }
4273 frameInfo:       
4274   isFrameAddressTaken: false
4275   isReturnAddressTaken: false
4276   hasStackMap:     false
4277   hasPatchPoint:   false
4278   stackSize:       0
4279   offsetAdjustment: 0
4280   maxAlignment:    0
4281   adjustsStack:    false
4282   hasCalls:        false
4283   stackProtector:  ''
4284   maxCallFrameSize: 4294967295
4285   hasOpaqueSPAdjustment: false
4286   hasVAStart:      false
4287   hasMustTailInVarArgFunc: false
4288   savePoint:       ''
4289   restorePoint:    ''
4290 fixedStack:      
4291 stack:           
4292 constants:       
4293 body:             |
4294   bb.0.entry:
4295     liveins: $x3, $x4
4296   
4297     %1 = COPY $x4
4298     %0 = COPY $x3
4299     %2 = COPY %1.sub_32
4300     %3 = LI -22
4301     %4 = RLWINMo %3, 0, 24, 31, implicit-def $cr0
4302     ; CHECK: LI -22
4303     ; CHECK: ANDIo %3, 65514
4304     ; CHECK-LATE: li 3, -22
4305     ; CHECK-LATE: andi. 5, 3, 234
4306     %5 = COPY killed $cr0
4307     %6 = ISEL %2, %3, %5.sub_eq
4308     %8 = IMPLICIT_DEF
4309     %7 = INSERT_SUBREG %8, killed %6, 1
4310     %9 = RLDICL killed %7, 0, 32
4311     $x3 = COPY %9
4312     BLR8 implicit $lr8, implicit $rm, implicit $x3
4316 name:            testRLWINMo2
4317 # CHECK-ALL: name: testRLWINMo2
4318 alignment:       16
4319 exposesReturnsTwice: false
4320 legalized:       false
4321 regBankSelected: false
4322 selected:        false
4323 tracksRegLiveness: true
4324 registers:       
4325   - { id: 0, class: g8rc, preferred-register: '' }
4326   - { id: 1, class: g8rc, preferred-register: '' }
4327   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
4328   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
4329   - { id: 4, class: gprc, preferred-register: '' }
4330   - { id: 5, class: crrc, preferred-register: '' }
4331   - { id: 6, class: gprc, preferred-register: '' }
4332   - { id: 7, class: g8rc, preferred-register: '' }
4333   - { id: 8, class: g8rc, preferred-register: '' }
4334   - { id: 9, class: g8rc, preferred-register: '' }
4335 liveins:         
4336   - { reg: '$x3', virtual-reg: '%0' }
4337   - { reg: '$x4', virtual-reg: '%1' }
4338 frameInfo:       
4339   isFrameAddressTaken: false
4340   isReturnAddressTaken: false
4341   hasStackMap:     false
4342   hasPatchPoint:   false
4343   stackSize:       0
4344   offsetAdjustment: 0
4345   maxAlignment:    0
4346   adjustsStack:    false
4347   hasCalls:        false
4348   stackProtector:  ''
4349   maxCallFrameSize: 4294967295
4350   hasOpaqueSPAdjustment: false
4351   hasVAStart:      false
4352   hasMustTailInVarArgFunc: false
4353   savePoint:       ''
4354   restorePoint:    ''
4355 fixedStack:      
4356 stack:           
4357 constants:       
4358 body:             |
4359   bb.0.entry:
4360     liveins: $x3, $x4
4361   
4362     %1 = COPY $x4
4363     %0 = COPY $x3
4364     %2 = COPY %1.sub_32
4365     %3 = LI -22
4366     %4 = RLWINMo %3, 5, 24, 31, implicit-def $cr0
4367     ; CHECK: LI -22
4368     ; CHECK-NOT: ANDIo8 %3, 65514
4369     ; CHECK-LATE-NOT: andi.
4370     %5 = COPY killed $cr0
4371     %6 = ISEL %2, %3, %5.sub_eq
4372     %8 = IMPLICIT_DEF
4373     %7 = INSERT_SUBREG %8, killed %6, 1
4374     %9 = RLDICL killed %7, 0, 32
4375     $x3 = COPY %9
4376     BLR8 implicit $lr8, implicit $rm, implicit $x3
4380 name:            testRLWINM8o
4381 # CHECK-ALL: name: testRLWINM8o
4382 alignment:       16
4383 exposesReturnsTwice: false
4384 legalized:       false
4385 regBankSelected: false
4386 selected:        false
4387 tracksRegLiveness: true
4388 registers:       
4389   - { id: 0, class: g8rc, preferred-register: '' }
4390   - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }
4391   - { id: 2, class: g8rc, preferred-register: '' }
4392   - { id: 3, class: g8rc, preferred-register: '' }
4393   - { id: 4, class: g8rc, preferred-register: '' }
4394   - { id: 5, class: g8rc, preferred-register: '' }
4395   - { id: 6, class: g8rc_and_g8rc_nox0, preferred-register: '' }
4396   - { id: 7, class: crrc, preferred-register: '' }
4397   - { id: 8, class: g8rc, preferred-register: '' }
4398 liveins:         
4399   - { reg: '$x3', virtual-reg: '%0' }
4400   - { reg: '$x4', virtual-reg: '%1' }
4401 frameInfo:       
4402   isFrameAddressTaken: false
4403   isReturnAddressTaken: false
4404   hasStackMap:     false
4405   hasPatchPoint:   false
4406   stackSize:       0
4407   offsetAdjustment: 0
4408   maxAlignment:    0
4409   adjustsStack:    false
4410   hasCalls:        false
4411   stackProtector:  ''
4412   maxCallFrameSize: 4294967295
4413   hasOpaqueSPAdjustment: false
4414   hasVAStart:      false
4415   hasMustTailInVarArgFunc: false
4416   savePoint:       ''
4417   restorePoint:    ''
4418 fixedStack:      
4419 stack:           
4420 constants:       
4421 body:             |
4422   bb.0.entry:
4423     liveins: $x3, $x4
4424   
4425     %1 = COPY $x4
4426     %0 = COPY $x3
4427     %2 = LI8 -18
4428     %3 = RLWINM8o %2, 4, 20, 27, implicit-def $cr0
4429     ; CHECK: ANDIo8 %2, 3808
4430     ; CHECK-LATE: li 3, -18
4431     ; CHECK-LATE: andi. 3, 3, 3808
4432     %7 = COPY killed $cr0
4433     %6 = RLDICL killed %3, 0, 32
4434     %8 = ISEL8 %1, %6, %7.sub_eq
4435     $x3 = COPY %8
4436     BLR8 implicit $lr8, implicit $rm, implicit $x3
4440 name:            testSLD
4441 # CHECK-ALL: name: testSLD
4442 alignment:       16
4443 exposesReturnsTwice: false
4444 legalized:       false
4445 regBankSelected: false
4446 selected:        false
4447 tracksRegLiveness: true
4448 registers:       
4449   - { id: 0, class: g8rc, preferred-register: '' }
4450   - { id: 1, class: g8rc, preferred-register: '' }
4451   - { id: 2, class: gprc, preferred-register: '' }
4452   - { id: 3, class: g8rc, preferred-register: '' }
4453 liveins:         
4454   - { reg: '$x3', virtual-reg: '%0' }
4455   - { reg: '$x4', virtual-reg: '%1' }
4456 frameInfo:       
4457   isFrameAddressTaken: false
4458   isReturnAddressTaken: false
4459   hasStackMap:     false
4460   hasPatchPoint:   false
4461   stackSize:       0
4462   offsetAdjustment: 0
4463   maxAlignment:    0
4464   adjustsStack:    false
4465   hasCalls:        false
4466   stackProtector:  ''
4467   maxCallFrameSize: 4294967295
4468   hasOpaqueSPAdjustment: false
4469   hasVAStart:      false
4470   hasMustTailInVarArgFunc: false
4471   savePoint:       ''
4472   restorePoint:    ''
4473 fixedStack:      
4474 stack:           
4475 constants:       
4476 body:             |
4477   bb.0.entry:
4478     liveins: $x3, $x4
4479   
4480     %1 = COPY $x4
4481     %0 = COPY $x3
4482     %2 = LI 13
4483     %3 = SLD %0, killed %2
4484     ; CHECK: RLDICR %0, 13, 50
4485     ; CHECK-LATE: sldi 3, 3, 13
4486     $x3 = COPY %3
4487     BLR8 implicit $lr8, implicit $rm, implicit $x3
4491 name:            testSLDo
4492 # CHECK-ALL: name: testSLDo
4493 alignment:       16
4494 exposesReturnsTwice: false
4495 legalized:       false
4496 regBankSelected: false
4497 selected:        false
4498 tracksRegLiveness: true
4499 registers:       
4500   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
4501   - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }
4502   - { id: 2, class: gprc, preferred-register: '' }
4503   - { id: 3, class: g8rc, preferred-register: '' }
4504   - { id: 4, class: crrc, preferred-register: '' }
4505   - { id: 5, class: g8rc, preferred-register: '' }
4506 liveins:         
4507   - { reg: '$x3', virtual-reg: '%0' }
4508   - { reg: '$x4', virtual-reg: '%1' }
4509 frameInfo:       
4510   isFrameAddressTaken: false
4511   isReturnAddressTaken: false
4512   hasStackMap:     false
4513   hasPatchPoint:   false
4514   stackSize:       0
4515   offsetAdjustment: 0
4516   maxAlignment:    0
4517   adjustsStack:    false
4518   hasCalls:        false
4519   stackProtector:  ''
4520   maxCallFrameSize: 4294967295
4521   hasOpaqueSPAdjustment: false
4522   hasVAStart:      false
4523   hasMustTailInVarArgFunc: false
4524   savePoint:       ''
4525   restorePoint:    ''
4526 fixedStack:      
4527 stack:           
4528 constants:       
4529 body:             |
4530   bb.0.entry:
4531     liveins: $x3, $x4
4532   
4533     %1 = COPY $x4
4534     %0 = COPY $x3
4535     %2 = LI 17
4536     %3 = SLDo %0, killed %2, implicit-def $cr0
4537     ; CHECK: RLDICRo %0, 17, 46, implicit-def $cr0
4538     ; CHECK-LATE: rldicr. 5, 3, 17, 46
4539     %4 = COPY killed $cr0
4540     %5 = ISEL8 %1, %0, %4.sub_eq
4541     $x3 = COPY %5
4542     BLR8 implicit $lr8, implicit $rm, implicit $x3
4546 name:            testSRD
4547 # CHECK-ALL: name: testSRD
4548 alignment:       16
4549 exposesReturnsTwice: false
4550 legalized:       false
4551 regBankSelected: false
4552 selected:        false
4553 tracksRegLiveness: true
4554 registers:       
4555   - { id: 0, class: g8rc, preferred-register: '' }
4556   - { id: 1, class: g8rc, preferred-register: '' }
4557   - { id: 2, class: gprc, preferred-register: '' }
4558   - { id: 3, class: g8rc, preferred-register: '' }
4559 liveins:         
4560   - { reg: '$x3', virtual-reg: '%0' }
4561   - { reg: '$x4', virtual-reg: '%1' }
4562 frameInfo:       
4563   isFrameAddressTaken: false
4564   isReturnAddressTaken: false
4565   hasStackMap:     false
4566   hasPatchPoint:   false
4567   stackSize:       0
4568   offsetAdjustment: 0
4569   maxAlignment:    0
4570   adjustsStack:    false
4571   hasCalls:        false
4572   stackProtector:  ''
4573   maxCallFrameSize: 4294967295
4574   hasOpaqueSPAdjustment: false
4575   hasVAStart:      false
4576   hasMustTailInVarArgFunc: false
4577   savePoint:       ''
4578   restorePoint:    ''
4579 fixedStack:      
4580 stack:           
4581 constants:       
4582 body:             |
4583   bb.0.entry:
4584     liveins: $x3, $x4
4585   
4586     %1 = COPY $x4
4587     %0 = COPY $x3
4588     %2 = LI 4
4589     %3 = SRD %0, killed %2
4590     ; CHECK: RLDICL %0, 60, 4
4591     ; CHECK-LATE: rldicl 3, 3, 60, 4
4592     $x3 = COPY %3
4593     BLR8 implicit $lr8, implicit $rm, implicit $x3
4597 name:            testSRDo
4598 # CHECK-ALL: name: testSRDo
4599 alignment:       16
4600 exposesReturnsTwice: false
4601 legalized:       false
4602 regBankSelected: false
4603 selected:        false
4604 tracksRegLiveness: true
4605 registers:       
4606   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
4607   - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }
4608   - { id: 2, class: gprc, preferred-register: '' }
4609   - { id: 3, class: g8rc, preferred-register: '' }
4610   - { id: 4, class: crrc, preferred-register: '' }
4611   - { id: 5, class: g8rc, preferred-register: '' }
4612 liveins:         
4613   - { reg: '$x3', virtual-reg: '%0' }
4614   - { reg: '$x4', virtual-reg: '%1' }
4615 frameInfo:       
4616   isFrameAddressTaken: false
4617   isReturnAddressTaken: false
4618   hasStackMap:     false
4619   hasPatchPoint:   false
4620   stackSize:       0
4621   offsetAdjustment: 0
4622   maxAlignment:    0
4623   adjustsStack:    false
4624   hasCalls:        false
4625   stackProtector:  ''
4626   maxCallFrameSize: 4294967295
4627   hasOpaqueSPAdjustment: false
4628   hasVAStart:      false
4629   hasMustTailInVarArgFunc: false
4630   savePoint:       ''
4631   restorePoint:    ''
4632 fixedStack:      
4633 stack:           
4634 constants:       
4635 body:             |
4636   bb.0.entry:
4637     liveins: $x3, $x4
4638   
4639     %1 = COPY $x4
4640     %0 = COPY $x3
4641     %2 = LI 17
4642     %3 = SRDo %0, killed %2, implicit-def $cr0
4643     ; CHECK: RLDICLo %0, 47, 17, implicit-def $cr0
4644     ; CHECK-LATE: rldicl. 5, 3, 47, 17
4645     %4 = COPY killed $cr0
4646     %5 = ISEL8 %1, %0, %4.sub_eq
4647     $x3 = COPY %5
4648     BLR8 implicit $lr8, implicit $rm, implicit $x3
4652 name:            testSLW
4653 # CHECK-ALL: name: testSLW
4654 alignment:       16
4655 exposesReturnsTwice: false
4656 legalized:       false
4657 regBankSelected: false
4658 selected:        false
4659 tracksRegLiveness: true
4660 registers:       
4661   - { id: 0, class: g8rc, preferred-register: '' }
4662   - { id: 1, class: g8rc, preferred-register: '' }
4663   - { id: 2, class: gprc, preferred-register: '' }
4664   - { id: 3, class: g8rc, preferred-register: '' }
4665   - { id: 4, class: g8rc, preferred-register: '' }
4666   - { id: 5, class: gprc, preferred-register: '' }
4667   - { id: 6, class: g8rc, preferred-register: '' }
4668   - { id: 7, class: g8rc, preferred-register: '' }
4669   - { id: 8, class: gprc, preferred-register: '' }
4670 liveins:         
4671   - { reg: '$x3', virtual-reg: '%0' }
4672   - { reg: '$x4', virtual-reg: '%1' }
4673 frameInfo:       
4674   isFrameAddressTaken: false
4675   isReturnAddressTaken: false
4676   hasStackMap:     false
4677   hasPatchPoint:   false
4678   stackSize:       0
4679   offsetAdjustment: 0
4680   maxAlignment:    0
4681   adjustsStack:    false
4682   hasCalls:        false
4683   stackProtector:  ''
4684   maxCallFrameSize: 4294967295
4685   hasOpaqueSPAdjustment: false
4686   hasVAStart:      false
4687   hasMustTailInVarArgFunc: false
4688   savePoint:       ''
4689   restorePoint:    ''
4690 fixedStack:      
4691 stack:           
4692 constants:       
4693 body:             |
4694   bb.0.entry:
4695     liveins: $x3, $x4
4696   
4697     %1 = COPY $x4
4698     %0 = COPY $x3
4699     %2 = COPY %1.sub_32
4700     %5 = LI 21
4701     %8 = SLW killed %2, killed %5
4702     ; CHECK: RLWINM killed %2, 21, 0, 10
4703     ; CHECK-LATE: slwi 3, 4, 21
4704     $x3 = EXTSW_32_64 %8
4705     BLR8 implicit $lr8, implicit $rm, implicit $x3
4709 name:            testSLWo
4710 # CHECK-ALL: name: testSLWo
4711 alignment:       16
4712 exposesReturnsTwice: false
4713 legalized:       false
4714 regBankSelected: false
4715 selected:        false
4716 tracksRegLiveness: true
4717 registers:       
4718   - { id: 0, class: g8rc, preferred-register: '' }
4719   - { id: 1, class: g8rc, preferred-register: '' }
4720   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
4721   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
4722   - { id: 4, class: gprc, preferred-register: '' }
4723   - { id: 5, class: crrc, preferred-register: '' }
4724   - { id: 6, class: gprc, preferred-register: '' }
4725   - { id: 7, class: g8rc, preferred-register: '' }
4726   - { id: 8, class: g8rc, preferred-register: '' }
4727   - { id: 9, class: g8rc, preferred-register: '' }
4728 liveins:         
4729   - { reg: '$x3', virtual-reg: '%0' }
4730   - { reg: '$x4', virtual-reg: '%1' }
4731 frameInfo:       
4732   isFrameAddressTaken: false
4733   isReturnAddressTaken: false
4734   hasStackMap:     false
4735   hasPatchPoint:   false
4736   stackSize:       0
4737   offsetAdjustment: 0
4738   maxAlignment:    0
4739   adjustsStack:    false
4740   hasCalls:        false
4741   stackProtector:  ''
4742   maxCallFrameSize: 4294967295
4743   hasOpaqueSPAdjustment: false
4744   hasVAStart:      false
4745   hasMustTailInVarArgFunc: false
4746   savePoint:       ''
4747   restorePoint:    ''
4748 fixedStack:      
4749 stack:           
4750 constants:       
4751 body:             |
4752   bb.0.entry:
4753     liveins: $x3, $x4
4754   
4755     %1 = COPY $x4
4756     %0 = COPY $x3
4757     %2 = LI 11
4758     %3 = COPY %0.sub_32
4759     %4 = SLWo %3, %2, implicit-def $cr0
4760     ; CHECK: RLWINMo %3, 11, 0, 20, implicit-def $cr0
4761     ; CHECK-LATE: rlwinm. 5, 3, 11, 0, 20
4762     %5 = COPY killed $cr0
4763     %6 = ISEL %2, %3, %5.sub_eq
4764     %8 = IMPLICIT_DEF
4765     %7 = INSERT_SUBREG %8, killed %6, 1
4766     %9 = RLDICL killed %7, 0, 32
4767     $x3 = COPY %9
4768     BLR8 implicit $lr8, implicit $rm, implicit $x3
4772 name:            testSRW
4773 # CHECK-ALL: name: testSRW
4774 alignment:       16
4775 exposesReturnsTwice: false
4776 legalized:       false
4777 regBankSelected: false
4778 selected:        false
4779 tracksRegLiveness: true
4780 registers:       
4781   - { id: 0, class: g8rc, preferred-register: '' }
4782   - { id: 1, class: g8rc, preferred-register: '' }
4783   - { id: 2, class: gprc, preferred-register: '' }
4784   - { id: 3, class: g8rc, preferred-register: '' }
4785   - { id: 4, class: g8rc, preferred-register: '' }
4786   - { id: 5, class: gprc, preferred-register: '' }
4787   - { id: 6, class: g8rc, preferred-register: '' }
4788   - { id: 7, class: g8rc, preferred-register: '' }
4789   - { id: 8, class: gprc, preferred-register: '' }
4790 liveins:         
4791   - { reg: '$x3', virtual-reg: '%0' }
4792   - { reg: '$x4', virtual-reg: '%1' }
4793 frameInfo:       
4794   isFrameAddressTaken: false
4795   isReturnAddressTaken: false
4796   hasStackMap:     false
4797   hasPatchPoint:   false
4798   stackSize:       0
4799   offsetAdjustment: 0
4800   maxAlignment:    0
4801   adjustsStack:    false
4802   hasCalls:        false
4803   stackProtector:  ''
4804   maxCallFrameSize: 4294967295
4805   hasOpaqueSPAdjustment: false
4806   hasVAStart:      false
4807   hasMustTailInVarArgFunc: false
4808   savePoint:       ''
4809   restorePoint:    ''
4810 fixedStack:      
4811 stack:           
4812 constants:       
4813 body:             |
4814   bb.0.entry:
4815     liveins: $x3, $x4
4816   
4817     %1 = COPY $x4
4818     %0 = COPY $x3
4819     %2 = LI 8
4820     %5 = COPY %0.sub_32
4821     %8 = SRW killed %5, killed %2
4822     ; CHECK: RLWINM killed %5, 24, 8, 31
4823     ; CHECK-LATE: srwi 3, 3, 8
4824     $x3 = EXTSW_32_64 %8
4825     BLR8 implicit $lr8, implicit $rm, implicit $x3
4829 name:            testSRWo
4830 # CHECK-ALL: name: testSRWo
4831 alignment:       16
4832 exposesReturnsTwice: false
4833 legalized:       false
4834 regBankSelected: false
4835 selected:        false
4836 tracksRegLiveness: true
4837 registers:       
4838   - { id: 0, class: g8rc, preferred-register: '' }
4839   - { id: 1, class: g8rc, preferred-register: '' }
4840   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
4841   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
4842   - { id: 4, class: gprc, preferred-register: '' }
4843   - { id: 5, class: crrc, preferred-register: '' }
4844   - { id: 6, class: gprc, preferred-register: '' }
4845   - { id: 7, class: g8rc, preferred-register: '' }
4846   - { id: 8, class: g8rc, preferred-register: '' }
4847   - { id: 9, class: g8rc, preferred-register: '' }
4848 liveins:         
4849   - { reg: '$x3', virtual-reg: '%0' }
4850   - { reg: '$x4', virtual-reg: '%1' }
4851 frameInfo:       
4852   isFrameAddressTaken: false
4853   isReturnAddressTaken: false
4854   hasStackMap:     false
4855   hasPatchPoint:   false
4856   stackSize:       0
4857   offsetAdjustment: 0
4858   maxAlignment:    0
4859   adjustsStack:    false
4860   hasCalls:        false
4861   stackProtector:  ''
4862   maxCallFrameSize: 4294967295
4863   hasOpaqueSPAdjustment: false
4864   hasVAStart:      false
4865   hasMustTailInVarArgFunc: false
4866   savePoint:       ''
4867   restorePoint:    ''
4868 fixedStack:      
4869 stack:           
4870 constants:       
4871 body:             |
4872   bb.0.entry:
4873     liveins: $x3, $x4
4874   
4875     %1 = COPY $x4
4876     %0 = COPY $x3
4877     %2 = LI 7
4878     %3 = COPY %0.sub_32
4879     %4 = SRWo %3, %2, implicit-def $cr0
4880     ; CHECK: RLWINMo %3, 25, 7, 31
4881     ; CHECK-LATE: rlwinm. 5, 3, 25, 7, 31
4882     %5 = COPY killed $cr0
4883     %6 = ISEL %2, %3, %5.sub_eq
4884     %8 = IMPLICIT_DEF
4885     %7 = INSERT_SUBREG %8, killed %6, 1
4886     %9 = RLDICL killed %7, 0, 32
4887     $x3 = COPY %9
4888     BLR8 implicit $lr8, implicit $rm, implicit $x3
4892 name:            testSRAW
4893 # CHECK-ALL: name: testSRAW
4894 alignment:       16
4895 exposesReturnsTwice: false
4896 legalized:       false
4897 regBankSelected: false
4898 selected:        false
4899 tracksRegLiveness: true
4900 registers:       
4901   - { id: 0, class: g8rc, preferred-register: '' }
4902   - { id: 1, class: g8rc, preferred-register: '' }
4903   - { id: 2, class: gprc, preferred-register: '' }
4904   - { id: 3, class: gprc, preferred-register: '' }
4905   - { id: 4, class: gprc, preferred-register: '' }
4906   - { id: 5, class: g8rc, preferred-register: '' }
4907 liveins:         
4908   - { reg: '$x3', virtual-reg: '%0' }
4909   - { reg: '$x4', virtual-reg: '%1' }
4910 frameInfo:       
4911   isFrameAddressTaken: false
4912   isReturnAddressTaken: false
4913   hasStackMap:     false
4914   hasPatchPoint:   false
4915   stackSize:       0
4916   offsetAdjustment: 0
4917   maxAlignment:    0
4918   adjustsStack:    false
4919   hasCalls:        false
4920   stackProtector:  ''
4921   maxCallFrameSize: 4294967295
4922   hasOpaqueSPAdjustment: false
4923   hasVAStart:      false
4924   hasMustTailInVarArgFunc: false
4925   savePoint:       ''
4926   restorePoint:    ''
4927 fixedStack:      
4928 stack:           
4929 constants:       
4930 body:             |
4931   bb.0.entry:
4932     liveins: $x3, $x4
4933   
4934     %1 = COPY $x4
4935     %0 = COPY $x3
4936     %2 = LI 15
4937     %3 = COPY %0.sub_32
4938     %4 = SRAW killed %3, killed %2, implicit-def dead $carry
4939     ; CHECK: SRAWI killed %3, 15, implicit-def dead $carry
4940     ; CHECK-LATE: srawi 3, 3, 15
4941     %5 = EXTSW_32_64 killed %4
4942     $x3 = COPY %5
4943     BLR8 implicit $lr8, implicit $rm, implicit $x3
4947 name:            testSRAWo
4948 # CHECK-ALL: name: testSRAWo
4949 alignment:       16
4950 exposesReturnsTwice: false
4951 legalized:       false
4952 regBankSelected: false
4953 selected:        false
4954 tracksRegLiveness: true
4955 registers:       
4956   - { id: 0, class: g8rc, preferred-register: '' }
4957   - { id: 1, class: g8rc, preferred-register: '' }
4958   - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
4959   - { id: 3, class: gprc, preferred-register: '' }
4960   - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }
4961   - { id: 5, class: crrc, preferred-register: '' }
4962   - { id: 6, class: gprc, preferred-register: '' }
4963   - { id: 7, class: g8rc, preferred-register: '' }
4964 liveins:         
4965   - { reg: '$x3', virtual-reg: '%0' }
4966   - { reg: '$x4', virtual-reg: '%1' }
4967 frameInfo:       
4968   isFrameAddressTaken: false
4969   isReturnAddressTaken: false
4970   hasStackMap:     false
4971   hasPatchPoint:   false
4972   stackSize:       0
4973   offsetAdjustment: 0
4974   maxAlignment:    0
4975   adjustsStack:    false
4976   hasCalls:        false
4977   stackProtector:  ''
4978   maxCallFrameSize: 4294967295
4979   hasOpaqueSPAdjustment: false
4980   hasVAStart:      false
4981   hasMustTailInVarArgFunc: false
4982   savePoint:       ''
4983   restorePoint:    ''
4984 fixedStack:      
4985 stack:           
4986 constants:       
4987 body:             |
4988   bb.0.entry:
4989     liveins: $x3, $x4
4990   
4991     %1 = COPY $x4
4992     %0 = COPY $x3
4993     %2 = LI 8
4994     %3 = COPY %0.sub_32
4995     %4 = SRAWo killed %3, %2, implicit-def dead $carry, implicit-def $cr0
4996     ; CHECK: SRAWIo killed %3, 8, implicit-def dead $carry, implicit-def $cr0
4997     ; CHECK-LATE: srawi. 3, 3, 8
4998     %5 = COPY killed $cr0
4999     %6 = ISEL %2, %4, %5.sub_eq
5000     %7 = EXTSW_32_64 killed %6
5001     $x3 = COPY %7
5002     BLR8 implicit $lr8, implicit $rm, implicit $x3
5006 name:            testSRAD
5007 # CHECK-ALL: name: testSRAD
5008 alignment:       16
5009 exposesReturnsTwice: false
5010 legalized:       false
5011 regBankSelected: false
5012 selected:        false
5013 tracksRegLiveness: true
5014 registers:       
5015   - { id: 0, class: g8rc, preferred-register: '' }
5016   - { id: 1, class: g8rc, preferred-register: '' }
5017   - { id: 2, class: gprc, preferred-register: '' }
5018   - { id: 3, class: g8rc, preferred-register: '' }
5019 liveins:         
5020   - { reg: '$x3', virtual-reg: '%0' }
5021   - { reg: '$x4', virtual-reg: '%1' }
5022 frameInfo:       
5023   isFrameAddressTaken: false
5024   isReturnAddressTaken: false
5025   hasStackMap:     false
5026   hasPatchPoint:   false
5027   stackSize:       0
5028   offsetAdjustment: 0
5029   maxAlignment:    0
5030   adjustsStack:    false
5031   hasCalls:        false
5032   stackProtector:  ''
5033   maxCallFrameSize: 4294967295
5034   hasOpaqueSPAdjustment: false
5035   hasVAStart:      false
5036   hasMustTailInVarArgFunc: false
5037   savePoint:       ''
5038   restorePoint:    ''
5039 fixedStack:      
5040 stack:           
5041 constants:       
5042 body:             |
5043   bb.0.entry:
5044     liveins: $x3, $x4
5045   
5046     %1 = COPY $x4
5047     %0 = COPY $x3
5048     %2 = LI 44
5049     %3 = SRAD %0, killed %2, implicit-def dead $carry
5050     ; CHECK: SRADI %0, 44, implicit-def dead $carry
5051     ; CHECK-LATE: sradi 3, 3, 44
5052     $x3 = COPY %3
5053     BLR8 implicit $lr8, implicit $rm, implicit $x3
5057 name:            testSRADo
5058 # CHECK-ALL: name: testSRADo
5059 alignment:       16
5060 exposesReturnsTwice: false
5061 legalized:       false
5062 regBankSelected: false
5063 selected:        false
5064 tracksRegLiveness: true
5065 registers:       
5066   - { id: 0, class: g8rc, preferred-register: '' }
5067   - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5068   - { id: 2, class: gprc, preferred-register: '' }
5069   - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5070   - { id: 4, class: crrc, preferred-register: '' }
5071   - { id: 5, class: g8rc, preferred-register: '' }
5072 liveins:         
5073   - { reg: '$x3', virtual-reg: '%0' }
5074   - { reg: '$x4', virtual-reg: '%1' }
5075 frameInfo:       
5076   isFrameAddressTaken: false
5077   isReturnAddressTaken: false
5078   hasStackMap:     false
5079   hasPatchPoint:   false
5080   stackSize:       0
5081   offsetAdjustment: 0
5082   maxAlignment:    0
5083   adjustsStack:    false
5084   hasCalls:        false
5085   stackProtector:  ''
5086   maxCallFrameSize: 4294967295
5087   hasOpaqueSPAdjustment: false
5088   hasVAStart:      false
5089   hasMustTailInVarArgFunc: false
5090   savePoint:       ''
5091   restorePoint:    ''
5092 fixedStack:      
5093 stack:           
5094 constants:       
5095 body:             |
5096   bb.0.entry:
5097     liveins: $x3, $x4
5098   
5099     %1 = COPY $x4
5100     %0 = COPY $x3
5101     %2 = LI 61
5102     %3 = SRADo %0, killed %2, implicit-def dead $carry, implicit-def $cr0
5103     ; CHECK: SRADIo %0, 61, implicit-def dead $carry, implicit-def $cr0
5104     ; CHECK-LATE: sradi. 3, 3, 61
5105     %4 = COPY killed $cr0
5106     %5 = ISEL8 %1, %3, %4.sub_eq
5107     $x3 = COPY %5
5108     BLR8 implicit $lr8, implicit $rm, implicit $x3
5112 name:            testSTBUX
5113 # CHECK-ALL: name: testSTBUX
5114 alignment:       16
5115 exposesReturnsTwice: false
5116 legalized:       false
5117 regBankSelected: false
5118 selected:        false
5119 tracksRegLiveness: true
5120 registers:       
5121   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5122   - { id: 1, class: g8rc, preferred-register: '' }
5123   - { id: 2, class: g8rc, preferred-register: '' }
5124   - { id: 3, class: gprc, preferred-register: '' }
5125   - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }
5126   - { id: 5, class: gprc, preferred-register: '' }
5127   - { id: 6, class: g8rc, preferred-register: '' }
5128   - { id: 7, class: g8rc, preferred-register: '' }
5129   - { id: 8, class: g8rc, preferred-register: '' }
5130   - { id: 9, class: gprc, preferred-register: '' }
5131   - { id: 10, class: g8rc, preferred-register: '' }
5132   - { id: 11, class: g8rc, preferred-register: '' }
5133   - { id: 12, class: g8rc, preferred-register: '' }
5134   - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5135   - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5136 liveins:         
5137   - { reg: '$x3', virtual-reg: '%0' }
5138   - { reg: '$x4', virtual-reg: '%1' }
5139   - { reg: '$x5', virtual-reg: '%2' }
5140 frameInfo:       
5141   isFrameAddressTaken: false
5142   isReturnAddressTaken: false
5143   hasStackMap:     false
5144   hasPatchPoint:   false
5145   stackSize:       0
5146   offsetAdjustment: 0
5147   maxAlignment:    0
5148   adjustsStack:    false
5149   hasCalls:        false
5150   stackProtector:  ''
5151   maxCallFrameSize: 4294967295
5152   hasOpaqueSPAdjustment: false
5153   hasVAStart:      false
5154   hasMustTailInVarArgFunc: false
5155   savePoint:       ''
5156   restorePoint:    ''
5157 fixedStack:      
5158 stack:           
5159 constants:       
5160 body:             |
5161   bb.0.entry:
5162     liveins: $x3, $x4, $x5
5163   
5164     %2 = COPY $x5
5165     %1 = COPY $x4
5166     %0 = COPY $x3
5167     %3 = COPY %1.sub_32
5168     %4 = COPY %2.sub_32
5169     %5 = ADDI %4, 1
5170     %7 = IMPLICIT_DEF
5171     %6 = INSERT_SUBREG %7, killed %5, 1
5172     %8 = LI8 966
5173     %13 = STBUX %3, %0, killed %8 :: (store 1 into %ir.arrayidx, !tbaa !3)
5174     ; CHECK: STBU %3, 966, %0
5175     ; CHECK-LATE: {{[0-9]+}}, 966({{[0-9]+}})
5176     %9 = ADDI %4, 2
5177     %11 = IMPLICIT_DEF
5178     %10 = INSERT_SUBREG %11, killed %9, 1
5179     %12 = LI8 777
5180     %14 = STBUX %3, %0, killed %12 :: (store 1 into %ir.arrayidx3, !tbaa !3)
5181     ; CHECK: STBU %3, 777, %0
5182     ; CHECK-LATE: {{[0-9]+}}, 777({{[0-9]+}})
5183     BLR8 implicit $lr8, implicit $rm
5187 name:            testSTBX
5188 # CHECK-ALL: name: testSTBX
5189 alignment:       16
5190 exposesReturnsTwice: false
5191 legalized:       false
5192 regBankSelected: false
5193 selected:        false
5194 tracksRegLiveness: true
5195 registers:       
5196   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5197   - { id: 1, class: g8rc, preferred-register: '' }
5198   - { id: 2, class: g8rc, preferred-register: '' }
5199   - { id: 3, class: gprc, preferred-register: '' }
5200   - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }
5201   - { id: 5, class: gprc, preferred-register: '' }
5202   - { id: 6, class: g8rc, preferred-register: '' }
5203   - { id: 7, class: g8rc, preferred-register: '' }
5204   - { id: 8, class: g8rc, preferred-register: '' }
5205   - { id: 9, class: gprc, preferred-register: '' }
5206   - { id: 10, class: g8rc, preferred-register: '' }
5207   - { id: 11, class: g8rc, preferred-register: '' }
5208   - { id: 12, class: g8rc, preferred-register: '' }
5209 liveins:         
5210   - { reg: '$x3', virtual-reg: '%0' }
5211   - { reg: '$x4', virtual-reg: '%1' }
5212   - { reg: '$x5', virtual-reg: '%2' }
5213 frameInfo:       
5214   isFrameAddressTaken: false
5215   isReturnAddressTaken: false
5216   hasStackMap:     false
5217   hasPatchPoint:   false
5218   stackSize:       0
5219   offsetAdjustment: 0
5220   maxAlignment:    0
5221   adjustsStack:    false
5222   hasCalls:        false
5223   stackProtector:  ''
5224   maxCallFrameSize: 4294967295
5225   hasOpaqueSPAdjustment: false
5226   hasVAStart:      false
5227   hasMustTailInVarArgFunc: false
5228   savePoint:       ''
5229   restorePoint:    ''
5230 fixedStack:      
5231 stack:           
5232 constants:       
5233 body:             |
5234   bb.0.entry:
5235     liveins: $x3, $x4, $x5
5236   
5237     %2 = COPY $x5
5238     %1 = COPY $x4
5239     %0 = LI8 975
5240     %3 = COPY %1.sub_32
5241     %4 = COPY %2.sub_32
5242     %5 = ADDI %4, 1
5243     %7 = IMPLICIT_DEF
5244     %6 = INSERT_SUBREG %7, killed %5, 1
5245     %8 = RLDICL killed %6, 0, 32
5246     STBX %3, %0, killed %8 :: (store 1 into %ir.arrayidx, !tbaa !3)
5247     ; CHECK: STB %3, 975, killed %8
5248     ; CHECK-LATE: stb 4, 975(6)
5249     %9 = ADDI %4, 2
5250     %11 = IMPLICIT_DEF
5251     %10 = INSERT_SUBREG %11, killed %9, 1
5252     %12 = RLDICL killed %10, 0, 32
5253     STBX %3, %0, killed %12 :: (store 1 into %ir.arrayidx3, !tbaa !3)
5254     ; CHECK: STB %3, 975, killed %12
5255     ; CHECK-LATE: stb 4, 975(5)
5256     BLR8 implicit $lr8, implicit $rm
5260 name:            testSTHUX
5261 # CHECK-ALL: name: testSTHUX
5262 alignment:       16
5263 exposesReturnsTwice: false
5264 legalized:       false
5265 regBankSelected: false
5266 selected:        false
5267 tracksRegLiveness: true
5268 registers:       
5269   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5270   - { id: 1, class: g8rc, preferred-register: '' }
5271   - { id: 2, class: g8rc, preferred-register: '' }
5272   - { id: 3, class: gprc, preferred-register: '' }
5273   - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }
5274   - { id: 5, class: gprc, preferred-register: '' }
5275   - { id: 6, class: g8rc, preferred-register: '' }
5276   - { id: 7, class: g8rc, preferred-register: '' }
5277   - { id: 8, class: g8rc, preferred-register: '' }
5278   - { id: 9, class: gprc, preferred-register: '' }
5279   - { id: 10, class: g8rc, preferred-register: '' }
5280   - { id: 11, class: g8rc, preferred-register: '' }
5281   - { id: 12, class: g8rc, preferred-register: '' }
5282   - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5283   - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5284 liveins:         
5285   - { reg: '$x3', virtual-reg: '%0' }
5286   - { reg: '$x4', virtual-reg: '%1' }
5287   - { reg: '$x5', virtual-reg: '%2' }
5288 frameInfo:       
5289   isFrameAddressTaken: false
5290   isReturnAddressTaken: false
5291   hasStackMap:     false
5292   hasPatchPoint:   false
5293   stackSize:       0
5294   offsetAdjustment: 0
5295   maxAlignment:    0
5296   adjustsStack:    false
5297   hasCalls:        false
5298   stackProtector:  ''
5299   maxCallFrameSize: 4294967295
5300   hasOpaqueSPAdjustment: false
5301   hasVAStart:      false
5302   hasMustTailInVarArgFunc: false
5303   savePoint:       ''
5304   restorePoint:    ''
5305 fixedStack:      
5306 stack:           
5307 constants:       
5308 body:             |
5309   bb.0.entry:
5310     liveins: $x3, $x4, $x5
5311   
5312     %2 = COPY $x5
5313     %1 = COPY $x4
5314     %0 = COPY $x3
5315     %3 = COPY %1.sub_32
5316     %4 = COPY %2.sub_32
5317     %5 = ADDI %4, 1
5318     %7 = IMPLICIT_DEF
5319     %6 = INSERT_SUBREG %7, killed %5, 1
5320     %8 = LI8 32000
5321     %13 = STHUX %3, %0, killed %8 :: (store 2 into %ir.arrayidx, !tbaa !6)
5322     ; CHECK: STHU %3, 32000, %0
5323     ; CHECK-LATE: sthu {{[0-9]+}}, 32000({{[0-9]+}})
5324     %9 = ADDI %4, 2
5325     %11 = IMPLICIT_DEF
5326     %10 = INSERT_SUBREG %11, killed %9, 1
5327     %12 = LI8 -761
5328     %14 = STHUX %3, %0, killed %12 :: (store 2 into %ir.arrayidx3, !tbaa !6)
5329     ; CHECK: STHU %3, -761, %0
5330     ; CHECK-LATE: sthu {{[0-9]+}}, -761({{[0-9]+}})
5331     BLR8 implicit $lr8, implicit $rm
5335 name:            testSTHX
5336 # CHECK-ALL: name: testSTHX
5337 alignment:       16
5338 exposesReturnsTwice: false
5339 legalized:       false
5340 regBankSelected: false
5341 selected:        false
5342 tracksRegLiveness: true
5343 registers:       
5344   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5345   - { id: 1, class: g8rc, preferred-register: '' }
5346   - { id: 2, class: g8rc, preferred-register: '' }
5347   - { id: 3, class: gprc, preferred-register: '' }
5348   - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }
5349   - { id: 5, class: gprc, preferred-register: '' }
5350   - { id: 6, class: g8rc, preferred-register: '' }
5351   - { id: 7, class: g8rc, preferred-register: '' }
5352   - { id: 8, class: g8rc, preferred-register: '' }
5353   - { id: 9, class: gprc, preferred-register: '' }
5354   - { id: 10, class: g8rc, preferred-register: '' }
5355   - { id: 11, class: g8rc, preferred-register: '' }
5356   - { id: 12, class: g8rc, preferred-register: '' }
5357 liveins:         
5358   - { reg: '$x3', virtual-reg: '%0' }
5359   - { reg: '$x4', virtual-reg: '%1' }
5360   - { reg: '$x5', virtual-reg: '%2' }
5361 frameInfo:       
5362   isFrameAddressTaken: false
5363   isReturnAddressTaken: false
5364   hasStackMap:     false
5365   hasPatchPoint:   false
5366   stackSize:       0
5367   offsetAdjustment: 0
5368   maxAlignment:    0
5369   adjustsStack:    false
5370   hasCalls:        false
5371   stackProtector:  ''
5372   maxCallFrameSize: 4294967295
5373   hasOpaqueSPAdjustment: false
5374   hasVAStart:      false
5375   hasMustTailInVarArgFunc: false
5376   savePoint:       ''
5377   restorePoint:    ''
5378 fixedStack:      
5379 stack:           
5380 constants:       
5381 body:             |
5382   bb.0.entry:
5383     liveins: $x3, $x4, $x5
5384   
5385     %2 = COPY $x5
5386     %1 = COPY $x4
5387     %0 = COPY $x3
5388     %3 = COPY %1.sub_32
5389     %4 = COPY %2.sub_32
5390     %5 = ADDI %4, 1
5391     %7 = IMPLICIT_DEF
5392     %6 = INSERT_SUBREG %7, killed %5, 1
5393     %8 = LI8 900
5394     STHX %3, %0, killed %8 :: (store 1 into %ir.arrayidx, !tbaa !3)
5395     ; CHECK: STH %3, 900, %0
5396     ; CHECK-LATE: sth {{[0-9]+}}, 900({{[0-9]+}})
5397     %9 = ADDI %4, 2
5398     %11 = IMPLICIT_DEF
5399     %10 = INSERT_SUBREG %11, killed %9, 1
5400     %12 = LI8 -900
5401     STHX %3, %0, killed %12 :: (store 1 into %ir.arrayidx3, !tbaa !3)
5402     ; CHECK: STH %3, -900, %0
5403     ; CHECK-LATE: sth {{[0-9]+}}, -900({{[0-9]+}})
5404     BLR8 implicit $lr8, implicit $rm
5408 name:            testSTWUX
5409 # CHECK-ALL: name: testSTWUX
5410 alignment:       16
5411 exposesReturnsTwice: false
5412 legalized:       false
5413 regBankSelected: false
5414 selected:        false
5415 tracksRegLiveness: true
5416 registers:       
5417   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5418   - { id: 1, class: g8rc, preferred-register: '' }
5419   - { id: 2, class: g8rc, preferred-register: '' }
5420   - { id: 3, class: gprc, preferred-register: '' }
5421   - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }
5422   - { id: 5, class: gprc, preferred-register: '' }
5423   - { id: 6, class: g8rc, preferred-register: '' }
5424   - { id: 7, class: g8rc, preferred-register: '' }
5425   - { id: 8, class: g8rc, preferred-register: '' }
5426   - { id: 9, class: gprc, preferred-register: '' }
5427   - { id: 10, class: g8rc, preferred-register: '' }
5428   - { id: 11, class: g8rc, preferred-register: '' }
5429   - { id: 12, class: g8rc, preferred-register: '' }
5430   - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5431   - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5432 liveins:         
5433   - { reg: '$x3', virtual-reg: '%0' }
5434   - { reg: '$x4', virtual-reg: '%1' }
5435   - { reg: '$x5', virtual-reg: '%2' }
5436 frameInfo:       
5437   isFrameAddressTaken: false
5438   isReturnAddressTaken: false
5439   hasStackMap:     false
5440   hasPatchPoint:   false
5441   stackSize:       0
5442   offsetAdjustment: 0
5443   maxAlignment:    0
5444   adjustsStack:    false
5445   hasCalls:        false
5446   stackProtector:  ''
5447   maxCallFrameSize: 4294967295
5448   hasOpaqueSPAdjustment: false
5449   hasVAStart:      false
5450   hasMustTailInVarArgFunc: false
5451   savePoint:       ''
5452   restorePoint:    ''
5453 fixedStack:      
5454 stack:           
5455 constants:       
5456 body:             |
5457   bb.0.entry:
5458     liveins: $x3, $x4, $x5
5459   
5460     %2 = COPY $x5
5461     %1 = COPY $x4
5462     %0 = COPY $x3
5463     %3 = COPY %1.sub_32
5464     %4 = COPY %2.sub_32
5465     %5 = ADDI %4, 1
5466     %7 = IMPLICIT_DEF
5467     %6 = INSERT_SUBREG %7, killed %5, 1
5468     %8 = LI8 111
5469     %13 = STWUX %3, %0, killed %8 :: (store 4 into %ir.arrayidx, !tbaa !8)
5470     ; CHECK: STWU %3, 111, %0
5471     ; CHECK-LATE: stwu {{[0-9]+}}, 111({{[0-9]+}})
5472     %9 = ADDI %4, 2
5473     %11 = IMPLICIT_DEF
5474     %10 = INSERT_SUBREG %11, killed %9, 1
5475     %12 = LI8 0
5476     %14 = STWUX %3, %0, killed %12 :: (store 4 into %ir.arrayidx3, !tbaa !8)
5477     ; CHECK: STWU %3, 0, %0
5478     ; CHECK-LATE: stwu {{[0-9]+}}, 0({{[0-9]+}})
5479     BLR8 implicit $lr8, implicit $rm
5483 name:            testSTWX
5484 # CHECK-ALL: name: testSTWX
5485 alignment:       16
5486 exposesReturnsTwice: false
5487 legalized:       false
5488 regBankSelected: false
5489 selected:        false
5490 tracksRegLiveness: true
5491 registers:       
5492   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5493   - { id: 1, class: g8rc, preferred-register: '' }
5494   - { id: 2, class: g8rc, preferred-register: '' }
5495   - { id: 3, class: gprc, preferred-register: '' }
5496   - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }
5497   - { id: 5, class: gprc, preferred-register: '' }
5498   - { id: 6, class: g8rc, preferred-register: '' }
5499   - { id: 7, class: g8rc, preferred-register: '' }
5500   - { id: 8, class: g8rc, preferred-register: '' }
5501   - { id: 9, class: gprc, preferred-register: '' }
5502   - { id: 10, class: g8rc, preferred-register: '' }
5503   - { id: 11, class: g8rc, preferred-register: '' }
5504   - { id: 12, class: g8rc, preferred-register: '' }
5505 liveins:         
5506   - { reg: '$x3', virtual-reg: '%0' }
5507   - { reg: '$x4', virtual-reg: '%1' }
5508   - { reg: '$x5', virtual-reg: '%2' }
5509 frameInfo:       
5510   isFrameAddressTaken: false
5511   isReturnAddressTaken: false
5512   hasStackMap:     false
5513   hasPatchPoint:   false
5514   stackSize:       0
5515   offsetAdjustment: 0
5516   maxAlignment:    0
5517   adjustsStack:    false
5518   hasCalls:        false
5519   stackProtector:  ''
5520   maxCallFrameSize: 4294967295
5521   hasOpaqueSPAdjustment: false
5522   hasVAStart:      false
5523   hasMustTailInVarArgFunc: false
5524   savePoint:       ''
5525   restorePoint:    ''
5526 fixedStack:      
5527 stack:           
5528 constants:       
5529 body:             |
5530   bb.0.entry:
5531     liveins: $x3, $x4, $x5
5532   
5533     %2 = COPY $x5
5534     %1 = COPY $x4
5535     %0 = COPY $x3
5536     %3 = COPY %1.sub_32
5537     %4 = COPY %2.sub_32
5538     %5 = ADDI %4, 1
5539     %7 = IMPLICIT_DEF
5540     %6 = INSERT_SUBREG %7, killed %5, 1
5541     %8 = LI8 2
5542     STWX %3, %0, killed %8 :: (store 4 into %ir.arrayidx, !tbaa !8)
5543     ; CHECK: STW %3, 2, %0
5544     ; CHECK-LATE: stw 4, 2(3)
5545     %9 = ADDI %4, 2
5546     %11 = IMPLICIT_DEF
5547     %10 = INSERT_SUBREG %11, killed %9, 1
5548     %12 = LI8 99
5549     STWX %3, %0, killed %12 :: (store 4 into %ir.arrayidx3, !tbaa !8)
5550     ; CHECK: STW %3, 99, %0
5551     ; CHECK-LATE: stw 4, 99(3)
5552     BLR8 implicit $lr8, implicit $rm
5556 name:            testSTDUX
5557 # CHECK-ALL: name: testSTDUX
5558 alignment:       16
5559 exposesReturnsTwice: false
5560 legalized:       false
5561 regBankSelected: false
5562 selected:        false
5563 tracksRegLiveness: true
5564 registers:       
5565   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5566   - { id: 1, class: g8rc, preferred-register: '' }
5567   - { id: 2, class: g8rc, preferred-register: '' }
5568   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
5569   - { id: 4, class: gprc, preferred-register: '' }
5570   - { id: 5, class: g8rc, preferred-register: '' }
5571   - { id: 6, class: g8rc, preferred-register: '' }
5572   - { id: 7, class: g8rc, preferred-register: '' }
5573   - { id: 8, class: gprc, preferred-register: '' }
5574   - { id: 9, class: g8rc, preferred-register: '' }
5575   - { id: 10, class: g8rc, preferred-register: '' }
5576   - { id: 11, class: g8rc, preferred-register: '' }
5577   - { id: 12, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5578   - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5579 liveins:         
5580   - { reg: '$x3', virtual-reg: '%0' }
5581   - { reg: '$x4', virtual-reg: '%1' }
5582   - { reg: '$x5', virtual-reg: '%2' }
5583 frameInfo:       
5584   isFrameAddressTaken: false
5585   isReturnAddressTaken: false
5586   hasStackMap:     false
5587   hasPatchPoint:   false
5588   stackSize:       0
5589   offsetAdjustment: 0
5590   maxAlignment:    0
5591   adjustsStack:    false
5592   hasCalls:        false
5593   stackProtector:  ''
5594   maxCallFrameSize: 4294967295
5595   hasOpaqueSPAdjustment: false
5596   hasVAStart:      false
5597   hasMustTailInVarArgFunc: false
5598   savePoint:       ''
5599   restorePoint:    ''
5600 fixedStack:      
5601 stack:           
5602 constants:       
5603 body:             |
5604   bb.0.entry:
5605     liveins: $x3, $x4, $x5
5606   
5607     %2 = COPY $x5
5608     %1 = COPY $x4
5609     %0 = COPY $x3
5610     %3 = COPY %2.sub_32
5611     %4 = ADDI %3, 1
5612     %6 = IMPLICIT_DEF
5613     %5 = INSERT_SUBREG %6, killed %4, 1
5614     %7 = LI8 444
5615     %12 = STDUX %1, %0, killed %7 :: (store 8 into %ir.arrayidx, !tbaa !10)
5616     ; CHECK: STDU %1, 444, %0
5617     ; CHECK-LATE: stdu {{[0-9]+}}, 444({{[0-9]+}})
5618     %8 = ADDI %3, 2
5619     %10 = IMPLICIT_DEF
5620     %9 = INSERT_SUBREG %10, killed %8, 1
5621     %11 = LI8 -8
5622     %13 = STDUX %1, %0, killed %11 :: (store 8 into %ir.arrayidx3, !tbaa !10)
5623     ; CHECK: STDU %1, -8, %0
5624     ; CHECK-LATE: stdu {{[0-9]+}}, -8({{[0-9]+}})
5625     BLR8 implicit $lr8, implicit $rm
5629 name:            testSTDX
5630 # CHECK-ALL: name: testSTDX
5631 alignment:       16
5632 exposesReturnsTwice: false
5633 legalized:       false
5634 regBankSelected: false
5635 selected:        false
5636 tracksRegLiveness: true
5637 registers:       
5638   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5639   - { id: 1, class: g8rc, preferred-register: '' }
5640   - { id: 2, class: g8rc, preferred-register: '' }
5641   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
5642   - { id: 4, class: gprc, preferred-register: '' }
5643   - { id: 5, class: g8rc, preferred-register: '' }
5644   - { id: 6, class: g8rc, preferred-register: '' }
5645   - { id: 7, class: g8rc, preferred-register: '' }
5646   - { id: 8, class: gprc, preferred-register: '' }
5647   - { id: 9, class: g8rc, preferred-register: '' }
5648   - { id: 10, class: g8rc, preferred-register: '' }
5649   - { id: 11, class: g8rc, preferred-register: '' }
5650 liveins:         
5651   - { reg: '$x3', virtual-reg: '%0' }
5652   - { reg: '$x4', virtual-reg: '%1' }
5653   - { reg: '$x5', virtual-reg: '%2' }
5654 frameInfo:       
5655   isFrameAddressTaken: false
5656   isReturnAddressTaken: false
5657   hasStackMap:     false
5658   hasPatchPoint:   false
5659   stackSize:       0
5660   offsetAdjustment: 0
5661   maxAlignment:    0
5662   adjustsStack:    false
5663   hasCalls:        false
5664   stackProtector:  ''
5665   maxCallFrameSize: 4294967295
5666   hasOpaqueSPAdjustment: false
5667   hasVAStart:      false
5668   hasMustTailInVarArgFunc: false
5669   savePoint:       ''
5670   restorePoint:    ''
5671 fixedStack:      
5672 stack:           
5673 constants:       
5674 body:             |
5675   bb.0.entry:
5676     liveins: $x3, $x4, $x5
5677   
5678     %2 = COPY $x5
5679     %1 = COPY $x4
5680     %0 = LI8 1000
5681     %3 = COPY %2.sub_32
5682     %4 = ADDI %3, 1
5683     %6 = IMPLICIT_DEF
5684     %5 = INSERT_SUBREG %6, killed %4, 1
5685     %7 = LI8 900
5686     STDX %1, %0, killed %7 :: (store 8 into %ir.arrayidx, !tbaa !10)
5687     ; CHECK: STD %1, 1000, killed %7
5688     ; CHECK-LATE: {{[0-9]+}}, 1000({{[0-9]+}})
5689     %8 = ADDI %3, 2
5690     %10 = IMPLICIT_DEF
5691     %9 = INSERT_SUBREG %10, killed %8, 1
5692     %11 = LI8 -900
5693     STDX %1, %0, killed %11 :: (store 8 into %ir.arrayidx3, !tbaa !10)
5694     ; CHECK: STD %1, 1000, killed %11
5695     ; CHECK-LATE: {{[0-9]+}}, 1000({{[0-9]+}})
5696     BLR8 implicit $lr8, implicit $rm
5700 name:            testSTFSX
5701 # CHECK-ALL: name: testSTFSX
5702 alignment:       16
5703 exposesReturnsTwice: false
5704 legalized:       false
5705 regBankSelected: false
5706 selected:        false
5707 tracksRegLiveness: true
5708 registers:       
5709   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5710   - { id: 1, class: f4rc, preferred-register: '' }
5711   - { id: 2, class: g8rc, preferred-register: '' }
5712   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
5713   - { id: 4, class: gprc, preferred-register: '' }
5714   - { id: 5, class: g8rc, preferred-register: '' }
5715   - { id: 6, class: g8rc, preferred-register: '' }
5716   - { id: 7, class: g8rc, preferred-register: '' }
5717   - { id: 8, class: gprc, preferred-register: '' }
5718   - { id: 9, class: g8rc, preferred-register: '' }
5719   - { id: 10, class: g8rc, preferred-register: '' }
5720   - { id: 11, class: g8rc, preferred-register: '' }
5721 liveins:         
5722   - { reg: '$x3', virtual-reg: '%0' }
5723   - { reg: '$f1', virtual-reg: '%1' }
5724   - { reg: '$x5', virtual-reg: '%2' }
5725 frameInfo:       
5726   isFrameAddressTaken: false
5727   isReturnAddressTaken: false
5728   hasStackMap:     false
5729   hasPatchPoint:   false
5730   stackSize:       0
5731   offsetAdjustment: 0
5732   maxAlignment:    0
5733   adjustsStack:    false
5734   hasCalls:        false
5735   stackProtector:  ''
5736   maxCallFrameSize: 4294967295
5737   hasOpaqueSPAdjustment: false
5738   hasVAStart:      false
5739   hasMustTailInVarArgFunc: false
5740   savePoint:       ''
5741   restorePoint:    ''
5742 fixedStack:      
5743 stack:           
5744 constants:       
5745 body:             |
5746   bb.0.entry:
5747     liveins: $x3, $f1, $x5
5748   
5749     %2 = COPY $x5
5750     %1 = COPY $f1
5751     %0 = COPY $x3
5752     %3 = COPY %2.sub_32
5753     %4 = ADDI %3, 1
5754     %6 = IMPLICIT_DEF
5755     %5 = INSERT_SUBREG %6, killed %4, 1
5756     %7 = LI8 400
5757     STFSX %1, %0, killed %7 :: (store 4 into %ir.arrayidx, !tbaa !14)
5758     ; CHECK: STFS %1, 400, %0
5759     ; CHECK-LATE: stfs 1, 400(3)
5760     %8 = ADDI %3, 2
5761     %10 = IMPLICIT_DEF
5762     %9 = INSERT_SUBREG %10, killed %8, 1
5763     %11 = LI8 -401
5764     STFSX %1, %0, killed %11 :: (store 4 into %ir.arrayidx3, !tbaa !14)
5765     ; CHECK: STFS %1, -401, %0
5766     ; CHECK-LATE: stfs 1, -401(3)
5767     BLR8 implicit $lr8, implicit $rm
5771 name:            testSTFSUX
5772 # CHECK-ALL: name: testSTFSUX
5773 alignment:       16
5774 exposesReturnsTwice: false
5775 legalized:       false
5776 regBankSelected: false
5777 selected:        false
5778 tracksRegLiveness: true
5779 registers:       
5780   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5781   - { id: 1, class: f4rc, preferred-register: '' }
5782   - { id: 2, class: g8rc, preferred-register: '' }
5783   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
5784   - { id: 4, class: gprc, preferred-register: '' }
5785   - { id: 5, class: g8rc, preferred-register: '' }
5786   - { id: 6, class: g8rc, preferred-register: '' }
5787   - { id: 7, class: g8rc, preferred-register: '' }
5788   - { id: 8, class: gprc, preferred-register: '' }
5789   - { id: 9, class: g8rc, preferred-register: '' }
5790   - { id: 10, class: g8rc, preferred-register: '' }
5791   - { id: 11, class: g8rc, preferred-register: '' }
5792   - { id: 12, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5793   - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5794 liveins:         
5795   - { reg: '$x3', virtual-reg: '%0' }
5796   - { reg: '$f1', virtual-reg: '%1' }
5797   - { reg: '$x5', virtual-reg: '%2' }
5798 frameInfo:       
5799   isFrameAddressTaken: false
5800   isReturnAddressTaken: false
5801   hasStackMap:     false
5802   hasPatchPoint:   false
5803   stackSize:       0
5804   offsetAdjustment: 0
5805   maxAlignment:    0
5806   adjustsStack:    false
5807   hasCalls:        false
5808   stackProtector:  ''
5809   maxCallFrameSize: 4294967295
5810   hasOpaqueSPAdjustment: false
5811   hasVAStart:      false
5812   hasMustTailInVarArgFunc: false
5813   savePoint:       ''
5814   restorePoint:    ''
5815 fixedStack:      
5816 stack:           
5817 constants:       
5818 body:             |
5819   bb.0.entry:
5820     liveins: $x3, $f1, $x5
5821   
5822     %2 = COPY $x5
5823     %1 = COPY $f1
5824     %0 = COPY $x3
5825     %3 = COPY %2.sub_32
5826     %4 = ADDI %3, 1
5827     %6 = IMPLICIT_DEF
5828     %5 = INSERT_SUBREG %6, killed %4, 1
5829     %7 = LI8 111
5830     %12 = STFSUX %1, %0, killed %7 :: (store 4 into %ir.arrayidx, !tbaa !14)
5831     ; CHECK: STFSU %1, 111, %0
5832     ; CHECK-LATE: stfsu {{[0-9]+}}, 111({{[0-9]+}})
5833     %8 = ADDI %3, 2
5834     %10 = IMPLICIT_DEF
5835     %9 = INSERT_SUBREG %10, killed %8, 1
5836     %11 = LI8 987
5837     %13 = STFSUX %1, %0, killed %11 :: (store 4 into %ir.arrayidx3, !tbaa !14)
5838     ; CHECK: STFSU %1, 987, %0
5839     ; CHECK-LATE: stfsu {{[0-9]+}}, 987({{[0-9]+}})
5840     BLR8 implicit $lr8, implicit $rm
5844 name:            testSTFDX
5845 # CHECK-ALL: name: testSTFDX
5846 alignment:       16
5847 exposesReturnsTwice: false
5848 legalized:       false
5849 regBankSelected: false
5850 selected:        false
5851 tracksRegLiveness: true
5852 registers:       
5853   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5854   - { id: 1, class: f8rc, preferred-register: '' }
5855   - { id: 2, class: g8rc, preferred-register: '' }
5856   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
5857   - { id: 4, class: gprc, preferred-register: '' }
5858   - { id: 5, class: g8rc, preferred-register: '' }
5859   - { id: 6, class: g8rc, preferred-register: '' }
5860   - { id: 7, class: g8rc, preferred-register: '' }
5861   - { id: 8, class: gprc, preferred-register: '' }
5862   - { id: 9, class: g8rc, preferred-register: '' }
5863   - { id: 10, class: g8rc, preferred-register: '' }
5864   - { id: 11, class: g8rc, preferred-register: '' }
5865 liveins:         
5866   - { reg: '$x3', virtual-reg: '%0' }
5867   - { reg: '$f1', virtual-reg: '%1' }
5868   - { reg: '$x5', virtual-reg: '%2' }
5869 frameInfo:       
5870   isFrameAddressTaken: false
5871   isReturnAddressTaken: false
5872   hasStackMap:     false
5873   hasPatchPoint:   false
5874   stackSize:       0
5875   offsetAdjustment: 0
5876   maxAlignment:    0
5877   adjustsStack:    false
5878   hasCalls:        false
5879   stackProtector:  ''
5880   maxCallFrameSize: 4294967295
5881   hasOpaqueSPAdjustment: false
5882   hasVAStart:      false
5883   hasMustTailInVarArgFunc: false
5884   savePoint:       ''
5885   restorePoint:    ''
5886 fixedStack:      
5887 stack:           
5888 constants:       
5889 body:             |
5890   bb.0.entry:
5891     liveins: $x3, $f1, $x5
5892   
5893     %2 = COPY $x5
5894     %1 = COPY $f1
5895     %0 = COPY $x3
5896     %3 = COPY %2.sub_32
5897     %4 = ADDI %3, 1
5898     %6 = IMPLICIT_DEF
5899     %5 = INSERT_SUBREG %6, killed %4, 1
5900     %7 = LI8 876
5901     STFDX %1, %0, killed %7 :: (store 8 into %ir.arrayidx, !tbaa !12)
5902     ; CHECK: STFD %1, 876, %0
5903     ; CHECK-LATE: stfd 1, 876(3)
5904     %8 = ADDI %3, 2
5905     %10 = IMPLICIT_DEF
5906     %9 = INSERT_SUBREG %10, killed %8, 1
5907     %11 = LI8 -873
5908     STFDX %1, %0, killed %11 :: (store 8 into %ir.arrayidx3, !tbaa !12)
5909     ; CHECK: STFD %1, -873, %0
5910     ; CHECK-LATE: stfd 1, -873(3)
5911     BLR8 implicit $lr8, implicit $rm
5915 name:            testSTFDUX
5916 # CHECK-ALL: name: testSTFDUX
5917 alignment:       16
5918 exposesReturnsTwice: false
5919 legalized:       false
5920 regBankSelected: false
5921 selected:        false
5922 tracksRegLiveness: true
5923 registers:       
5924   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5925   - { id: 1, class: f8rc, preferred-register: '' }
5926   - { id: 2, class: g8rc, preferred-register: '' }
5927   - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }
5928   - { id: 4, class: gprc, preferred-register: '' }
5929   - { id: 5, class: g8rc, preferred-register: '' }
5930   - { id: 6, class: g8rc, preferred-register: '' }
5931   - { id: 7, class: g8rc, preferred-register: '' }
5932   - { id: 8, class: gprc, preferred-register: '' }
5933   - { id: 9, class: g8rc, preferred-register: '' }
5934   - { id: 10, class: g8rc, preferred-register: '' }
5935   - { id: 11, class: g8rc, preferred-register: '' }
5936   - { id: 12, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5937   - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5938 liveins:         
5939   - { reg: '$x3', virtual-reg: '%0' }
5940   - { reg: '$f1', virtual-reg: '%1' }
5941   - { reg: '$x5', virtual-reg: '%2' }
5942 frameInfo:       
5943   isFrameAddressTaken: false
5944   isReturnAddressTaken: false
5945   hasStackMap:     false
5946   hasPatchPoint:   false
5947   stackSize:       0
5948   offsetAdjustment: 0
5949   maxAlignment:    0
5950   adjustsStack:    false
5951   hasCalls:        false
5952   stackProtector:  ''
5953   maxCallFrameSize: 4294967295
5954   hasOpaqueSPAdjustment: false
5955   hasVAStart:      false
5956   hasMustTailInVarArgFunc: false
5957   savePoint:       ''
5958   restorePoint:    ''
5959 fixedStack:      
5960 stack:           
5961 constants:       
5962 body:             |
5963   bb.0.entry:
5964     liveins: $x3, $f1, $x5
5965   
5966     %2 = COPY $x5
5967     %1 = COPY $f1
5968     %0 = COPY $x3
5969     %3 = COPY %2.sub_32
5970     %4 = ADDI %3, 1
5971     %6 = IMPLICIT_DEF
5972     %5 = INSERT_SUBREG %6, killed %4, 1
5973     %7 = LI8 -9038
5974     %12 = STFDUX %1, %0, killed %7 :: (store 8 into %ir.arrayidx, !tbaa !12)
5975     ; CHECK: STFDU %1, -9038, %0
5976     ; CHECK-LATE: stfdu {{[0-9]+}}, -9038({{[0-9]+}})
5977     %8 = ADDI %3, 2
5978     %10 = IMPLICIT_DEF
5979     %9 = INSERT_SUBREG %10, killed %8, 1
5980     %11 = LI8 6477
5981     %13 = STFDUX %1, %0, killed %11 :: (store 8 into %ir.arrayidx3, !tbaa !12)
5982     ; CHECK: STFDU %1, 6477, %0
5983     ; CHECK-LATE: stfdu {{[0-9]+}}, 6477({{[0-9]+}})
5984     BLR8 implicit $lr8, implicit $rm
5988 name:            testSTXSSPX
5989 # CHECK-ALL: name: testSTXSSPX
5990 alignment:       16
5991 exposesReturnsTwice: false
5992 legalized:       false
5993 regBankSelected: false
5994 selected:        false
5995 tracksRegLiveness: true
5996 registers:       
5997   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
5998   - { id: 1, class: vssrc, preferred-register: '' }
5999   - { id: 2, class: g8rc, preferred-register: '' }
6000   - { id: 3, class: g8rc, preferred-register: '' }
6001 liveins:         
6002   - { reg: '$x3', virtual-reg: '%0' }
6003   - { reg: '$f1', virtual-reg: '%1' }
6004   - { reg: '$x5', virtual-reg: '%2' }
6005 frameInfo:       
6006   isFrameAddressTaken: false
6007   isReturnAddressTaken: false
6008   hasStackMap:     false
6009   hasPatchPoint:   false
6010   stackSize:       0
6011   offsetAdjustment: 0
6012   maxAlignment:    0
6013   adjustsStack:    false
6014   hasCalls:        false
6015   stackProtector:  ''
6016   maxCallFrameSize: 4294967295
6017   hasOpaqueSPAdjustment: false
6018   hasVAStart:      false
6019   hasMustTailInVarArgFunc: false
6020   savePoint:       ''
6021   restorePoint:    ''
6022 fixedStack:      
6023 stack:           
6024 constants:       
6025 body:             |
6026   bb.0.entry:
6027     liveins: $x3, $f1, $x5
6028   
6029     %2 = COPY $x5
6030     %1 = COPY $f1
6031     %0 = COPY $x3
6032     %3 = LI8 444
6033     STXSSPX %1, %0, killed %3 :: (store 4 into %ir.arrayidx, !tbaa !14)
6034     ; CHECK: DFSTOREf32 %1, 444, %0
6035     ; CHECK-LATE: stfs 1, 444(3)
6036     BLR8 implicit $lr8, implicit $rm
6040 name:            testSTXSDX
6041 # CHECK-ALL: name: testSTXSDX
6042 alignment:       16
6043 exposesReturnsTwice: false
6044 legalized:       false
6045 regBankSelected: false
6046 selected:        false
6047 tracksRegLiveness: true
6048 registers:       
6049   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
6050   - { id: 1, class: vsfrc, preferred-register: '' }
6051   - { id: 2, class: g8rc, preferred-register: '' }
6052   - { id: 3, class: g8rc, preferred-register: '' }
6053 liveins:         
6054   - { reg: '$x3', virtual-reg: '%0' }
6055   - { reg: '$f1', virtual-reg: '%1' }
6056   - { reg: '$x5', virtual-reg: '%2' }
6057 frameInfo:       
6058   isFrameAddressTaken: false
6059   isReturnAddressTaken: false
6060   hasStackMap:     false
6061   hasPatchPoint:   false
6062   stackSize:       0
6063   offsetAdjustment: 0
6064   maxAlignment:    0
6065   adjustsStack:    false
6066   hasCalls:        false
6067   stackProtector:  ''
6068   maxCallFrameSize: 4294967295
6069   hasOpaqueSPAdjustment: false
6070   hasVAStart:      false
6071   hasMustTailInVarArgFunc: false
6072   savePoint:       ''
6073   restorePoint:    ''
6074 fixedStack:      
6075 stack:           
6076 constants:       
6077 body:             |
6078   bb.0.entry:
6079     liveins: $x3, $f1, $x5
6080   
6081     %2 = COPY $x5
6082     %1 = COPY $f1
6083     %0 = COPY $x3
6084     %3 = LI8 4
6085     STXSDX %1, %0, killed %3, implicit $rm :: (store 8 into %ir.arrayidx, !tbaa !12)
6086     ; CHECK: DFSTOREf64 %1, 4, %0
6087     ; CHECK-LATE: stfd 1, 4(3)
6088     BLR8 implicit $lr8, implicit $rm
6092 name:            testSTXVX
6093 # CHECK-ALL: name: testSTXVX
6094 alignment:       16
6095 exposesReturnsTwice: false
6096 legalized:       false
6097 regBankSelected: false
6098 selected:        false
6099 tracksRegLiveness: true
6100 registers:       
6101   - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
6102   - { id: 1, class: vrrc, preferred-register: '' }
6103   - { id: 2, class: g8rc, preferred-register: '' }
6104   - { id: 3, class: g8rc, preferred-register: '' }
6105 liveins:         
6106   - { reg: '$x3', virtual-reg: '%0' }
6107   - { reg: '$v2', virtual-reg: '%1' }
6108   - { reg: '$x7', virtual-reg: '%2' }
6109 frameInfo:       
6110   isFrameAddressTaken: false
6111   isReturnAddressTaken: false
6112   hasStackMap:     false
6113   hasPatchPoint:   false
6114   stackSize:       0
6115   offsetAdjustment: 0
6116   maxAlignment:    0
6117   adjustsStack:    false
6118   hasCalls:        false
6119   stackProtector:  ''
6120   maxCallFrameSize: 4294967295
6121   hasOpaqueSPAdjustment: false
6122   hasVAStart:      false
6123   hasMustTailInVarArgFunc: false
6124   savePoint:       ''
6125   restorePoint:    ''
6126 fixedStack:      
6127 stack:           
6128 constants:       
6129 body:             |
6130   bb.0.entry:
6131     liveins: $x3, $v2, $x7
6132   
6133     %2 = COPY $x7
6134     %1 = COPY $v2
6135     %0 = LI8 16
6136     %3 = RLDICR %2, 4, 59
6137     STXVX %1, %0, killed %3 :: (store 16 into %ir.arrayidx, !tbaa !3)
6138     ; CHECK: STXV %1, 16, killed %3
6139     ; CHECK-LATE: stxv 34, 16(4)
6140     BLR8 implicit $lr8, implicit $rm
6144 name:            testSUBFC
6145 # CHECK-ALL: name: testSUBFC
6146 alignment:       16
6147 exposesReturnsTwice: false
6148 legalized:       false
6149 regBankSelected: false
6150 selected:        false
6151 tracksRegLiveness: true
6152 registers:       
6153   - { id: 0, class: gprc, preferred-register: '' }
6154   - { id: 1, class: g8rc, preferred-register: '' }
6155   - { id: 2, class: g8rc, preferred-register: '' }
6156   - { id: 3, class: g8rc, preferred-register: '' }
6157   - { id: 4, class: gprc, preferred-register: '' }
6158   - { id: 5, class: gprc, preferred-register: '' }
6159   - { id: 6, class: gprc, preferred-register: '' }
6160   - { id: 7, class: gprc, preferred-register: '' }
6161   - { id: 8, class: gprc, preferred-register: '' }
6162 liveins:         
6163   - { reg: '$x3', virtual-reg: '%0' }
6164   - { reg: '$x4', virtual-reg: '%1' }
6165   - { reg: '$x5', virtual-reg: '%2' }
6166   - { reg: '$x6', virtual-reg: '%3' }
6167 frameInfo:       
6168   isFrameAddressTaken: false
6169   isReturnAddressTaken: false
6170   hasStackMap:     false
6171   hasPatchPoint:   false
6172   stackSize:       0
6173   offsetAdjustment: 0
6174   maxAlignment:    0
6175   adjustsStack:    false
6176   hasCalls:        false
6177   stackProtector:  ''
6178   maxCallFrameSize: 4294967295
6179   hasOpaqueSPAdjustment: false
6180   hasVAStart:      false
6181   hasMustTailInVarArgFunc: false
6182   savePoint:       ''
6183   restorePoint:    ''
6184 fixedStack:      
6185 stack:           
6186 constants:       
6187 body:             |
6188   bb.0.entry:
6189     liveins: $x3, $x4, $x5, $x6
6190   
6191     %3 = COPY $x6
6192     %2 = COPY $x5
6193     %1 = COPY $x4
6194     %6 = COPY %3.sub_32
6195     %7 = COPY %2.sub_32
6196     %8 = COPY %1.sub_32
6197     %0 = LI 55
6198     %4 = SUBFC %7, %0, implicit-def $carry
6199     ; CHECK: SUBFIC %7, 55
6200     ; CHECK-LATE: subfic 3, 5, 55
6201     %5 = SUBFE %6, %8, implicit-def dead $carry, implicit $carry
6202     $x3 = EXTSW_32_64 %4
6203     $x4 = EXTSW_32_64 %5
6204     BLR8 implicit $lr8, implicit $rm, implicit $x3, implicit $x4
6208 name:            testSUBFC8
6209 # CHECK-ALL: name: testSUBFC8
6210 alignment:       16
6211 exposesReturnsTwice: false
6212 legalized:       false
6213 regBankSelected: false
6214 selected:        false
6215 tracksRegLiveness: true
6216 registers:       
6217   - { id: 0, class: g8rc, preferred-register: '' }
6218   - { id: 1, class: g8rc, preferred-register: '' }
6219   - { id: 2, class: g8rc, preferred-register: '' }
6220   - { id: 3, class: g8rc, preferred-register: '' }
6221   - { id: 4, class: g8rc, preferred-register: '' }
6222   - { id: 5, class: g8rc, preferred-register: '' }
6223 liveins:         
6224   - { reg: '$x3', virtual-reg: '%0' }
6225   - { reg: '$x4', virtual-reg: '%1' }
6226   - { reg: '$x5', virtual-reg: '%2' }
6227   - { reg: '$x6', virtual-reg: '%3' }
6228 frameInfo:       
6229   isFrameAddressTaken: false
6230   isReturnAddressTaken: false
6231   hasStackMap:     false
6232   hasPatchPoint:   false
6233   stackSize:       0
6234   offsetAdjustment: 0
6235   maxAlignment:    0
6236   adjustsStack:    false
6237   hasCalls:        false
6238   stackProtector:  ''
6239   maxCallFrameSize: 4294967295
6240   hasOpaqueSPAdjustment: false
6241   hasVAStart:      false
6242   hasMustTailInVarArgFunc: false
6243   savePoint:       ''
6244   restorePoint:    ''
6245 fixedStack:      
6246 stack:           
6247 constants:       
6248 body:             |
6249   bb.0.entry:
6250     liveins: $x3, $x4, $x5, $x6
6251   
6252     %3 = COPY $x6
6253     %2 = COPY $x5
6254     %1 = COPY $x4
6255     %0 = LI8 7635
6256     %4 = SUBFC8 %2, %0, implicit-def $carry
6257     ; CHECK: SUBFIC8 %2, 7635
6258     ; CHECK-LATE: subfic 3, 5, 7635
6259     %5 = SUBFE8 %3, %1, implicit-def dead $carry, implicit $carry
6260     $x3 = COPY %4
6261     $x4 = COPY %5
6262     BLR8 implicit $lr8, implicit $rm, implicit $x3, implicit $x4
6266 name:            testXOR
6267 # CHECK-ALL: name: testXOR
6268 alignment:       16
6269 exposesReturnsTwice: false
6270 legalized:       false
6271 regBankSelected: false
6272 selected:        false
6273 tracksRegLiveness: true
6274 registers:       
6275   - { id: 0, class: g8rc, preferred-register: '' }
6276   - { id: 1, class: gprc, preferred-register: '' }
6277   - { id: 2, class: gprc, preferred-register: '' }
6278   - { id: 3, class: gprc, preferred-register: '' }
6279 liveins:         
6280   - { reg: '$x3', virtual-reg: '%0' }
6281   - { reg: '$x4', virtual-reg: '%1' }
6282 frameInfo:       
6283   isFrameAddressTaken: false
6284   isReturnAddressTaken: false
6285   hasStackMap:     false
6286   hasPatchPoint:   false
6287   stackSize:       0
6288   offsetAdjustment: 0
6289   maxAlignment:    0
6290   adjustsStack:    false
6291   hasCalls:        false
6292   stackProtector:  ''
6293   maxCallFrameSize: 4294967295
6294   hasOpaqueSPAdjustment: false
6295   hasVAStart:      false
6296   hasMustTailInVarArgFunc: false
6297   savePoint:       ''
6298   restorePoint:    ''
6299 fixedStack:      
6300 stack:           
6301 constants:       
6302 body:             |
6303   bb.0.entry:
6304     liveins: $x3, $x4
6305   
6306     %1 = LI 10101
6307     %0 = COPY $x3
6308     %3 = COPY %0.sub_32
6309     %2 = XOR %1, %3
6310     ; CHECK: XORI %3, 10101
6311     ; CHECK-LATE: 3, 3, 10101
6312     $x3 = EXTSW_32_64 %2
6313     BLR8 implicit $lr8, implicit $rm, implicit $x3
6317 name:            testXOR8
6318 # CHECK-ALL: name: testXOR8
6319 alignment:       16
6320 exposesReturnsTwice: false
6321 legalized:       false
6322 regBankSelected: false
6323 selected:        false
6324 tracksRegLiveness: true
6325 registers:       
6326   - { id: 0, class: g8rc, preferred-register: '' }
6327   - { id: 1, class: g8rc, preferred-register: '' }
6328   - { id: 2, class: g8rc, preferred-register: '' }
6329 liveins:         
6330   - { reg: '$x3', virtual-reg: '%0' }
6331   - { reg: '$x4', virtual-reg: '%1' }
6332 frameInfo:       
6333   isFrameAddressTaken: false
6334   isReturnAddressTaken: false
6335   hasStackMap:     false
6336   hasPatchPoint:   false
6337   stackSize:       0
6338   offsetAdjustment: 0
6339   maxAlignment:    0
6340   adjustsStack:    false
6341   hasCalls:        false
6342   stackProtector:  ''
6343   maxCallFrameSize: 4294967295
6344   hasOpaqueSPAdjustment: false
6345   hasVAStart:      false
6346   hasMustTailInVarArgFunc: false
6347   savePoint:       ''
6348   restorePoint:    ''
6349 fixedStack:      
6350 stack:           
6351 constants:       
6352 body:             |
6353   bb.0.entry:
6354     liveins: $x3, $x4
6355   
6356     %1 = COPY $x4
6357     %0 = LI8 5535
6358     %2 = XOR8 %1, %0
6359     ; CHECK: XORI8 %1, 5535
6360     ; CHECK-LATE: xori 3, 4, 5535
6361     $x3 = COPY %2
6362     BLR8 implicit $lr8, implicit $rm, implicit $x3
6366 name:            testXORI
6367 # CHECK-ALL: name: testXORI
6368 alignment:       16
6369 exposesReturnsTwice: false
6370 legalized:       false
6371 regBankSelected: false
6372 selected:        false
6373 tracksRegLiveness: true
6374 registers:       
6375   - { id: 0, class: gprc, preferred-register: '' }
6376   - { id: 1, class: gprc, preferred-register: '' }
6377 liveins:         
6378   - { reg: '$x3', virtual-reg: '%0' }
6379 frameInfo:       
6380   isFrameAddressTaken: false
6381   isReturnAddressTaken: false
6382   hasStackMap:     false
6383   hasPatchPoint:   false
6384   stackSize:       0
6385   offsetAdjustment: 0
6386   maxAlignment:    0
6387   adjustsStack:    false
6388   hasCalls:        false
6389   stackProtector:  ''
6390   maxCallFrameSize: 4294967295
6391   hasOpaqueSPAdjustment: false
6392   hasVAStart:      false
6393   hasMustTailInVarArgFunc: false
6394   savePoint:       ''
6395   restorePoint:    ''
6396 fixedStack:      
6397 stack:           
6398 constants:       
6399 body:             |
6400   bb.0.entry:
6401     liveins: $x3
6402   
6403     %0 = LI 871
6404     %1 = XORI %0, 17
6405     ; CHECK: LI 886
6406     ; CHECK-LATE: li 3, 886
6407     $x3 = EXTSW_32_64 %1
6408     BLR8 implicit $lr8, implicit $rm, implicit $x3
6412 name:            testXOR8I
6413 # CHECK-ALL: name: testXOR8I
6414 alignment:       16
6415 exposesReturnsTwice: false
6416 legalized:       false
6417 regBankSelected: false
6418 selected:        false
6419 tracksRegLiveness: true
6420 registers:       
6421   - { id: 0, class: g8rc, preferred-register: '' }
6422   - { id: 1, class: g8rc, preferred-register: '' }
6423 liveins:         
6424   - { reg: '$x3', virtual-reg: '%0' }
6425 frameInfo:       
6426   isFrameAddressTaken: false
6427   isReturnAddressTaken: false
6428   hasStackMap:     false
6429   hasPatchPoint:   false
6430   stackSize:       0
6431   offsetAdjustment: 0
6432   maxAlignment:    0
6433   adjustsStack:    false
6434   hasCalls:        false
6435   stackProtector:  ''
6436   maxCallFrameSize: 4294967295
6437   hasOpaqueSPAdjustment: false
6438   hasVAStart:      false
6439   hasMustTailInVarArgFunc: false
6440   savePoint:       ''
6441   restorePoint:    ''
6442 fixedStack:      
6443 stack:           
6444 constants:       
6445 body:             |
6446   bb.0.entry:
6447     liveins: $x3
6448   
6449     %0 = LI8 453
6450     %1 = XORI8 %0, 17
6451     ; CHECK: LI8 468
6452     ; CHECK-LATE: li 3, 468
6453     $x3 = COPY %1
6454     BLR8 implicit $lr8, implicit $rm, implicit $x3