1 /******************************** -*- C -*- **************************** 2 * 3 * Run-time assembler & support macros for the i386 math coprocessor 4 * 5 ***********************************************************************/ 6 7 8 /*********************************************************************** 9 * 10 * Copyright 2000, 2001, 2002, 2004 Free Software Foundation, Inc. 11 * Written by Paolo Bonzini. 12 * 13 * This file is part of GNU lightning. 14 * 15 * GNU lightning is free software; you can redistribute it and/or modify it 16 * under the terms of the GNU Lesser General Public License as published 17 * by the Free Software Foundation; either version 2.1, or (at your option) 18 * any later version. 19 * 20 * GNU lightning is distributed in the hope that it will be useful, but 21 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 22 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 23 * License for more details. 24 * 25 * You should have received a copy of the GNU Lesser General Public License 26 * along with GNU lightning; see the file COPYING.LESSER; if not, write to the 27 * Free Software Foundation, 59 Temple Place - Suite 330, Boston, 28 * MA 02111-1307, USA. 29 * 30 ***********************************************************************/ 31 32 33 #ifndef __lightning_asm_fp_h 34 #define __lightning_asm_fp_h 35 36 #ifdef JIT_X86_SSE 37 38 # include "fp-sse.h" 39 40 # ifdef MZ_LONG_DOUBLE 41 # include "fp-extfpu.h" 42 # endif 43 44 #else 45 46 # include "fp-extfpu.h" 47 48 # define JIT_FPR_NUM JIT_FPU_FPR_NUM 49 # define JIT_FPR(i) JIT_FPU_FPR(i) 50 51 # define jit_fxch(rs, op) jit_fpu_fxch(rs, op) 52 # define jit_addr_d(rd,s1,s2) jit_fpu_addr_d(rd,s1,s2) 53 # define jit_subr_d(rd,s1,s2) jit_fpu_subr_d(rd,s1,s2) 54 # define jit_subrr_d(rd,s1,s2) jit_fpu_subrr_d(rd,s1,s2) 55 # define jit_mulr_d(rd,s1,s2) jit_fpu_mulr_d(rd,s1,s2) 56 # define jit_divr_d(rd,s1,s2) jit_fpu_divr_d(rd,s1,s2) 57 # define jit_divrr_d(rd,s1,s2) jit_fpu_divrr_d(rd,s1,s2) 58 # define jit_abs_d(rd,rs) jit_fpu_abs_d(rd,rs) 59 # define jit_negr_d(rd,rs) jit_fpu_negr_d(rd,rs) 60 # define jit_sqrt_d(rd,rs) jit_fpu_sqrt_d(rd,rs) 61 # define jit_addr_d_fppop(rd,s1,s2) jit_fpu_addr_d_fppop(rd,s1,s2) 62 # define jit_subr_d_fppop(rd,s1,s2) jit_fpu_subr_d_fppop(rd,s1,s2) 63 # define jit_subrr_d_fppop(rd,s1,s2) jit_fpu_subrr_d_fppop(rd,s1,s2) 64 # define jit_mulr_d_fppop(rd,s1,s2) jit_fpu_mulr_d_fppop(rd,s1,s2) 65 # define jit_divr_d_fppop(rd,s1,s2) jit_fpu_divr_d_fppop(rd,s1,s2) 66 # define jit_divrr_d_fppop(rd,s1,s2) jit_fpu_divrr_d_fppop(rd,s1,s2) 67 # define jit_negr_d_fppop(rd,rs) jit_fpu_negr_d_fppop(rd,rs) 68 # define jit_abs_d_fppop(rd,rs) jit_fpu_abs_d_fppop(rd,rs) 69 # define jit_sqrt_d_fppop(rd,rs) jit_fpu_sqrt_d_fppop(rd,rs) 70 # define jit_addr_ld(rd,s1,s2) jit_fpu_addr_ld(rd,s1,s2) 71 # define jit_subr_ld(rd,s1,s2) jit_fpu_subr_ld(rd,s1,s2) 72 # define jit_subrr_ld(rd,s1,s2) jit_fpu_subrr_ld(rd,s1,s2) 73 # define jit_mulr_ld(rd,s1,s2) jit_fpu_mulr_ld(rd,s1,s2) 74 # define jit_ldivr_ld(rd,s1,s2) jit_fpu_ldivr_ld(rd,s1,s2) 75 # define jit_ldivrr_ld(rd,s1,s2) jit_fpu_ldivrr_ld(rd,s1,s2) 76 # define jit_abs_ld(rd,rs) jit_fpu_abs_ld(rd,rs) 77 # define jit_negr_ld(rd,rs) jit_fpu_negr_ld(rd,rs) 78 # define jit_sqrt_ld(rd,rs) jit_fpu_sqrt_ld(rd,rs) 79 # define jit_addr_ld_fppop(rd,s1,s2) jit_fpu_addr_ld_fppop(rd,s1,s2) 80 # define jit_subr_ld_fppop(rd,s1,s2) jit_fpu_subr_ld_fppop(rd,s1,s2) 81 # define jit_subrr_ld_fppop(rd,s1,s2) jit_fpu_subrr_ld_fppop(rd,s1,s2) 82 # define jit_mulr_ld_fppop(rd,s1,s2) jit_fpu_mulr_ld_fppop(rd,s1,s2) 83 # define jit_divr_ld_fppop(rd,s1,s2) jit_fpu_divr_ld_fppop(rd,s1,s2) 84 # define jit_divrr_ld_fppop(rd,s1,s2) jit_fpu_divrr_ld_fppop(rd,s1,s2) 85 # define jit_negr_ld_fppop(rd,rs) jit_fpu_negr_ld_fppop(rd,rs) 86 # define jit_abs_ld_fppop(rd,rs) jit_fpu_abs_ld_fppop(rd,rs) 87 # define jit_sqrt_ld_fppop(rd,rs) jit_fpu_sqrt_ld_fppop(rd,rs) 88 # define jit_movr_d(rd,s1) jit_fpu_movr_d(rd,s1) 89 # define jit_movr_d_rel(rd,s1) jit_fpu_movr_d_rel(rd,s1) 90 # define jit_movr_d_fppush(rd,s1) jit_fpu_movr_d_fppush(rd,s1) 91 # define jit_movr_ld(rd,s1) jit_fpu_movr_ld(rd,s1) 92 # define jit_movr_ld_rel(rd,s1) jit_fpu_movr_ld_rel(rd,s1) 93 # define jit_movr_ld_fppush(rd,s1) jit_fpu_movr_ld_fppush(rd,s1) 94 # define jit_movi_d(rd,immd) jit_fpu_movi_d(rd,immd) 95 # define jit_ldi_d(rd, is) jit_fpu_ldi_d(rd, is) 96 # define jit_ldi_d_fppush(rd, is) jit_fpu_ldi_d_fppush(rd, is) 97 # define jit_ldi_ld(rd, is) jit_fpu_ldi_ld(rd, is) 98 # define jit_ldi_ld_fppush(rd, is) jit_fpu_ldi_ld_fppush(rd, is) 99 # define jit_ldr_d(rd, rs) jit_fpu_ldr_d(rd, rs) 100 # define jit_ldr_d_fppush(rd, rs) jit_fpu_ldr_d_fppush(rd, rs) 101 # define jit_ldr_f_fppush(rd, rs) jit_fpu_ldr_f_fppush(rd, rs) 102 # define jit_ldr_ld(rd, rs) jit_fpu_ldr_ld(rd, rs) 103 # define jit_ldr_ld_fppush(rd, rs) jit_fpu_ldr_ld_fppush(rd, rs) 104 # define jit_ldxi_d(rd, rs, is) jit_fpu_ldxi_d(rd, rs, is) 105 # define jit_ldxi_d_fppush(rd, rs, is) jit_fpu_ldxi_d_fppush(rd, rs, is) 106 # define jit_ldxi_ld(rd, rs, is) jit_fpu_ldxi_ld(rd, rs, is) 107 # define jit_ldxi_ld_fppush(rd, rs, is) jit_fpu_ldxi_ld_fppush(rd, rs, is) 108 # define jit_ldxr_d(rd, s1, s2) jit_fpu_ldxr_d(rd, s1, s2) 109 # define jit_ldxr_d_fppush(rd, s1, s2) jit_fpu_ldxr_d_fppush(rd, s1, s2) 110 # define jit_ldxr_ld(rd, s1, s2) jit_fpu_ldxr_ld(rd, s1, s2) 111 # define jit_ldxr_ld_fppush(rd, s1, s2) jit_fpu_ldxr_ld_fppush(rd, s1, s2) 112 # define jit_extr_i_d(rd, rs) jit_fpu_extr_i_d(rd, rs) 113 # define jit_extr_i_d_fppush(rd, rs) jit_fpu_extr_i_d_fppush(rd, rs) 114 # define jit_extr_i_ld_fppush(rd, rs) jit_fpu_extr_i_ld_fppush(rd, rs) 115 # define jit_extr_l_d_fppush(rd, rs) jit_fpu_extr_l_d_fppush(rd, rs) 116 # define jit_extr_l_ld_fppush(rd, rs) jit_fpu_extr_l_ld_fppush(rd, rs) 117 # define jit_extr_d_f(rd, rs) jit_fpu_extr_d_f(rd, rs) 118 # define jit_extr_f_d(rd, rs) jit_fpu_extr_f_d(rd, rs) 119 # define jit_stxi_f(id, rd, rs) jit_fpu_stxi_f(id, rd, rs) 120 # define jit_stxr_f(d1, d2, rs) jit_fpu_stxr_f(d1, d2, rs) 121 # define jit_stxi_d(id, rd, rs) jit_fpu_stxi_d(id, rd, rs) 122 # define jit_stxr_d(d1, d2, rs) jit_fpu_stxr_d(d1, d2, rs) 123 # define jit_sti_d(id, rs) jit_fpu_sti_d(id, rs) 124 # define jit_str_d(rd, rs) jit_fpu_str_d(rd, rs) 125 # define jit_str_f(rd, rs) jit_fpu_str_f(rd, rs) 126 # define jit_sti_d_fppop(id, rs) jit_fpu_sti_d_fppop(id, rs) 127 # define jit_sti_ld_fppop(id, rs) jit_fpu_sti_ld_fppop(id, rs) 128 # define jit_stxi_d_fppop(id, rd, rs) jit_fpu_stxi_d_fppop(id, rd, rs) 129 # define jit_str_d_fppop(rd, rs) jit_fpu_str_d_fppop(rd, rs) 130 # define jit_str_f_fppop(rd, rs) jit_fpu_str_f_fppop(rd, rs) 131 # define jit_stxr_d_fppop(d1, d2, rs) jit_fpu_stxr_d_fppop(d1, d2, rs) 132 # define jit_stxi_ld_fppop(id, rd, rs) jit_fpu_stxi_ld_fppop(id, rd, rs) 133 # define jit_str_ld_fppop(rd, rs) jit_fpu_str_ld_fppop(rd, rs) 134 # define jit_stxr_ld_fppop(d1, d2, rs) jit_fpu_stxr_ld_fppop(d1, d2, rs) 135 # define jit_floorr_d_i(rd, rs) jit_fpu_floorr_d_i(rd, rs) 136 # define jit_ceilr_d_i(rd, rs) jit_fpu_ceilr_d_i(rd, rs) 137 # define jit_roundr_d_i(rd, rs) jit_fpu_roundr_d_i(rd, rs) 138 # define jit_roundr_ld_i(rd, rs) jit_fpu_roundr_ld_i(rd, rs) 139 # define jit_roundr_d_l(rd, rs) jit_fpu_roundr_d_l(rd, rs) 140 # define jit_roundr_ld_l(rd, rs) jit_fpu_roundr_ld_l(rd, rs) 141 # define jit_roundr_d_l_fppop(rd, rs) jit_fpu_roundr_d_l_fppop(rd, rs) 142 # define jit_roundr_ld_l_fppop(rd, rs) jit_fpu_roundr_ld_l_fppop(rd, rs) 143 # define jit_truncr_d_i(rd, rs) jit_fpu_truncr_d_i(rd, rs) 144 # define jit_truncr_ld_i(rd, rs) jit_fpu_truncr_ld_i(rd, rs) 145 # define jit_truncr_d_l(rd, rs) jit_fpu_truncr_d_l(rd, rs) 146 # define jit_truncr_ld_l(rd, rs) jit_fpu_truncr_ld_l(rd, rs) 147 # define jit_truncr_d_l_fppop(rd, rs) jit_fpu_truncr_d_l_fppop(rd, rs) 148 # define jit_truncr_ld_l_fppop(rd, rs) jit_fpu_truncr_ld_l_fppop(rd, rs) 149 # define jit_gtr_d(d, s1, s2) jit_fpu_gtr_d(d, s1, s2) 150 # define jit_ger_d(d, s1, s2) jit_fpu_ger_d(d, s1, s2) 151 # define jit_unler_d(d, s1, s2) jit_fpu_unler_d(d, s1, s2) 152 # define jit_unltr_d(d, s1, s2) jit_fpu_unltr_d(d, s1, s2) 153 # define jit_ltr_d(d, s1, s2) jit_fpu_ltr_d(d, s1, s2) 154 # define jit_ler_d(d, s1, s2) jit_fpu_ler_d(d, s1, s2) 155 # define jit_unger_d(d, s1, s2) jit_fpu_unger_d(d, s1, s2) 156 # define jit_ungtr_d(d, s1, s2) jit_fpu_ungtr_d(d, s1, s2) 157 # define jit_eqr_d(d, s1, s2) jit_fpu_eqr_d(d, s1, s2) 158 # define jit_ner_d(d, s1, s2) jit_fpu_ner_d(d, s1, s2) 159 # define jit_ltgtr_d(d, s1, s2) jit_fpu_ltgtr_d(d, s1, s2) 160 # define jit_uneqr_d(d, s1, s2) jit_fpu_uneqr_d(d, s1, s2) 161 # define jit_ordr_d(d, s1, s2) jit_fpu_ordr_d(d, s1, s2) 162 # define jit_unordr_d(d, s1, s2) jit_fpu_unordr_d(d, s1, s2) 163 # define jit_bgtr_d(d, s1, s2) jit_fpu_bgtr_d(d, s1, s2) 164 # define jit_bger_d(d, s1, s2) jit_fpu_bger_d(d, s1, s2) 165 # define jit_bger_ld(d, s1, s2) jit_fpu_bger_ld(d, s1, s2) 166 # define jit_bantigtr_d(d, s1, s2) jit_fpu_bantigtr_d(d, s1, s2) 167 # define jit_bantiger_d(d, s1, s2) jit_fpu_bantiger_d(d, s1, s2) 168 # define jit_bunler_d(d, s1, s2) jit_fpu_bunler_d(d, s1, s2) 169 # define jit_bunltr_d(d, s1, s2) jit_fpu_bunltr_d(d, s1, s2) 170 # define jit_bltr_d(d, s1, s2) jit_fpu_bltr_d(d, s1, s2) 171 # define jit_bltr_ld(d, s1, s2) jit_fpu_bltr_ld(d, s1, s2) 172 # define jit_bler_d(d, s1, s2) jit_fpu_bler_d(d, s1, s2) 173 # define jit_bantiltr_d(d, s1, s2) jit_fpu_bantiltr_d(d, s1, s2) 174 # define jit_bantiler_d(d, s1, s2) jit_fpu_bantiler_d(d, s1, s2) 175 # define jit_bunger_d(d, s1, s2) jit_fpu_bunger_d(d, s1, s2) 176 # define jit_bungtr_d(d, s1, s2) jit_fpu_bungtr_d(d, s1, s2) 177 # define jit_beqr_d(d, s1, s2) jit_fpu_beqr_d(d, s1, s2) 178 # define jit_beqr_ld(d, s1, s2) jit_fpu_beqr_ld(d, s1, s2) 179 # define jit_bantieqr_d(d, s1, s2) jit_fpu_bantieqr_d(d, s1, s2) 180 # define jit_bantieqr_ld(d, s1, s2) jit_fpu_bantieqr_ld(d, s1, s2) 181 # define jit_bner_d(d, s1, s2) jit_fpu_bner_d(d, s1, s2) 182 # define jit_bltgtr_d(d, s1, s2) jit_fpu_bltgtr_d(d, s1, s2) 183 # define jit_buneqr_d(d, s1, s2) jit_fpu_buneqr_d(d, s1, s2) 184 # define jit_bordr_d(d, s1, s2) jit_fpu_bordr_d(d, s1, s2) 185 # define jit_bunordr_d(d, s1, s2) jit_fpu_bunordr_d(d, s1, s2) 186 # define jit_bger_d_fppop(d, s1, s2) jit_fpu_bger_d_fppop(d, s1, s2) 187 # define jit_bger_ld_fppop(d, s1, s2) jit_fpu_bger_ld_fppop(d, s1, s2) 188 # define jit_bantiger_d_fppop(d, s1, s2) jit_fpu_bantiger_d_fppop(d, s1, s2) 189 # define jit_bantiger_ld_fppop(d, s1, s2) jit_fpu_bantiger_ld_fppop(d, s1, s2) 190 # define jit_bler_d_fppop(d, s1, s2) jit_fpu_bler_d_fppop(d, s1, s2) 191 # define jit_bler_ld_fppop(d, s1, s2) jit_fpu_bler_ld_fppop(d, s1, s2) 192 # define jit_bantiler_d_fppop(d, s1, s2) jit_fpu_bantiler_d_fppop(d, s1, s2) 193 # define jit_bantiler_ld_fppop(d, s1, s2) jit_fpu_bantiler_ld_fppop(d, s1, s2) 194 # define jit_bgtr_d_fppop(d, s1, s2) jit_fpu_bgtr_d_fppop(d, s1, s2) 195 # define jit_bgtr_ld_fppop(d, s1, s2) jit_fpu_bgtr_ld_fppop(d, s1, s2) 196 # define jit_bantigtr_d_fppop(d, s1, s2) jit_fpu_bantigtr_d_fppop(d, s1, s2) 197 # define jit_bantigtr_ld_fppop(d, s1, s2) jit_fpu_bantigtr_ld_fppop(d, s1, s2) 198 # define jit_bltr_d_fppop(d, s1, s2) jit_fpu_bltr_d_fppop(d, s1, s2) 199 # define jit_bltr_ld_fppop(d, s1, s2) jit_fpu_bltr_ld_fppop(d, s1, s2) 200 # define jit_bantiltr_d_fppop(d, s1, s2) jit_fpu_bantiltr_d_fppop(d, s1, s2) 201 # define jit_bantiltr_ld_fppop(d, s1, s2) jit_fpu_bantiltr_ld_fppop(d, s1, s2) 202 # define jit_beqr_d_fppop(d, s1, s2) jit_fpu_beqr_d_fppop(d, s1, s2) 203 # define jit_beqr_ld_fppop(d, s1, s2) jit_fpu_beqr_ld_fppop(d, s1, s2) 204 # define jit_bantieqr_d_fppop(d, s1, s2) jit_fpu_bantieqr_d_fppop(d, s1, s2) 205 # define jit_bantieqr_ld_fppop(d, s1, s2) jit_fpu_bantieqr_ld_fppop(d, s1, s2) 206 207 #endif 208 209 #endif /* __lightning_asm_h */ 210