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