; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
; RUN:   | FileCheck %s

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write)
declare void @llvm.assume(i1 noundef) #0

declare fastcc i1 @S_reginclass()

declare fastcc ptr @Perl_av_store(i64)

define fastcc i32 @S_regrepeat(ptr %startposp, i32 %max, i8 %0, i1 %cmp343) nounwind {
; CHECK-LABEL: S_regrepeat:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    addi sp, sp, -32
; CHECK-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill
; CHECK-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill
; CHECK-NEXT:    sd s1, 8(sp) # 8-byte Folded Spill
; CHECK-NEXT:    sd s2, 0(sp) # 8-byte Folded Spill
; CHECK-NEXT:    zext.b a2, a2
; CHECK-NEXT:    addi a4, a2, -19
; CHECK-NEXT:    li a5, 2
; CHECK-NEXT:    mv a0, a1
; CHECK-NEXT:    bltu a4, a5, .LBB0_4
; CHECK-NEXT:  # %bb.1: # %entry
; CHECK-NEXT:    li a1, 1
; CHECK-NEXT:    bltu a1, a2, .LBB0_8
; CHECK-NEXT:  # %bb.2: # %do_exactf
; CHECK-NEXT:    andi a3, a3, 1
; CHECK-NEXT:    beqz a3, .LBB0_10
; CHECK-NEXT:  # %bb.3: # %land.rhs251
; CHECK-NEXT:    lw zero, 0(zero)
; CHECK-NEXT:    li s0, 1
; CHECK-NEXT:    bnez s0, .LBB0_9
; CHECK-NEXT:    j .LBB0_8
; CHECK-NEXT:  .LBB0_4: # %sw.bb336
; CHECK-NEXT:    mv s1, a0
; CHECK-NEXT:    li s0, 0
; CHECK-NEXT:    andi s2, a3, 1
; CHECK-NEXT:  .LBB0_5: # %land.rhs345
; CHECK-NEXT:    # =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    call S_reginclass
; CHECK-NEXT:    andi a0, a0, 1
; CHECK-NEXT:    beqz a0, .LBB0_7
; CHECK-NEXT:  # %bb.6: # %while.body350
; CHECK-NEXT:    # in Loop: Header=BB0_5 Depth=1
; CHECK-NEXT:    addiw s0, s0, 1
; CHECK-NEXT:    bnez s2, .LBB0_5
; CHECK-NEXT:    j .LBB0_8
; CHECK-NEXT:  .LBB0_7:
; CHECK-NEXT:    mv a0, s1
; CHECK-NEXT:    bnez s0, .LBB0_9
; CHECK-NEXT:  .LBB0_8: # %if.else1492
; CHECK-NEXT:    li a0, 0
; CHECK-NEXT:  .LBB0_9: # %if.end1497
; CHECK-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload
; CHECK-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload
; CHECK-NEXT:    ld s1, 8(sp) # 8-byte Folded Reload
; CHECK-NEXT:    ld s2, 0(sp) # 8-byte Folded Reload
; CHECK-NEXT:    addi sp, sp, 32
; CHECK-NEXT:    ret
; CHECK-NEXT:  .LBB0_10:
; CHECK-NEXT:    j .LBB0_8
entry:
  switch i8 %0, label %if.else1492 [
    i8 19, label %sw.bb336
    i8 20, label %sw.bb336
    i8 1, label %do_exactf
    i8 0, label %do_exactf
  ]

do_exactf:                                        ; preds = %entry, %entry
  br i1 %cmp343, label %land.rhs251, label %if.end334

land.rhs251:                                      ; preds = %do_exactf
  %bcmp414 = load volatile i32, ptr null, align 4
  br label %if.end334

if.end334:                                        ; preds = %land.rhs251, %do_exactf
  %hardcount.7 = phi i32 [ 0, %do_exactf ], [ 1, %land.rhs251 ]
  call void @llvm.lifetime.end.p0(i64 0, ptr null)
  br label %sw.epilog1489

sw.bb336:                                         ; preds = %entry, %entry
  br label %land.rhs345

land.rhs345:                                      ; preds = %while.body350, %sw.bb336
  %hardcount.8634 = phi i32 [ %inc356, %while.body350 ], [ 0, %sw.bb336 ]
  %call347 = call fastcc i1 @S_reginclass()
  br i1 %call347, label %while.body350, label %sw.epilog1489

while.body350:                                    ; preds = %land.rhs345
  %inc356 = add i32 %hardcount.8634, 1
  br i1 %cmp343, label %land.rhs345, label %if.end1497

sw.epilog1489:                                    ; preds = %land.rhs345, %if.end334
  %hardcount.20 = phi i32 [ %hardcount.7, %if.end334 ], [ %hardcount.8634, %land.rhs345 ]
  %tobool1490.not = icmp eq i32 %hardcount.20, 0
  br i1 %tobool1490.not, label %if.else1492, label %if.end1497

if.else1492:                                      ; preds = %sw.epilog1489, %entry
  br label %if.end1497

if.end1497:                                       ; preds = %if.else1492, %sw.epilog1489, %while.body350
  %c.0 = phi i32 [ 0, %if.else1492 ], [ %max, %sw.epilog1489 ], [ 0, %while.body350 ]
  ret i32 %c.0
}

