123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- /*
- * SPDX-License-Identifier: BSD-2-Clause
- *
- * Copyright (c) 2019 Western Digital Corporation or its affiliates.
- *
- * Authors:
- * Anup Patel <anup.patel@wdc.com>
- */
- #ifdef __riscv_flen
- #if __riscv_flen != 64
- # error single-float only is not supported
- #endif
- #define get_f32(which) fmv.x.s a0, which; jr t0
- #define put_f32(which) fmv.s.x which, a0; jr t0
- #if __riscv_xlen == 64
- # define get_f64(which) fmv.x.d a0, which; jr t0
- # define put_f64(which) fmv.d.x which, a0; jr t0
- #else
- # define get_f64(which) fsd which, 0(a0); jr t0
- # define put_f64(which) fld which, 0(a0); jr t0
- #endif
- .text
- .option norvc
- .globl get_f32_reg
- get_f32_reg:
- get_f32(f0)
- get_f32(f1)
- get_f32(f2)
- get_f32(f3)
- get_f32(f4)
- get_f32(f5)
- get_f32(f6)
- get_f32(f7)
- get_f32(f8)
- get_f32(f9)
- get_f32(f10)
- get_f32(f11)
- get_f32(f12)
- get_f32(f13)
- get_f32(f14)
- get_f32(f15)
- get_f32(f16)
- get_f32(f17)
- get_f32(f18)
- get_f32(f19)
- get_f32(f20)
- get_f32(f21)
- get_f32(f22)
- get_f32(f23)
- get_f32(f24)
- get_f32(f25)
- get_f32(f26)
- get_f32(f27)
- get_f32(f28)
- get_f32(f29)
- get_f32(f30)
- get_f32(f31)
- .text
- .globl put_f32_reg
- put_f32_reg:
- put_f32(f0)
- put_f32(f1)
- put_f32(f2)
- put_f32(f3)
- put_f32(f4)
- put_f32(f5)
- put_f32(f6)
- put_f32(f7)
- put_f32(f8)
- put_f32(f9)
- put_f32(f10)
- put_f32(f11)
- put_f32(f12)
- put_f32(f13)
- put_f32(f14)
- put_f32(f15)
- put_f32(f16)
- put_f32(f17)
- put_f32(f18)
- put_f32(f19)
- put_f32(f20)
- put_f32(f21)
- put_f32(f22)
- put_f32(f23)
- put_f32(f24)
- put_f32(f25)
- put_f32(f26)
- put_f32(f27)
- put_f32(f28)
- put_f32(f29)
- put_f32(f30)
- put_f32(f31)
- .text
- .globl get_f64_reg
- get_f64_reg:
- get_f64(f0)
- get_f64(f1)
- get_f64(f2)
- get_f64(f3)
- get_f64(f4)
- get_f64(f5)
- get_f64(f6)
- get_f64(f7)
- get_f64(f8)
- get_f64(f9)
- get_f64(f10)
- get_f64(f11)
- get_f64(f12)
- get_f64(f13)
- get_f64(f14)
- get_f64(f15)
- get_f64(f16)
- get_f64(f17)
- get_f64(f18)
- get_f64(f19)
- get_f64(f20)
- get_f64(f21)
- get_f64(f22)
- get_f64(f23)
- get_f64(f24)
- get_f64(f25)
- get_f64(f26)
- get_f64(f27)
- get_f64(f28)
- get_f64(f29)
- get_f64(f30)
- get_f64(f31)
- .text
- .globl put_f64_reg
- put_f64_reg:
- put_f64(f0)
- put_f64(f1)
- put_f64(f2)
- put_f64(f3)
- put_f64(f4)
- put_f64(f5)
- put_f64(f6)
- put_f64(f7)
- put_f64(f8)
- put_f64(f9)
- put_f64(f10)
- put_f64(f11)
- put_f64(f12)
- put_f64(f13)
- put_f64(f14)
- put_f64(f15)
- put_f64(f16)
- put_f64(f17)
- put_f64(f18)
- put_f64(f19)
- put_f64(f20)
- put_f64(f21)
- put_f64(f22)
- put_f64(f23)
- put_f64(f24)
- put_f64(f25)
- put_f64(f26)
- put_f64(f27)
- put_f64(f28)
- put_f64(f29)
- put_f64(f30)
- put_f64(f31)
- #endif
|