; RUN: llc < %s -regalloc=fast -optimize-regalloc=0 -verify-machineinstrs
target triple = "arm-pc-linux-gnu"

; This test case would accidentally use the same physreg for two virtregs
; because allocVirtReg forgot to check if registers were already used in the
; instruction.
; This caused the RegScavenger to complain, but -verify-machineinstrs also
; catches it.

%struct.CHESS_POSITION = type { i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i32, i8, i8, [64 x i8], i8, i8, i8, i8, i8 }

@search = external global %struct.CHESS_POSITION  ; <ptr> [#uses=1]
@bishop_mobility_rr45 = external global [64 x [256 x i32]] ; <ptr> [#uses=1]

declare fastcc i32 @FirstOne()

define fastcc void @Evaluate() {
entry:
  br i1 false, label %cond_false186, label %cond_true

cond_true:                                        ; preds = %entry
  ret void

cond_false186:                                    ; preds = %entry
  br i1 false, label %cond_true293, label %bb203

bb203:                                            ; preds = %cond_false186
  ret void

cond_true293:                                     ; preds = %cond_false186
  br i1 false, label %cond_true298, label %cond_next317

cond_true298:                                     ; preds = %cond_true293
  br i1 false, label %cond_next518, label %cond_true397.preheader

cond_next317:                                     ; preds = %cond_true293
  ret void

cond_true397.preheader:                           ; preds = %cond_true298
  ret void

cond_next518:                                     ; preds = %cond_true298
  br i1 false, label %bb1069, label %cond_true522

cond_true522:                                     ; preds = %cond_next518
  ret void

bb1069:                                           ; preds = %cond_next518
  br i1 false, label %cond_next1131, label %bb1096

bb1096:                                           ; preds = %bb1069
  ret void

cond_next1131:                                    ; preds = %bb1069
  br i1 false, label %cond_next1207, label %cond_true1150

cond_true1150:                                    ; preds = %cond_next1131
  ret void

cond_next1207:                                    ; preds = %cond_next1131
  br i1 false, label %cond_next1219, label %cond_true1211

cond_true1211:                                    ; preds = %cond_next1207
  ret void

cond_next1219:                                    ; preds = %cond_next1207
  br i1 false, label %cond_true1223, label %cond_next1283

cond_true1223:                                    ; preds = %cond_next1219
  br i1 false, label %cond_true1254, label %cond_true1264

cond_true1254:                                    ; preds = %cond_true1223
  br i1 false, label %bb1567, label %cond_true1369.preheader

cond_true1264:                                    ; preds = %cond_true1223
  ret void

cond_next1283:                                    ; preds = %cond_next1219
  ret void

cond_true1369.preheader:                          ; preds = %cond_true1254
  ret void

bb1567:                                           ; preds = %cond_true1254
  %tmp1591 = load i64, ptr getelementptr inbounds (%struct.CHESS_POSITION, ptr @search, i32 0, i32 4) ; <i64> [#uses=1]
  %tmp1572 = tail call fastcc i32 @FirstOne()     ; <i32> [#uses=1]
  %tmp1594 = load i32, ptr undef                      ; <i32> [#uses=1]
  %tmp1594.upgrd.5 = trunc i32 %tmp1594 to i8     ; <i8> [#uses=1]
  %shift.upgrd.6 = zext i8 %tmp1594.upgrd.5 to i64 ; <i64> [#uses=1]
  %tmp1595 = lshr i64 %tmp1591, %shift.upgrd.6    ; <i64> [#uses=1]
  %tmp1595.upgrd.7 = trunc i64 %tmp1595 to i32    ; <i32> [#uses=1]
  %tmp1596 = and i32 %tmp1595.upgrd.7, 255        ; <i32> [#uses=1]
  %gep.upgrd.8 = zext i32 %tmp1596 to i64         ; <i64> [#uses=1]
  %tmp1598 = getelementptr [64 x [256 x i32]], ptr @bishop_mobility_rr45, i32 0, i32 %tmp1572, i64 %gep.upgrd.8 ; <ptr> [#uses=1]
  %tmp1599 = load i32, ptr %tmp1598                   ; <i32> [#uses=1]
  %tmp1602 = sub i32 0, %tmp1599                  ; <i32> [#uses=1]
  br i1 undef, label %cond_next1637, label %cond_true1607

cond_true1607:                                    ; preds = %bb1567
  ret void

cond_next1637:                                    ; preds = %bb1567
  %tmp1662 = sub i32 %tmp1602, 0                  ; <i32> [#uses=0]
  ret void
}
