; RUN: llc < %s -mtriple=i386-apple-darwin10
; PR4910

%0 = type { i32, i32, i32, i32 }

@boot_cpu_id = external global i32                ; <i32*> [#uses=1]
@cpu_logical = common global i32 0, align 4       ; <i32*> [#uses=1]

define void @topo_probe_0xb() nounwind ssp {
entry:
  br label %for.cond

for.cond:                                         ; preds = %for.inc38, %entry
  %0 = phi i32 [ 0, %entry ], [ %inc40, %for.inc38 ] ; <i32> [#uses=3]
  %cmp = icmp slt i32 %0, 3                       ; <i1> [#uses=1]
  br i1 %cmp, label %for.body, label %for.end41

for.body:                                         ; preds = %for.cond
  %1 = tail call %0 asm sideeffect "cpuid", "={ax},={bx},={cx},={dx},0,{cx},~{dirflag},~{fpsr},~{flags}"(i32 11, i32 %0) nounwind ; <%0> [#uses=3]
  %asmresult.i = extractvalue %0 %1, 0            ; <i32> [#uses=1]
  %asmresult10.i = extractvalue %0 %1, 2          ; <i32> [#uses=1]
  %and = and i32 %asmresult.i, 31                 ; <i32> [#uses=2]
  %shr42 = lshr i32 %asmresult10.i, 8             ; <i32> [#uses=1]
  %and12 = and i32 %shr42, 255                    ; <i32> [#uses=2]
  %cmp14 = icmp eq i32 %and12, 0                  ; <i1> [#uses=1]
  br i1 %cmp14, label %for.end41, label %lor.lhs.false

lor.lhs.false:                                    ; preds = %for.body
  %asmresult9.i = extractvalue %0 %1, 1           ; <i32> [#uses=1]
  %and7 = and i32 %asmresult9.i, 65535            ; <i32> [#uses=1]
  %cmp16 = icmp eq i32 %and7, 0                   ; <i1> [#uses=1]
  br i1 %cmp16, label %for.end41, label %for.cond17.preheader

for.cond17.preheader:                             ; preds = %lor.lhs.false
  %tmp24 = load i32, i32* @boot_cpu_id                 ; <i32> [#uses=1]
  %shr26 = ashr i32 %tmp24, %and                  ; <i32> [#uses=1]
  br label %for.body20

for.body20:                                       ; preds = %for.body20, %for.cond17.preheader
  %2 = phi i32 [ 0, %for.cond17.preheader ], [ %inc32, %for.body20 ] ; <i32> [#uses=2]
  %cnt.143 = phi i32 [ 0, %for.cond17.preheader ], [ %inc.cnt.1, %for.body20 ] ; <i32> [#uses=1]
  %shr23 = ashr i32 %2, %and                      ; <i32> [#uses=1]
  %cmp27 = icmp eq i32 %shr23, %shr26             ; <i1> [#uses=1]
  %inc = zext i1 %cmp27 to i32                    ; <i32> [#uses=1]
  %inc.cnt.1 = add i32 %inc, %cnt.143             ; <i32> [#uses=2]
  %inc32 = add nsw i32 %2, 1                      ; <i32> [#uses=2]
  %exitcond = icmp eq i32 %inc32, 255             ; <i1> [#uses=1]
  br i1 %exitcond, label %for.end, label %for.body20

for.end:                                          ; preds = %for.body20
  %cmp34 = icmp eq i32 %and12, 1                  ; <i1> [#uses=1]
  br i1 %cmp34, label %if.then35, label %for.inc38

if.then35:                                        ; preds = %for.end
  store i32 %inc.cnt.1, i32* @cpu_logical
  br label %for.inc38

for.inc38:                                        ; preds = %for.end, %if.then35
  %inc40 = add nsw i32 %0, 1                      ; <i32> [#uses=1]
  br label %for.cond

for.end41:                                        ; preds = %lor.lhs.false, %for.body, %for.cond
  ret void
}
