; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 ; RUN: llc < %s -mtriple=riscv32 -mattr=+v,+zfbfmin,+zvfh,+zvfbfmin -verify-machineinstrs | FileCheck --check-prefixes=CHECK,RV32,ZFMIN %s ; RUN: llc < %s -mtriple=riscv64 -mattr=+v,+zfbfmin,+zvfh,+zvfbfmin -verify-machineinstrs | FileCheck --check-prefixes=CHECK,RV64,ZFMIN %s ; RUN: llc < %s -mtriple=riscv32 -mattr=+v,+zvfhmin,+zvfbfmin -verify-machineinstrs | FileCheck --check-prefixes=CHECK,RV32,NOZFMIN %s ; RUN: llc < %s -mtriple=riscv64 -mattr=+v,+zvfhmin,+zvfbfmin -verify-machineinstrs | FileCheck --check-prefixes=CHECK,RV64,NOZFMIN %s define i64 @i64( %v, i1 %c) { ; RV32-LABEL: i64: ; RV32: # %bb.0: ; RV32-NEXT: addi sp, sp, -16 ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: csrr a1, vlenb ; RV32-NEXT: sub sp, sp, a1 ; RV32-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 1 * vlenb ; RV32-NEXT: addi a1, sp, 16 ; RV32-NEXT: vs1r.v v8, (a1) # vscale x 8-byte Folded Spill ; RV32-NEXT: andi a0, a0, 1 ; RV32-NEXT: #APP ; RV32-NEXT: #NO_APP ; RV32-NEXT: beqz a0, .LBB0_2 ; RV32-NEXT: # %bb.1: # %truebb ; RV32-NEXT: li a0, 32 ; RV32-NEXT: vl1r.v v9, (a1) # vscale x 8-byte Folded Reload ; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma ; RV32-NEXT: vsrl.vx v8, v9, a0 ; RV32-NEXT: vmv.x.s a1, v8 ; RV32-NEXT: vmv.x.s a0, v9 ; RV32-NEXT: j .LBB0_3 ; RV32-NEXT: .LBB0_2: # %falsebb ; RV32-NEXT: li a1, 0 ; RV32-NEXT: .LBB0_3: # %falsebb ; RV32-NEXT: csrr a2, vlenb ; RV32-NEXT: add sp, sp, a2 ; RV32-NEXT: .cfi_def_cfa sp, 16 ; RV32-NEXT: addi sp, sp, 16 ; RV32-NEXT: .cfi_def_cfa_offset 0 ; RV32-NEXT: ret ; ; RV64-LABEL: i64: ; RV64: # %bb.0: ; RV64-NEXT: addi sp, sp, -16 ; RV64-NEXT: .cfi_def_cfa_offset 16 ; RV64-NEXT: csrr a1, vlenb ; RV64-NEXT: sub sp, sp, a1 ; RV64-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 1 * vlenb ; RV64-NEXT: addi a1, sp, 16 ; RV64-NEXT: vs1r.v v8, (a1) # vscale x 8-byte Folded Spill ; RV64-NEXT: andi a0, a0, 1 ; RV64-NEXT: #APP ; RV64-NEXT: #NO_APP ; RV64-NEXT: beqz a0, .LBB0_2 ; RV64-NEXT: # %bb.1: # %truebb ; RV64-NEXT: ld a0, 16(sp) # 8-byte Folded Reload ; RV64-NEXT: .LBB0_2: # %falsebb ; RV64-NEXT: csrr a1, vlenb ; RV64-NEXT: add sp, sp, a1 ; RV64-NEXT: .cfi_def_cfa sp, 16 ; RV64-NEXT: addi sp, sp, 16 ; RV64-NEXT: .cfi_def_cfa_offset 0 ; RV64-NEXT: ret tail call void asm sideeffect "", "~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() br i1 %c, label %truebb, label %falsebb truebb: %x = extractelement %v, i32 0 ret i64 %x falsebb: ret i64 0 } define i32 @i32( %v, i1 %c) { ; CHECK-LABEL: i32: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -16 ; CHECK-NEXT: .cfi_def_cfa_offset 16 ; CHECK-NEXT: csrr a1, vlenb ; CHECK-NEXT: sub sp, sp, a1 ; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 1 * vlenb ; CHECK-NEXT: addi a1, sp, 16 ; CHECK-NEXT: vs1r.v v8, (a1) # vscale x 8-byte Folded Spill ; CHECK-NEXT: andi a0, a0, 1 ; CHECK-NEXT: #APP ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: beqz a0, .LBB1_2 ; CHECK-NEXT: # %bb.1: # %truebb ; CHECK-NEXT: lw a0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: .LBB1_2: # %falsebb ; CHECK-NEXT: csrr a1, vlenb ; CHECK-NEXT: add sp, sp, a1 ; CHECK-NEXT: .cfi_def_cfa sp, 16 ; CHECK-NEXT: addi sp, sp, 16 ; CHECK-NEXT: .cfi_def_cfa_offset 0 ; CHECK-NEXT: ret tail call void asm sideeffect "", "~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() br i1 %c, label %truebb, label %falsebb truebb: %x = extractelement %v, i32 0 ret i32 %x falsebb: ret i32 0 } define i16 @i16( %v, i1 %c) { ; CHECK-LABEL: i16: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -16 ; CHECK-NEXT: .cfi_def_cfa_offset 16 ; CHECK-NEXT: csrr a1, vlenb ; CHECK-NEXT: sub sp, sp, a1 ; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 1 * vlenb ; CHECK-NEXT: addi a1, sp, 16 ; CHECK-NEXT: vs1r.v v8, (a1) # vscale x 8-byte Folded Spill ; CHECK-NEXT: andi a0, a0, 1 ; CHECK-NEXT: #APP ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: beqz a0, .LBB2_2 ; CHECK-NEXT: # %bb.1: # %truebb ; CHECK-NEXT: lh a0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: .LBB2_2: # %falsebb ; CHECK-NEXT: csrr a1, vlenb ; CHECK-NEXT: add sp, sp, a1 ; CHECK-NEXT: .cfi_def_cfa sp, 16 ; CHECK-NEXT: addi sp, sp, 16 ; CHECK-NEXT: .cfi_def_cfa_offset 0 ; CHECK-NEXT: ret tail call void asm sideeffect "", "~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() br i1 %c, label %truebb, label %falsebb truebb: %x = extractelement %v, i32 0 ret i16 %x falsebb: ret i16 0 } define i8 @i8( %v, i1 %c) { ; CHECK-LABEL: i8: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -16 ; CHECK-NEXT: .cfi_def_cfa_offset 16 ; CHECK-NEXT: csrr a1, vlenb ; CHECK-NEXT: sub sp, sp, a1 ; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 1 * vlenb ; CHECK-NEXT: addi a1, sp, 16 ; CHECK-NEXT: vs1r.v v8, (a1) # vscale x 8-byte Folded Spill ; CHECK-NEXT: andi a0, a0, 1 ; CHECK-NEXT: #APP ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: beqz a0, .LBB3_2 ; CHECK-NEXT: # %bb.1: # %truebb ; CHECK-NEXT: lb a0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: .LBB3_2: # %falsebb ; CHECK-NEXT: csrr a1, vlenb ; CHECK-NEXT: add sp, sp, a1 ; CHECK-NEXT: .cfi_def_cfa sp, 16 ; CHECK-NEXT: addi sp, sp, 16 ; CHECK-NEXT: .cfi_def_cfa_offset 0 ; CHECK-NEXT: ret tail call void asm sideeffect "", "~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() br i1 %c, label %truebb, label %falsebb truebb: %x = extractelement %v, i32 0 ret i8 %x falsebb: ret i8 0 } define double @f64( %v, i1 %c) { ; RV32-LABEL: f64: ; RV32: # %bb.0: ; RV32-NEXT: addi sp, sp, -16 ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: csrr a1, vlenb ; RV32-NEXT: sub sp, sp, a1 ; RV32-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 1 * vlenb ; RV32-NEXT: addi a1, sp, 16 ; RV32-NEXT: vs1r.v v8, (a1) # vscale x 8-byte Folded Spill ; RV32-NEXT: andi a0, a0, 1 ; RV32-NEXT: #APP ; RV32-NEXT: #NO_APP ; RV32-NEXT: beqz a0, .LBB4_2 ; RV32-NEXT: # %bb.1: # %truebb ; RV32-NEXT: fld fa0, 16(sp) # 8-byte Folded Reload ; RV32-NEXT: j .LBB4_3 ; RV32-NEXT: .LBB4_2: # %falsebb ; RV32-NEXT: fcvt.d.w fa0, zero ; RV32-NEXT: .LBB4_3: # %falsebb ; RV32-NEXT: csrr a0, vlenb ; RV32-NEXT: add sp, sp, a0 ; RV32-NEXT: .cfi_def_cfa sp, 16 ; RV32-NEXT: addi sp, sp, 16 ; RV32-NEXT: .cfi_def_cfa_offset 0 ; RV32-NEXT: ret ; ; RV64-LABEL: f64: ; RV64: # %bb.0: ; RV64-NEXT: addi sp, sp, -16 ; RV64-NEXT: .cfi_def_cfa_offset 16 ; RV64-NEXT: csrr a1, vlenb ; RV64-NEXT: sub sp, sp, a1 ; RV64-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 1 * vlenb ; RV64-NEXT: addi a1, sp, 16 ; RV64-NEXT: vs1r.v v8, (a1) # vscale x 8-byte Folded Spill ; RV64-NEXT: andi a0, a0, 1 ; RV64-NEXT: #APP ; RV64-NEXT: #NO_APP ; RV64-NEXT: beqz a0, .LBB4_2 ; RV64-NEXT: # %bb.1: # %truebb ; RV64-NEXT: fld fa0, 16(sp) # 8-byte Folded Reload ; RV64-NEXT: j .LBB4_3 ; RV64-NEXT: .LBB4_2: # %falsebb ; RV64-NEXT: fmv.d.x fa0, zero ; RV64-NEXT: .LBB4_3: # %falsebb ; RV64-NEXT: csrr a0, vlenb ; RV64-NEXT: add sp, sp, a0 ; RV64-NEXT: .cfi_def_cfa sp, 16 ; RV64-NEXT: addi sp, sp, 16 ; RV64-NEXT: .cfi_def_cfa_offset 0 ; RV64-NEXT: ret tail call void asm sideeffect "", "~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() br i1 %c, label %truebb, label %falsebb truebb: %x = extractelement %v, i32 0 ret double %x falsebb: ret double 0.0 } define float @f32( %v, i1 %c) { ; CHECK-LABEL: f32: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -16 ; CHECK-NEXT: .cfi_def_cfa_offset 16 ; CHECK-NEXT: csrr a1, vlenb ; CHECK-NEXT: sub sp, sp, a1 ; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 1 * vlenb ; CHECK-NEXT: addi a1, sp, 16 ; CHECK-NEXT: vs1r.v v8, (a1) # vscale x 8-byte Folded Spill ; CHECK-NEXT: andi a0, a0, 1 ; CHECK-NEXT: #APP ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: beqz a0, .LBB5_2 ; CHECK-NEXT: # %bb.1: # %truebb ; CHECK-NEXT: flw fa0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: j .LBB5_3 ; CHECK-NEXT: .LBB5_2: # %falsebb ; CHECK-NEXT: fmv.w.x fa0, zero ; CHECK-NEXT: .LBB5_3: # %falsebb ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: add sp, sp, a0 ; CHECK-NEXT: .cfi_def_cfa sp, 16 ; CHECK-NEXT: addi sp, sp, 16 ; CHECK-NEXT: .cfi_def_cfa_offset 0 ; CHECK-NEXT: ret tail call void asm sideeffect "", "~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() br i1 %c, label %truebb, label %falsebb truebb: %x = extractelement %v, i32 0 ret float %x falsebb: ret float 0.0 } define half @f16( %v, i1 %c) { ; ZFMIN-LABEL: f16: ; ZFMIN: # %bb.0: ; ZFMIN-NEXT: addi sp, sp, -16 ; ZFMIN-NEXT: .cfi_def_cfa_offset 16 ; ZFMIN-NEXT: csrr a1, vlenb ; ZFMIN-NEXT: sub sp, sp, a1 ; ZFMIN-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 1 * vlenb ; ZFMIN-NEXT: addi a1, sp, 16 ; ZFMIN-NEXT: vs1r.v v8, (a1) # vscale x 8-byte Folded Spill ; ZFMIN-NEXT: andi a0, a0, 1 ; ZFMIN-NEXT: #APP ; ZFMIN-NEXT: #NO_APP ; ZFMIN-NEXT: beqz a0, .LBB6_2 ; ZFMIN-NEXT: # %bb.1: # %truebb ; ZFMIN-NEXT: flh fa0, 16(sp) # 8-byte Folded Reload ; ZFMIN-NEXT: j .LBB6_3 ; ZFMIN-NEXT: .LBB6_2: # %falsebb ; ZFMIN-NEXT: fmv.h.x fa0, zero ; ZFMIN-NEXT: .LBB6_3: # %falsebb ; ZFMIN-NEXT: csrr a0, vlenb ; ZFMIN-NEXT: add sp, sp, a0 ; ZFMIN-NEXT: .cfi_def_cfa sp, 16 ; ZFMIN-NEXT: addi sp, sp, 16 ; ZFMIN-NEXT: .cfi_def_cfa_offset 0 ; ZFMIN-NEXT: ret ; ; NOZFMIN-LABEL: f16: ; NOZFMIN: # %bb.0: ; NOZFMIN-NEXT: addi sp, sp, -16 ; NOZFMIN-NEXT: .cfi_def_cfa_offset 16 ; NOZFMIN-NEXT: csrr a1, vlenb ; NOZFMIN-NEXT: sub sp, sp, a1 ; NOZFMIN-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 1 * vlenb ; NOZFMIN-NEXT: addi a1, sp, 16 ; NOZFMIN-NEXT: vs1r.v v8, (a1) # vscale x 8-byte Folded Spill ; NOZFMIN-NEXT: andi a0, a0, 1 ; NOZFMIN-NEXT: #APP ; NOZFMIN-NEXT: #NO_APP ; NOZFMIN-NEXT: beqz a0, .LBB6_2 ; NOZFMIN-NEXT: # %bb.1: # %truebb ; NOZFMIN-NEXT: lh a0, 16(sp) # 8-byte Folded Reload ; NOZFMIN-NEXT: lui a1, 1048560 ; NOZFMIN-NEXT: or a0, a0, a1 ; NOZFMIN-NEXT: j .LBB6_3 ; NOZFMIN-NEXT: .LBB6_2: # %falsebb ; NOZFMIN-NEXT: lui a0, 1048560 ; NOZFMIN-NEXT: .LBB6_3: # %falsebb ; NOZFMIN-NEXT: fmv.w.x fa0, a0 ; NOZFMIN-NEXT: csrr a0, vlenb ; NOZFMIN-NEXT: add sp, sp, a0 ; NOZFMIN-NEXT: .cfi_def_cfa sp, 16 ; NOZFMIN-NEXT: addi sp, sp, 16 ; NOZFMIN-NEXT: .cfi_def_cfa_offset 0 ; NOZFMIN-NEXT: ret tail call void asm sideeffect "", "~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() br i1 %c, label %truebb, label %falsebb truebb: %x = extractelement %v, i32 0 ret half %x falsebb: ret half 0.0 } define bfloat @bf16( %v, i1 %c) { ; ZFMIN-LABEL: bf16: ; ZFMIN: # %bb.0: ; ZFMIN-NEXT: addi sp, sp, -16 ; ZFMIN-NEXT: .cfi_def_cfa_offset 16 ; ZFMIN-NEXT: csrr a1, vlenb ; ZFMIN-NEXT: sub sp, sp, a1 ; ZFMIN-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 1 * vlenb ; ZFMIN-NEXT: addi a1, sp, 16 ; ZFMIN-NEXT: vs1r.v v8, (a1) # vscale x 8-byte Folded Spill ; ZFMIN-NEXT: andi a0, a0, 1 ; ZFMIN-NEXT: #APP ; ZFMIN-NEXT: #NO_APP ; ZFMIN-NEXT: beqz a0, .LBB7_2 ; ZFMIN-NEXT: # %bb.1: # %truebb ; ZFMIN-NEXT: lh a0, 16(sp) # 8-byte Folded Reload ; ZFMIN-NEXT: fmv.h.x fa0, a0 ; ZFMIN-NEXT: j .LBB7_3 ; ZFMIN-NEXT: .LBB7_2: # %falsebb ; ZFMIN-NEXT: fmv.h.x fa0, zero ; ZFMIN-NEXT: .LBB7_3: # %falsebb ; ZFMIN-NEXT: csrr a0, vlenb ; ZFMIN-NEXT: add sp, sp, a0 ; ZFMIN-NEXT: .cfi_def_cfa sp, 16 ; ZFMIN-NEXT: addi sp, sp, 16 ; ZFMIN-NEXT: .cfi_def_cfa_offset 0 ; ZFMIN-NEXT: ret ; ; NOZFMIN-LABEL: bf16: ; NOZFMIN: # %bb.0: ; NOZFMIN-NEXT: addi sp, sp, -16 ; NOZFMIN-NEXT: .cfi_def_cfa_offset 16 ; NOZFMIN-NEXT: csrr a1, vlenb ; NOZFMIN-NEXT: sub sp, sp, a1 ; NOZFMIN-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 1 * vlenb ; NOZFMIN-NEXT: addi a1, sp, 16 ; NOZFMIN-NEXT: vs1r.v v8, (a1) # vscale x 8-byte Folded Spill ; NOZFMIN-NEXT: andi a0, a0, 1 ; NOZFMIN-NEXT: #APP ; NOZFMIN-NEXT: #NO_APP ; NOZFMIN-NEXT: beqz a0, .LBB7_2 ; NOZFMIN-NEXT: # %bb.1: # %truebb ; NOZFMIN-NEXT: lh a0, 16(sp) # 8-byte Folded Reload ; NOZFMIN-NEXT: lui a1, 1048560 ; NOZFMIN-NEXT: or a0, a0, a1 ; NOZFMIN-NEXT: j .LBB7_3 ; NOZFMIN-NEXT: .LBB7_2: # %falsebb ; NOZFMIN-NEXT: lui a0, 1048560 ; NOZFMIN-NEXT: .LBB7_3: # %falsebb ; NOZFMIN-NEXT: fmv.w.x fa0, a0 ; NOZFMIN-NEXT: csrr a0, vlenb ; NOZFMIN-NEXT: add sp, sp, a0 ; NOZFMIN-NEXT: .cfi_def_cfa sp, 16 ; NOZFMIN-NEXT: addi sp, sp, 16 ; NOZFMIN-NEXT: .cfi_def_cfa_offset 0 ; NOZFMIN-NEXT: ret tail call void asm sideeffect "", "~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() br i1 %c, label %truebb, label %falsebb truebb: %x = extractelement %v, i32 0 ret bfloat %x falsebb: ret bfloat 0.0 }