brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 72242f1 Raw
65 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+xandesbfhcvt -target-abi ilp32f \3; RUN:   -verify-machineinstrs < %s | FileCheck --check-prefixes=CHECK,XANDESBFHCVT %s4; RUN: llc -mtriple=riscv32 -mattr=+zfh,+xandesbfhcvt -target-abi ilp32f \5; RUN:   -verify-machineinstrs < %s | FileCheck --check-prefixes=CHECK,ZFH %s6; RUN: llc -mtriple=riscv64 -mattr=+xandesbfhcvt -target-abi lp64f \7; RUN:   -verify-machineinstrs < %s | FileCheck --check-prefixes=CHECK,XANDESBFHCVT %s8; RUN: llc -mtriple=riscv64 -mattr=+zfh,+xandesbfhcvt -target-abi lp64f \9; RUN:   -verify-machineinstrs < %s | FileCheck --check-prefixes=CHECK,ZFH %s10 11define float @fcvt_s_bf16(bfloat %a) nounwind {12; CHECK-LABEL: fcvt_s_bf16:13; CHECK:       # %bb.0:14; CHECK-NEXT:    nds.fcvt.s.bf16 fa0, fa015; CHECK-NEXT:    ret16  %1 = fpext bfloat %a to float17  ret float %118}19 20define bfloat @fcvt_bf16_s(float %a) nounwind {21; CHECK-LABEL: fcvt_bf16_s:22; CHECK:       # %bb.0:23; CHECK-NEXT:    nds.fcvt.bf16.s fa0, fa024; CHECK-NEXT:    ret25  %1 = fptrunc float %a to bfloat26  ret bfloat %127}28 29; Check load and store to bf16.30define void @loadstorebf16(ptr %bf, ptr %sf) nounwind {31; XANDESBFHCVT-LABEL: loadstorebf16:32; XANDESBFHCVT:       # %bb.0: # %entry33; XANDESBFHCVT-NEXT:    lhu a2, 0(a0)34; XANDESBFHCVT-NEXT:    lui a3, 104856035; XANDESBFHCVT-NEXT:    or a2, a2, a336; XANDESBFHCVT-NEXT:    fmv.w.x fa5, a237; XANDESBFHCVT-NEXT:    nds.fcvt.s.bf16 fa5, fa538; XANDESBFHCVT-NEXT:    fsw fa5, 0(a1)39; XANDESBFHCVT-NEXT:    flw fa5, 0(a1)40; XANDESBFHCVT-NEXT:    nds.fcvt.bf16.s fa5, fa541; XANDESBFHCVT-NEXT:    fmv.x.w a1, fa542; XANDESBFHCVT-NEXT:    sh a1, 0(a0)43; XANDESBFHCVT-NEXT:    ret44;45; ZFH-LABEL: loadstorebf16:46; ZFH:       # %bb.0: # %entry47; ZFH-NEXT:    flh fa5, 0(a0)48; ZFH-NEXT:    nds.fcvt.s.bf16 fa5, fa549; ZFH-NEXT:    fsw fa5, 0(a1)50; ZFH-NEXT:    flw fa5, 0(a1)51; ZFH-NEXT:    nds.fcvt.bf16.s fa5, fa552; ZFH-NEXT:    fsh fa5, 0(a0)53; ZFH-NEXT:    ret54entry:55  %0 = load bfloat, bfloat* %bf, align 256  %1 = fpext bfloat %0 to float57  store volatile float %1, float* %sf, align 458 59  %2 = load float, float* %sf, align 460  %3 = fptrunc float %2 to bfloat61  store volatile bfloat %3, bfloat* %bf, align 262 63  ret void64}65