17e76048aSMarcel Moolenaar /* $NetBSD: instr.h,v 1.4 2005/12/11 12:18:43 christos Exp $ */ 27e76048aSMarcel Moolenaar 3*51369649SPedro F. Giffuni /*- 4*51369649SPedro F. Giffuni * SPDX-License-Identifier: BSD-3-Clause 5*51369649SPedro F. Giffuni * 67e76048aSMarcel Moolenaar * Copyright (c) 1992, 1993 77e76048aSMarcel Moolenaar * The Regents of the University of California. All rights reserved. 87e76048aSMarcel Moolenaar * 97e76048aSMarcel Moolenaar * This software was developed by the Computer Systems Engineering group 107e76048aSMarcel Moolenaar * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and 117e76048aSMarcel Moolenaar * contributed to Berkeley. 127e76048aSMarcel Moolenaar * 137e76048aSMarcel Moolenaar * All advertising materials mentioning features or use of this software 147e76048aSMarcel Moolenaar * must display the following acknowledgement: 157e76048aSMarcel Moolenaar * This product includes software developed by the University of 167e76048aSMarcel Moolenaar * California, Lawrence Berkeley Laboratory. 177e76048aSMarcel Moolenaar * 187e76048aSMarcel Moolenaar * Redistribution and use in source and binary forms, with or without 197e76048aSMarcel Moolenaar * modification, are permitted provided that the following conditions 207e76048aSMarcel Moolenaar * are met: 217e76048aSMarcel Moolenaar * 1. Redistributions of source code must retain the above copyright 227e76048aSMarcel Moolenaar * notice, this list of conditions and the following disclaimer. 237e76048aSMarcel Moolenaar * 2. Redistributions in binary form must reproduce the above copyright 247e76048aSMarcel Moolenaar * notice, this list of conditions and the following disclaimer in the 257e76048aSMarcel Moolenaar * documentation and/or other materials provided with the distribution. 267e76048aSMarcel Moolenaar * 3. Neither the name of the University nor the names of its contributors 277e76048aSMarcel Moolenaar * may be used to endorse or promote products derived from this software 287e76048aSMarcel Moolenaar * without specific prior written permission. 297e76048aSMarcel Moolenaar * 307e76048aSMarcel Moolenaar * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 317e76048aSMarcel Moolenaar * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 327e76048aSMarcel Moolenaar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 337e76048aSMarcel Moolenaar * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 347e76048aSMarcel Moolenaar * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 357e76048aSMarcel Moolenaar * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 367e76048aSMarcel Moolenaar * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 377e76048aSMarcel Moolenaar * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 387e76048aSMarcel Moolenaar * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 397e76048aSMarcel Moolenaar * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 407e76048aSMarcel Moolenaar * SUCH DAMAGE. 417e76048aSMarcel Moolenaar */ 427e76048aSMarcel Moolenaar 437e76048aSMarcel Moolenaar /* 447e76048aSMarcel Moolenaar * An instruction. 457e76048aSMarcel Moolenaar */ 467e76048aSMarcel Moolenaar union instr { 477e76048aSMarcel Moolenaar int i_int; /* as a whole */ 487e76048aSMarcel Moolenaar 497e76048aSMarcel Moolenaar /* 507e76048aSMarcel Moolenaar * Any instruction type. 517e76048aSMarcel Moolenaar */ 527e76048aSMarcel Moolenaar struct { 537e76048aSMarcel Moolenaar u_int i_opcd:6; /* first-level decode */ 547e76048aSMarcel Moolenaar u_int :25; 557e76048aSMarcel Moolenaar u_int i_rc:1; 567e76048aSMarcel Moolenaar } i_any; 577e76048aSMarcel Moolenaar 587e76048aSMarcel Moolenaar /* 597e76048aSMarcel Moolenaar * Format A 607e76048aSMarcel Moolenaar */ 617e76048aSMarcel Moolenaar struct { 627e76048aSMarcel Moolenaar u_int i_opcd:6; 637e76048aSMarcel Moolenaar u_int i_frt:5; 647e76048aSMarcel Moolenaar u_int i_fra:5; 657e76048aSMarcel Moolenaar u_int i_frb:5; 667e76048aSMarcel Moolenaar u_int i_frc:5; 677e76048aSMarcel Moolenaar u_int i_xo:5; 687e76048aSMarcel Moolenaar u_int i_rc:1; 697e76048aSMarcel Moolenaar } i_a; 707e76048aSMarcel Moolenaar 717e76048aSMarcel Moolenaar /* 727e76048aSMarcel Moolenaar * Format B 737e76048aSMarcel Moolenaar */ 747e76048aSMarcel Moolenaar struct { 757e76048aSMarcel Moolenaar u_int i_opcd:6; 767e76048aSMarcel Moolenaar int i_bo:5; 777e76048aSMarcel Moolenaar int i_bi:5; 787e76048aSMarcel Moolenaar int i_bd:14; 797e76048aSMarcel Moolenaar int i_aa:1; 807e76048aSMarcel Moolenaar int i_lk:1; 817e76048aSMarcel Moolenaar } i_b; 827e76048aSMarcel Moolenaar 837e76048aSMarcel Moolenaar /* 847e76048aSMarcel Moolenaar * Format D 857e76048aSMarcel Moolenaar */ 867e76048aSMarcel Moolenaar struct { 877e76048aSMarcel Moolenaar u_int i_opcd:6; 887e76048aSMarcel Moolenaar u_int i_rs:5; 897e76048aSMarcel Moolenaar u_int i_ra:5; 907e76048aSMarcel Moolenaar int i_d:16; 917e76048aSMarcel Moolenaar } i_d; 927e76048aSMarcel Moolenaar 937e76048aSMarcel Moolenaar /* 947e76048aSMarcel Moolenaar * Format DE 957e76048aSMarcel Moolenaar */ 967e76048aSMarcel Moolenaar struct { 977e76048aSMarcel Moolenaar u_int i_opcd:6; 987e76048aSMarcel Moolenaar u_int i_rs:5; 997e76048aSMarcel Moolenaar u_int i_ra:5; 1007e76048aSMarcel Moolenaar int i_d:12; 1017e76048aSMarcel Moolenaar u_int i_xo:4; 1027e76048aSMarcel Moolenaar } i_de; 1037e76048aSMarcel Moolenaar 1047e76048aSMarcel Moolenaar /* 1057e76048aSMarcel Moolenaar * Format I 1067e76048aSMarcel Moolenaar */ 1077e76048aSMarcel Moolenaar struct { 1087e76048aSMarcel Moolenaar u_int i_opcd:6; 1097e76048aSMarcel Moolenaar int i_li:24; 1107e76048aSMarcel Moolenaar int i_aa:1; 1117e76048aSMarcel Moolenaar int i_lk:1; 1127e76048aSMarcel Moolenaar } i_i; 1137e76048aSMarcel Moolenaar 1147e76048aSMarcel Moolenaar /* 1157e76048aSMarcel Moolenaar * Format M 1167e76048aSMarcel Moolenaar */ 1177e76048aSMarcel Moolenaar struct { 1187e76048aSMarcel Moolenaar u_int i_opcd:6; 1197e76048aSMarcel Moolenaar u_int i_rs:5; 1207e76048aSMarcel Moolenaar u_int i_ra:5; 1217e76048aSMarcel Moolenaar u_int i_rb:5; 1227e76048aSMarcel Moolenaar int i_mb:5; 1237e76048aSMarcel Moolenaar int i_me:5; 1247e76048aSMarcel Moolenaar u_int i_rc:1; 1257e76048aSMarcel Moolenaar } i_m; 1267e76048aSMarcel Moolenaar 1277e76048aSMarcel Moolenaar /* 1287e76048aSMarcel Moolenaar * Format MD 1297e76048aSMarcel Moolenaar */ 1307e76048aSMarcel Moolenaar struct { 1317e76048aSMarcel Moolenaar u_int i_opcd:6; 1327e76048aSMarcel Moolenaar u_int i_rs:5; 1337e76048aSMarcel Moolenaar u_int i_ra:5; 1347e76048aSMarcel Moolenaar u_int i_rb:5; 1357e76048aSMarcel Moolenaar int i_sh1_5:5; 1367e76048aSMarcel Moolenaar int i_mb:6; 1377e76048aSMarcel Moolenaar u_int i_xo:3; 1387e76048aSMarcel Moolenaar int i_sh0:2; 1397e76048aSMarcel Moolenaar u_int i_rc:1; 1407e76048aSMarcel Moolenaar } i_md; 1417e76048aSMarcel Moolenaar 1427e76048aSMarcel Moolenaar /* 1437e76048aSMarcel Moolenaar * Format MDS 1447e76048aSMarcel Moolenaar */ 1457e76048aSMarcel Moolenaar struct { 1467e76048aSMarcel Moolenaar u_int i_opcd:6; 1477e76048aSMarcel Moolenaar u_int i_rs:5; 1487e76048aSMarcel Moolenaar u_int i_ra:5; 1497e76048aSMarcel Moolenaar u_int i_rb:5; 1507e76048aSMarcel Moolenaar int i_sh:5; 1517e76048aSMarcel Moolenaar int i_mb:6; 1527e76048aSMarcel Moolenaar u_int i_xo:4; 1537e76048aSMarcel Moolenaar u_int i_rc:1; 1547e76048aSMarcel Moolenaar } i_mds; 1557e76048aSMarcel Moolenaar 1567e76048aSMarcel Moolenaar /* 1577e76048aSMarcel Moolenaar * Format S 1587e76048aSMarcel Moolenaar */ 1597e76048aSMarcel Moolenaar struct { 1607e76048aSMarcel Moolenaar u_int i_opcd:6; 1617e76048aSMarcel Moolenaar int :24; 1627e76048aSMarcel Moolenaar int i_i:1; 1637e76048aSMarcel Moolenaar int :1; 1647e76048aSMarcel Moolenaar } i_s; 1657e76048aSMarcel Moolenaar 1667e76048aSMarcel Moolenaar /* 1677e76048aSMarcel Moolenaar * Format X 1687e76048aSMarcel Moolenaar */ 1697e76048aSMarcel Moolenaar struct { 1707e76048aSMarcel Moolenaar u_int i_opcd:6; 1717e76048aSMarcel Moolenaar u_int i_rs:5; 1727e76048aSMarcel Moolenaar u_int i_ra:5; 1737e76048aSMarcel Moolenaar u_int i_rb:5; 1747e76048aSMarcel Moolenaar u_int i_xo:10; 1757e76048aSMarcel Moolenaar u_int i_rc:1; 1767e76048aSMarcel Moolenaar } i_x; 1777e76048aSMarcel Moolenaar 1787e76048aSMarcel Moolenaar /* 1797e76048aSMarcel Moolenaar * Format XFL 1807e76048aSMarcel Moolenaar */ 1817e76048aSMarcel Moolenaar struct { 1827e76048aSMarcel Moolenaar u_int i_opcd:6; 1837e76048aSMarcel Moolenaar int :1; 1847e76048aSMarcel Moolenaar int i_flm:8; 1857e76048aSMarcel Moolenaar int :1; 1867e76048aSMarcel Moolenaar int i_frb:5; 1877e76048aSMarcel Moolenaar u_int i_xo:10; 1887e76048aSMarcel Moolenaar int :1; 1897e76048aSMarcel Moolenaar } i_xfl; 1907e76048aSMarcel Moolenaar 1917e76048aSMarcel Moolenaar /* 1927e76048aSMarcel Moolenaar * Format XFX 1937e76048aSMarcel Moolenaar */ 1947e76048aSMarcel Moolenaar struct { 1957e76048aSMarcel Moolenaar u_int i_opcd:6; 1967e76048aSMarcel Moolenaar int i_dcrn:10; 1977e76048aSMarcel Moolenaar u_int i_xo:10; 1987e76048aSMarcel Moolenaar int :1; 1997e76048aSMarcel Moolenaar } i_xfx; 2007e76048aSMarcel Moolenaar 2017e76048aSMarcel Moolenaar /* 2027e76048aSMarcel Moolenaar * Format XL 2037e76048aSMarcel Moolenaar */ 2047e76048aSMarcel Moolenaar struct { 2057e76048aSMarcel Moolenaar u_int i_opcd:6; 2067e76048aSMarcel Moolenaar int i_bt:5; 2077e76048aSMarcel Moolenaar int i_ba:5; 2087e76048aSMarcel Moolenaar int i_bb:5; 2097e76048aSMarcel Moolenaar u_int i_xo:10; 2107e76048aSMarcel Moolenaar int i_lk:1; 2117e76048aSMarcel Moolenaar } i_xl; 2127e76048aSMarcel Moolenaar 2137e76048aSMarcel Moolenaar /* 2147e76048aSMarcel Moolenaar * Format XS 2157e76048aSMarcel Moolenaar */ 2167e76048aSMarcel Moolenaar struct { 2177e76048aSMarcel Moolenaar u_int i_opcd:6; 2187e76048aSMarcel Moolenaar u_int i_rs:5; 2197e76048aSMarcel Moolenaar u_int i_ra:5; 2207e76048aSMarcel Moolenaar int i_sh0_4:5; 2217e76048aSMarcel Moolenaar u_int i_xo:9; 2227e76048aSMarcel Moolenaar int i_sh5:1; 2237e76048aSMarcel Moolenaar u_int i_rc:1; 2247e76048aSMarcel Moolenaar } i_xs; 2257e76048aSMarcel Moolenaar 2267e76048aSMarcel Moolenaar }; 2277e76048aSMarcel Moolenaar 2287e76048aSMarcel Moolenaar #define i_rt i_rs 2297e76048aSMarcel Moolenaar 2307e76048aSMarcel Moolenaar /* 2317e76048aSMarcel Moolenaar * Primary opcode numbers: 2327e76048aSMarcel Moolenaar */ 2337e76048aSMarcel Moolenaar 2347e76048aSMarcel Moolenaar #define OPC_TDI 0x02 2357e76048aSMarcel Moolenaar #define OPC_TWI 0x03 2367e76048aSMarcel Moolenaar #define OPC_MULLI 0x07 2377e76048aSMarcel Moolenaar #define OPC_SUBFIC 0x08 2387e76048aSMarcel Moolenaar #define OPC_BCE 0x09 2397e76048aSMarcel Moolenaar #define OPC_CMPLI 0x0a 2407e76048aSMarcel Moolenaar #define OPC_CMPI 0x0b 2417e76048aSMarcel Moolenaar #define OPC_ADDIC 0x0c 2427e76048aSMarcel Moolenaar #define OPC_ADDIC_DOT 0x0d 2437e76048aSMarcel Moolenaar #define OPC_ADDI 0x0e 2447e76048aSMarcel Moolenaar #define OPC_ADDIS 0x0f 2457e76048aSMarcel Moolenaar #define OPC_BC 0x10 2467e76048aSMarcel Moolenaar #define OPC_SC 0x11 2477e76048aSMarcel Moolenaar #define OPC_B 0x12 2487e76048aSMarcel Moolenaar #define OPC_branch_19 0x13 2497e76048aSMarcel Moolenaar #define OPC_RLWIMI 0x14 2507e76048aSMarcel Moolenaar #define OPC_RLWINM 0x15 2517e76048aSMarcel Moolenaar #define OPC_BE 0x16 2527e76048aSMarcel Moolenaar #define OPC_RLWNM 0x17 2537e76048aSMarcel Moolenaar #define OPC_ORI 0x18 2547e76048aSMarcel Moolenaar #define OPC_ORIS 0x19 2557e76048aSMarcel Moolenaar #define OPC_XORI 0x1a 2567e76048aSMarcel Moolenaar #define OPC_XORIS 0x1b 2577e76048aSMarcel Moolenaar #define OPC_ANDI 0x1c 2587e76048aSMarcel Moolenaar #define OPC_ANDIS 0x1d 2597e76048aSMarcel Moolenaar #define OPC_dwe_rot_30 0x1e 2607e76048aSMarcel Moolenaar #define OPC_integer_31 0x1f 2617e76048aSMarcel Moolenaar #define OPC_LWZ 0x20 2627e76048aSMarcel Moolenaar #define OPC_LWZU 0x21 2637e76048aSMarcel Moolenaar #define OPC_LBZ 0x22 2647e76048aSMarcel Moolenaar #define OPC_LBZU 0x23 2657e76048aSMarcel Moolenaar #define OPC_STW 0x24 2667e76048aSMarcel Moolenaar #define OPC_STWU 0x25 2677e76048aSMarcel Moolenaar #define OPC_STB 0x26 2687e76048aSMarcel Moolenaar #define OPC_STBU 0x27 2697e76048aSMarcel Moolenaar #define OPC_LHZ 0x28 2707e76048aSMarcel Moolenaar #define OPC_LHZU 0x29 2717e76048aSMarcel Moolenaar #define OPC_LHA 0x2a 2727e76048aSMarcel Moolenaar #define OPC_LHAU 0x2b 2737e76048aSMarcel Moolenaar #define OPC_STH 0x2c 2747e76048aSMarcel Moolenaar #define OPC_STHU 0x2d 2757e76048aSMarcel Moolenaar #define OPC_LMW 0x2e 2767e76048aSMarcel Moolenaar #define OPC_STMW 0x2f 2777e76048aSMarcel Moolenaar #define OPC_LFS 0x30 2787e76048aSMarcel Moolenaar #define OPC_LFSU 0x31 2797e76048aSMarcel Moolenaar #define OPC_LFD 0x32 2807e76048aSMarcel Moolenaar #define OPC_LFDU 0x33 2817e76048aSMarcel Moolenaar #define OPC_STFS 0x34 2827e76048aSMarcel Moolenaar #define OPC_STFSU 0x35 2837e76048aSMarcel Moolenaar #define OPC_STFD 0x36 2847e76048aSMarcel Moolenaar #define OPC_STFDU 0x37 2857e76048aSMarcel Moolenaar #define OPC_load_st_58 0x3a 2867e76048aSMarcel Moolenaar #define OPC_sp_fp_59 0x3b 2877e76048aSMarcel Moolenaar #define OPC_load_st_62 0x3e 2887e76048aSMarcel Moolenaar #define OPC_dp_fp_63 0x3f 2897e76048aSMarcel Moolenaar 2907e76048aSMarcel Moolenaar /* 2917e76048aSMarcel Moolenaar * Opcode 31 sub-types (FP only) 2927e76048aSMarcel Moolenaar */ 2937e76048aSMarcel Moolenaar #define OPC31_TW 0x004 2947e76048aSMarcel Moolenaar #define OPC31_LFSX 0x217 2957e76048aSMarcel Moolenaar #define OPC31_LFSUX 0x237 2967e76048aSMarcel Moolenaar #define OPC31_LFDX 0x257 2977e76048aSMarcel Moolenaar #define OPC31_LFDUX 0x277 2987e76048aSMarcel Moolenaar #define OPC31_STFSX 0x297 2997e76048aSMarcel Moolenaar #define OPC31_STFSUX 0x2b7 3007e76048aSMarcel Moolenaar #define OPC31_STFDX 0x2d7 3017e76048aSMarcel Moolenaar #define OPC31_STFDUX 0x2f7 3027e76048aSMarcel Moolenaar #define OPC31_STFIWX 0x3d7 3037e76048aSMarcel Moolenaar 3047e76048aSMarcel Moolenaar /* Mask for all valid indexed FP load/store ops (except stfiwx) */ 3057e76048aSMarcel Moolenaar #define OPC31_FPMASK 0x31f 3067e76048aSMarcel Moolenaar #define OPC31_FPOP 0x217 3077e76048aSMarcel Moolenaar 3087e76048aSMarcel Moolenaar /* 3097e76048aSMarcel Moolenaar * Opcode 59 sub-types: 3107e76048aSMarcel Moolenaar */ 3117e76048aSMarcel Moolenaar 3127e76048aSMarcel Moolenaar #define OPC59_FDIVS 0x12 3137e76048aSMarcel Moolenaar #define OPC59_FSUBS 0x14 3147e76048aSMarcel Moolenaar #define OPC59_FADDS 0x15 3157e76048aSMarcel Moolenaar #define OPC59_FSQRTS 0x16 3167e76048aSMarcel Moolenaar #define OPC59_FRES 0x18 3177e76048aSMarcel Moolenaar #define OPC59_FMULS 0x19 3187e76048aSMarcel Moolenaar #define OPC59_FMSUBS 0x1c 3197e76048aSMarcel Moolenaar #define OPC59_FMADDS 0x1d 3207e76048aSMarcel Moolenaar #define OPC59_FNMSUBS 0x1e 3217e76048aSMarcel Moolenaar #define OPC59_FNMADDS 0x1f 3227e76048aSMarcel Moolenaar 3237e76048aSMarcel Moolenaar /* 3247e76048aSMarcel Moolenaar * Opcode 62 sub-types: 3257e76048aSMarcel Moolenaar */ 3267e76048aSMarcel Moolenaar #define OPC62_LDE 0x0 3277e76048aSMarcel Moolenaar #define OPC62_LDEU 0x1 3287e76048aSMarcel Moolenaar #define OPC62_LFSE 0x4 3297e76048aSMarcel Moolenaar #define OPC62_LFSEU 0x5 3307e76048aSMarcel Moolenaar #define OPC62_LFDE 0x6 3317e76048aSMarcel Moolenaar #define OPC62_LFDEU 0x7 3327e76048aSMarcel Moolenaar #define OPC62_STDE 0x8 3337e76048aSMarcel Moolenaar #define OPC62_STDEU 0x9 3347e76048aSMarcel Moolenaar #define OPC62_STFSE 0xc 3357e76048aSMarcel Moolenaar #define OPC62_STFSEU 0xd 3367e76048aSMarcel Moolenaar #define OPC62_STFDE 0xe 3377e76048aSMarcel Moolenaar #define OPC62_STFDEU 0xf 3387e76048aSMarcel Moolenaar 3397e76048aSMarcel Moolenaar /* 3407e76048aSMarcel Moolenaar * Opcode 63 sub-types: 3417e76048aSMarcel Moolenaar * 3427e76048aSMarcel Moolenaar * (The first group are masks....) 3437e76048aSMarcel Moolenaar */ 3447e76048aSMarcel Moolenaar 3457e76048aSMarcel Moolenaar #define OPC63M_MASK 0x10 3467e76048aSMarcel Moolenaar #define OPC63M_FDIV 0x12 3477e76048aSMarcel Moolenaar #define OPC63M_FSUB 0x14 3487e76048aSMarcel Moolenaar #define OPC63M_FADD 0x15 3497e76048aSMarcel Moolenaar #define OPC63M_FSQRT 0x16 3507e76048aSMarcel Moolenaar #define OPC63M_FSEL 0x17 3517e76048aSMarcel Moolenaar #define OPC63M_FMUL 0x19 3527e76048aSMarcel Moolenaar #define OPC63M_FRSQRTE 0x1a 3537e76048aSMarcel Moolenaar #define OPC63M_FMSUB 0x1c 3547e76048aSMarcel Moolenaar #define OPC63M_FMADD 0x1d 3557e76048aSMarcel Moolenaar #define OPC63M_FNMSUB 0x1e 3567e76048aSMarcel Moolenaar #define OPC63M_FNMADD 0x1f 3577e76048aSMarcel Moolenaar 3587e76048aSMarcel Moolenaar #define OPC63_FCMPU 0x00 3597e76048aSMarcel Moolenaar #define OPC63_FRSP 0x0c 3607e76048aSMarcel Moolenaar #define OPC63_FCTIW 0x0e 3617e76048aSMarcel Moolenaar #define OPC63_FCTIWZ 0x0f 3627e76048aSMarcel Moolenaar #define OPC63_FCMPO 0x20 3637e76048aSMarcel Moolenaar #define OPC63_MTFSB1 0x26 3647e76048aSMarcel Moolenaar #define OPC63_FNEG 0x28 3657e76048aSMarcel Moolenaar #define OPC63_MCRFS 0x40 3667e76048aSMarcel Moolenaar #define OPC63_MTFSB0 0x46 3677e76048aSMarcel Moolenaar #define OPC63_FMR 0x48 3687e76048aSMarcel Moolenaar #define OPC63_MTFSFI 0x86 3697e76048aSMarcel Moolenaar #define OPC63_FNABS 0x88 3707e76048aSMarcel Moolenaar #define OPC63_FABS 0x108 3717e76048aSMarcel Moolenaar #define OPC63_MFFS 0x247 3727e76048aSMarcel Moolenaar #define OPC63_MTFSF 0x2c7 3737e76048aSMarcel Moolenaar #define OPC63_FCTID 0x32e 3747e76048aSMarcel Moolenaar #define OPC63_FCTIDZ 0x32f 3757e76048aSMarcel Moolenaar #define OPC63_FCFID 0x34e 3767e76048aSMarcel Moolenaar 3777e76048aSMarcel Moolenaar /* 3787e76048aSMarcel Moolenaar * FPU data types. 3797e76048aSMarcel Moolenaar */ 3807e76048aSMarcel Moolenaar #define FTYPE_LNG -1 /* data = 64-bit signed long integer */ 3817e76048aSMarcel Moolenaar #define FTYPE_INT 0 /* data = 32-bit signed integer */ 3827e76048aSMarcel Moolenaar #define FTYPE_SNG 1 /* data = 32-bit float */ 3837e76048aSMarcel Moolenaar #define FTYPE_DBL 2 /* data = 64-bit double */ 384