Home | History | Annotate | Download | only in Hexagon
      1 ; RUN: llc -march=hexagon -O3 -verify-machineinstrs < %s
      2 ; REQUIRES: asserts
      3 ; Expect clean compilation.
      4 
      5 target triple = "hexagon"
      6 
      7 %s.0 = type { i16, i16, [4 x i16], i16, i16, [3 x i16], [3 x [4 x i16]], [3 x i16], [2 x [2 x i16]], i16, i16, i16, i16, [2 x i16], i16, i16, [3 x i16], [17 x i16] }
      8 
      9 @g0 = external global i16
     10 @g1 = external global [2 x i16]
     11 @g2 = external global [10 x i16]
     12 @g3 = external global %s.0
     13 @g4 = external global [160 x i16]
     14 @g5 = external global i16
     15 @g6 = external global i16
     16 @g7 = external global i16
     17 @g8 = external global i16
     18 @g9 = external global i16
     19 @g10 = external global i16
     20 @g11 = external global i16
     21 @g12 = external global [192 x i16]
     22 @g13 = external global [10 x i32]
     23 @g14 = external global i16
     24 
     25 ; Function Attrs: nounwind
     26 define signext i16 @f0(i16 signext %a0, i16* nocapture readonly %a1) #0 {
     27 b0:
     28   %v0 = alloca i32, align 4
     29   %v1 = alloca i32, align 4
     30   store i32 327685, i32* %v0, align 4
     31   store i32 1048592, i32* %v1, align 4
     32   %v2 = sext i16 %a0 to i32
     33   switch i32 %v2, label %b35 [
     34     i32 0, label %b1
     35     i32 1, label %b9
     36     i32 2, label %b11
     37     i32 3, label %b15
     38     i32 4, label %b20
     39     i32 5, label %b30
     40   ]
     41 
     42 b1:                                               ; preds = %b0
     43   %v3 = load i16, i16* %a1, align 2, !tbaa !0
     44   %v4 = icmp eq i16 %v3, -1
     45   br i1 %v4, label %b2, label %b4
     46 
     47 b2:                                               ; preds = %b1
     48   %v5 = load i16, i16* @g0, align 2, !tbaa !0
     49   %v6 = add i16 %v5, 1
     50   store i16 %v6, i16* @g0, align 2, !tbaa !0
     51   %v7 = icmp sgt i16 %v6, 2
     52   br i1 %v7, label %b3, label %b5
     53 
     54 b3:                                               ; preds = %b2
     55   store i16 3, i16* @g0, align 2, !tbaa !0
     56   br label %b35
     57 
     58 b4:                                               ; preds = %b1
     59   store i16 0, i16* @g0, align 2, !tbaa !0
     60   br label %b5
     61 
     62 b5:                                               ; preds = %b4, %b2
     63   %v8 = load i16, i16* %a1, align 2, !tbaa !0
     64   %v9 = icmp ne i16 %v8, 0
     65   %v10 = load i16, i16* getelementptr inbounds ([2 x i16], [2 x i16]* @g1, i32 0, i32 0), align 2
     66   %v11 = icmp eq i16 %v10, 0
     67   %v12 = and i1 %v9, %v11
     68   br i1 %v12, label %b6, label %b35
     69 
     70 b6:                                               ; preds = %b5
     71   %v13 = bitcast i32* %v0 to i16*
     72   %v14 = bitcast i32* %v1 to i16*
     73   call void @f1(i16* %v13, i16* %v14, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 0), i16* getelementptr inbounds (%s.0, %s.0* @g3, i32 0, i32 2, i32 0), i16* getelementptr inbounds ([160 x i16], [160 x i16]* @g4, i32 0, i32 0))
     74   %v15 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 0), align 2, !tbaa !0
     75   %v16 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 1), align 2, !tbaa !0
     76   %v17 = icmp sgt i16 %v15, %v16
     77   %v18 = select i1 %v17, i16 %v15, i16 %v16
     78   %v19 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 2), align 2, !tbaa !0
     79   %v20 = icmp sgt i16 %v18, %v19
     80   %v21 = select i1 %v20, i16 %v18, i16 %v19
     81   %v22 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 3), align 2, !tbaa !0
     82   %v23 = icmp sgt i16 %v21, %v22
     83   %v24 = select i1 %v23, i16 %v21, i16 %v22
     84   %v25 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 4), align 2, !tbaa !0
     85   %v26 = icmp sle i16 %v24, %v25
     86   %v27 = xor i1 %v23, true
     87   %v28 = or i1 %v26, %v27
     88   %v29 = select i1 %v26, i16 %v25, i16 %v22
     89   %v30 = select i1 %v28, i16 %v29, i16 %v21
     90   %v31 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 5), align 2, !tbaa !0
     91   %v32 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 6), align 2, !tbaa !0
     92   %v33 = icmp slt i16 %v31, %v32
     93   %v34 = select i1 %v33, i16 %v31, i16 %v32
     94   %v35 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 7), align 2, !tbaa !0
     95   %v36 = icmp slt i16 %v34, %v35
     96   %v37 = select i1 %v36, i16 %v34, i16 %v35
     97   %v38 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 8), align 2, !tbaa !0
     98   %v39 = icmp slt i16 %v37, %v38
     99   %v40 = select i1 %v39, i16 %v37, i16 %v38
    100   %v41 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 9), align 2, !tbaa !0
    101   %v42 = icmp sge i16 %v40, %v41
    102   %v43 = xor i1 %v39, true
    103   %v44 = or i1 %v42, %v43
    104   %v45 = select i1 %v42, i16 %v41, i16 %v38
    105   %v46 = select i1 %v44, i16 %v45, i16 %v37
    106   %v47 = icmp slt i16 %v30, %v46
    107   br i1 %v47, label %b7, label %b35
    108 
    109 b7:                                               ; preds = %b6
    110   %v48 = load i16, i16* @g5, align 2, !tbaa !0
    111   %v49 = icmp eq i16 %v48, 4
    112   %v50 = load i16, i16* @g6, align 2
    113   %v51 = icmp eq i16 %v50, 0
    114   %v52 = and i1 %v49, %v51
    115   br i1 %v52, label %b35, label %b8
    116 
    117 b8:                                               ; preds = %b7
    118   br label %b35
    119 
    120 b9:                                               ; preds = %b0
    121   store i16 0, i16* @g0, align 2, !tbaa !0
    122   %v53 = load i16, i16* %a1, align 2, !tbaa !0
    123   %v54 = icmp eq i16 %v53, 0
    124   %v55 = zext i1 %v54 to i16
    125   %v56 = getelementptr i16, i16* %a1, i32 1
    126   %v57 = load i16, i16* %v56, align 2, !tbaa !0
    127   %v58 = icmp eq i16 %v57, 0
    128   %v59 = zext i1 %v58 to i16
    129   %v60 = add nuw nsw i16 %v59, %v55
    130   %v61 = getelementptr inbounds i16, i16* %a1, i32 2
    131   %v62 = load i16, i16* %v61, align 2, !tbaa !0
    132   %v63 = icmp ult i16 %v62, 256
    133   %v64 = zext i1 %v63 to i16
    134   %v65 = add nuw nsw i16 %v64, %v60
    135   %v66 = load i16, i16* getelementptr inbounds ([2 x i16], [2 x i16]* @g1, i32 0, i32 0), align 2
    136   %v67 = icmp eq i16 %v65, 3
    137   %v68 = icmp ne i16 %v66, 0
    138   %v69 = or i1 %v68, %v67
    139   %v70 = load i16, i16* getelementptr inbounds (%s.0, %s.0* @g3, i32 0, i32 9), align 2
    140   %v71 = icmp eq i16 %v70, 3
    141   %v72 = or i1 %v71, %v69
    142   br i1 %v72, label %b35, label %b10
    143 
    144 b10:                                              ; preds = %b9
    145   br label %b35
    146 
    147 b11:                                              ; preds = %b0
    148   store i16 0, i16* @g0, align 2, !tbaa !0
    149   %v73 = load i16, i16* %a1, align 2, !tbaa !0
    150   %v74 = icmp eq i16 %v73, 0
    151   %v75 = zext i1 %v74 to i16
    152   %v76 = getelementptr i16, i16* %a1, i32 1
    153   %v77 = load i16, i16* %v76, align 2, !tbaa !0
    154   %v78 = icmp eq i16 %v77, 0
    155   %v79 = zext i1 %v78 to i16
    156   %v80 = add nuw nsw i16 %v79, %v75
    157   %v81 = getelementptr inbounds i16, i16* %a1, i32 2
    158   %v82 = load i16, i16* %v81, align 2, !tbaa !0
    159   %v83 = icmp ult i16 %v82, 256
    160   %v84 = zext i1 %v83 to i16
    161   %v85 = add nuw nsw i16 %v84, %v80
    162   %v86 = icmp ne i16 %v85, 3
    163   %v87 = load i16, i16* getelementptr inbounds ([2 x i16], [2 x i16]* @g1, i32 0, i32 0), align 2
    164   %v88 = icmp eq i16 %v87, 0
    165   %v89 = and i1 %v88, %v86
    166   br i1 %v89, label %b12, label %b35
    167 
    168 b12:                                              ; preds = %b11
    169   %v90 = load i16, i16* @g5, align 2, !tbaa !0
    170   switch i16 %v90, label %b14 [
    171     i16 1, label %b35
    172     i16 2, label %b13
    173   ]
    174 
    175 b13:                                              ; preds = %b12
    176   %v91 = load i16, i16* @g7, align 2, !tbaa !0
    177   %v92 = load i16, i16* @g6, align 2
    178   %v93 = or i16 %v92, %v91
    179   %v94 = icmp eq i16 %v93, 0
    180   br i1 %v94, label %b35, label %b14
    181 
    182 b14:                                              ; preds = %b13, %b12
    183   br label %b35
    184 
    185 b15:                                              ; preds = %b0
    186   store i16 0, i16* @g0, align 2, !tbaa !0
    187   %v95 = load i16, i16* %a1, align 2, !tbaa !0
    188   %v96 = icmp eq i16 %v95, 0
    189   %v97 = zext i1 %v96 to i16
    190   %v98 = getelementptr i16, i16* %a1, i32 1
    191   %v99 = load i16, i16* %v98, align 2, !tbaa !0
    192   %v100 = icmp eq i16 %v99, 0
    193   %v101 = zext i1 %v100 to i16
    194   %v102 = add nuw nsw i16 %v101, %v97
    195   %v103 = getelementptr i16, i16* %a1, i32 2
    196   %v104 = load i16, i16* %v103, align 2, !tbaa !0
    197   %v105 = icmp eq i16 %v104, 0
    198   %v106 = zext i1 %v105 to i16
    199   %v107 = add nuw nsw i16 %v106, %v102
    200   %v108 = getelementptr i16, i16* %a1, i32 3
    201   %v109 = load i16, i16* %v108, align 2, !tbaa !0
    202   %v110 = icmp eq i16 %v109, 0
    203   %v111 = zext i1 %v110 to i16
    204   %v112 = add nuw nsw i16 %v111, %v107
    205   %v113 = getelementptr i16, i16* %a1, i32 4
    206   %v114 = load i16, i16* %v113, align 2, !tbaa !0
    207   %v115 = icmp eq i16 %v114, 0
    208   %v116 = zext i1 %v115 to i16
    209   %v117 = add nuw nsw i16 %v116, %v112
    210   %v118 = icmp eq i16 %v117, 5
    211   br i1 %v118, label %b35, label %b16
    212 
    213 b16:                                              ; preds = %b15
    214   %v119 = load i16, i16* getelementptr inbounds (%s.0, %s.0* @g3, i32 0, i32 3), align 2, !tbaa !4
    215   switch i16 %v119, label %b17 [
    216     i16 120, label %b19
    217     i16 115, label %b19
    218   ]
    219 
    220 b17:                                              ; preds = %b16
    221   %v120 = icmp sgt i16 %v119, 100
    222   br i1 %v120, label %b35, label %b18
    223 
    224 b18:                                              ; preds = %b17
    225   tail call void @f2(i16* getelementptr inbounds (%s.0, %s.0* @g3, i32 0, i32 2, i32 0), i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 0))
    226   %v121 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 0), align 2, !tbaa !0
    227   %v122 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 1), align 2, !tbaa !0
    228   %v123 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 2), align 2, !tbaa !0
    229   %v124 = icmp sgt i16 %v122, %v123
    230   %v125 = select i1 %v124, i16 %v122, i16 %v123
    231   %v126 = icmp sgt i16 %v121, %v125
    232   %v127 = select i1 %v126, i16 %v121, i16 %v125
    233   %v128 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 6), align 2, !tbaa !0
    234   %v129 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 7), align 2, !tbaa !0
    235   %v130 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 8), align 2, !tbaa !0
    236   %v131 = icmp slt i16 %v129, %v130
    237   %v132 = select i1 %v131, i16 %v129, i16 %v130
    238   %v133 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 9), align 2, !tbaa !0
    239   %v134 = icmp slt i16 %v132, %v133
    240   %v135 = select i1 %v134, i16 %v132, i16 %v133
    241   %v136 = icmp slt i16 %v128, %v135
    242   %v137 = select i1 %v136, i16 %v128, i16 %v135
    243   %v138 = icmp slt i16 %v127, %v137
    244   br i1 %v138, label %b19, label %b35
    245 
    246 b19:                                              ; preds = %b18, %b16, %b16
    247   br label %b35
    248 
    249 b20:                                              ; preds = %b0
    250   store i16 0, i16* @g0, align 2, !tbaa !0
    251   %v139 = load i16, i16* %a1, align 2, !tbaa !0
    252   %v140 = icmp eq i16 %v139, 0
    253   %v141 = zext i1 %v140 to i16
    254   %v142 = getelementptr i16, i16* %a1, i32 1
    255   %v143 = load i16, i16* %v142, align 2, !tbaa !0
    256   %v144 = icmp eq i16 %v143, 0
    257   %v145 = zext i1 %v144 to i16
    258   %v146 = add nuw nsw i16 %v145, %v141
    259   %v147 = getelementptr i16, i16* %a1, i32 2
    260   %v148 = load i16, i16* %v147, align 2, !tbaa !0
    261   %v149 = icmp eq i16 %v148, 0
    262   %v150 = zext i1 %v149 to i16
    263   %v151 = add nuw nsw i16 %v150, %v146
    264   %v152 = getelementptr i16, i16* %a1, i32 3
    265   %v153 = load i16, i16* %v152, align 2, !tbaa !0
    266   %v154 = icmp eq i16 %v153, 0
    267   %v155 = zext i1 %v154 to i16
    268   %v156 = add nuw nsw i16 %v155, %v151
    269   %v157 = getelementptr i16, i16* %a1, i32 4
    270   %v158 = load i16, i16* %v157, align 2, !tbaa !0
    271   %v159 = icmp eq i16 %v158, 0
    272   %v160 = zext i1 %v159 to i16
    273   %v161 = add nuw nsw i16 %v160, %v156
    274   %v162 = getelementptr i16, i16* %a1, i32 5
    275   %v163 = load i16, i16* %v162, align 2, !tbaa !0
    276   %v164 = icmp eq i16 %v163, 0
    277   %v165 = zext i1 %v164 to i16
    278   %v166 = add nuw nsw i16 %v165, %v161
    279   %v167 = getelementptr i16, i16* %a1, i32 6
    280   %v168 = load i16, i16* %v167, align 2, !tbaa !0
    281   %v169 = icmp eq i16 %v168, 0
    282   %v170 = zext i1 %v169 to i16
    283   %v171 = add nuw nsw i16 %v170, %v166
    284   %v172 = getelementptr i16, i16* %a1, i32 7
    285   %v173 = load i16, i16* %v172, align 2, !tbaa !0
    286   %v174 = icmp eq i16 %v173, 0
    287   %v175 = zext i1 %v174 to i16
    288   %v176 = add i16 %v175, %v171
    289   %v177 = getelementptr i16, i16* %a1, i32 8
    290   %v178 = load i16, i16* %v177, align 2, !tbaa !0
    291   %v179 = icmp eq i16 %v178, 0
    292   %v180 = zext i1 %v179 to i16
    293   %v181 = add i16 %v180, %v176
    294   %v182 = getelementptr i16, i16* %a1, i32 9
    295   %v183 = load i16, i16* %v182, align 2, !tbaa !0
    296   %v184 = icmp eq i16 %v183, 0
    297   %v185 = zext i1 %v184 to i16
    298   %v186 = add i16 %v185, %v181
    299   %v187 = getelementptr inbounds i16, i16* %a1, i32 10
    300   %v188 = load i16, i16* %v187, align 2, !tbaa !0
    301   %v189 = icmp ult i16 %v188, 32
    302   %v190 = zext i1 %v189 to i16
    303   %v191 = add i16 %v190, %v186
    304   %v192 = icmp eq i16 %v191, 11
    305   br i1 %v192, label %b35, label %b21
    306 
    307 b21:                                              ; preds = %b20
    308   tail call void @f3(i16* getelementptr inbounds (%s.0, %s.0* @g3, i32 0, i32 2, i32 0), i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 0))
    309   %v193 = load i16, i16* @g8, align 2, !tbaa !0
    310   %v194 = icmp eq i16 %v193, 0
    311   br i1 %v194, label %b22, label %b35
    312 
    313 b22:                                              ; preds = %b21
    314   %v195 = load i16, i16* getelementptr inbounds (%s.0, %s.0* @g3, i32 0, i32 3), align 2, !tbaa !4
    315   %v196 = icmp sgt i16 %v195, 100
    316   br i1 %v196, label %b35, label %b23
    317 
    318 b23:                                              ; preds = %b22
    319   %v197 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 0), align 2, !tbaa !0
    320   %v198 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 1), align 2, !tbaa !0
    321   %v199 = icmp sgt i16 %v197, %v198
    322   %v200 = select i1 %v199, i16 %v197, i16 %v198
    323   %v201 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 4), align 2, !tbaa !0
    324   %v202 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 5), align 2, !tbaa !0
    325   %v203 = icmp slt i16 %v201, %v202
    326   %v204 = select i1 %v203, i16 %v201, i16 %v202
    327   %v205 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 6), align 2, !tbaa !0
    328   %v206 = icmp slt i16 %v204, %v205
    329   %v207 = select i1 %v206, i16 %v204, i16 %v205
    330   %v208 = icmp slt i16 %v200, %v207
    331   br i1 %v208, label %b24, label %b35
    332 
    333 b24:                                              ; preds = %b23
    334   %v209 = load i16, i16* @g5, align 2, !tbaa !0
    335   switch i16 %v209, label %b26 [
    336     i16 1, label %b35
    337     i16 2, label %b25
    338   ]
    339 
    340 b25:                                              ; preds = %b24
    341   %v210 = load i16, i16* @g7, align 2, !tbaa !0
    342   %v211 = load i16, i16* @g6, align 2
    343   %v212 = or i16 %v211, %v210
    344   %v213 = icmp eq i16 %v212, 0
    345   br i1 %v213, label %b35, label %b27
    346 
    347 b26:                                              ; preds = %b24
    348   %v214 = load i16, i16* @g6, align 2
    349   %v215 = icmp eq i16 %v214, 0
    350   br i1 %v215, label %b28, label %b35
    351 
    352 b27:                                              ; preds = %b25
    353   %v216 = load i16, i16* @g9, align 2
    354   %v217 = icmp eq i16 %v216, 0
    355   br i1 %v217, label %b28, label %b35
    356 
    357 b28:                                              ; preds = %b27, %b26
    358   %v218 = tail call signext i16 @f4(i16 signext %v195, i16 signext 20)
    359   store i16 %v218, i16* @g10, align 2, !tbaa !0
    360   %v219 = load i16, i16* @g11, align 2, !tbaa !0
    361   %v220 = tail call signext i16 @f6(i16 signext %v218, i16 signext %v219)
    362   %v221 = tail call signext i16 @f5(i16 signext %v220)
    363   %v222 = icmp sgt i16 %v221, 15
    364   br i1 %v222, label %b29, label %b35
    365 
    366 b29:                                              ; preds = %b28
    367   call void @llvm.memset.p0i8.i32(i8* align 2 bitcast ([192 x i16]* @g12 to i8*), i8 0, i32 256, i1 false)
    368   call void @llvm.memset.p0i8.i32(i8* align 4 bitcast ([10 x i32]* @g13 to i8*), i8 0, i32 40, i1 false)
    369   tail call void @f7()
    370   br label %b35
    371 
    372 b30:                                              ; preds = %b0
    373   store i16 0, i16* @g0, align 2, !tbaa !0
    374   %v223 = load i16, i16* %a1, align 2, !tbaa !0
    375   %v224 = icmp eq i16 %v223, 0
    376   %v225 = zext i1 %v224 to i16
    377   %v226 = getelementptr i16, i16* %a1, i32 1
    378   %v227 = load i16, i16* %v226, align 2, !tbaa !0
    379   %v228 = icmp eq i16 %v227, 0
    380   %v229 = zext i1 %v228 to i16
    381   %v230 = add nuw nsw i16 %v229, %v225
    382   %v231 = getelementptr i16, i16* %a1, i32 2
    383   %v232 = load i16, i16* %v231, align 2, !tbaa !0
    384   %v233 = icmp eq i16 %v232, 0
    385   %v234 = zext i1 %v233 to i16
    386   %v235 = add nuw nsw i16 %v234, %v230
    387   %v236 = getelementptr i16, i16* %a1, i32 3
    388   %v237 = load i16, i16* %v236, align 2, !tbaa !0
    389   %v238 = icmp eq i16 %v237, 0
    390   %v239 = zext i1 %v238 to i16
    391   %v240 = add nuw nsw i16 %v239, %v235
    392   %v241 = getelementptr i16, i16* %a1, i32 4
    393   %v242 = load i16, i16* %v241, align 2, !tbaa !0
    394   %v243 = icmp eq i16 %v242, 0
    395   %v244 = zext i1 %v243 to i16
    396   %v245 = add nuw nsw i16 %v244, %v240
    397   %v246 = getelementptr i16, i16* %a1, i32 5
    398   %v247 = load i16, i16* %v246, align 2, !tbaa !0
    399   %v248 = icmp eq i16 %v247, 0
    400   %v249 = zext i1 %v248 to i16
    401   %v250 = add nuw nsw i16 %v249, %v245
    402   %v251 = getelementptr i16, i16* %a1, i32 6
    403   %v252 = load i16, i16* %v251, align 2, !tbaa !0
    404   %v253 = icmp eq i16 %v252, 0
    405   %v254 = zext i1 %v253 to i16
    406   %v255 = add nuw nsw i16 %v254, %v250
    407   %v256 = getelementptr i16, i16* %a1, i32 7
    408   %v257 = load i16, i16* %v256, align 2, !tbaa !0
    409   %v258 = icmp eq i16 %v257, 0
    410   %v259 = zext i1 %v258 to i16
    411   %v260 = add i16 %v259, %v255
    412   %v261 = getelementptr i16, i16* %a1, i32 8
    413   %v262 = load i16, i16* %v261, align 2, !tbaa !0
    414   %v263 = icmp eq i16 %v262, 0
    415   %v264 = zext i1 %v263 to i16
    416   %v265 = add i16 %v264, %v260
    417   %v266 = getelementptr i16, i16* %a1, i32 9
    418   %v267 = load i16, i16* %v266, align 2, !tbaa !0
    419   %v268 = icmp eq i16 %v267, 0
    420   %v269 = zext i1 %v268 to i16
    421   %v270 = add i16 %v269, %v265
    422   %v271 = getelementptr inbounds i16, i16* %a1, i32 10
    423   %v272 = load i16, i16* %v271, align 2, !tbaa !0
    424   %v273 = icmp ult i16 %v272, 32
    425   %v274 = zext i1 %v273 to i16
    426   %v275 = add i16 %v274, %v270
    427   %v276 = icmp eq i16 %v275, 11
    428   br i1 %v276, label %b35, label %b31
    429 
    430 b31:                                              ; preds = %b30
    431   tail call void @f3(i16* getelementptr inbounds (%s.0, %s.0* @g3, i32 0, i32 2, i32 0), i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 0))
    432   %v277 = load i16, i16* @g14, align 2, !tbaa !0
    433   %v278 = icmp eq i16 %v277, 0
    434   br i1 %v278, label %b32, label %b34
    435 
    436 b32:                                              ; preds = %b31
    437   %v279 = load i16, i16* getelementptr inbounds (%s.0, %s.0* @g3, i32 0, i32 3), align 2, !tbaa !4
    438   %v280 = icmp sgt i16 %v279, 100
    439   br i1 %v280, label %b35, label %b33
    440 
    441 b33:                                              ; preds = %b32
    442   %v281 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 0), align 2, !tbaa !0
    443   %v282 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 1), align 2, !tbaa !0
    444   %v283 = icmp sgt i16 %v281, %v282
    445   %v284 = select i1 %v283, i16 %v281, i16 %v282
    446   %v285 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 4), align 2, !tbaa !0
    447   %v286 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 5), align 2, !tbaa !0
    448   %v287 = icmp slt i16 %v285, %v286
    449   %v288 = select i1 %v287, i16 %v285, i16 %v286
    450   %v289 = load i16, i16* getelementptr inbounds ([10 x i16], [10 x i16]* @g2, i32 0, i32 6), align 2, !tbaa !0
    451   %v290 = icmp slt i16 %v288, %v289
    452   %v291 = select i1 %v290, i16 %v288, i16 %v289
    453   %v292 = icmp slt i16 %v284, %v291
    454   br i1 %v292, label %b34, label %b35
    455 
    456 b34:                                              ; preds = %b33, %b31
    457   br label %b35
    458 
    459 b35:                                              ; preds = %b34, %b33, %b32, %b30, %b29, %b28, %b27, %b26, %b25, %b24, %b23, %b22, %b21, %b20, %b19, %b18, %b17, %b15, %b14, %b13, %b12, %b11, %b10, %b9, %b8, %b7, %b6, %b5, %b3, %b0
    460   %v293 = phi i16 [ 0, %b34 ], [ 1, %b29 ], [ 0, %b19 ], [ 0, %b14 ], [ 0, %b10 ], [ 0, %b3 ], [ 0, %b8 ], [ 1, %b5 ], [ 1, %b6 ], [ 1, %b9 ], [ 1, %b11 ], [ 1, %b12 ], [ 1, %b15 ], [ 1, %b17 ], [ 1, %b18 ], [ 1, %b20 ], [ 1, %b22 ], [ 1, %b23 ], [ 1, %b24 ], [ 0, %b27 ], [ 0, %b28 ], [ 0, %b21 ], [ 1, %b30 ], [ 1, %b32 ], [ 1, %b33 ], [ 0, %b0 ], [ 1, %b7 ], [ 1, %b13 ], [ 1, %b25 ], [ 0, %b26 ]
    461   ret i16 %v293
    462 }
    463 
    464 ; Function Attrs: nounwind
    465 declare void @f1(i16*, i16*, i16*, i16*, i16*) #0
    466 
    467 ; Function Attrs: nounwind
    468 declare void @f2(i16*, i16*) #0
    469 
    470 ; Function Attrs: nounwind
    471 declare void @f3(i16*, i16*) #0
    472 
    473 ; Function Attrs: nounwind
    474 declare signext i16 @f4(i16 signext, i16 signext) #0
    475 
    476 ; Function Attrs: nounwind
    477 declare signext i16 @f5(i16 signext) #0
    478 
    479 ; Function Attrs: nounwind
    480 declare signext i16 @f6(i16 signext, i16 signext) #0
    481 
    482 ; Function Attrs: nounwind
    483 declare void @f7() #0
    484 
    485 ; Function Attrs: argmemonly nounwind
    486 declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1) #1
    487 
    488 attributes #0 = { nounwind }
    489 attributes #1 = { argmemonly nounwind }
    490 
    491 !0 = !{!1, !1, i64 0}
    492 !1 = !{!"short", !2, i64 0}
    493 !2 = !{!"omnipotent char", !3, i64 0}
    494 !3 = !{!"Simple C/C++ TBAA"}
    495 !4 = !{!5, !1, i64 12}
    496 !5 = !{!"_ZTS6PACKET", !1, i64 0, !1, i64 2, !2, i64 4, !1, i64 12, !1, i64 14, !2, i64 16, !2, i64 22, !2, i64 46, !2, i64 52, !1, i64 60, !1, i64 62, !1, i64 64, !1, i64 66, !2, i64 68, !1, i64 72, !1, i64 74, !2, i64 76, !2, i64 82}
    497