| ; Tests for conditional branch instructions | 
 |  | 
 | ; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \ | 
 | ; RUN:   --filetype=asm --target mips32 -i %s --args -O2 \ | 
 | ; RUN:   -allow-externally-defined-symbols \ | 
 | ; RUN:   | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \ | 
 | ; RUN:   --check-prefix=COMMON --check-prefix=MIPS32 | 
 |  | 
 | ; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \ | 
 | ; RUN:   --filetype=asm --target mips32 -i %s --args -Om1 \ | 
 | ; RUN:   -allow-externally-defined-symbols \ | 
 | ; RUN:   | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \ | 
 | ; RUN:   --check-prefix=COMMON --check-prefix=MIPS32-OM1 | 
 |  | 
 | define internal i32 @cond_br_eq(i32 %arg1, i32 %arg2) { | 
 | entry: | 
 |   %cmp1 = icmp eq i32 %arg1, %arg2 | 
 |   br i1 %cmp1, label %branch1, label %branch2 | 
 | branch1: | 
 |   ret i32 1 | 
 | branch2: | 
 |   ret i32 2 | 
 | } | 
 | ; COMMON-LABEL: cond_br_eq | 
 | ; MIPS32: bne {{.*}} .Lcond_br_eq$branch2 | 
 | ; MIPS32-NEXT: .Lcond_br_eq$branch1 | 
 | ; MIPS32-OM1: xor | 
 | ; MIPS32-OM1: sltiu {{.*}}, {{.*}}, 1 | 
 | ; MIPS32-OM1: beqz {{.*}} .Lcond_br_eq$branch2 | 
 | ; MIPS32-OM1-NEXT: b .Lcond_br_eq$branch1 | 
 |  | 
 | define internal i32 @cond_br_ne(i32 %arg1, i32 %arg2) { | 
 | entry: | 
 |   %cmp1 = icmp ne i32 %arg1, %arg2 | 
 |   br i1 %cmp1, label %branch1, label %branch2 | 
 | branch1: | 
 |   ret i32 1 | 
 | branch2: | 
 |   ret i32 2 | 
 | } | 
 | ; COMMON-LABEL: cond_br_ne | 
 | ; MIPS32: beq {{.*}} .Lcond_br_ne$branch2 | 
 | ; MIPS32-NEXT: .Lcond_br_ne$branch1 | 
 | ; MIPS32-OM1: xor | 
 | ; MIPS32-OM1: sltu {{.*}}, $zero, {{.*}} | 
 | ; MIPS32-OM1: beqz {{.*}} .Lcond_br_ne$branch2 | 
 | ; MIPS32-OM1-NEXT: b .Lcond_br_ne$branch1 | 
 |  | 
 | define internal i32 @cond_br_slt(i32 %arg1, i32 %arg2) { | 
 | entry: | 
 |   %cmp1 = icmp slt i32 %arg1, %arg2 | 
 |   br i1 %cmp1, label %branch1, label %branch2 | 
 | branch1: | 
 |   ret i32 1 | 
 | branch2: | 
 |   ret i32 2 | 
 | } | 
 | ; COMMON-LABEL: cond_br_slt | 
 | ; MIPS32: slt | 
 | ; MIPS32: beqz {{.*}} .Lcond_br_slt$branch2 | 
 | ; MIPS32-NEXT: .Lcond_br_slt$branch1 | 
 | ; MIPS32-OM1: slt | 
 | ; MIPS32-OM1: beqz {{.*}} .Lcond_br_slt$branch2 | 
 | ; MIPS32-OM1-NEXT: b .Lcond_br_slt$branch1 | 
 |  | 
 | define internal i32 @cond_br_sle(i32 %arg1, i32 %arg2) { | 
 | entry: | 
 |   %cmp1 = icmp sle i32 %arg1, %arg2 | 
 |   br i1 %cmp1, label %branch1, label %branch2 | 
 | branch1: | 
 |   ret i32 1 | 
 | branch2: | 
 |   ret i32 2 | 
 | } | 
 | ; COMMON-LABEL: cond_br_sle | 
 | ; MIPS32: slt | 
 | ; MIPS32: bnez {{.*}} .Lcond_br_sle$branch2 | 
 | ; MIPS32-NEXT: .Lcond_br_sle$branch1 | 
 | ; MIPS32-OM1: slt | 
 | ; MIPS32-OM1: xori {{.*}}, {{.*}}, 1 | 
 | ; MIPS32-OM1: beqz {{.*}} .Lcond_br_sle$branch2 | 
 | ; MIPS32-OM1-NEXT: b .Lcond_br_sle$branch1 | 
 |  | 
 | define internal i32 @cond_br_sgt(i32 %arg1, i32 %arg2) { | 
 | entry: | 
 |   %cmp1 = icmp sgt i32 %arg1, %arg2 | 
 |   br i1 %cmp1, label %branch1, label %branch2 | 
 | branch1: | 
 |   ret i32 1 | 
 | branch2: | 
 |   ret i32 2 | 
 | } | 
 | ; COMMON-LABEL: cond_br_sgt | 
 | ; MIPS32: slt | 
 | ; MIPS32-NEXT: beqz {{.*}} .Lcond_br_sgt$branch2 | 
 | ; MIPS32-NEXT: .Lcond_br_sgt$branch1 | 
 | ; MIPS32-OM1: slt | 
 | ; MIPS32-OM1: beqz {{.*}} .Lcond_br_sgt$branch2 | 
 | ; MIPS32-OM1-NEXT: b .Lcond_br_sgt$branch1 | 
 |  | 
 | define internal i32 @cond_br_sge(i32 %arg1, i32 %arg2) { | 
 | entry: | 
 |   %cmp1 = icmp sge i32 %arg1, %arg2 | 
 |   br i1 %cmp1, label %branch1, label %branch2 | 
 | branch1: | 
 |   ret i32 1 | 
 | branch2: | 
 |   ret i32 2 | 
 | } | 
 | ; COMMON-LABEL: cond_br_sge | 
 | ; MIPS32: slt | 
 | ; MIPS32: bnez {{.*}} .Lcond_br_sge$branch2 | 
 | ; MIPS32-NEXT: .Lcond_br_sge$branch1 | 
 | ; MIPS32-OM1: slt | 
 | ; MIPS32-OM1: xori {{.*}}, {{.*}}, 1 | 
 | ; MIPS32-OM1: beqz {{.*}} .Lcond_br_sge$branch2 | 
 | ; MIPS32-OM1-NEXT: b .Lcond_br_sge$branch1 | 
 |  | 
 | define internal i32 @cond_br_ugt(i32 %arg1, i32 %arg2) { | 
 | entry: | 
 |   %cmp1 = icmp ugt i32 %arg1, %arg2 | 
 |   br i1 %cmp1, label %branch1, label %branch2 | 
 | branch1: | 
 |   ret i32 1 | 
 | branch2: | 
 |   ret i32 2 | 
 | } | 
 | ; COMMON-LABEL: cond_br_ugt | 
 | ; MIPS32: sltu | 
 | ; MIPS32: beqz {{.*}} .Lcond_br_ugt$branch2 | 
 | ; MIPS32-NEXT: .Lcond_br_ugt$branch1 | 
 | ; MIPS32-OM1: sltu | 
 | ; MIPS32-OM1: beqz {{.*}} .Lcond_br_ugt$branch2 | 
 | ; MIPS32-OM1-NEXT: b .Lcond_br_ugt$branch1 | 
 |  | 
 | define internal i32 @cond_br_uge(i32 %arg1, i32 %arg2) { | 
 | entry: | 
 |   %cmp1 = icmp uge i32 %arg1, %arg2 | 
 |   br i1 %cmp1, label %branch1, label %branch2 | 
 | branch1: | 
 |   ret i32 1 | 
 | branch2: | 
 |   ret i32 2 | 
 | } | 
 | ; COMMON-LABEL: cond_br_uge | 
 | ; MIPS32: sltu | 
 | ; MIPS32: bnez {{.*}} .Lcond_br_uge$branch2 | 
 | ; MIPS32-NEXT: .Lcond_br_uge$branch1 | 
 | ; MIPS32-OM1: sltu | 
 | ; MIPS32-OM1: xori {{.*}}, {{.*}}, 1 | 
 | ; MIPS32-OM1: beqz {{.*}} .Lcond_br_uge$branch2 | 
 | ; MIPS32-OM1-NEXT: b .Lcond_br_uge$branch1 | 
 |  | 
 | define internal i32 @cond_br_ult(i32 %arg1, i32 %arg2) { | 
 | entry: | 
 |   %cmp1 = icmp ult i32 %arg1, %arg2 | 
 |   br i1 %cmp1, label %branch1, label %branch2 | 
 | branch1: | 
 |   ret i32 1 | 
 | branch2: | 
 |   ret i32 2 | 
 | } | 
 | ; COMMON-LABEL: cond_br_ult | 
 | ; MIPS32: sltu | 
 | ; MIPS32: beqz {{.*}} .Lcond_br_ult$branch2 | 
 | ; MIPS32-NEXT: .Lcond_br_ult$branch1 | 
 | ; MIPS32-OM1: sltu | 
 | ; MIPS32-OM1: beqz {{.*}} .Lcond_br_ult$branch2 | 
 | ; MIPS32-OM1-NEXT: b .Lcond_br_ult$branch1 | 
 |  | 
 | define internal i32 @cond_br_ule(i32 %arg1, i32 %arg2) { | 
 | entry: | 
 |   %cmp1 = icmp ule i32 %arg1, %arg2 | 
 |   br i1 %cmp1, label %branch1, label %branch2 | 
 | branch1: | 
 |   ret i32 1 | 
 | branch2: | 
 |   ret i32 2 | 
 | } | 
 | ; COMMON-LABEL: cond_br_ule | 
 | ; MIPS32: sltu | 
 | ; MIPS32: bnez {{.*}} .Lcond_br_ule$branch2 | 
 | ; MIPS32-NEXT: .Lcond_br_ule$branch1 | 
 | ; MIPS32-OM1: sltu | 
 | ; MIPS32-OM1: xori {{.*}}, {{.*}}, 1 | 
 | ; MIPS32-OM1: beqz {{.*}} .Lcond_br_ule$branch2 | 
 | ; MIPS32-OM1-NEXT: b .Lcond_br_ule$branch1 |