1*1e39575aSMin-Yih Hsu; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3 2*1e39575aSMin-Yih Hsu; RUN: llc -mtriple=riscv32 -O2 -verify-machineinstrs < %s | FileCheck %s 3*1e39575aSMin-Yih Hsu; RUN: llc -mtriple=riscv64 -O2 -verify-machineinstrs < %s | FileCheck %s 4*1e39575aSMin-Yih Hsu 5*1e39575aSMin-Yih Hsudefine void @u_case1_a(ptr %a, i32 signext %b, ptr %c, ptr %d) { 6*1e39575aSMin-Yih Hsu; CHECK-LABEL: u_case1_a: 7*1e39575aSMin-Yih Hsu; CHECK: # %bb.0: 8*1e39575aSMin-Yih Hsu; CHECK-NEXT: li a4, 32 9*1e39575aSMin-Yih Hsu; CHECK-NEXT: sw a4, 0(a0) 10*1e39575aSMin-Yih Hsu; CHECK-NEXT: bgeu a1, a4, .LBB0_2 11*1e39575aSMin-Yih Hsu; CHECK-NEXT: # %bb.1: # %block1 12*1e39575aSMin-Yih Hsu; CHECK-NEXT: sw a1, 0(a2) 13*1e39575aSMin-Yih Hsu; CHECK-NEXT: ret 14*1e39575aSMin-Yih Hsu; CHECK-NEXT: .LBB0_2: # %block2 15*1e39575aSMin-Yih Hsu; CHECK-NEXT: li a0, 87 16*1e39575aSMin-Yih Hsu; CHECK-NEXT: sw a0, 0(a3) 17*1e39575aSMin-Yih Hsu; CHECK-NEXT: ret 18*1e39575aSMin-Yih Hsu store i32 32, ptr %a 19*1e39575aSMin-Yih Hsu %p = icmp ule i32 %b, 31 20*1e39575aSMin-Yih Hsu br i1 %p, label %block1, label %block2 21*1e39575aSMin-Yih Hsu 22*1e39575aSMin-Yih Hsublock1: ; preds = %0 23*1e39575aSMin-Yih Hsu store i32 %b, ptr %c 24*1e39575aSMin-Yih Hsu br label %end_block 25*1e39575aSMin-Yih Hsu 26*1e39575aSMin-Yih Hsublock2: ; preds = %0 27*1e39575aSMin-Yih Hsu store i32 87, ptr %d 28*1e39575aSMin-Yih Hsu br label %end_block 29*1e39575aSMin-Yih Hsu 30*1e39575aSMin-Yih Hsuend_block: ; preds = %block2, %block1 31*1e39575aSMin-Yih Hsu ret void 32*1e39575aSMin-Yih Hsu} 33*1e39575aSMin-Yih Hsu 34*1e39575aSMin-Yih Hsudefine void @case1_a(ptr %a, i32 signext %b, ptr %c, ptr %d) { 35*1e39575aSMin-Yih Hsu; CHECK-LABEL: case1_a: 36*1e39575aSMin-Yih Hsu; CHECK: # %bb.0: 37*1e39575aSMin-Yih Hsu; CHECK-NEXT: li a4, -1 38*1e39575aSMin-Yih Hsu; CHECK-NEXT: sw a4, 0(a0) 39*1e39575aSMin-Yih Hsu; CHECK-NEXT: bge a1, a4, .LBB1_2 40*1e39575aSMin-Yih Hsu; CHECK-NEXT: # %bb.1: # %block1 41*1e39575aSMin-Yih Hsu; CHECK-NEXT: sw a1, 0(a2) 42*1e39575aSMin-Yih Hsu; CHECK-NEXT: ret 43*1e39575aSMin-Yih Hsu; CHECK-NEXT: .LBB1_2: # %block2 44*1e39575aSMin-Yih Hsu; CHECK-NEXT: li a0, 87 45*1e39575aSMin-Yih Hsu; CHECK-NEXT: sw a0, 0(a3) 46*1e39575aSMin-Yih Hsu; CHECK-NEXT: ret 47*1e39575aSMin-Yih Hsu store i32 -1, ptr %a 48*1e39575aSMin-Yih Hsu %p = icmp sle i32 %b, -2 49*1e39575aSMin-Yih Hsu br i1 %p, label %block1, label %block2 50*1e39575aSMin-Yih Hsu 51*1e39575aSMin-Yih Hsublock1: ; preds = %0 52*1e39575aSMin-Yih Hsu store i32 %b, ptr %c 53*1e39575aSMin-Yih Hsu br label %end_block 54*1e39575aSMin-Yih Hsu 55*1e39575aSMin-Yih Hsublock2: ; preds = %0 56*1e39575aSMin-Yih Hsu store i32 87, ptr %d 57*1e39575aSMin-Yih Hsu br label %end_block 58*1e39575aSMin-Yih Hsu 59*1e39575aSMin-Yih Hsuend_block: ; preds = %block2, %block1 60*1e39575aSMin-Yih Hsu ret void 61*1e39575aSMin-Yih Hsu} 62*1e39575aSMin-Yih Hsu 63*1e39575aSMin-Yih Hsudefine void @u_case2_a(ptr %a, i32 signext %b, ptr %c, ptr %d) { 64*1e39575aSMin-Yih Hsu; CHECK-LABEL: u_case2_a: 65*1e39575aSMin-Yih Hsu; CHECK: # %bb.0: 66*1e39575aSMin-Yih Hsu; CHECK-NEXT: li a4, 32 67*1e39575aSMin-Yih Hsu; CHECK-NEXT: sw a4, 0(a0) 68*1e39575aSMin-Yih Hsu; CHECK-NEXT: bgeu a4, a1, .LBB2_2 69*1e39575aSMin-Yih Hsu; CHECK-NEXT: # %bb.1: # %block1 70*1e39575aSMin-Yih Hsu; CHECK-NEXT: sw a1, 0(a2) 71*1e39575aSMin-Yih Hsu; CHECK-NEXT: ret 72*1e39575aSMin-Yih Hsu; CHECK-NEXT: .LBB2_2: # %block2 73*1e39575aSMin-Yih Hsu; CHECK-NEXT: li a0, 87 74*1e39575aSMin-Yih Hsu; CHECK-NEXT: sw a0, 0(a3) 75*1e39575aSMin-Yih Hsu; CHECK-NEXT: ret 76*1e39575aSMin-Yih Hsu store i32 32, ptr %a 77*1e39575aSMin-Yih Hsu %p = icmp uge i32 %b, 33 78*1e39575aSMin-Yih Hsu br i1 %p, label %block1, label %block2 79*1e39575aSMin-Yih Hsu 80*1e39575aSMin-Yih Hsublock1: ; preds = %0 81*1e39575aSMin-Yih Hsu store i32 %b, ptr %c 82*1e39575aSMin-Yih Hsu br label %end_block 83*1e39575aSMin-Yih Hsu 84*1e39575aSMin-Yih Hsublock2: ; preds = %0 85*1e39575aSMin-Yih Hsu store i32 87, ptr %d 86*1e39575aSMin-Yih Hsu br label %end_block 87*1e39575aSMin-Yih Hsu 88*1e39575aSMin-Yih Hsuend_block: ; preds = %block2, %block1 89*1e39575aSMin-Yih Hsu ret void 90*1e39575aSMin-Yih Hsu} 91*1e39575aSMin-Yih Hsu 92*1e39575aSMin-Yih Hsudefine void @case2_a(ptr %a, i32 signext %b, ptr %c, ptr %d) { 93*1e39575aSMin-Yih Hsu; CHECK-LABEL: case2_a: 94*1e39575aSMin-Yih Hsu; CHECK: # %bb.0: 95*1e39575aSMin-Yih Hsu; CHECK-NEXT: li a4, -4 96*1e39575aSMin-Yih Hsu; CHECK-NEXT: sw a4, 0(a0) 97*1e39575aSMin-Yih Hsu; CHECK-NEXT: bge a4, a1, .LBB3_2 98*1e39575aSMin-Yih Hsu; CHECK-NEXT: # %bb.1: # %block1 99*1e39575aSMin-Yih Hsu; CHECK-NEXT: sw a1, 0(a2) 100*1e39575aSMin-Yih Hsu; CHECK-NEXT: ret 101*1e39575aSMin-Yih Hsu; CHECK-NEXT: .LBB3_2: # %block2 102*1e39575aSMin-Yih Hsu; CHECK-NEXT: li a0, 87 103*1e39575aSMin-Yih Hsu; CHECK-NEXT: sw a0, 0(a3) 104*1e39575aSMin-Yih Hsu; CHECK-NEXT: ret 105*1e39575aSMin-Yih Hsu store i32 -4, ptr %a 106*1e39575aSMin-Yih Hsu %p = icmp sge i32 %b, -3 107*1e39575aSMin-Yih Hsu br i1 %p, label %block1, label %block2 108*1e39575aSMin-Yih Hsu 109*1e39575aSMin-Yih Hsublock1: ; preds = %0 110*1e39575aSMin-Yih Hsu store i32 %b, ptr %c 111*1e39575aSMin-Yih Hsu br label %end_block 112*1e39575aSMin-Yih Hsu 113*1e39575aSMin-Yih Hsublock2: ; preds = %0 114*1e39575aSMin-Yih Hsu store i32 87, ptr %d 115*1e39575aSMin-Yih Hsu br label %end_block 116*1e39575aSMin-Yih Hsu 117*1e39575aSMin-Yih Hsuend_block: ; preds = %block2, %block1 118*1e39575aSMin-Yih Hsu ret void 119*1e39575aSMin-Yih Hsu} 120