1// See LICENSE for license details. 2 3#ifdef __riscv_flen 4 5#if __riscv_flen != 64 6# error single-float only is not supported 7#endif 8 9#define get_f32(which) fmv.x.s a0, which; jr t0 10#define put_f32(which) fmv.s.x which, a0; jr t0 11#if __riscv_xlen == 64 12# define get_f64(which) fmv.x.d a0, which; jr t0 13# define put_f64(which) fmv.d.x which, a0; jr t0 14#else 15# define get_f64(which) fsd which, 0(a0); jr t0 16# define put_f64(which) fld which, 0(a0); jr t0 17#endif 18 19 .text 20 .option norvc 21 .globl get_f32_reg 22 get_f32_reg: 23 get_f32(f0) 24 get_f32(f1) 25 get_f32(f2) 26 get_f32(f3) 27 get_f32(f4) 28 get_f32(f5) 29 get_f32(f6) 30 get_f32(f7) 31 get_f32(f8) 32 get_f32(f9) 33 get_f32(f10) 34 get_f32(f11) 35 get_f32(f12) 36 get_f32(f13) 37 get_f32(f14) 38 get_f32(f15) 39 get_f32(f16) 40 get_f32(f17) 41 get_f32(f18) 42 get_f32(f19) 43 get_f32(f20) 44 get_f32(f21) 45 get_f32(f22) 46 get_f32(f23) 47 get_f32(f24) 48 get_f32(f25) 49 get_f32(f26) 50 get_f32(f27) 51 get_f32(f28) 52 get_f32(f29) 53 get_f32(f30) 54 get_f32(f31) 55 56 .text 57 .globl put_f32_reg 58 put_f32_reg: 59 put_f32(f0) 60 put_f32(f1) 61 put_f32(f2) 62 put_f32(f3) 63 put_f32(f4) 64 put_f32(f5) 65 put_f32(f6) 66 put_f32(f7) 67 put_f32(f8) 68 put_f32(f9) 69 put_f32(f10) 70 put_f32(f11) 71 put_f32(f12) 72 put_f32(f13) 73 put_f32(f14) 74 put_f32(f15) 75 put_f32(f16) 76 put_f32(f17) 77 put_f32(f18) 78 put_f32(f19) 79 put_f32(f20) 80 put_f32(f21) 81 put_f32(f22) 82 put_f32(f23) 83 put_f32(f24) 84 put_f32(f25) 85 put_f32(f26) 86 put_f32(f27) 87 put_f32(f28) 88 put_f32(f29) 89 put_f32(f30) 90 put_f32(f31) 91 92 .text 93 .globl get_f64_reg 94 get_f64_reg: 95 get_f64(f0) 96 get_f64(f1) 97 get_f64(f2) 98 get_f64(f3) 99 get_f64(f4) 100 get_f64(f5) 101 get_f64(f6) 102 get_f64(f7) 103 get_f64(f8) 104 get_f64(f9) 105 get_f64(f10) 106 get_f64(f11) 107 get_f64(f12) 108 get_f64(f13) 109 get_f64(f14) 110 get_f64(f15) 111 get_f64(f16) 112 get_f64(f17) 113 get_f64(f18) 114 get_f64(f19) 115 get_f64(f20) 116 get_f64(f21) 117 get_f64(f22) 118 get_f64(f23) 119 get_f64(f24) 120 get_f64(f25) 121 get_f64(f26) 122 get_f64(f27) 123 get_f64(f28) 124 get_f64(f29) 125 get_f64(f30) 126 get_f64(f31) 127 128 .text 129 .globl put_f64_reg 130 put_f64_reg: 131 put_f64(f0) 132 put_f64(f1) 133 put_f64(f2) 134 put_f64(f3) 135 put_f64(f4) 136 put_f64(f5) 137 put_f64(f6) 138 put_f64(f7) 139 put_f64(f8) 140 put_f64(f9) 141 put_f64(f10) 142 put_f64(f11) 143 put_f64(f12) 144 put_f64(f13) 145 put_f64(f14) 146 put_f64(f15) 147 put_f64(f16) 148 put_f64(f17) 149 put_f64(f18) 150 put_f64(f19) 151 put_f64(f20) 152 put_f64(f21) 153 put_f64(f22) 154 put_f64(f23) 155 put_f64(f24) 156 put_f64(f25) 157 put_f64(f26) 158 put_f64(f27) 159 put_f64(f28) 160 put_f64(f29) 161 put_f64(f30) 162 put_f64(f31) 163 164#endif 165