Home | History | Annotate | Download | only in Hexagon
      1 ; RUN: llc -march=hexagon < %s
      2 ; REQUIRES: asserts
      3 
      4 ; Test that the pipeliner doesn't assert in the addLoopCarriedDependence
      5 ; function with the message "What happened to the chain edge?". The bug is that
      6 ; the pass wasn't checking for a sequence of chain edges from the load to the
      7 ; store. The code assumed a single chain edge only.
      8 
      9 %0 = type { %1*, [2 x [2 x %39]], [2 x [2 x %39]], [2 x i8], [2 x i8], [2 x i8], [2 x i8], i32, i32 }
     10 %1 = type { %0, %2, %3, %15, %16*, %98*, %99, %105*, %295*, %299, %303, %304, %304, %307, i8, i8, i32 }
     11 %2 = type <{ %1*, i8, [3 x i8] }>
     12 %3 = type { %1*, i8, i32, i8, %4*, %8, %307, %12*, [10 x i8*], [10 x i8], %307 }
     13 %4 = type { %5*, %6 }
     14 %5 = type opaque
     15 %6 = type { %7 }
     16 %7 = type { i64 }
     17 %8 = type { %9, %4*, [16 x i32], void (%8*, i8*, i32)*, i8*, %307, %307 }
     18 %9 = type { [16 x %11], i16, i8, %10*, %11 }
     19 %10 = type { i64, [8 x i8] }
     20 %11 = type { %307 }
     21 %12 = type { %10, %13, %13, i32, i32, i32, void (%10*)*, void (%10*)*, i32 (%10*)*, void (%10*)*, i32, i64* }
     22 %13 = type { %14 }
     23 %14 = type { i16, i16, i32, i32, i32 }
     24 %15 = type <{ %1*, i8, [3 x i8] }>
     25 %16 = type { %1*, i32, i32, i8, i16, i16, i8, %17, i32, %22, %27, [4 x i8], [6 x [512 x %28]], %94, [6 x %29], [6 x i8*], %94, [7 x %95], [7 x i8*], [7 x i8*], %96*, %97, [8 x i8] }
     26 %17 = type { %18*, %21, %21, i32, i8 }
     27 %18 = type { %19, %19, %20 }
     28 %19 = type { i32, i16, i16 }
     29 %20 = type { i32, i32, i32 }
     30 %21 = type { i32, i32, i32, i32 }
     31 %22 = type { %23*, %24 }
     32 %23 = type { i8, %10 }
     33 %24 = type { %25 }
     34 %25 = type { %26 }
     35 %26 = type { i32 }
     36 %27 = type { i32, i32, i32, i8* }
     37 %28 = type { i16, i16, i16, i16 }
     38 %29 = type <{ i8*, i8*, i32, i16, [2 x i8], %24, %28*, i32, i8, [3 x i8], i32, %30, i8, i8, [2 x i8] }>
     39 %30 = type { %31, %44 }
     40 %31 = type { %32* }
     41 %32 = type { %33*, %24, i16, i16, i16, %37*, i16, i16, i8, i8, i32 }
     42 %33 = type { %34, [5 x %35], %36 }
     43 %34 = type { i32, i8 }
     44 %35 = type { [2 x i32] }
     45 %36 = type { i32, i8 }
     46 %37 = type <{ %38, i16, i16, i8, [3 x i8], %42*, %43*, i64*, [4 x i8], i64, i16, i8, i8, i16, i16, i32, i8, [3 x i8] }>
     47 %38 = type { %39*, i8, %40, i8, %41 }
     48 %39 = type { i64 }
     49 %40 = type { i32, i32, %24, %24, i32, i32, i16, i16, i16, i8, i8, i8, i8, i16 }
     50 %41 = type { i8, i16*, i32*, i32, i8, i8* }
     51 %42 = type { i16, i16, i16 }
     52 %43 = type { i64, [280 x i8] }
     53 %44 = type { %45* }
     54 %45 = type { %38, %39*, i16, i16, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, %46, i8, i8, i8, %48, i8, i8, i16, i16, i8, i8, i8, %50*, %67*, i16*, i16*, i16, i16, i8, i16*, i8, i8, i8, i8, %69*, %87*, %91*, %92*, %92*, %93*, i8, i8, i8, i8, i8, %40*, i8, i32, i8, i8, i32, i32, i32, i32, %17, i32 }
     55 %46 = type { %47 }
     56 %47 = type { i8 }
     57 %48 = type { %49 }
     58 %49 = type { i16 }
     59 %50 = type { i16, i16, %51, %53, i16, i16, i16, i16, [39 x i16], [3 x i16], [39 x i16], [5 x i16], %54, %57, %60, i8, %63, %66 }
     60 %51 = type { %52 }
     61 %52 = type { i16 }
     62 %53 = type { i16 }
     63 %54 = type { i32, i32, i32, i32, i32, i8, i8, i8, i8, %55 }
     64 %55 = type { %56 }
     65 %56 = type { i8, i8 }
     66 %57 = type { %58, [2 x %59] }
     67 %58 = type { i32 }
     68 %59 = type { i32 }
     69 %60 = type { i24, i16, [4 x i16], [2 x %61] }
     70 %61 = type { [4 x %62], i16, i8 }
     71 %62 = type { i16, i8, i32 }
     72 %63 = type { %64, i16, [3 x %65], [3 x %65] }
     73 %64 = type { i8 }
     74 %65 = type { i8, i16, i16 }
     75 %66 = type { i8, i32, i32, i16, i16 }
     76 %67 = type { %68, i8, i8 }
     77 %68 = type { i32, i32 }
     78 %69 = type { i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, %70, i32, i16, i16, i16, [22 x i16], %71, %72, %82, %85, %87, i8, i16 }
     79 %70 = type { i16 }
     80 %71 = type { %20, %21, %21, i32, i32, i32, i8 }
     81 %72 = type { %73 }
     82 %73 = type { i16, %74, i16, %75, %76, %77, %78, %79, %80 }
     83 %74 = type { i8, i8 }
     84 %75 = type { i16 }
     85 %76 = type { i16 }
     86 %77 = type { i16 }
     87 %78 = type { i16 }
     88 %79 = type { i16 }
     89 %80 = type { %81, i16, i16, i16, i16 }
     90 %81 = type { i16, i16 }
     91 %82 = type { i16, i16, i32, i32, i32, i32, i16, i16, i16, i16, i16, i16, %83, i16, i16, i16, i16, i16, i32, i32, %84, i32, i32 }
     92 %83 = type { i16 }
     93 %84 = type { i32 }
     94 %85 = type { %86, i32, i32, i32, [5 x i64] }
     95 %86 = type { i32 }
     96 %87 = type { %88, [4 x i16], [4 x i16], i16, %89, %90 }
     97 %88 = type { i32 }
     98 %89 = type { [4 x i32], [4 x i32], [4 x i16], [4 x i16], [4 x i16], [4 x i16], [4 x i16], [4 x i16] }
     99 %90 = type { i8, i8, i8, [2 x i32], [2 x i32] }
    100 %91 = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
    101 %92 = type { i16, i16, [1024 x i16], i8, i8 }
    102 %93 = type { i16, i16, [8 x i16] }
    103 %94 = type { i32, i32, i32, i8** }
    104 %95 = type { %24, %24, %29*, i8, i32, i32 }
    105 %96 = type { i32, i32, i32, i8** }
    106 %97 = type { i8, %94, [10 x %96], [10 x i8*] }
    107 %98 = type opaque
    108 %99 = type { %100 }
    109 %100 = type { %1*, %101 }
    110 %101 = type { %102, %102 }
    111 %102 = type { i8, i8, %103 }
    112 %103 = type { %104 }
    113 %104 = type { i32, i32 }
    114 %105 = type <{ i8, [3 x i8], %106, [4 x i8], [512 x i64], %12*, %295*, %1*, %107*, %180*, %181*, %182*, %196, [4008 x i8], %197, %18, [228 x i8], %253, %258, %266, %267, i8, i8, i8, [5 x i8], %268, %278, %279, [4428 x i8] }>
    115 %106 = type { [16 x i8], i8, i16, %12*, %12*, i8, i32, i8 }
    116 %107 = type <{ [128 x %108], %109*, i16, [2 x i8], %145*, %150, %153, %105*, %1*, i8, [7 x i8] }>
    117 %108 = type { i16, i16 }
    118 %109 = type { [2 x [1024 x i8]], %110, [5 x %43], %125, [2 x %133], [28 x i8], %138, i8, [64 x i64], [2 x %92], %143, [10 x i8], i8, [31 x i8], [32 x i8], %150, [12 x i8], [18 x i8], [14 x i8] }
    119 %110 = type { %111, %113, [16 x %50], [6 x %115], [3 x %116], [6 x %117], [3 x %118], [3 x %119], [3 x %120], [3 x %121], %93, i8, [3 x %122], [3 x %91], %124 }
    120 %111 = type { %112*, i16, i16, [8 x %112] }
    121 %112 = type { i16, i32, i32, i32, i32, i16, i8, i32, i16, i16 }
    122 %113 = type { %114*, i16, i16, [3 x %114] }
    123 %114 = type { i16, i16, i16, i16, i16, i32, i32, i16, i16, i16, i16, i16, i16, i32, i8, i32 }
    124 %115 = type { [5 x %69] }
    125 %116 = type { i16, i16, i16, [12 x i8], [12 x i32], i8, [12 x i32], [12 x i16] }
    126 %117 = type { i16, i16, i16, [12 x i8], [12 x i32], i8, [12 x i32], [12 x i16] }
    127 %118 = type { i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, %72, %82 }
    128 %119 = type { i16, i16, [2 x i16], i16, i16, [19 x i16], i32 }
    129 %120 = type { i16, i16, [8 x i32] }
    130 %121 = type { i16, i16, [10 x i32] }
    131 %122 = type { i16, i32, [10 x %123] }
    132 %123 = type { i32, i32, i32, i32, i16, i16, i8, i16, i8, i8, i8 }
    133 %124 = type { i32, i32, i16, i32, i64, i16, i16, i32, i32 }
    134 %125 = type { [3 x %126], %128, %130, %132 }
    135 %126 = type { %127 }
    136 %127 = type { [7 x %67], %33, [3 x %67] }
    137 %128 = type { %129 }
    138 %129 = type { i32 }
    139 %130 = type { %131 }
    140 %131 = type { i32 }
    141 %132 = type { i32 }
    142 %133 = type { i16, [26 x %134] }
    143 %134 = type { %135, %136, %137 }
    144 %135 = type { i32 }
    145 %136 = type { i16 }
    146 %137 = type { i16 }
    147 %138 = type { i16, i16, %139, [24 x i8], %141, i8, i8, i16, [24 x i8] }
    148 %139 = type { i8, %140, [25 x i8] }
    149 %140 = type { i16, i16, i16, i16 }
    150 %141 = type { %142 }
    151 %142 = type { i16, [2 x i8] }
    152 %143 = type { %144 }
    153 %144 = type { i16 }
    154 %145 = type { %146, %147, %148, %149 }
    155 %146 = type { i32 }
    156 %147 = type { i32 }
    157 %148 = type { i32 }
    158 %149 = type { i32 }
    159 %150 = type { %151, %152 }
    160 %151 = type { i32, i32, i32, i32, i32, i16, i16, i16, i16, i8 }
    161 %152 = type { i8, i16, i8, i8, [4 x i32], i8, i8, i8, i16, [2 x i16], [2 x i16], [5 x i16], i8 }
    162 %153 = type <{ i8, [3 x i8], %154*, [2 x %160], i16, [2 x i8], [2 x %160], i16, [2 x i8], [2 x %160], i16, [2 x i8], [4 x %161], i16, i16, [2 x %162], i16, [2 x i8], %162*, [2 x %172], i16, [2 x i8], [24 x %173], i16, [2 x i8], [24 x %176], i16, [2 x i8], [24 x %176], i16, [2 x i8], [2 x %177], i16, [2 x i8], [2 x %174], i16, [2 x i8], [2 x %175], i16, [2 x i8], [24 x %176], i16, [2 x i8], %177, %177, [14 x %45], i16, [2 x i8], [14 x %160], i16, [2 x i8], %178*, [4 x i8], [8 x %37], i16, [4 x %42], [2 x i8], [8 x %32], i16, [4 x i16], [2 x i8], %179, i16, i16, i16, i16, i16, i16, i16, [2 x i8], [3 x i64], i16, i8, i8, i16, [2 x i8] }>
    163 %154 = type { i16, i16, %155 }
    164 %155 = type { %156 }
    165 %156 = type { i16, %157, [2 x %158], i8, i16, i8, [12 x %159] }
    166 %157 = type { i8, i8, i8 }
    167 %158 = type { i16, i16 }
    168 %159 = type { i16, i16, i32, i8, i32, i32, i16, i8, i8, i8, i8, i32 }
    169 %160 = type { %67*, %24, i16, i16, i16, i8, i32, i8, i8, i8, i8, i32, i32, i32 }
    170 %161 = type <{ i16, [2 x i8], %24, i32, i32, i16, i16, i8, [3 x i8] }>
    171 %162 = type <{ %38, i32, i16, i16, i8, i8, i16, %163, i16, %111*, %124*, i8, i8, i8, i8, i16, i8, i8, i8, i8, i8, i8, i16*, i32*, i64*, %164*, i8*, %165*, %168*, %169*, %39*, %170*, %171*, %172*, %23**, i8*, i32, i16, i8, [5 x i8], [164 x %39], %105*, [4 x i8] }>
    172 %163 = type { i16 }
    173 %164 = type { [131 x i64], [232 x i8], [131 x i32], %39*, i16, i32, i8, i8, i8, i8, %163, i8, i8, %39*, i8, [219 x i8] }
    174 %165 = type { %39*, i32, i16, i16, i8, i8, %39, i64, i32, i32, i8, %166, i8, %167 }
    175 %166 = type { i8, i8 }
    176 %167 = type { i32, i32, i32, i8 }
    177 %168 = type { i32, i64, i64, i32, i32, i32, i32, i32, i32, i64, i32, i32, i16, i16, i32, i32, i32, i32, i16, i8, i64, i8, i8, i8 }
    178 %169 = type { %39*, %39*, %163, i8, i32, i32, i32, i16, i16, i32, i8, i8, i8, i8, i16, i8, %168*, %170*, %111*, i8*, i8*, i32*, i8, %16* }
    179 %170 = type { %39*, i32, i32, i16, i16, i8, i8, i8 }
    180 %171 = type { i64, i64, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i16, i32, i32, i16, i32, i16, [20 x i16], i16, i16, i8, i8, i8, i8, [78 x i8], [78 x i8], [39 x i8], i8, i32, i32 }
    181 %172 = type { %38, %39*, i16, i16, i16*, i16*, i16, i16, i8, i8*, %118*, %119*, i16, i32, i32, %114*, %67*, i8, i8, %46, i8, i8, i8, %16*, %105*, %145, i16, i8, i8, i8, i16, i32, i16, %307 }
    182 %173 = type <{ %38, i16, i16, i16, i8, i8, i16, i16, %116*, i32*, i16*, i8*, i8, i8, [2 x i8], i32*, i8, i8, i8, i8, %105*, i8, [3 x i8] }>
    183 %174 = type { %24 }
    184 %175 = type { %24 }
    185 %176 = type <{ %160, i8, [3 x i8] }>
    186 %177 = type { i32, %24, i32 }
    187 %178 = type { [8 x i64] }
    188 %179 = type { i32, i32, %24, %24, i32, i32 }
    189 %180 = type opaque
    190 %181 = type { i16, %12*, [14 x i32], [8 x i32], i32, i32, %105* }
    191 %182 = type { %183*, %184*, %145*, [2 x [4 x %178]], i8, i8, i8, [10 x %185], %307, %186, i32, i32, i8, i16, i16, i32, i32, %23*, [9 x i8], [16 x %190]*, %194, [2 x %195], %109*, %295* }
    192 %183 = type { [5 x %39], [24 x i8], [1 x [256 x %39]] }
    193 %184 = type { [2 x [12 x %92]] }
    194 %185 = type { i32, i32, i8*, %307 }
    195 %186 = type { [114 x [22 x i8]], [2 x [22 x i8]], %187, %189 }
    196 %187 = type { [4 x [4 x [114 x i8]]], [4 x %188], [88 x i8], [4 x [114 x i8]] }
    197 %188 = type { [4 x [116 x [3 x i8]]] }
    198 %189 = type { [4 x [8 x i8]], [4 x [8 x [3 x i8]]], [8 x i8] }
    199 %190 = type { %191, i16, i32, i16, [22 x i8] }
    200 %191 = type { %192 }
    201 %192 = type { %193 }
    202 %193 = type { [1024 x i16], [1024 x i16] }
    203 %194 = type { i16, i16, i16, %30, %32*, %32*, i16, i8, %24, %39 }
    204 %195 = type <{ i8, i8, i16, %24, i8, i8, i8, i8, i16, [2 x i8], %32*, i8, i8, [2 x i8] }>
    205 %196 = type { i32, i8, i8, i8, i8, i8, i8, i8, i8 }
    206 %197 = type <{ %198, %200, %203, %206, [20 x i8], %207, %236, i16, i16, i8, [3 x i8], [4 x i32], [4 x i32], [8 x [4 x i32]], [8 x i32], [4 x i32], [22 x i32], i8, i8, i8, [2 x i8], [2 x i8], i8, %23*, [44 x i32], [8 x i32], [8 x i32], [2508 x i8], [44 x i8], [456 x i8], [456 x i8], [8 x i8], [8 x i8], i16, i8, i8, i16, i16, i16, [2 x i8], %237, %237, %237, [5 x %238], [5 x %239], %240, i8, i8, [2 x i8], %251, %251, [4 x i8], [8 x [11 x i32]], %307, %150*, %105*, %182*, %196*, %241, [4 x i8], %242, %243, %307, %249, %250, [10 x %251], %251, [4416 x i8], [5 x [5 x [352 x i8]]], [5 x i8], [7579 x i8] }>
    207 %198 = type { [8 x %199] }
    208 %199 = type { i16, i8, i8 }
    209 %200 = type <{ i64, i8, [3 x i8], i32, i32, i32, %201, %201, %201*, i32, i32, i32, i8, i8, i8, [5 x i8], [57 x %39], %202, [7 x i8] }>
    210 %201 = type { i64, [57 x %39] }
    211 %202 = type { i8 }
    212 %203 = type <{ [4 x %204], [4 x %204], %205, %205, i8, [5 x i8] }>
    213 %204 = type { [4 x [2 x i64]], [12 x i16], i8 }
    214 %205 = type { i8 }
    215 %206 = type { i32 }
    216 %207 = type { [22 x [114 x i8]], [2 x [22 x i8]], [5 x %208], %43, %209, %211, %232, %233, [29 x %210], i32, i32, i32, %234, [4 x i8], i8, i8, i32, [24 x i8] }
    217 %208 = type { [5 x %39], [164 x %39], [144 x float], [2 x [2 x %39]], i32, [116 x i8], i8, i8 }
    218 %209 = type { [87 x %39], %210*, i32, i32, i32, [2 x i8], i16, i32, i16, i8, i8 }
    219 %210 = type { i32 }
    220 %211 = type { %212, %231 }
    221 %212 = type { %213 }
    222 %213 = type { %214, %215, %215, %217, %230, [32 x %39] }
    223 %214 = type { %39, i16*, i16*, %39*, i8 }
    224 %215 = type { %216 }
    225 %216 = type { [2 x [16 x i64]], [2 x [16 x i32]] }
    226 %217 = type { %218 }
    227 %218 = type { %219, %222, %223, %225, %228, %229 }
    228 %219 = type { %220, %221, [30 x %39], float* }
    229 %220 = type { [150 x %39], [150 x i16] }
    230 %221 = type { [5 x %39], [5 x i16] }
    231 %222 = type { [48 x i32], [48 x i32], [32 x %39], [5 x i16], [5 x i32] }
    232 %223 = type { %39*, i16*, i16, i32, i8, %224* }
    233 %224 = type { i32, i32, i32, i8 }
    234 %225 = type { %39*, i8, %226*, i8, i16*, %227*, %214*, i8, i32, i32, i32, i8, i8, i32, %206* }
    235 %226 = type { i8, i8, i8, i32, i8, i32 }
    236 %227 = type { %39*, %39*, i32, i8, i8, i8, i8, i8 }
    237 %228 = type { [87 x %39], [164 x %39], [167 x %39] }
    238 %229 = type { %39*, i8, i8 }
    239 %230 = type { [29 x %39] }
    240 %231 = type { [13 x %39], [13 x %210] }
    241 %232 = type { %39*, i8, i8, i8, i8, %226*, i8, i8, %224*, i8, i8, %206*, i8, i8 }
    242 %233 = type { i32, i32, float* }
    243 %234 = type { %235 }
    244 %235 = type { i16 }
    245 %236 = type <{ [57 x %39], [57 x %39], [2 x i8], [2 x i8], [2 x i32], i8, [3 x i8], %268*, [4 x i8] }>
    246 %237 = type { i32, i32, i32 }
    247 %238 = type { %39*, %39*, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, %46, i8, i8, i8, i8, i8, i16, i16, i16, i16, i8, i8, i16, i16, i8, i32, i8, i8, i32, i32, i8, i8, i16, i8*, %253*, %207*, i8*, i32*, i16*, i32*, i32*, i32, %69*, %91*, %69*, %92*, %92*, i8, [2 x i8], i32, i8, i8, i16, i8, i8, i32, i8, i16, %145, i8, %0*, %3*, %182*, %16*, %206*, %249*, i8, %241*, %17, [2 x i8], i8*, i8* }
    248 %239 = type { i8*, i8*, i32*, %50*, i16, i16, i16, i16, i16, i16, i8, [4 x i8], [2 x i16], %48, i16, i16, i16, i16, [2 x i16], i16, i32, i32, i8, i8, i8, i8, i8, i8, i16, i16, [4 x i8*], i64*, i8, i8, i8, %240*, i8*, i8*, %207*, i8, i8, i8*, i8, i8*, i32 }
    249 %240 = type { [2 x [16 x %39]], [265 x %39], [1368 x %210] }
    250 %241 = type { i32, i32, i32, i32, i8, i32, i32, i32, i32, i32 }
    251 %242 = type <{ %43, [456 x i8], [228 x i8], [456 x i8], [4 x i8] }>
    252 %243 = type { %244*, i32, i32, i32, i32, i32, i32, i8, i8, %23*, %247, %248 }
    253 %244 = type { [128 x %245], [2048 x i16] }
    254 %245 = type { %246, [115 x i64] }
    255 %246 = type { i16, i8, i32 }
    256 %247 = type { i32, i32, i32, i32, i8, i8, i8, i8 }
    257 %248 = type { i32, i32, i32, i32, i8, i8, i32 }
    258 %249 = type { %23*, i8, i8, [179 x %210], [20 x %210], i16 }
    259 %250 = type { [8 x i16], [72 x i8], [120 x i8], [3 x i32] }
    260 %251 = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i16, i8, i8, i8, %48, i8, i32, i8, i32*, [4 x %252], [8 x i32], i8, %238*, %239*, %50*, [8 x i8], %93*, i32, i32, i32, i8, i8, i8, i8, %40*, i8*, i8, i8, i8, i8, i8, [2 x i8], i8, [36 x i8], [36 x i8], i32 }
    261 %252 = type { i8*, i8 }
    262 %253 = type { [5 x %254], i8, i8, i8, [114 x i8], %23*, %23*, [48 x i8], %255, %186*, i16, i16, [4 x i16], [4 x i16], i16, %182*, %1*, %105*, [216 x i8] }
    263 %254 = type { %32*, %37*, i32, i8 }
    264 %255 = type { [16 x %256], %257, [64 x i8] }
    265 %256 = type { i64 }
    266 %257 = type { [8 x i64] }
    267 %258 = type { i32, %170, [8 x i8], %171, %172, [212 x i8], %164, i8, %165, %168, %169, [100 x %39], %23*, i32, i16, [786 x i64], i16, [2 x i8], [2 x %259], i8, %307, %182*, %105*, %260*, %261, [136 x i8] }
    268 %259 = type <{ %40, %24, i32, i8, [3 x i8] }>
    269 %260 = type { %141*, i8, %23*, i32, i32, i32, i32, i32, i32, i32, i32, %295*, %3*, %105*, %2* }
    270 %261 = type { [2 x %262], %39, %39, %263, [66 x %39], %264, %265, [5 x i16], i32, i8, i16, i16, i32, i16, i16 }
    271 %262 = type { [170 x %39] }
    272 %263 = type { [164 x %39] }
    273 %264 = type { [162 x %210] }
    274 %265 = type { [312 x %39] }
    275 %266 = type { %23*, %182*, %260* }
    276 %267 = type { %23*, %182*, %260* }
    277 %268 = type { %269, i32, i8, [24 x %277], %23*, i32, i32, %68*, %277*, [24 x i32], i32*, [8 x i16], %96, [6 x i8*], %307, %105*, %23*, %1*, [4 x i8] }
    278 %269 = type <{ [2 x %270], [2 x %30], [8 x %30], [24 x %30], [2 x %162*], i8, i8, [2 x i8], [2 x %172*], i8, [3 x i8], i32, i32, i32, i16, i16, i32, i8, i8, i16, i16, i8, i8, i8, i8, i8, [8 x i8], i8, [8 x %276], [8 x %69], [8 x %50], i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, [8 x i16], [8 x i16], %93*, %93*, i8, i8, i16, i8, [3 x i8], %24, i8, i8, [2 x i8], %24, %67*, i8, i8, i8, i8, i8, i8, i8, i8, %40*, %91* }>
    279 %270 = type { %120*, [16 x %30], %30, [8 x %30], [1 x %30], [2 x %158], i8, i8, %30, %30, %271*, i16, %121* }
    280 %271 = type { i16, %272, i16, [4 x %273], i16, [4 x %275], i32, i32, i32, i32, i8, i8, i32, i32 }
    281 %272 = type { i16 }
    282 %273 = type { %274, %43* }
    283 %274 = type { i16 }
    284 %275 = type { i16, i16, i32, i32, i8, i16, i16, i8 }
    285 %276 = type { i8, %40* }
    286 %277 = type { i8, %30, i8, i8, i8, i32 }
    287 %278 = type { i16*, %1* }
    288 %279 = type <{ %280, %280, [16 x %282], %3*, %24, i32, %307, %283, i32, %289, i8, i8, i8, i8, i8, [3 x i8], i32, i32, %24, i8, i8, i8, i8 }>
    289 %280 = type { %281 }
    290 %281 = type { %281*, %281* }
    291 %282 = type <{ %281, %24, %24, %40, i8, [3 x i8] }>
    292 %283 = type { i32, %284, i32, %286, %287 }
    293 %284 = type { i8, [5 x %285] }
    294 %285 = type { i8, i8 }
    295 %286 = type { i16, i16 }
    296 %287 = type { i32, %288 }
    297 %288 = type { i32, i32 }
    298 %289 = type { %290 }
    299 %290 = type { %291, i32**, i32, i32, i32 }
    300 %291 = type { %292, %294 }
    301 %292 = type { %293 }
    302 %293 = type { i8 }
    303 %294 = type { i8 }
    304 %295 = type { i8, i8, %23*, [16 x %296], i8, %105*, %182*, %1*, %260, i8, i8, i8, i8, i8, i8, %23* }
    305 %296 = type { i8, i8, %297, i16 }
    306 %297 = type { i8, %298, i8* }
    307 %298 = type { i8 }
    308 %299 = type { %300, %302 }
    309 %300 = type { %301, i32 }
    310 %301 = type { i32, i32, i32, i32, i64, i32, i32, i32, i32, i32, i8, [4 x i32], [4 x i32] }
    311 %302 = type { i32, i32, i32, i32, i32, [4 x i32] }
    312 %303 = type { i32, i32, i8 }
    313 %304 = type { %305, i32, i8 }
    314 %305 = type { %306 }
    315 %306 = type { i32 }
    316 %307 = type { i32 }
    317 
    318 define void @f0(%0* %a0) align 2 #0 {
    319 b0:
    320   br label %b1
    321 
    322 b1:                                               ; preds = %b1, %b0
    323   %v0 = phi i32 [ %v7, %b1 ], [ 0, %b0 ]
    324   %v1 = getelementptr inbounds %0, %0* %a0, i32 0, i32 2, i32 undef, i32 %v0
    325   %v2 = getelementptr inbounds %39, %39* %v1, i32 0, i32 0
    326   %v3 = load i64, i64* %v2, align 8
    327   %v4 = call i64 @llvm.hexagon.S2.brevp(i64 %v3) #1
    328   store i64 %v4, i64* %v2, align 8
    329   %v5 = bitcast %39* %v1 to [2 x i32]*
    330   %v6 = getelementptr inbounds [2 x i32], [2 x i32]* %v5, i32 0, i32 1
    331   store i32 0, i32* %v6, align 4
    332   %v7 = add nuw nsw i32 %v0, 1
    333   %v8 = icmp eq i32 %v7, 2
    334   br i1 %v8, label %b2, label %b1
    335 
    336 b2:                                               ; preds = %b1
    337   ret void
    338 }
    339 
    340 ; Function Attrs: nounwind readnone
    341 declare i64 @llvm.hexagon.S2.brevp(i64) #0
    342 
    343 attributes #0 = { nounwind "target-cpu"="hexagonv55" }
    344 attributes #1 = { nounwind readnone }
    345