1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2; RUN: llc -mtriple=xtensa -disable-block-placement -verify-machineinstrs < %s \ 3; RUN: | FileCheck %s 4 5define i32 @brcc_sgt(i32 %a, i32 %b) nounwind { 6; CHECK-LABEL: brcc_sgt: 7; CHECK: bge a3, a2, .LBB0_2 8; CHECK-NEXT: # %bb.1: # %t1 9; CHECK-NEXT: addi a2, a2, 4 10; CHECK-NEXT: ret 11; CHECK-NEXT: .LBB0_2: # %t2 12; CHECK-NEXT: addi a2, a3, 8 13; CHECK-NEXT: ret 14 %wb = icmp sgt i32 %a, %b 15 br i1 %wb, label %t1, label %t2 16t1: 17 %t1v = add i32 %a, 4 18 br label %exit 19t2: 20 %t2v = add i32 %b, 8 21 br label %exit 22exit: 23 %v = phi i32 [ %t1v, %t1 ], [ %t2v, %t2 ] 24 ret i32 %v 25} 26 27define i32 @brcc_ugt(i32 %a, i32 %b) nounwind { 28; CHECK-LABEL: brcc_ugt: 29; CHECK: bgeu a3, a2, .LBB1_2 30; CHECK-NEXT: # %bb.1: # %t1 31; CHECK-NEXT: addi a2, a2, 4 32; CHECK-NEXT: ret 33; CHECK-NEXT: .LBB1_2: # %t2 34; CHECK-NEXT: addi a2, a3, 8 35; CHECK-NEXT: ret 36 %wb = icmp ugt i32 %a, %b 37 br i1 %wb, label %t1, label %t2 38t1: 39 %t1v = add i32 %a, 4 40 br label %exit 41t2: 42 %t2v = add i32 %b, 8 43 br label %exit 44exit: 45 %v = phi i32 [ %t1v, %t1 ], [ %t2v, %t2 ] 46 ret i32 %v 47} 48 49define i32 @brcc_sle(i32 %a, i32 %b) nounwind { 50; CHECK-LABEL: brcc_sle: 51; CHECK: blt a3, a2, .LBB2_2 52; CHECK-NEXT: # %bb.1: # %t1 53; CHECK-NEXT: addi a2, a2, 4 54; CHECK-NEXT: ret 55; CHECK-NEXT: .LBB2_2: # %t2 56; CHECK-NEXT: addi a2, a3, 8 57; CHECK-NEXT: ret 58 %wb = icmp sle i32 %a, %b 59 br i1 %wb, label %t1, label %t2 60t1: 61 %t1v = add i32 %a, 4 62 br label %exit 63t2: 64 %t2v = add i32 %b, 8 65 br label %exit 66exit: 67 %v = phi i32 [ %t1v, %t1 ], [ %t2v, %t2 ] 68 ret i32 %v 69} 70 71define i32 @brcc_ule(i32 %a, i32 %b) nounwind { 72; CHECK-LABEL: brcc_ule: 73; CHECK: bltu a3, a2, .LBB3_2 74; CHECK-NEXT: # %bb.1: # %t1 75; CHECK-NEXT: addi a2, a2, 4 76; CHECK-NEXT: ret 77; CHECK-NEXT: .LBB3_2: # %t2 78; CHECK-NEXT: addi a2, a3, 8 79; CHECK-NEXT: ret 80 %wb = icmp ule i32 %a, %b 81 br i1 %wb, label %t1, label %t2 82t1: 83 %t1v = add i32 %a, 4 84 br label %exit 85t2: 86 %t2v = add i32 %b, 8 87 br label %exit 88exit: 89 %v = phi i32 [ %t1v, %t1 ], [ %t2v, %t2 ] 90 ret i32 %v 91} 92 93define i32 @brcc_eq(i32 %a, i32 %b) nounwind { 94; CHECK-LABEL: brcc_eq: 95; CHECK: bne a2, a3, .LBB4_2 96; CHECK-NEXT: # %bb.1: # %t1 97; CHECK-NEXT: addi a2, a2, 4 98; CHECK-NEXT: ret 99; CHECK-NEXT: .LBB4_2: # %t2 100; CHECK-NEXT: addi a2, a3, 8 101; CHECK-NEXT: ret 102 %wb = icmp eq i32 %a, %b 103 br i1 %wb, label %t1, label %t2 104t1: 105 %t1v = add i32 %a, 4 106 br label %exit 107t2: 108 %t2v = add i32 %b, 8 109 br label %exit 110exit: 111 %v = phi i32 [ %t1v, %t1 ], [ %t2v, %t2 ] 112 ret i32 %v 113} 114 115define i32 @brcc_ne(i32 %a, i32 %b) nounwind { 116; CHECK-LABEL: brcc_ne: 117; CHECK: beq a2, a3, .LBB5_2 118; CHECK-NEXT: # %bb.1: # %t1 119; CHECK-NEXT: addi a2, a2, 4 120; CHECK-NEXT: ret 121; CHECK-NEXT: .LBB5_2: # %t2 122; CHECK-NEXT: addi a2, a3, 8 123; CHECK-NEXT: ret 124 %wb = icmp ne i32 %a, %b 125 br i1 %wb, label %t1, label %t2 126t1: 127 %t1v = add i32 %a, 4 128 br label %exit 129t2: 130 %t2v = add i32 %b, 8 131 br label %exit 132exit: 133 %v = phi i32 [ %t1v, %t1 ], [ %t2v, %t2 ] 134 ret i32 %v 135} 136 137define i32 @brcc_ge(i32 %a, i32 %b) nounwind { 138; CHECK-LABEL: brcc_ge: 139; CHECK: blt a2, a3, .LBB6_2 140; CHECK-NEXT: # %bb.1: # %t1 141; CHECK-NEXT: addi a2, a2, 4 142; CHECK-NEXT: ret 143; CHECK-NEXT: .LBB6_2: # %t2 144; CHECK-NEXT: addi a2, a3, 8 145; CHECK-NEXT: ret 146 %wb = icmp sge i32 %a, %b 147 br i1 %wb, label %t1, label %t2 148t1: 149 %t1v = add i32 %a, 4 150 br label %exit 151t2: 152 %t2v = add i32 %b, 8 153 br label %exit 154exit: 155 %v = phi i32 [ %t1v, %t1 ], [ %t2v, %t2 ] 156 ret i32 %v 157} 158 159define i32 @brcc_lt(i32 %a, i32 %b) nounwind { 160; CHECK-LABEL: brcc_lt: 161; CHECK: bge a2, a3, .LBB7_2 162; CHECK-NEXT: # %bb.1: # %t1 163; CHECK-NEXT: addi a2, a2, 4 164; CHECK-NEXT: ret 165; CHECK-NEXT: .LBB7_2: # %t2 166; CHECK-NEXT: addi a2, a3, 8 167; CHECK-NEXT: ret 168 %wb = icmp slt i32 %a, %b 169 br i1 %wb, label %t1, label %t2 170t1: 171 %t1v = add i32 %a, 4 172 br label %exit 173t2: 174 %t2v = add i32 %b, 8 175 br label %exit 176exit: 177 %v = phi i32 [ %t1v, %t1 ], [ %t2v, %t2 ] 178 ret i32 %v 179} 180 181define i32 @brcc_uge(i32 %a, i32 %b) nounwind { 182; CHECK-LABEL: brcc_uge: 183; CHECK: bltu a2, a3, .LBB8_2 184; CHECK-NEXT: # %bb.1: # %t1 185; CHECK-NEXT: addi a2, a2, 4 186; CHECK-NEXT: ret 187; CHECK-NEXT: .LBB8_2: # %t2 188; CHECK-NEXT: addi a2, a3, 8 189; CHECK-NEXT: ret 190 %wb = icmp uge i32 %a, %b 191 br i1 %wb, label %t1, label %t2 192t1: 193 %t1v = add i32 %a, 4 194 br label %exit 195t2: 196 %t2v = add i32 %b, 8 197 br label %exit 198exit: 199 %v = phi i32 [ %t1v, %t1 ], [ %t2v, %t2 ] 200 ret i32 %v 201} 202 203define i32 @brcc_ult(i32 %a, i32 %b) nounwind { 204; CHECK-LABEL: brcc_ult: 205; CHECK: bgeu a2, a3, .LBB9_2 206; CHECK-NEXT: # %bb.1: # %t1 207; CHECK-NEXT: addi a2, a2, 4 208; CHECK-NEXT: ret 209; CHECK-NEXT: .LBB9_2: # %t2 210; CHECK-NEXT: addi a2, a3, 8 211; CHECK-NEXT: ret 212 %wb = icmp ult i32 %a, %b 213 br i1 %wb, label %t1, label %t2 214t1: 215 %t1v = add i32 %a, 4 216 br label %exit 217t2: 218 %t2v = add i32 %b, 8 219 br label %exit 220exit: 221 %v = phi i32 [ %t1v, %t1 ], [ %t2v, %t2 ] 222 ret i32 %v 223} 224