; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 ; RUN: llc -mtriple=riscv32 -mattr=+m,+v,+f,+d,+experimental-zvfbfa -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFBFA ; RUN: llc -mtriple=riscv64 -mattr=+m,+v,+f,+d,+experimental-zvfbfa -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFBFA ; RUN: llc -mtriple=riscv32 -mattr=+m,+v,+f,+d,+zfbfmin,+zvfbfmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFBFMIN ; RUN: llc -mtriple=riscv64 -mattr=+m,+v,+f,+d,+zfbfmin,+zvfbfmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFBFMIN target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" define <2 x bfloat> @vslide1down_2xbf16(<2 x bfloat> %v, bfloat %b) { ; ZVFBFA-LABEL: vslide1down_2xbf16: ; ZVFBFA: # %bb.0: ; ZVFBFA-NEXT: vsetivli zero, 2, e16alt, mf4, ta, ma ; ZVFBFA-NEXT: vfslide1down.vf v8, v8, fa0 ; ZVFBFA-NEXT: ret ; ; ZVFBFMIN-LABEL: vslide1down_2xbf16: ; ZVFBFMIN: # %bb.0: ; ZVFBFMIN-NEXT: fmv.x.h a0, fa0 ; ZVFBFMIN-NEXT: vsetivli zero, 2, e16, mf4, ta, ma ; ZVFBFMIN-NEXT: vslide1down.vx v8, v8, a0 ; ZVFBFMIN-NEXT: ret %vb = insertelement <2 x bfloat> poison, bfloat %b, i64 0 %v1 = shufflevector <2 x bfloat> %v, <2 x bfloat> %vb, <2 x i32> ret <2 x bfloat> %v1 } define <4 x bfloat> @vslide1down_4xbf16(<4 x bfloat> %v, bfloat %b) { ; ZVFBFA-LABEL: vslide1down_4xbf16: ; ZVFBFA: # %bb.0: ; ZVFBFA-NEXT: vsetivli zero, 4, e16alt, mf2, ta, ma ; ZVFBFA-NEXT: vfslide1down.vf v8, v8, fa0 ; ZVFBFA-NEXT: ret ; ; ZVFBFMIN-LABEL: vslide1down_4xbf16: ; ZVFBFMIN: # %bb.0: ; ZVFBFMIN-NEXT: fmv.x.h a0, fa0 ; ZVFBFMIN-NEXT: vsetivli zero, 4, e16, mf2, ta, ma ; ZVFBFMIN-NEXT: vslide1down.vx v8, v8, a0 ; ZVFBFMIN-NEXT: ret %vb = insertelement <4 x bfloat> poison, bfloat %b, i64 0 %v1 = shufflevector <4 x bfloat> %v, <4 x bfloat> %vb, <4 x i32> ret <4 x bfloat> %v1 } ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: ; CHECK: {{.*}}