define ptr @Perl_pp_refassign(ptr %PL_stack_sp, i1 %tobool.not, i1 %tobool3.not, i1 %cond1) nounwind {
; CHECK-LABEL: Perl_pp_refassign:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    andi a1, a1, 1
; CHECK-NEXT:    beqz a1, .LBB1_3
; CHECK-NEXT:  # %bb.1:
; CHECK-NEXT:    li a1, 0
; CHECK-NEXT:    andi a2, a2, 1
; CHECK-NEXT:    bnez a2, .LBB1_4
; CHECK-NEXT:  .LBB1_2: # %cond.true4
; CHECK-NEXT:    ld a0, 0(a0)
; CHECK-NEXT:    snez a0, a0
; CHECK-NEXT:    bnez a0, .LBB1_5
; CHECK-NEXT:    j .LBB1_6
; CHECK-NEXT:  .LBB1_3: # %cond.true
; CHECK-NEXT:    ld a1, 0(a0)
; CHECK-NEXT:    andi a2, a2, 1
; CHECK-NEXT:    beqz a2, .LBB1_2
; CHECK-NEXT:  .LBB1_4:
; CHECK-NEXT:    j .LBB1_6
; CHECK-NEXT:  .LBB1_5: # %sw.bb85
; CHECK-NEXT:    addi sp, sp, -16
; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
; CHECK-NEXT:    ld a0, 0(a1)
; CHECK-NEXT:    call Perl_av_store
; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
; CHECK-NEXT:    addi sp, sp, 16
; CHECK-NEXT:  .LBB1_6: # %common.ret
; CHECK-NEXT:    li a0, 0
; CHECK-NEXT:    ret
entry:
  br i1 %tobool.not, label %cond.end, label %cond.true

cond.true:                                        ; preds = %entry
  %0 = load ptr, ptr %PL_stack_sp, align 8
  br label %cond.end

cond.end:                                         ; preds = %cond.true, %entry
  %cond = phi ptr [ %0, %cond.true ], [ null, %entry ]
  br i1 %tobool3.not, label %cond.end7, label %cond.true4

cond.true4:                                       ; preds = %cond.end
  %1 = load ptr, ptr %PL_stack_sp, align 8
  %2 = icmp ne ptr %1, null
  br label %cond.end7

cond.end7:                                        ; preds = %cond.true4, %cond.end
  %cond84 = phi i1 [ %2, %cond.true4 ], [ false, %cond.end ]
  br i1 %cond1, label %if.end48, label %sw.bb

sw.bb:                                            ; preds = %cond.end7
  call void @llvm.assume(i1 %tobool.not)
  br label %if.end48

if.end48:                                         ; preds = %sw.bb, %cond.end7
  br i1 %cond84, label %sw.bb85, label %common.ret

common.ret:                                       ; preds = %sw.bb85, %if.end48
  ret ptr null

sw.bb85:                                          ; preds = %if.end48
  %3 = load i64, ptr %cond, align 8
  %call125 = call fastcc ptr @Perl_av_store(i64 %3)
  br label %common.ret
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) }
