; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc -mtriple=riscv32 -mattr=+experimental-zvfbfa,+v -verify-machineinstrs < %s | FileCheck %s ; RUN: llc -mtriple=riscv64 -mattr=+experimental-zvfbfa,+v -verify-machineinstrs < %s | FileCheck %s define @vrsub_vf_nxv1bf16( %va, bfloat %b) { ; CHECK-LABEL: vrsub_vf_nxv1bf16: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetvli a0, zero, e16alt, mf4, ta, ma ; CHECK-NEXT: vfrsub.vf v8, v8, fa0 ; CHECK-NEXT: ret %head = insertelement poison, bfloat %b, i32 0 %splat = shufflevector %head, poison, zeroinitializer %vc = fsub %splat, %va ret %vc } define @vrsub_vf_nxv2bf16( %va, bfloat %b) { ; CHECK-LABEL: vrsub_vf_nxv2bf16: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetvli a0, zero, e16alt, mf2, ta, ma ; CHECK-NEXT: vfrsub.vf v8, v8, fa0 ; CHECK-NEXT: ret %head = insertelement poison, bfloat %b, i32 0 %splat = shufflevector %head, poison, zeroinitializer %vc = fsub %splat, %va ret %vc } define @vrsub_vf_nxv4bf16( %va, bfloat %b) { ; CHECK-LABEL: vrsub_vf_nxv4bf16: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetvli a0, zero, e16alt, m1, ta, ma ; CHECK-NEXT: vfrsub.vf v8, v8, fa0 ; CHECK-NEXT: ret %head = insertelement poison, bfloat %b, i32 0 %splat = shufflevector %head, poison, zeroinitializer %vc = fsub %splat, %va ret %vc } define @vrsub_vf_nxv8bf16( %va, bfloat %b) { ; CHECK-LABEL: vrsub_vf_nxv8bf16: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetvli a0, zero, e16alt, m2, ta, ma ; CHECK-NEXT: vfrsub.vf v8, v8, fa0 ; CHECK-NEXT: ret %head = insertelement poison, bfloat %b, i32 0 %splat = shufflevector %head, poison, zeroinitializer %vc = fsub %splat, %va ret %vc } define @vrsub_vf_nxv16bf16( %va, bfloat %b) { ; CHECK-LABEL: vrsub_vf_nxv16bf16: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetvli a0, zero, e16alt, m4, ta, ma ; CHECK-NEXT: vfrsub.vf v8, v8, fa0 ; CHECK-NEXT: ret %head = insertelement poison, bfloat %b, i32 0 %splat = shufflevector %head, poison, zeroinitializer %vc = fsub %splat, %va ret %vc } define @vrsub_vf_nxv32bf16( %va, bfloat %b) { ; CHECK-LABEL: vrsub_vf_nxv32bf16: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetvli a0, zero, e16alt, m8, ta, ma ; CHECK-NEXT: vfrsub.vf v8, v8, fa0 ; CHECK-NEXT: ret %head = insertelement poison, bfloat %b, i32 0 %splat = shufflevector %head, poison, zeroinitializer %vc = fsub %splat, %va ret %vc }