[RISCV][VLOPT] Add vector narrowing integer right shift instructions to isSupportedIn...
[llvm-project.git] / llvm / test / CodeGen / PowerPC / resolvefi-basereg.ll
blob10fba54c2d6a437344dbfcf04e6c1ca32ec07e51
1 ; RUN: llc -verify-machineinstrs -O0 -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 < %s | FileCheck %s
3 ; Due to a bug in resolveFrameIndex we ended up with invalid addresses
4 ; containing a base register 0.  Verify that this no longer happens.
5 ; CHECK-NOT: (0)
7 target datalayout = "E-m:e-i64:64-n32:64"
8 target triple = "powerpc64-unknown-linux-gnu"
10 %struct.Info = type { i32, i32, ptr, ptr, ptr, [32 x ptr], i64, [32 x i64], i64, i64, i64, [32 x i64] }
11 %struct.S1998 = type { [2 x ptr], i64, i64, double, i16, i32, [29 x %struct.anon], i16, i8, i32, [8 x i8] }
12 %struct.anon = type { [16 x double], i32, i16, i32, [3 x i8], [6 x i8], [4 x i32], i8 }
14 @info = global %struct.Info zeroinitializer, align 8
15 @fails = global i32 0, align 4
16 @intarray = global [256 x i32] zeroinitializer, align 4
17 @s1998 = global %struct.S1998 zeroinitializer, align 16
18 @a1998 = external global [5 x %struct.S1998]
20 define void @test1998() {
21 entry:
22   %i = alloca i32, align 4
23   %j = alloca i32, align 4
24   %tmp = alloca i32, align 4
25   %agg.tmp = alloca %struct.S1998, align 16
26   %agg.tmp111 = alloca %struct.S1998, align 16
27   %agg.tmp112 = alloca %struct.S1998, align 16
28   %agg.tmp113 = alloca %struct.S1998, align 16
29   %agg.tmp114 = alloca %struct.S1998, align 16
30   %agg.tmp115 = alloca %struct.S1998, align 16
31   %agg.tmp116 = alloca %struct.S1998, align 16
32   %agg.tmp117 = alloca %struct.S1998, align 16
33   %agg.tmp118 = alloca %struct.S1998, align 16
34   %agg.tmp119 = alloca %struct.S1998, align 16
35   call void @llvm.memset.p0.i64(ptr align 16 @s1998, i8 0, i64 5168, i1 false)
36   call void @llvm.memset.p0.i64(ptr align 16 @a1998, i8 0, i64 25840, i1 false)
37   call void @llvm.memset.p0.i64(ptr align 8 @info, i8 0, i64 832, i1 false)
38   store ptr @s1998, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 2), align 8
39   store ptr @a1998, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 3), align 8
40   store ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 3), ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 4), align 8
41   store i64 5168, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 6), align 8
42   store i64 16, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 8), align 8
43   store i64 16, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 9), align 8
44   store i64 16, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 10), align 8
45   %0 = load i64, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 8), align 8
46   %sub = sub i64 %0, 1
47   %and = and i64 ptrtoint (ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 3) to i64), %sub
48   %tobool = icmp ne i64 %and, 0
49   br i1 %tobool, label %if.then, label %if.end
51 if.then:                                          ; preds = %entry
52   %1 = load i32, ptr @fails, align 4
53   %inc = add nsw i32 %1, 1
54   store i32 %inc, ptr @fails, align 4
55   br label %if.end
57 if.end:                                           ; preds = %if.then, %entry
58   store i32 0, ptr %i, align 4
59   store i32 0, ptr %j, align 4
60   %2 = load i32, ptr %i, align 4
61   %idxprom = sext i32 %2 to i64
62   %arrayidx = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom
63   store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 0, i64 1), ptr %arrayidx, align 8
64   %3 = load i32, ptr %i, align 4
65   %idxprom1 = sext i32 %3 to i64
66   %arrayidx2 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom1
67   store i64 8, ptr %arrayidx2, align 8
68   %4 = load i32, ptr %i, align 4
69   %idxprom3 = sext i32 %4 to i64
70   %arrayidx4 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom3
71   store i64 8, ptr %arrayidx4, align 8
72   store ptr getelementptr inbounds ([256 x i32], ptr @intarray, i32 0, i64 190), ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 0, i64 1), align 8
73   store ptr getelementptr inbounds ([256 x i32], ptr @intarray, i32 0, i64 241), ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 0, i64 1), align 8
74   %5 = load i32, ptr %i, align 4
75   %inc5 = add nsw i32 %5, 1
76   store i32 %inc5, ptr %i, align 4
77   %6 = load i32, ptr %i, align 4
78   %idxprom6 = sext i32 %6 to i64
79   %arrayidx7 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom6
80   store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 1), ptr %arrayidx7, align 8
81   %7 = load i32, ptr %i, align 4
82   %idxprom8 = sext i32 %7 to i64
83   %arrayidx9 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom8
84   store i64 8, ptr %arrayidx9, align 8
85   %8 = load i32, ptr %i, align 4
86   %idxprom10 = sext i32 %8 to i64
87   %arrayidx11 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom10
88   store i64 8, ptr %arrayidx11, align 8
89   store i64 -3866974208859106459, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 1), align 8
90   store i64 -185376695371304091, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 1), align 8
91   %9 = load i32, ptr %i, align 4
92   %inc12 = add nsw i32 %9, 1
93   store i32 %inc12, ptr %i, align 4
94   %10 = load i32, ptr %i, align 4
95   %idxprom13 = sext i32 %10 to i64
96   %arrayidx14 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom13
97   store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 2), ptr %arrayidx14, align 8
98   %11 = load i32, ptr %i, align 4
99   %idxprom15 = sext i32 %11 to i64
100   %arrayidx16 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom15
101   store i64 8, ptr %arrayidx16, align 8
102   %12 = load i32, ptr %i, align 4
103   %idxprom17 = sext i32 %12 to i64
104   %arrayidx18 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom17
105   store i64 8, ptr %arrayidx18, align 8
106   store i64 -963638028680427187, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 2), align 8
107   store i64 7510542175772455554, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 2), align 8
108   %13 = load i32, ptr %i, align 4
109   %inc19 = add nsw i32 %13, 1
110   store i32 %inc19, ptr %i, align 4
111   %14 = load i32, ptr %i, align 4
112   %idxprom20 = sext i32 %14 to i64
113   %arrayidx21 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom20
114   store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 3), ptr %arrayidx21, align 8
115   %15 = load i32, ptr %i, align 4
116   %idxprom22 = sext i32 %15 to i64
117   %arrayidx23 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom22
118   store i64 8, ptr %arrayidx23, align 8
119   %16 = load i32, ptr %i, align 4
120   %idxprom24 = sext i32 %16 to i64
121   %arrayidx25 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom24
122   store i64 16, ptr %arrayidx25, align 8
123   store double 0xC0F8783300000000, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 3), align 16
124   store double 0xC10DF3CCC0000000, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 3), align 16
125   %17 = load i32, ptr %i, align 4
126   %inc26 = add nsw i32 %17, 1
127   store i32 %inc26, ptr %i, align 4
128   %18 = load i32, ptr %i, align 4
129   %idxprom27 = sext i32 %18 to i64
130   %arrayidx28 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom27
131   store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 4), ptr %arrayidx28, align 8
132   %19 = load i32, ptr %i, align 4
133   %idxprom29 = sext i32 %19 to i64
134   %arrayidx30 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom29
135   store i64 2, ptr %arrayidx30, align 8
136   %20 = load i32, ptr %i, align 4
137   %idxprom31 = sext i32 %20 to i64
138   %arrayidx32 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom31
139   store i64 2, ptr %arrayidx32, align 8
140   store i16 -15897, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 4), align 2
141   store i16 30935, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 4), align 2
142   %21 = load i32, ptr %i, align 4
143   %inc33 = add nsw i32 %21, 1
144   store i32 %inc33, ptr %i, align 4
145   store i32 -419541644, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 5), align 4
146   store i32 2125926812, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 5), align 4
147   %22 = load i32, ptr %j, align 4
148   %inc34 = add nsw i32 %22, 1
149   store i32 %inc34, ptr %j, align 4
150   %23 = load i32, ptr %i, align 4
151   %idxprom35 = sext i32 %23 to i64
152   %arrayidx36 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom35
153   store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 0, i64 0), ptr %arrayidx36, align 8
154   %24 = load i32, ptr %i, align 4
155   %idxprom37 = sext i32 %24 to i64
156   %arrayidx38 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom37
157   store i64 8, ptr %arrayidx38, align 8
158   %25 = load i32, ptr %i, align 4
159   %idxprom39 = sext i32 %25 to i64
160   %arrayidx40 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom39
161   store i64 8, ptr %arrayidx40, align 8
162   store double 0xC0FC765780000000, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 0, i64 0), align 8
163   store double 0xC1025CD7A0000000, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 0, i64 0), align 8
164   %26 = load i32, ptr %i, align 4
165   %inc41 = add nsw i32 %26, 1
166   store i32 %inc41, ptr %i, align 4
167   %bf.load = load i32, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 1), align 8
168   %bf.clear = and i32 %bf.load, 7
169   %bf.set = or i32 %bf.clear, 16
170   store i32 %bf.set, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 1), align 8
171   %bf.load42 = load i32, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 1), align 8
172   %bf.clear43 = and i32 %bf.load42, 7
173   %bf.set44 = or i32 %bf.clear43, 24
174   store i32 %bf.set44, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 1), align 8
175   %27 = load i32, ptr %j, align 4
176   %inc45 = add nsw i32 %27, 1
177   store i32 %inc45, ptr %j, align 4
178   %bf.load46 = load i16, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 2), align 4
179   %bf.clear47 = and i16 %bf.load46, 127
180   store i16 %bf.clear47, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 2), align 4
181   %bf.load48 = load i16, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 2), align 4
182   %bf.clear49 = and i16 %bf.load48, 127
183   store i16 %bf.clear49, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 2), align 4
184   %28 = load i32, ptr %j, align 4
185   %inc50 = add nsw i32 %28, 1
186   store i32 %inc50, ptr %j, align 4
187   %bf.load51 = load i32, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 3), align 8
188   %bf.clear52 = and i32 %bf.load51, 63
189   store i32 %bf.clear52, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 3), align 8
190   %bf.load53 = load i32, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 3), align 8
191   %bf.clear54 = and i32 %bf.load53, 63
192   %bf.set55 = or i32 %bf.clear54, 64
193   store i32 %bf.set55, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 3), align 8
194   %29 = load i32, ptr %j, align 4
195   %inc56 = add nsw i32 %29, 1
196   store i32 %inc56, ptr %j, align 4
197   %bf.load57 = load i24, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 4), align 4
198   %bf.clear58 = and i24 %bf.load57, 63
199   store i24 %bf.clear58, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 4), align 4
200   %bf.load59 = load i24, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 4), align 4
201   %bf.clear60 = and i24 %bf.load59, 63
202   store i24 %bf.clear60, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 4), align 4
203   %30 = load i32, ptr %j, align 4
204   %inc61 = add nsw i32 %30, 1
205   store i32 %inc61, ptr %j, align 4
206   %31 = load i32, ptr %i, align 4
207   %idxprom62 = sext i32 %31 to i64
208   %arrayidx63 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom62
209   store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 5, i64 5), ptr %arrayidx63, align 8
210   %32 = load i32, ptr %i, align 4
211   %idxprom64 = sext i32 %32 to i64
212   %arrayidx65 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom64
213   store i64 1, ptr %arrayidx65, align 8
214   %33 = load i32, ptr %i, align 4
215   %idxprom66 = sext i32 %33 to i64
216   %arrayidx67 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom66
217   store i64 1, ptr %arrayidx67, align 8
218   store i8 -83, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 5, i64 5), align 1
219   store i8 -67, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 5, i64 5), align 1
220   %34 = load i32, ptr %i, align 4
221   %inc68 = add nsw i32 %34, 1
222   store i32 %inc68, ptr %i, align 4
223   %35 = load i32, ptr %i, align 4
224   %idxprom69 = sext i32 %35 to i64
225   %arrayidx70 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom69
226   store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 5, i64 1), ptr %arrayidx70, align 8
227   %36 = load i32, ptr %i, align 4
228   %idxprom71 = sext i32 %36 to i64
229   %arrayidx72 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom71
230   store i64 1, ptr %arrayidx72, align 8
231   %37 = load i32, ptr %i, align 4
232   %idxprom73 = sext i32 %37 to i64
233   %arrayidx74 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom73
234   store i64 1, ptr %arrayidx74, align 8
235   store i8 34, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 5, i64 1), align 1
236   store i8 64, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 5, i64 1), align 1
237   %38 = load i32, ptr %i, align 4
238   %inc75 = add nsw i32 %38, 1
239   store i32 %inc75, ptr %i, align 4
240   %39 = load i32, ptr %i, align 4
241   %idxprom76 = sext i32 %39 to i64
242   %arrayidx77 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom76
243   store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 6, i64 3), ptr %arrayidx77, align 8
244   %40 = load i32, ptr %i, align 4
245   %idxprom78 = sext i32 %40 to i64
246   %arrayidx79 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom78
247   store i64 4, ptr %arrayidx79, align 8
248   %41 = load i32, ptr %i, align 4
249   %idxprom80 = sext i32 %41 to i64
250   %arrayidx81 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom80
251   store i64 4, ptr %arrayidx81, align 8
252   store i32 -3, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 6, i64 3), align 4
253   store i32 -3, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 6, i64 3), align 4
254   %42 = load i32, ptr %i, align 4
255   %inc82 = add nsw i32 %42, 1
256   store i32 %inc82, ptr %i, align 4
257   %43 = load i32, ptr %i, align 4
258   %idxprom83 = sext i32 %43 to i64
259   %arrayidx84 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom83
260   store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 7), ptr %arrayidx84, align 8
261   %44 = load i32, ptr %i, align 4
262   %idxprom85 = sext i32 %44 to i64
263   %arrayidx86 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom85
264   store i64 1, ptr %arrayidx86, align 8
265   %45 = load i32, ptr %i, align 4
266   %idxprom87 = sext i32 %45 to i64
267   %arrayidx88 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom87
268   store i64 1, ptr %arrayidx88, align 8
269   store i8 106, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 7), align 1
270   store i8 -102, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 7), align 1
271   %46 = load i32, ptr %i, align 4
272   %inc89 = add nsw i32 %46, 1
273   store i32 %inc89, ptr %i, align 4
274   %47 = load i32, ptr %i, align 4
275   %idxprom90 = sext i32 %47 to i64
276   %arrayidx91 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom90
277   store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 7), ptr %arrayidx91, align 8
278   %48 = load i32, ptr %i, align 4
279   %idxprom92 = sext i32 %48 to i64
280   %arrayidx93 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom92
281   store i64 2, ptr %arrayidx93, align 8
282   %49 = load i32, ptr %i, align 4
283   %idxprom94 = sext i32 %49 to i64
284   %arrayidx95 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom94
285   store i64 2, ptr %arrayidx95, align 8
286   store i16 29665, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 7), align 2
287   store i16 7107, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 7), align 2
288   %50 = load i32, ptr %i, align 4
289   %inc96 = add nsw i32 %50, 1
290   store i32 %inc96, ptr %i, align 4
291   %51 = load i32, ptr %i, align 4
292   %idxprom97 = sext i32 %51 to i64
293   %arrayidx98 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom97
294   store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 8), ptr %arrayidx98, align 8
295   %52 = load i32, ptr %i, align 4
296   %idxprom99 = sext i32 %52 to i64
297   %arrayidx100 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom99
298   store i64 1, ptr %arrayidx100, align 8
299   %53 = load i32, ptr %i, align 4
300   %idxprom101 = sext i32 %53 to i64
301   %arrayidx102 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom101
302   store i64 1, ptr %arrayidx102, align 8
303   store i8 52, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 8), align 1
304   store i8 -86, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 8), align 1
305   %54 = load i32, ptr %i, align 4
306   %inc103 = add nsw i32 %54, 1
307   store i32 %inc103, ptr %i, align 4
308   %55 = load i32, ptr %i, align 4
309   %idxprom104 = sext i32 %55 to i64
310   %arrayidx105 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom104
311   store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 9), ptr %arrayidx105, align 8
312   %56 = load i32, ptr %i, align 4
313   %idxprom106 = sext i32 %56 to i64
314   %arrayidx107 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom106
315   store i64 4, ptr %arrayidx107, align 8
316   %57 = load i32, ptr %i, align 4
317   %idxprom108 = sext i32 %57 to i64
318   %arrayidx109 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom108
319   store i64 4, ptr %arrayidx109, align 8
320   store i32 -54118453, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 9), align 4
321   store i32 1668755823, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 9), align 4
322   %58 = load i32, ptr %i, align 4
323   %inc110 = add nsw i32 %58, 1
324   store i32 %inc110, ptr %i, align 4
325   store i32 %inc110, ptr %tmp
326   %59 = load i32, ptr %tmp
327   %60 = load i32, ptr %i, align 4
328   store i32 %60, ptr @info, align 4
329   %61 = load i32, ptr %j, align 4
330   store i32 %61, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 1), align 4
331   call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp111, ptr align 16 @s1998, i64 5168, i1 false)
332   call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp112, ptr align 16 getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2), i64 5168, i1 false)
333   call void @check1998(ptr sret(%struct.S1998) %agg.tmp, ptr byval(%struct.S1998) align 16 %agg.tmp111, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 1), ptr byval(%struct.S1998) align 16 %agg.tmp112)
334   call void @checkx1998(ptr byval(%struct.S1998) align 16 %agg.tmp)
335   call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp113, ptr align 16 @s1998, i64 5168, i1 false)
336   call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp114, ptr align 16 getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2), i64 5168, i1 false)
337   call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp115, ptr align 16 getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2), i64 5168, i1 false)
338   call void (i32, ...) @check1998va(i32 signext 1, double 1.000000e+00, ptr byval(%struct.S1998) align 16 %agg.tmp113, i64 2, ptr byval(%struct.S1998) align 16 %agg.tmp114, ptr byval(%struct.S1998) align 16 %agg.tmp115)
339   call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp116, ptr align 16 @s1998, i64 5168, i1 false)
340   call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp117, ptr align 16 @s1998, i64 5168, i1 false)
341   call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp118, ptr align 16 getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2), i64 5168, i1 false)
342   call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp119, ptr align 16 @s1998, i64 5168, i1 false)
343   call void (i32, ...) @check1998va(i32 signext 2, ptr byval(%struct.S1998) align 16 %agg.tmp116, ptr byval(%struct.S1998) align 16 %agg.tmp117, ppc_fp128 0xM40000000000000000000000000000000, ptr byval(%struct.S1998) align 16 %agg.tmp118, ptr byval(%struct.S1998) align 16 %agg.tmp119)
344   ret void
347 declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1)
348 declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1)
350 declare void @check1998(ptr sret(%struct.S1998), ptr byval(%struct.S1998) align 16, ptr, ptr byval(%struct.S1998) align 16)
351 declare void @check1998va(i32 signext, ...)
352 declare void @checkx1998(ptr byval(%struct.S1998) align 16 %arg)