Home | History | Annotate | Download | only in Thumb2
      1 ; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -disable-cgp-branch-opts -arm-atomic-cfg-tidy=0 | FileCheck %s
      2 
      3 %struct.pix_pos = type { i32, i32, i32, i32, i32, i32 }
      4 
      5 @getNeighbour = external global void (i32, i32, i32, i32, %struct.pix_pos*)*, align 4 ; <void (i32, i32, i32, i32, %struct.pix_pos*)**> [#uses=2]
      6 
      7 define void @t() nounwind {
      8 ; CHECK-LABEL: t:
      9 ; CHECK:      it eq
     10 ; CHECK-NEXT: cmpeq
     11 entry:
     12   %pix_a.i294 = alloca [4 x %struct.pix_pos], align 4 ; <[4 x %struct.pix_pos]*> [#uses=2]
     13   br i1 undef, label %land.rhs, label %lor.end
     14 
     15 land.rhs:                                         ; preds = %entry
     16   br label %lor.end
     17 
     18 lor.end:                                          ; preds = %land.rhs, %entry
     19   switch i32 0, label %if.end371 [
     20     i32 10, label %if.then366
     21     i32 14, label %if.then366
     22   ]
     23 
     24 if.then366:                                       ; preds = %lor.end, %lor.end
     25   unreachable
     26 
     27 if.end371:                                        ; preds = %lor.end
     28   %arrayidx56.2.i = getelementptr [4 x %struct.pix_pos], [4 x %struct.pix_pos]* %pix_a.i294, i32 0, i32 2 ; <%struct.pix_pos*> [#uses=1]
     29   %arrayidx56.3.i = getelementptr [4 x %struct.pix_pos], [4 x %struct.pix_pos]* %pix_a.i294, i32 0, i32 3 ; <%struct.pix_pos*> [#uses=1]
     30   br i1 undef, label %for.body1857, label %for.end4557
     31 
     32 for.body1857:                                     ; preds = %if.end371
     33   br i1 undef, label %if.then1867, label %for.cond1933
     34 
     35 if.then1867:                                      ; preds = %for.body1857
     36   unreachable
     37 
     38 for.cond1933:                                     ; preds = %for.body1857
     39   br i1 undef, label %for.body1940, label %if.then4493
     40 
     41 for.body1940:                                     ; preds = %for.cond1933
     42   %shl = shl i32 undef, 2                         ; <i32> [#uses=1]
     43   %shl1959 = shl i32 undef, 2                     ; <i32> [#uses=4]
     44   br i1 undef, label %if.then1992, label %if.else2003
     45 
     46 if.then1992:                                      ; preds = %for.body1940
     47   %tmp14.i302 = load i32, i32* undef                   ; <i32> [#uses=4]
     48   %add.i307452 = or i32 %shl1959, 1               ; <i32> [#uses=1]
     49   %sub.i308 = add i32 %shl, -1                    ; <i32> [#uses=4]
     50   call  void undef(i32 %tmp14.i302, i32 %sub.i308, i32 %shl1959, i32 0, %struct.pix_pos* undef) nounwind
     51   %tmp49.i309 = load void (i32, i32, i32, i32, %struct.pix_pos*)*, void (i32, i32, i32, i32, %struct.pix_pos*)** @getNeighbour ; <void (i32, i32, i32, i32, %struct.pix_pos*)*> [#uses=1]
     52   call  void %tmp49.i309(i32 %tmp14.i302, i32 %sub.i308, i32 %add.i307452, i32 0, %struct.pix_pos* null) nounwind
     53   %tmp49.1.i = load void (i32, i32, i32, i32, %struct.pix_pos*)*, void (i32, i32, i32, i32, %struct.pix_pos*)** @getNeighbour ; <void (i32, i32, i32, i32, %struct.pix_pos*)*> [#uses=1]
     54   call  void %tmp49.1.i(i32 %tmp14.i302, i32 %sub.i308, i32 undef, i32 0, %struct.pix_pos* %arrayidx56.2.i) nounwind
     55   call  void undef(i32 %tmp14.i302, i32 %sub.i308, i32 undef, i32 0, %struct.pix_pos* %arrayidx56.3.i) nounwind
     56   unreachable
     57 
     58 if.else2003:                                      ; preds = %for.body1940
     59   switch i32 undef, label %if.then2015 [
     60     i32 10, label %if.then4382
     61     i32 14, label %if.then4382
     62   ]
     63 
     64 if.then2015:                                      ; preds = %if.else2003
     65   br i1 undef, label %if.else2298, label %if.then2019
     66 
     67 if.then2019:                                      ; preds = %if.then2015
     68   br i1 undef, label %if.then2065, label %if.else2081
     69 
     70 if.then2065:                                      ; preds = %if.then2019
     71   br label %if.end2128
     72 
     73 if.else2081:                                      ; preds = %if.then2019
     74   br label %if.end2128
     75 
     76 if.end2128:                                       ; preds = %if.else2081, %if.then2065
     77   unreachable
     78 
     79 if.else2298:                                      ; preds = %if.then2015
     80   br i1 undef, label %land.lhs.true2813, label %cond.end2841
     81 
     82 land.lhs.true2813:                                ; preds = %if.else2298
     83   br i1 undef, label %cond.end2841, label %cond.true2824
     84 
     85 cond.true2824:                                    ; preds = %land.lhs.true2813
     86   br label %cond.end2841
     87 
     88 cond.end2841:                                     ; preds = %cond.true2824, %land.lhs.true2813, %if.else2298
     89   br i1 undef, label %for.cond2882.preheader, label %for.cond2940.preheader
     90 
     91 for.cond2882.preheader:                           ; preds = %cond.end2841
     92   %mul3693 = shl i32 undef, 1                     ; <i32> [#uses=2]
     93   br i1 undef, label %if.then3689, label %if.else3728
     94 
     95 for.cond2940.preheader:                           ; preds = %cond.end2841
     96   br label %for.inc3040
     97 
     98 for.inc3040:                                      ; preds = %for.inc3040, %for.cond2940.preheader
     99   br label %for.inc3040
    100 
    101 if.then3689:                                      ; preds = %for.cond2882.preheader
    102   %add3695 = add nsw i32 %mul3693, %shl1959       ; <i32> [#uses=1]
    103   %mul3697 = shl i32 %add3695, 2                  ; <i32> [#uses=2]
    104   %arrayidx3705 = getelementptr inbounds i16, i16* undef, i32 1 ; <i16*> [#uses=1]
    105   %tmp3706 = load i16, i16* %arrayidx3705              ; <i16> [#uses=1]
    106   %conv3707 = sext i16 %tmp3706 to i32            ; <i32> [#uses=1]
    107   %add3708 = add nsw i32 %conv3707, %mul3697      ; <i32> [#uses=1]
    108   %arrayidx3724 = getelementptr inbounds i16, i16* null, i32 1 ; <i16*> [#uses=1]
    109   %tmp3725 = load i16, i16* %arrayidx3724              ; <i16> [#uses=1]
    110   %conv3726 = sext i16 %tmp3725 to i32            ; <i32> [#uses=1]
    111   %add3727 = add nsw i32 %conv3726, %mul3697      ; <i32> [#uses=1]
    112   br label %if.end3770
    113 
    114 if.else3728:                                      ; preds = %for.cond2882.preheader
    115   %mul3733 = add i32 %shl1959, 1073741816         ; <i32> [#uses=1]
    116   %add3735 = add nsw i32 %mul3733, %mul3693       ; <i32> [#uses=1]
    117   %mul3737 = shl i32 %add3735, 2                  ; <i32> [#uses=2]
    118   %tmp3746 = load i16, i16* undef                      ; <i16> [#uses=1]
    119   %conv3747 = sext i16 %tmp3746 to i32            ; <i32> [#uses=1]
    120   %add3748 = add nsw i32 %conv3747, %mul3737      ; <i32> [#uses=1]
    121   %arrayidx3765 = getelementptr inbounds i16, i16* null, i32 1 ; <i16*> [#uses=1]
    122   %tmp3766 = load i16, i16* %arrayidx3765              ; <i16> [#uses=1]
    123   %conv3767 = sext i16 %tmp3766 to i32            ; <i32> [#uses=1]
    124   %add3768 = add nsw i32 %conv3767, %mul3737      ; <i32> [#uses=1]
    125   br label %if.end3770
    126 
    127 if.end3770:                                       ; preds = %if.else3728, %if.then3689
    128   %vec2_y.1 = phi i32 [ %add3727, %if.then3689 ], [ %add3768, %if.else3728 ] ; <i32> [#uses=0]
    129   %vec1_y.2 = phi i32 [ %add3708, %if.then3689 ], [ %add3748, %if.else3728 ] ; <i32> [#uses=0]
    130   unreachable
    131 
    132 if.then4382:                                      ; preds = %if.else2003, %if.else2003
    133   switch i32 undef, label %if.then4394 [
    134     i32 10, label %if.else4400
    135     i32 14, label %if.else4400
    136   ]
    137 
    138 if.then4394:                                      ; preds = %if.then4382
    139   unreachable
    140 
    141 if.else4400:                                      ; preds = %if.then4382, %if.then4382
    142   br label %for.cond4451.preheader
    143 
    144 for.cond4451.preheader:                           ; preds = %for.cond4451.preheader, %if.else4400
    145   br label %for.cond4451.preheader
    146 
    147 if.then4493:                                      ; preds = %for.cond1933
    148   unreachable
    149 
    150 for.end4557:                                      ; preds = %if.end371
    151   ret void
    152 }
    153