; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3 ; RUN: llc -mtriple=riscv32 -O2 -verify-machineinstrs < %s | FileCheck %s ; RUN: llc -mtriple=riscv64 -O2 -verify-machineinstrs < %s | FileCheck %s define void @u_case1_a(ptr %a, i32 signext %b, ptr %c, ptr %d) { ; CHECK-LABEL: u_case1_a: ; CHECK: # %bb.0: ; CHECK-NEXT: li a4, 32 ; CHECK-NEXT: sw a4, 0(a0) ; CHECK-NEXT: bgeu a1, a4, .LBB0_2 ; CHECK-NEXT: # %bb.1: # %block1 ; CHECK-NEXT: sw a1, 0(a2) ; CHECK-NEXT: ret ; CHECK-NEXT: .LBB0_2: # %block2 ; CHECK-NEXT: li a0, 87 ; CHECK-NEXT: sw a0, 0(a3) ; CHECK-NEXT: ret store i32 32, ptr %a %p = icmp ule i32 %b, 31 br i1 %p, label %block1, label %block2 block1: ; preds = %0 store i32 %b, ptr %c br label %end_block block2: ; preds = %0 store i32 87, ptr %d br label %end_block end_block: ; preds = %block2, %block1 ret void } define void @case1_a(ptr %a, i32 signext %b, ptr %c, ptr %d) { ; CHECK-LABEL: case1_a: ; CHECK: # %bb.0: ; CHECK-NEXT: li a4, -1 ; CHECK-NEXT: sw a4, 0(a0) ; CHECK-NEXT: bge a1, a4, .LBB1_2 ; CHECK-NEXT: # %bb.1: # %block1 ; CHECK-NEXT: sw a1, 0(a2) ; CHECK-NEXT: ret ; CHECK-NEXT: .LBB1_2: # %block2 ; CHECK-NEXT: li a0, 87 ; CHECK-NEXT: sw a0, 0(a3) ; CHECK-NEXT: ret store i32 -1, ptr %a %p = icmp sle i32 %b, -2 br i1 %p, label %block1, label %block2 block1: ; preds = %0 store i32 %b, ptr %c br label %end_block block2: ; preds = %0 store i32 87, ptr %d br label %end_block end_block: ; preds = %block2, %block1 ret void } define void @u_case2_a(ptr %a, i32 signext %b, ptr %c, ptr %d) { ; CHECK-LABEL: u_case2_a: ; CHECK: # %bb.0: ; CHECK-NEXT: li a4, 32 ; CHECK-NEXT: sw a4, 0(a0) ; CHECK-NEXT: bgeu a4, a1, .LBB2_2 ; CHECK-NEXT: # %bb.1: # %block1 ; CHECK-NEXT: sw a1, 0(a2) ; CHECK-NEXT: ret ; CHECK-NEXT: .LBB2_2: # %block2 ; CHECK-NEXT: li a0, 87 ; CHECK-NEXT: sw a0, 0(a3) ; CHECK-NEXT: ret store i32 32, ptr %a %p = icmp uge i32 %b, 33 br i1 %p, label %block1, label %block2 block1: ; preds = %0 store i32 %b, ptr %c br label %end_block block2: ; preds = %0 store i32 87, ptr %d br label %end_block end_block: ; preds = %block2, %block1 ret void } define void @case2_a(ptr %a, i32 signext %b, ptr %c, ptr %d) { ; CHECK-LABEL: case2_a: ; CHECK: # %bb.0: ; CHECK-NEXT: li a4, -4 ; CHECK-NEXT: sw a4, 0(a0) ; CHECK-NEXT: bge a4, a1, .LBB3_2 ; CHECK-NEXT: # %bb.1: # %block1 ; CHECK-NEXT: sw a1, 0(a2) ; CHECK-NEXT: ret ; CHECK-NEXT: .LBB3_2: # %block2 ; CHECK-NEXT: li a0, 87 ; CHECK-NEXT: sw a0, 0(a3) ; CHECK-NEXT: ret store i32 -4, ptr %a %p = icmp sge i32 %b, -3 br i1 %p, label %block1, label %block2 block1: ; preds = %0 store i32 %b, ptr %c br label %end_block block2: ; preds = %0 store i32 87, ptr %d br label %end_block end_block: ; preds = %block2, %block1 ret void }