Home | History | Annotate | Download | only in X86
      1 ; RUN: llc -regalloc=greedy -relocation-model=pic  < %s 2>&1 | FileCheck %s
      2 ; Without the last chance recoloring, this test fails with:
      3 ; "ran out of registers".
      4 
      5 ; NOTE: With the fix to PR18883, we don't actually run out of registers here
      6 ; any more, and so those checks are disabled. This test remains only for general coverage.
      7 ; XXX: not llc -regalloc=greedy -relocation-model=pic -lcr-max-depth=0  < %s 2>&1 | FileCheck %s --check-prefix=CHECK-DEPTH
      8 ; Test whether failure due to cutoff for depth is reported
      9 
     10 ; XXX: not llc -regalloc=greedy -relocation-model=pic -lcr-max-interf=1  < %s 2>&1 | FileCheck %s --check-prefix=CHECK-INTERF
     11 ; Test whether failure due to cutoff for interference is reported
     12 
     13 ; RUN: llc -regalloc=greedy -relocation-model=pic -lcr-max-interf=1 -lcr-max-depth=0 -exhaustive-register-search < %s > %t 2>&1
     14 ; RUN: FileCheck --input-file=%t %s --check-prefix=CHECK-EXHAUSTIVE
     15 ; Test whether exhaustive-register-search can bypass the depth and interference cutoffs of last chance recoloring 
     16 
     17 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32-S128"
     18 target triple = "i386-apple-macosx"
     19 
     20 @fp_dh_36985b17790d59a27994eaab5dcb00ee = external constant [499 x i32]
     21 @fp_dh_18716afa4a5354de0a302c8edb3b0ee1 = external global i32
     22 @fp_dh_20a33cdeefab8f4c8887e82766cb9dcb = external global i8*
     23 @fp_dh_9d93c897906e39883c58b034c8e786b2 = external global [5419648 x i8], align 16
     24 
     25 ; Function Attrs: nounwind ssp
     26 ; CHECK-NOT: ran out of registers during register allocation
     27 ; CHECK-INTERF: error: register allocation failed: maximum interference for recoloring reached
     28 ; CHECK-DEPTH: error: register allocation failed: maximum depth for recoloring reached
     29 ; CHECK-EXHAUSTIVE-NOT: error: register allocation failed: maximum {{depth|interference}} for recoloring reached
     30 define void @fp_dh_f870bf31fd8ffe068450366e3f05389a(i8* %arg) #0 {
     31 bb:
     32   indirectbr i8* undef, [label %bb85, label %bb206]
     33 
     34 bb85:                                             ; preds = %bb222, %bb85, %bb
     35   store i8* blockaddress(@fp_dh_f870bf31fd8ffe068450366e3f05389a, %bb206), i8** undef, align 4
     36   indirectbr i8* undef, [label %bb439, label %bb85]
     37 
     38 bb206:                                            ; preds = %bb
     39   %tmp = getelementptr [499 x i32], [499 x i32]* @fp_dh_36985b17790d59a27994eaab5dcb00ee, i32 0, i32 undef
     40   %tmp207 = load i32, i32* %tmp
     41   %tmp208 = add i32 %tmp207, 1
     42   %tmp209 = inttoptr i32 %tmp208 to i8*
     43   indirectbr i8* %tmp209, [label %bb213]
     44 
     45 bb213:                                            ; preds = %bb206
     46   %tmp214 = load i32, i32* @fp_dh_18716afa4a5354de0a302c8edb3b0ee1, align 4
     47   %tmp215 = load i8*, i8** @fp_dh_20a33cdeefab8f4c8887e82766cb9dcb, align 4
     48   %tmp216 = urem i32 -717428541, %tmp214
     49   %tmp217 = getelementptr i8, i8* %tmp215, i32 %tmp216
     50   %tmp218 = bitcast i8* %tmp217 to i32*
     51   %tmp219 = load i32, i32* %tmp218, align 4
     52   store i32 %tmp219, i32* undef, align 4
     53   %tmp220 = select i1 false, i32 359373646, i32 1677237955
     54   %tmp221 = add i32 %tmp220, 0
     55   indirectbr i8* undef, [label %bb432, label %bb222]
     56 
     57 bb222:                                            ; preds = %bb213
     58   %tmp224 = load i32, i32* undef, align 4
     59   %tmp225 = load i32, i32* undef, align 4
     60   %tmp226 = xor i32 %tmp225, %tmp224
     61   %tmp227 = shl i32 %tmp226, 1
     62   %tmp228 = and i32 %tmp227, -2048880334
     63   %tmp229 = sub i32 0, %tmp228
     64   %tmp230 = add i32 0, %tmp229
     65   %tmp231 = xor i32 %tmp230, 1059356227
     66   %tmp232 = mul i32 %tmp231, 1603744721
     67   %tmp233 = urem i32 %tmp232, 259
     68   %tmp234 = getelementptr [259 x i8], [259 x i8]* bitcast (i8* getelementptr inbounds ([5419648 x i8], [5419648 x i8]* @fp_dh_9d93c897906e39883c58b034c8e786b2, i32 0, i32 2039075) to [259 x i8]*), i32 0, i32 %tmp233
     69   %tmp235 = load i8, i8* %tmp234, align 1
     70   %tmp236 = add i32 %tmp233, 2
     71   %tmp237 = getelementptr [264 x i8], [264 x i8]* bitcast (i8* getelementptr inbounds ([5419648 x i8], [5419648 x i8]* @fp_dh_9d93c897906e39883c58b034c8e786b2, i32 0, i32 3388166) to [264 x i8]*), i32 0, i32 %tmp236
     72   %tmp238 = load i8, i8* %tmp237, align 1
     73   %tmp239 = getelementptr [265 x i8], [265 x i8]* bitcast (i8* getelementptr inbounds ([5419648 x i8], [5419648 x i8]* @fp_dh_9d93c897906e39883c58b034c8e786b2, i32 0, i32 1325165) to [265 x i8]*), i32 0, i32 0
     74   %tmp240 = load i8, i8* %tmp239, align 1
     75   %tmp241 = add i32 %tmp233, 6
     76   %tmp242 = trunc i32 %tmp241 to i8
     77   %tmp243 = mul i8 %tmp242, -3
     78   %tmp244 = add i8 %tmp243, 3
     79   %tmp245 = mul i8 %tmp242, -6
     80   %tmp246 = and i8 %tmp245, 6
     81   %tmp247 = sub i8 0, %tmp246
     82   %tmp248 = add i8 %tmp244, %tmp247
     83   %tmp249 = load i8, i8* undef, align 1
     84   %tmp250 = xor i8 %tmp235, 17
     85   %tmp251 = xor i8 %tmp250, %tmp238
     86   %tmp252 = xor i8 %tmp251, %tmp240
     87   %tmp253 = xor i8 %tmp252, %tmp249
     88   %tmp254 = xor i8 %tmp253, %tmp248
     89   %tmp255 = zext i8 %tmp254 to i16
     90   %tmp256 = shl nuw i16 %tmp255, 8
     91   %tmp257 = load i8, i8* null, align 1
     92   %tmp258 = load i32, i32* @fp_dh_18716afa4a5354de0a302c8edb3b0ee1, align 4
     93   %tmp259 = load i8*, i8** @fp_dh_20a33cdeefab8f4c8887e82766cb9dcb, align 4
     94   %tmp260 = urem i32 -717428541, %tmp258
     95   %tmp261 = getelementptr i8, i8* %tmp259, i32 %tmp260
     96   %tmp262 = bitcast i8* %tmp261 to i32*
     97   %tmp263 = load i32, i32* %tmp262, align 4
     98   %tmp264 = xor i32 %tmp263, 0
     99   %tmp265 = shl i32 %tmp264, 1
    100   %tmp266 = and i32 %tmp265, -1312119832
    101   %tmp267 = sub i32 0, %tmp266
    102   %tmp268 = add i32 0, %tmp267
    103   %tmp269 = xor i32 %tmp268, 623994670
    104   %tmp270 = mul i32 %tmp269, 1603744721
    105   %tmp271 = urem i32 %tmp270, 259
    106   %tmp274 = add i32 %tmp271, 3
    107   %tmp275 = getelementptr [265 x i8], [265 x i8]* bitcast (i8* getelementptr inbounds ([5419648 x i8], [5419648 x i8]* @fp_dh_9d93c897906e39883c58b034c8e786b2, i32 0, i32 1325165) to [265 x i8]*), i32 0, i32 %tmp274
    108   %tmp276 = load i8, i8* %tmp275, align 1
    109   %tmp277 = add i32 %tmp271, 6
    110   %tmp278 = trunc i32 %tmp277 to i8
    111   %tmp279 = mul i8 %tmp278, -3
    112   %tmp280 = add i8 %tmp279, 31
    113   %tmp281 = add i8 %tmp280, 0
    114   %tmp282 = xor i8 %tmp257, 13
    115   %tmp283 = xor i8 %tmp282, 0
    116   %tmp284 = xor i8 %tmp283, 0
    117   %tmp285 = xor i8 %tmp284, %tmp276
    118   %tmp286 = xor i8 %tmp285, %tmp281
    119   %tmp287 = zext i8 %tmp286 to i16
    120   %tmp288 = or i16 %tmp287, %tmp256
    121   %tmp289 = xor i16 %tmp288, 14330
    122   %tmp290 = add i16 0, %tmp289
    123   %tmp291 = add i16 %tmp290, -14330
    124   %tmp292 = zext i16 %tmp291 to i32
    125   %tmp293 = add i16 %tmp290, -14330
    126   %tmp294 = lshr i16 %tmp293, 12
    127   %tmp295 = zext i16 %tmp294 to i32
    128   %tmp296 = sub i32 0, %tmp295
    129   %tmp297 = xor i32 %tmp296, 16
    130   %tmp298 = add i32 0, %tmp297
    131   %tmp299 = and i32 %tmp298, 31
    132   %tmp300 = and i32 %tmp292, 30864
    133   %tmp301 = shl i32 %tmp300, %tmp299
    134   %tmp302 = xor i32 0, %tmp301
    135   %tmp303 = add i32 0, %tmp302
    136   %tmp304 = and i32 %tmp298, 31
    137   %tmp305 = and i32 %tmp303, 25568
    138   %tmp306 = lshr i32 %tmp305, %tmp304
    139   %tmp307 = xor i32 0, %tmp306
    140   %tmp308 = add i32 0, %tmp307
    141   %tmp309 = trunc i32 %tmp308 to i16
    142   %tmp310 = shl i16 %tmp309, 1
    143   %tmp311 = and i16 %tmp310, -4648
    144   %tmp312 = shl i16 %tmp309, 1
    145   %tmp313 = and i16 %tmp312, 4646
    146   %tmp314 = xor i16 %tmp311, 17700
    147   %tmp315 = xor i16 %tmp313, 17700
    148   %tmp316 = add i16 %tmp314, %tmp315
    149   %tmp317 = and i16 %tmp314, %tmp315
    150   %tmp318 = shl nuw i16 %tmp317, 1
    151   %tmp319 = sub i16 0, %tmp318
    152   %tmp320 = add i16 %tmp316, %tmp319
    153   %tmp321 = and i16 %tmp320, 29906
    154   %tmp322 = xor i16 %tmp309, 14953
    155   %tmp323 = add i16 0, %tmp322
    156   %tmp324 = sub i16 0, %tmp321
    157   %tmp325 = xor i16 %tmp324, %tmp323
    158   %tmp326 = add i16 0, %tmp325
    159   %tmp327 = add i32 %tmp221, 1161362661
    160   %tmp333 = icmp eq i16 %tmp326, 14953
    161   %tmp334 = add i32 %tmp327, -1456704142
    162   %tmp335 = zext i1 %tmp333 to i32
    163   %tmp336 = add i32 %tmp334, %tmp335
    164   %tmp337 = getelementptr [499 x i32], [499 x i32]* @fp_dh_36985b17790d59a27994eaab5dcb00ee, i32 0, i32 %tmp336
    165   %tmp338 = load i32, i32* %tmp337
    166   %tmp339 = add i32 %tmp338, 1
    167   %tmp340 = inttoptr i32 %tmp339 to i8*
    168   indirectbr i8* %tmp340, [label %bb85, label %bb439]
    169 
    170 bb432:                                            ; preds = %bb432, %bb213
    171   %tmp433 = phi i32 [ %tmp221, %bb213 ], [ %tmp433, %bb432 ]
    172   %tmp434 = add i32 %tmp433, 1022523279
    173   %tmp435 = getelementptr [499 x i32], [499 x i32]* @fp_dh_36985b17790d59a27994eaab5dcb00ee, i32 0, i32 %tmp434
    174   %tmp436 = load i32, i32* %tmp435
    175   %tmp437 = add i32 %tmp436, 1
    176   %tmp438 = inttoptr i32 %tmp437 to i8*
    177   indirectbr i8* %tmp438, [label %bb432]
    178 
    179 bb439:                                            ; preds = %bb222, %bb85
    180   ret void
    181 }
    182 
    183 attributes #0 = { nounwind ssp "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
    184