blob: 923a0ab7bc767ef67c4ab897933d2295cf89d691 [file]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=riscv32 -mattr=+zfbfmin,+zfh -target-abi=ilp32 -verify-machineinstrs < %s \
; RUN: | FileCheck -check-prefix=RV32FZFBFMIN %s
; RUN: llc -mtriple=riscv64 -mattr=+zfbfmin,+zfh -target-abi=lp64f -verify-machineinstrs < %s \
; RUN: | FileCheck -check-prefix=RV64FZFBFMIN %s
define bfloat @constraint_f_bfloat(float %a) nounwind {
; RV32FZFBFMIN-LABEL: constraint_f_bfloat:
; RV32FZFBFMIN: # %bb.0:
; RV32FZFBFMIN-NEXT: fmv.w.x fa5, a0
; RV32FZFBFMIN-NEXT: #APP
; RV32FZFBFMIN-NEXT: fcvt.bf16.s fa5, fa5
; RV32FZFBFMIN-NEXT: #NO_APP
; RV32FZFBFMIN-NEXT: fmv.x.h a0, fa5
; RV32FZFBFMIN-NEXT: ret
;
; RV64FZFBFMIN-LABEL: constraint_f_bfloat:
; RV64FZFBFMIN: # %bb.0:
; RV64FZFBFMIN-NEXT: #APP
; RV64FZFBFMIN-NEXT: fcvt.bf16.s fa0, fa0
; RV64FZFBFMIN-NEXT: #NO_APP
; RV64FZFBFMIN-NEXT: ret
%1 = tail call bfloat asm "fcvt.bf16.s $0, $1", "=f,f"(float %a)
ret bfloat %1
}
define bfloat @constraint_cf_bfloat(float %a) nounwind {
; RV32FZFBFMIN-LABEL: constraint_cf_bfloat:
; RV32FZFBFMIN: # %bb.0:
; RV32FZFBFMIN-NEXT: fmv.w.x fa5, a0
; RV32FZFBFMIN-NEXT: #APP
; RV32FZFBFMIN-NEXT: fcvt.bf16.s fa5, fa5
; RV32FZFBFMIN-NEXT: #NO_APP
; RV32FZFBFMIN-NEXT: fmv.x.h a0, fa5
; RV32FZFBFMIN-NEXT: ret
;
; RV64FZFBFMIN-LABEL: constraint_cf_bfloat:
; RV64FZFBFMIN: # %bb.0:
; RV64FZFBFMIN-NEXT: #APP
; RV64FZFBFMIN-NEXT: fcvt.bf16.s fa0, fa0
; RV64FZFBFMIN-NEXT: #NO_APP
; RV64FZFBFMIN-NEXT: ret
%1 = tail call bfloat asm "fcvt.bf16.s $0, $1", "=^cf,^cf"(float %a)
ret bfloat %1
}