15198Sjmcp /* 25198Sjmcp * CDDL HEADER START 35198Sjmcp * 45198Sjmcp * The contents of this file are subject to the terms of the 55198Sjmcp * Common Development and Distribution License (the "License"). 65198Sjmcp * You may not use this file except in compliance with the License. 75198Sjmcp * 85198Sjmcp * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 95198Sjmcp * or http://www.opensolaris.org/os/licensing. 105198Sjmcp * See the License for the specific language governing permissions 115198Sjmcp * and limitations under the License. 125198Sjmcp * 135198Sjmcp * When distributing Covered Code, include this CDDL HEADER in each 145198Sjmcp * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 155198Sjmcp * If applicable, add the following below this CDDL HEADER, with the 165198Sjmcp * fields enclosed by brackets "[]" replaced with your own identifying 175198Sjmcp * information: Portions Copyright [yyyy] [name of copyright owner] 185198Sjmcp * 195198Sjmcp * CDDL HEADER END 205198Sjmcp */ 215198Sjmcp 225198Sjmcp /* 23*7718SJason.Beloro@Sun.COM * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 245198Sjmcp * Use is subject to license terms. 255198Sjmcp */ 265198Sjmcp 275198Sjmcp /* 285198Sjmcp * Copyright 2007 Jason King. All rights reserved. 295198Sjmcp * Use is subject to license terms. 305198Sjmcp */ 315198Sjmcp 325198Sjmcp #include "libdisasm.h" 335198Sjmcp #include "libdisasm_impl.h" 345198Sjmcp #include "dis_sparc.h" 355198Sjmcp #include "dis_sparc_fmt.h" 365198Sjmcp 375198Sjmcp #define INVALID \ 385198Sjmcp { \ 395198Sjmcp .in_type = INST_NONE, \ 405198Sjmcp .in_arch = 0, \ 415198Sjmcp .in_data = { \ 425198Sjmcp .in_tbl = NULL \ 435198Sjmcp } \ 445198Sjmcp } 455198Sjmcp 465198Sjmcp #define INVALIDA(_arch) \ 475198Sjmcp { \ 485198Sjmcp .in_type = INST_NONE, \ 495198Sjmcp .in_arch = _arch, \ 505198Sjmcp .in_data = { \ 515198Sjmcp .in_tbl = NULL \ 525198Sjmcp } \ 535198Sjmcp } 545198Sjmcp 555198Sjmcp #define INST(_name, _arch, _flags) \ 565198Sjmcp { \ 575198Sjmcp .in_type = INST_DEF, \ 585198Sjmcp .in_arch = _arch, \ 595198Sjmcp .in_data = { \ 605198Sjmcp .in_def = { \ 615198Sjmcp .in_name = _name, \ 625198Sjmcp .in_flags = _flags \ 635198Sjmcp } \ 645198Sjmcp } \ 655198Sjmcp } 665198Sjmcp 675198Sjmcp #define TABLE(_name, _arch) \ 685198Sjmcp { \ 695198Sjmcp .in_type = INST_TBL, \ 705198Sjmcp .in_arch = _arch, \ 715198Sjmcp .in_data = { \ 725198Sjmcp .in_tbl = &_name \ 735198Sjmcp } \ 745198Sjmcp } 755198Sjmcp 765198Sjmcp #define OVERLAY(_idx, _inst) \ 775198Sjmcp { \ 785198Sjmcp .ov_idx = _idx, \ 795198Sjmcp .ov_inst = _inst \ 805198Sjmcp } 815198Sjmcp 825198Sjmcp #define OVERLAY_END { .ov_idx = -1, .ov_inst = INVALID } 835198Sjmcp 845198Sjmcp #define V8 DIS_SPARC_V8 855198Sjmcp #define V9 DIS_SPARC_V9 865198Sjmcp #define V9S DIS_SPARC_V9_SGI 875198Sjmcp #define V9O DIS_SPARC_V9_OPL 885198Sjmcp #define VALL V8|V9|V9S|V9O 895198Sjmcp 905198Sjmcp /* branches */ 915198Sjmcp static const inst_t BPcc_table_def[16] = { 925198Sjmcp INST("bn", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 935198Sjmcp INST("be", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 945198Sjmcp INST("ble", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 955198Sjmcp INST("bl", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 965198Sjmcp 975198Sjmcp INST("bleu", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 985198Sjmcp INST("bcs", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 995198Sjmcp INST("bneg", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 1005198Sjmcp INST("bvs", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 1015198Sjmcp 1025198Sjmcp INST("ba", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 1035198Sjmcp INST("bne", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 1045198Sjmcp INST("bg", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 1055198Sjmcp INST("bge", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 1065198Sjmcp 1075198Sjmcp INST("bgu", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 1085198Sjmcp INST("bcc", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 1095198Sjmcp INST("bpos", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 1105198Sjmcp INST("bvc", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)) 1115198Sjmcp }; 1125198Sjmcp 113*7718SJason.Beloro@Sun.COM 1145198Sjmcp static const table_t BPcc_table = { 1155198Sjmcp .tbl_field = 28, 1165198Sjmcp .tbl_len = 4, 1175198Sjmcp .tbl_ovp = NULL, 1185198Sjmcp .tbl_fmt = fmt_branch, 1195198Sjmcp .tbl_inp = BPcc_table_def 1205198Sjmcp }; 1215198Sjmcp 1225198Sjmcp static const inst_t Bicc_table_def[16] = { 1235198Sjmcp INST("bn", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1245198Sjmcp INST("be", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1255198Sjmcp INST("ble", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1265198Sjmcp INST("bl", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1275198Sjmcp 1285198Sjmcp INST("bleu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1295198Sjmcp /* docs say it's 'bcs' but disassembler calles it synonym 'blu' */ 1305198Sjmcp INST("blu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1315198Sjmcp INST("bneg", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1325198Sjmcp INST("bvs", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1335198Sjmcp 1345198Sjmcp INST("ba", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1355198Sjmcp INST("bne", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1365198Sjmcp INST("bg", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1375198Sjmcp INST("bge", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1385198Sjmcp 1395198Sjmcp INST("bgu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1405198Sjmcp /* 1415198Sjmcp * while the docs say it's officially 'bcc', existing disassembler 1425198Sjmcp * uses the synonym bgeu 1435198Sjmcp */ 1445198Sjmcp INST("bgeu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1455198Sjmcp INST("bpos", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 1465198Sjmcp INST("bvc", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)) 1475198Sjmcp }; 1485198Sjmcp 1495198Sjmcp static const table_t Bicc_table = { 1505198Sjmcp .tbl_field = 28, 1515198Sjmcp .tbl_len = 4, 1525198Sjmcp .tbl_ovp = NULL, 1535198Sjmcp .tbl_fmt = fmt_branch, 1545198Sjmcp .tbl_inp = Bicc_table_def 1555198Sjmcp }; 1565198Sjmcp 1575198Sjmcp static const inst_t BPr_table_def[16] = { 158*7718SJason.Beloro@Sun.COM INST("brnr", V9, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 1595198Sjmcp INST("brz", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 1605198Sjmcp INST("brlez", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 1615198Sjmcp INST("brlz", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 1625198Sjmcp 163*7718SJason.Beloro@Sun.COM INST("brr", V9, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 1645198Sjmcp INST("brnz", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 1655198Sjmcp INST("brgz", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 1665198Sjmcp INST("brgez", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 1675198Sjmcp 1685198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID 1695198Sjmcp }; 1705198Sjmcp 1715198Sjmcp static const table_t BPr_table = { 1725198Sjmcp .tbl_field = 28, 1735198Sjmcp .tbl_len = 4, 1745198Sjmcp .tbl_ovp = NULL, 1755198Sjmcp .tbl_fmt = fmt_branch, 1765198Sjmcp .tbl_inp = BPr_table_def 1775198Sjmcp }; 1785198Sjmcp 1795198Sjmcp static const inst_t FBPfcc_table_def[16] = { 1805198Sjmcp INST("fbn", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1815198Sjmcp INST("fbne", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1825198Sjmcp INST("fblg", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1835198Sjmcp INST("fbul", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1845198Sjmcp 1855198Sjmcp INST("fbl", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1865198Sjmcp INST("fbug", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1875198Sjmcp INST("fbg", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1885198Sjmcp INST("fbu", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1895198Sjmcp 1905198Sjmcp INST("fba", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1915198Sjmcp INST("fbe", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1925198Sjmcp INST("fbue", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1935198Sjmcp INST("fbge", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1945198Sjmcp 1955198Sjmcp INST("fbuge", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1965198Sjmcp INST("fble", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1975198Sjmcp INST("fbule", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 1985198Sjmcp INST("fbo", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)) 1995198Sjmcp }; 2005198Sjmcp 2015198Sjmcp static const table_t FBPfcc_table = { 2025198Sjmcp .tbl_field = 28, 2035198Sjmcp .tbl_len = 4, 2045198Sjmcp .tbl_ovp = NULL, 2055198Sjmcp .tbl_fmt = fmt_branch, 2065198Sjmcp .tbl_inp = FBPfcc_table_def 2075198Sjmcp }; 2085198Sjmcp 2095198Sjmcp static const inst_t FBfcc_table_def[16] = { 2105198Sjmcp INST("fbn", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2115198Sjmcp INST("fbne", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2125198Sjmcp INST("fblg", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2135198Sjmcp INST("fbul", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2145198Sjmcp 2155198Sjmcp INST("fbl", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2165198Sjmcp INST("fbug", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2175198Sjmcp INST("fbg", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2185198Sjmcp INST("fbu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2195198Sjmcp 2205198Sjmcp INST("fba", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2215198Sjmcp INST("fbe", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2225198Sjmcp INST("fbue", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2235198Sjmcp INST("fbge", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2245198Sjmcp 2255198Sjmcp INST("fbuge", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2265198Sjmcp INST("fble", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2275198Sjmcp INST("fbule", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2285198Sjmcp INST("fbo", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)) 2295198Sjmcp }; 2305198Sjmcp 2315198Sjmcp static const table_t FBfcc_table = { 2325198Sjmcp .tbl_field = 28, 2335198Sjmcp .tbl_len = 4, 2345198Sjmcp .tbl_ovp = NULL, 2355198Sjmcp .tbl_fmt = fmt_branch, 2365198Sjmcp .tbl_inp = FBfcc_table_def 2375198Sjmcp }; 2385198Sjmcp 2395198Sjmcp static const inst_t CBccc_table_def[16] = { 2405198Sjmcp INST("cbn", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2415198Sjmcp INST("cb123", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2425198Sjmcp INST("cb12", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2435198Sjmcp INST("cb13", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2445198Sjmcp INST("cb1", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2455198Sjmcp INST("cb23", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2465198Sjmcp INST("cb2", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2475198Sjmcp INST("cb3", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2485198Sjmcp INST("cba", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2495198Sjmcp INST("cb0", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2505198Sjmcp INST("cb03", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2515198Sjmcp INST("cb02", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2525198Sjmcp INST("cb023", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2535198Sjmcp INST("cb01", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2545198Sjmcp INST("cb013", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 2555198Sjmcp INST("cb012", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)) 2565198Sjmcp }; 2575198Sjmcp 2585198Sjmcp static const table_t CBccc_table = { 2595198Sjmcp .tbl_field = 28, 2605198Sjmcp .tbl_len = 4, 2615198Sjmcp .tbl_ovp = NULL, 2625198Sjmcp .tbl_fmt = fmt_branch, 2635198Sjmcp .tbl_inp = CBccc_table_def 2645198Sjmcp }; 2655198Sjmcp 2665198Sjmcp static const inst_t branch_table_def[8] = { 2675198Sjmcp INST("unimp", VALL, 0), 2685198Sjmcp TABLE(BPcc_table, V9|V9S), 2695198Sjmcp TABLE(Bicc_table, VALL), 2705198Sjmcp TABLE(BPr_table, V9|V9S), 2715198Sjmcp 2725198Sjmcp INST("sethi", VALL, 0), 2735198Sjmcp TABLE(FBPfcc_table, V9|V9S), 2745198Sjmcp TABLE(FBfcc_table, VALL), 2755198Sjmcp TABLE(CBccc_table, V8) 2765198Sjmcp }; 2775198Sjmcp 2785198Sjmcp static const overlay_t branch_ov_table[] = { 2795198Sjmcp OVERLAY(0x00, INST("illtrap", V9|V9S, 0)), 2805198Sjmcp OVERLAY_END 2815198Sjmcp }; 2825198Sjmcp 2835198Sjmcp static const table_t branch_table = { 2845198Sjmcp .tbl_field = 24, 2855198Sjmcp .tbl_len = 3, 2865198Sjmcp .tbl_ovp = branch_ov_table, 2875198Sjmcp .tbl_fmt = fmt_sethi, 2885198Sjmcp .tbl_inp = branch_table_def 2895198Sjmcp }; 2905198Sjmcp 2915198Sjmcp /* load/stores */ 2925198Sjmcp static const inst_t ls_table_def[64] = { 2935198Sjmcp /* 0x00 */ 2945198Sjmcp INST("ld", VALL, 0), 2955198Sjmcp INST("ldub", VALL, 0), 2965198Sjmcp INST("lduh", VALL, 0), 2975198Sjmcp INST("ldd", VALL, 0), 2985198Sjmcp 2995198Sjmcp INST("st", VALL, FLG_STORE), 3005198Sjmcp INST("stb", VALL, FLG_STORE), 3015198Sjmcp INST("sth", VALL, FLG_STORE), 3025198Sjmcp INST("std", VALL, FLG_STORE), 3035198Sjmcp 3045198Sjmcp /* 0x08 */ 3055198Sjmcp INST("ldsw", V9|V9S, 0), 3065198Sjmcp INST("ldsb", VALL, 0), 3075198Sjmcp INST("ldsh", VALL, 0), 3085198Sjmcp INST("ldx", V9|V9S, 0), 3095198Sjmcp 3105198Sjmcp INVALID, 3115198Sjmcp INST("ldstub", VALL, 0), 3125198Sjmcp INST("stx", V9|V9S, FLG_STORE), 3135198Sjmcp INST("swap", VALL, 0), 3145198Sjmcp 3155198Sjmcp /* 0x10 */ 3165198Sjmcp INST("lda", VALL, FLG_ASI), 3175198Sjmcp INST("lduba", VALL, FLG_ASI), 3185198Sjmcp INST("lduha", VALL, FLG_ASI), 3195198Sjmcp INST("ldda", VALL, FLG_ASI), 3205198Sjmcp 3215198Sjmcp INST("sta", VALL, FLG_STORE|FLG_ASI), 3225198Sjmcp INST("stba", VALL, FLG_STORE|FLG_ASI), 3235198Sjmcp INST("stha", VALL, FLG_STORE|FLG_ASI), 3245198Sjmcp INST("stda", VALL, FLG_STORE|FLG_ASI), 3255198Sjmcp 3265198Sjmcp /* 0x18 */ 3275198Sjmcp INST("ldswa", V9|V9S, FLG_ASI), 3285198Sjmcp INST("ldsba", VALL, FLG_ASI), 3295198Sjmcp INST("ldsha", VALL, FLG_ASI), 3305198Sjmcp INST("ldxa", V9|V9S, FLG_ASI), 3315198Sjmcp 3325198Sjmcp INVALID, 3335198Sjmcp INST("ldstuba", VALL, FLG_ASI), 3345198Sjmcp INST("stxa", V9|V9S, FLG_STORE|FLG_ASI), 3355198Sjmcp INST("swapa", VALL, FLG_ASI), 3365198Sjmcp 3375198Sjmcp /* 0x20 */ 3385198Sjmcp INST("ld", VALL, FLG_RD(REG_FP)), 3395198Sjmcp /* ldx on v9 */ 3405198Sjmcp INST("ld", VALL, FLG_RD(REG_FSR)), 3415198Sjmcp INST("ldq", V9|V9S, FLG_RD(REG_FPQ)), 3425198Sjmcp INST("ldd", VALL, FLG_RD(REG_FPD)), 3435198Sjmcp 3445198Sjmcp INST("st", VALL, FLG_STORE|FLG_RD(REG_FP)), 3455198Sjmcp /* stx on v9 */ 3465198Sjmcp INST("st", VALL, FLG_STORE|FLG_RD(REG_FSR)), 3475198Sjmcp INST("stq", VALL, FLG_STORE|FLG_RD(REG_FPQ)), 3485198Sjmcp INST("std", VALL, FLG_STORE|FLG_RD(REG_FPD)), 3495198Sjmcp 3505198Sjmcp /* 0x28 */ 3515198Sjmcp INVALID, 3525198Sjmcp INVALID, 3535198Sjmcp INVALID, 3545198Sjmcp INVALID, 3555198Sjmcp 3565198Sjmcp INVALID, 3575198Sjmcp INST("prefetch", V9|V9S, 0), 3585198Sjmcp INVALID, 3595198Sjmcp INVALID, 3605198Sjmcp 3615198Sjmcp /* 0x30 */ 3625198Sjmcp INST("ld", V8, FLG_RD(REG_CP)), 3635198Sjmcp INST("ld", V8, FLG_RD(REG_CSR)), 3645198Sjmcp INST("ldqa", V9|V9S, FLG_ASI|FLG_RD(REG_FPQ)), 3655198Sjmcp INST("ldd", V8, FLG_RD(REG_CP)), 3665198Sjmcp 3675198Sjmcp INST("st", V8, FLG_STORE|FLG_RD(REG_CP)), 3685198Sjmcp INST("st", V8, FLG_STORE|FLG_RD(REG_CSR)), 3695198Sjmcp INST("std", V8, FLG_STORE|FLG_RD(REG_CQ)), 3705198Sjmcp INST("std", V8, FLG_STORE|FLG_RD(REG_CP)), 3715198Sjmcp 3725198Sjmcp /* 0x38 */ 3735198Sjmcp INVALID, 3745198Sjmcp INVALID, 3755198Sjmcp INVALID, 3765198Sjmcp INVALID, 3775198Sjmcp 3785198Sjmcp INST("casa", V9|V9S, 0), 3795198Sjmcp INST("prefetcha", V9|V9S, FLG_STORE|FLG_ASI), 3805198Sjmcp INST("casxa", V9|V9S, 0), 3815198Sjmcp INVALID 3825198Sjmcp }; 3835198Sjmcp 3845198Sjmcp static const overlay_t ld_ov_table[] = { 3855198Sjmcp OVERLAY(0x10, INST("lduwa", V9|V9S, FLG_ASI|FLG_RD(REG_INT))), 3865198Sjmcp OVERLAY(0x14, INST("stwa", V9|V9S, 3875198Sjmcp FLG_STORE|FLG_ASI|FLG_RD(REG_INT))), 3885198Sjmcp OVERLAY(0x30, INST("lda", V9|V9S, FLG_ASI|FLG_RD(REG_FP))), 3895198Sjmcp OVERLAY(0x33, INST("ldda", V9|V9S, FLG_ASI|FLG_RD(REG_FPD))), 3905198Sjmcp 3915198Sjmcp OVERLAY(0x34, INST("sta", V9|V9S, FLG_STORE|FLG_ASI|FLG_RD(REG_FP))), 3925198Sjmcp OVERLAY(0x36, INST("stqa", V9|V9S, 3935198Sjmcp FLG_STORE|FLG_ASI|FLG_RD(REG_FPQ))), 3945198Sjmcp OVERLAY(0x37, INST("stda", V9|V9S, 3955198Sjmcp FLG_STORE|FLG_ASI|FLG_RD(REG_FPD))), 3965198Sjmcp 3975198Sjmcp OVERLAY_END 3985198Sjmcp }; 3995198Sjmcp 4005198Sjmcp static const table_t ls_table = { 4015198Sjmcp .tbl_field = 24, 4025198Sjmcp .tbl_len = 6, 4035198Sjmcp .tbl_ovp = ld_ov_table, 4045198Sjmcp .tbl_fmt = fmt_ls, 4055198Sjmcp .tbl_inp = ls_table_def 4065198Sjmcp }; 4075198Sjmcp 408*7718SJason.Beloro@Sun.COM 4095198Sjmcp /* ALU operations */ 4105198Sjmcp static const inst_t Tcc_table_def[16] = { 4115198Sjmcp INST("tn", VALL, 0), 4125198Sjmcp INST("te", VALL, 0), 4135198Sjmcp INST("tle", VALL, 0), 4145198Sjmcp INST("tl", VALL, 0), 4155198Sjmcp 4165198Sjmcp INST("tleu", VALL, 0), 4175198Sjmcp INST("tcs", VALL, 0), 4185198Sjmcp INST("tneg", VALL, 0), 4195198Sjmcp INST("tvs", VALL, 0), 4205198Sjmcp 4215198Sjmcp INST("ta", VALL, 0), 4225198Sjmcp INST("tne", VALL, 0), 4235198Sjmcp INST("tg", VALL, 0), 4245198Sjmcp INST("tge", VALL, 0), 4255198Sjmcp 4265198Sjmcp INST("tgu", VALL, 0), 4275198Sjmcp INST("tcc", VALL, 0), 4285198Sjmcp INST("tpos", VALL, 0), 4295198Sjmcp INST("tvc", VALL, 0) 4305198Sjmcp }; 4315198Sjmcp 4325198Sjmcp static const table_t Tcc_table = { 4335198Sjmcp .tbl_field = 28, 4345198Sjmcp .tbl_len = 4, 4355198Sjmcp .tbl_ovp = NULL, 4365198Sjmcp .tbl_fmt = fmt_trap, 4375198Sjmcp .tbl_inp = Tcc_table_def 4385198Sjmcp }; 4395198Sjmcp 4405198Sjmcp static const inst_t rwin_table_def[32] = { 4415198Sjmcp /* 0x00 */ 4425198Sjmcp INST("saved", V9|V9S, 0), 4435198Sjmcp INST("restored", V9|V9S, 0), 4445198Sjmcp INST("allclean", V9|V9S, 0), 4455198Sjmcp INST("otherw", V9|V9S, 0), 4465198Sjmcp 4475198Sjmcp INST("normalw", V9|V9S, 0), 4485198Sjmcp INST("invalw", V9|V9S, 0), 4495198Sjmcp INVALID, 4505198Sjmcp INVALID, 4515198Sjmcp 4525198Sjmcp /* 0x08 */ 4535198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 4545198Sjmcp 4555198Sjmcp /* 0x10 */ 4565198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 4575198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID 4585198Sjmcp }; 4595198Sjmcp 4605198Sjmcp static const table_t rwin_table = { 4615198Sjmcp .tbl_field = 29, 4625198Sjmcp .tbl_len = 5, 4635198Sjmcp .tbl_ovp = NULL, 4645198Sjmcp .tbl_fmt = fmt_regwin, 4655198Sjmcp .tbl_inp = rwin_table_def 4665198Sjmcp }; 4675198Sjmcp 4685198Sjmcp static const inst_t tr_table_def[32] = { 4695198Sjmcp /* 0x00 */ 4705198Sjmcp INST("done", V9|V9S, 0), 4715198Sjmcp INST("retry", V9|V9S, 0), 4725198Sjmcp INVALID, 4735198Sjmcp INVALID, 4745198Sjmcp 4755198Sjmcp INVALID, 4765198Sjmcp INVALID, 4775198Sjmcp INVALID, 4785198Sjmcp INVALID, 4795198Sjmcp 4805198Sjmcp /* 0x08 */ 481*7718SJason.Beloro@Sun.COM INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 482*7718SJason.Beloro@Sun.COM INST("jpriv", V9, FLG_DISP(DISP19)), 4835198Sjmcp 4845198Sjmcp /* 0x10 */ 4855198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 486*7718SJason.Beloro@Sun.COM INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 487*7718SJason.Beloro@Sun.COM INST("commit", V9, 0), 488*7718SJason.Beloro@Sun.COM INVALID 489*7718SJason.Beloro@Sun.COM 4905198Sjmcp }; 4915198Sjmcp 4925198Sjmcp static const table_t tr_table = { 4935198Sjmcp .tbl_field = 29, 4945198Sjmcp .tbl_len = 5, 4955198Sjmcp .tbl_ovp = NULL, 4965198Sjmcp .tbl_fmt = fmt_trap_ret, 4975198Sjmcp .tbl_inp = tr_table_def 4985198Sjmcp }; 4995198Sjmcp 5005198Sjmcp static const inst_t movicc_table_def[16] = { 5015198Sjmcp INST("movn", V9|V9S, 0), 5025198Sjmcp INST("move", V9|V9S, 0), 5035198Sjmcp INST("movle", V9|V9S, 0), 5045198Sjmcp INST("movl", V9|V9S, 0), 5055198Sjmcp 5065198Sjmcp INST("movleu", V9|V9S, 0), 5075198Sjmcp INST("movcs", V9|V9S, 0), 5085198Sjmcp INST("movneg", V9|V9S, 0), 5095198Sjmcp INST("movvs", V9|V9S, 0), 5105198Sjmcp 5115198Sjmcp INST("mova", V9|V9S, 0), 5125198Sjmcp INST("movne", V9|V9S, 0), 5135198Sjmcp INST("movg", V9|V9S, 0), 5145198Sjmcp INST("movge", V9|V9S, 0), 5155198Sjmcp 5165198Sjmcp INST("movgu", V9|V9S, 0), 5175198Sjmcp INST("movcc", V9|V9S, 0), 5185198Sjmcp INST("movpos", V9|V9S, 0), 5195198Sjmcp INST("movvc", V9|V9S, 0) 5205198Sjmcp }; 5215198Sjmcp 5225198Sjmcp static const inst_t movfcc_table_def[16] = { 5235198Sjmcp INST("movn", V9|V9S, 0), 5245198Sjmcp INST("movne", V9|V9S, 0), 5255198Sjmcp INST("movlg", V9|V9S, 0), 5265198Sjmcp INST("movul", V9|V9S, 0), 5275198Sjmcp 5285198Sjmcp INST("movl", V9|V9S, 0), 5295198Sjmcp INST("movug", V9|V9S, 0), 5305198Sjmcp INST("movg", V9|V9S, 0), 5315198Sjmcp INST("movu", V9|V9S, 0), 5325198Sjmcp 5335198Sjmcp INST("mova", V9|V9S, 0), 5345198Sjmcp INST("move", V9|V9S, 0), 5355198Sjmcp INST("movue", V9|V9S, 0), 5365198Sjmcp INST("movge", V9|V9S, 0), 5375198Sjmcp 5385198Sjmcp INST("movuge", V9|V9S, 0), 5395198Sjmcp INST("movle", V9|V9S, 0), 5405198Sjmcp INST("movule", V9|V9S, 0), 5415198Sjmcp INST("movo", V9|V9S, 0) 5425198Sjmcp }; 5435198Sjmcp 5445198Sjmcp static const table_t movfcc_table = { 5455198Sjmcp .tbl_field = 17, 5465198Sjmcp .tbl_len = 4, 5475198Sjmcp .tbl_ovp = NULL, 5485198Sjmcp .tbl_fmt = fmt_movcc, 5495198Sjmcp .tbl_inp = movfcc_table_def 5505198Sjmcp }; 5515198Sjmcp 5525198Sjmcp static const table_t movicc_table = { 5535198Sjmcp .tbl_field = 17, 5545198Sjmcp .tbl_len = 4, 5555198Sjmcp .tbl_ovp = NULL, 5565198Sjmcp .tbl_fmt = fmt_movcc, 5575198Sjmcp .tbl_inp = movicc_table_def 5585198Sjmcp }; 5595198Sjmcp 5605198Sjmcp static const inst_t movcc_table_def[2] = { 5615198Sjmcp TABLE(movfcc_table, V9|V9S), 5625198Sjmcp TABLE(movicc_table, V9|V9S) 5635198Sjmcp }; 5645198Sjmcp 5655198Sjmcp static const table_t movcc_table = { 5665198Sjmcp .tbl_field = 18, 5675198Sjmcp .tbl_len = 1, 5685198Sjmcp .tbl_ovp = NULL, 5695198Sjmcp .tbl_fmt = NULL, 5705198Sjmcp .tbl_inp = movcc_table_def 5715198Sjmcp }; 5725198Sjmcp 5735198Sjmcp static const inst_t movr_table_def[8] = { 5745198Sjmcp INVALID, 5755198Sjmcp /* aka movrz */ 5765198Sjmcp INST("movre", V9|V9S, 0), 5775198Sjmcp INST("movrlez", V9|V9S, 0), 5785198Sjmcp INST("movrlz", V9|V9S, 0), 5795198Sjmcp 5805198Sjmcp INVALID, 5815198Sjmcp /* aka movrnz */ 5825198Sjmcp INST("movrne", V9|V9S, 0), 5835198Sjmcp INST("movrgz", V9|V9S, 0), 5845198Sjmcp INST("movrgez", V9|V9S, 0) 5855198Sjmcp }; 5865198Sjmcp 5875198Sjmcp static const table_t movr_table = { 5885198Sjmcp .tbl_field = 12, 5895198Sjmcp .tbl_len = 3, 5905198Sjmcp .tbl_ovp = NULL, 5915198Sjmcp .tbl_fmt = fmt_movr, 5925198Sjmcp .tbl_inp = movr_table_def 5935198Sjmcp }; 5945198Sjmcp 5955198Sjmcp static const inst_t FPop1_table_def[512] = { 5965198Sjmcp /* 0x000 */ 5975198Sjmcp INVALID, 5985198Sjmcp INST("fmovs", VALL, 5995198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 6005198Sjmcp INST("fmovd", V9|V9S, 6015198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 6025198Sjmcp INST("fmovq", V9|V9S, 6035198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 6045198Sjmcp 6055198Sjmcp INVALID, 6065198Sjmcp INST("fnegs", VALL, 6075198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 6085198Sjmcp INST("fnegd", V9|V9S, 6095198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 6105198Sjmcp INST("fnegq", V9|V9S, 6115198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 6125198Sjmcp 6135198Sjmcp /* 0x008 */ 6145198Sjmcp INVALID, 6155198Sjmcp INST("fabss", VALL, 6165198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 6175198Sjmcp INST("fabsd", V9|V9S, 6185198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 6195198Sjmcp INST("fabsq", V9|V9S, 6205198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 6215198Sjmcp 6225198Sjmcp INVALID, INVALID, INVALID, INVALID, 6235198Sjmcp 6245198Sjmcp /* 0x010 */ 6255198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 6265198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 6275198Sjmcp 6285198Sjmcp /* 0x020 */ 6295198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 6305198Sjmcp 6315198Sjmcp /* 0x028 */ 6325198Sjmcp INVALID, 6335198Sjmcp INST("fsqrts", VALL, 6345198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 6355198Sjmcp INST("fsqrtd", VALL, 6365198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 6375198Sjmcp INST("fsqrtq", VALL, 6385198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 6395198Sjmcp 640*7718SJason.Beloro@Sun.COM INVALID, 641*7718SJason.Beloro@Sun.COM INST("frsqrt1xs", V9, 642*7718SJason.Beloro@Sun.COM FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 643*7718SJason.Beloro@Sun.COM INST("frsqrt1xd", VALL, 644*7718SJason.Beloro@Sun.COM FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 645*7718SJason.Beloro@Sun.COM INVALID, 6465198Sjmcp 6475198Sjmcp /* 0x30 */ 6485198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 6495198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 6505198Sjmcp 6515198Sjmcp /* 0x40 */ 6525198Sjmcp INVALID, 6535198Sjmcp INST("fadds", VALL, 6545198Sjmcp FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 6555198Sjmcp INST("faddd", VALL, 6565198Sjmcp FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 6575198Sjmcp INST("faddq", VALL, 6585198Sjmcp FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 6595198Sjmcp 6605198Sjmcp INVALID, 6615198Sjmcp INST("fsubs", VALL, 6625198Sjmcp FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 6635198Sjmcp INST("fsubd", VALL, 6645198Sjmcp FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 6655198Sjmcp INST("fsubq", VALL, 6665198Sjmcp FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 6675198Sjmcp 6685198Sjmcp /* 0x048 */ 6695198Sjmcp INVALID, 6705198Sjmcp INST("fmuls", VALL, 6715198Sjmcp FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 6725198Sjmcp INST("fmuld", VALL, 6735198Sjmcp FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 6745198Sjmcp INST("fmulq", VALL, 6755198Sjmcp FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 6765198Sjmcp 6775198Sjmcp INVALID, 6785198Sjmcp INST("fdivs", VALL, 6795198Sjmcp FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 6805198Sjmcp INST("fdivd", VALL, 6815198Sjmcp FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 6825198Sjmcp INST("fdivq", VALL, 6835198Sjmcp FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 6845198Sjmcp 6855198Sjmcp /* 0x050 */ 686*7718SJason.Beloro@Sun.COM INVALID, 687*7718SJason.Beloro@Sun.COM INST("fnadds", V9S, 688*7718SJason.Beloro@Sun.COM FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 689*7718SJason.Beloro@Sun.COM INST("fnaddd", V9S, 690*7718SJason.Beloro@Sun.COM FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 691*7718SJason.Beloro@Sun.COM INVALID, INVALID, INVALID, INVALID, INVALID, 692*7718SJason.Beloro@Sun.COM INVALID, 693*7718SJason.Beloro@Sun.COM INST("fnmuls", V9S, 694*7718SJason.Beloro@Sun.COM FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 695*7718SJason.Beloro@Sun.COM INST("fnmuld", V9S, 696*7718SJason.Beloro@Sun.COM FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 697*7718SJason.Beloro@Sun.COM INVALID, INVALID, INVALID, INVALID, INVALID, 6985198Sjmcp 6995198Sjmcp /* 0x060 */ 700*7718SJason.Beloro@Sun.COM INVALID, 701*7718SJason.Beloro@Sun.COM INST("fhadds", V9, 702*7718SJason.Beloro@Sun.COM FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 703*7718SJason.Beloro@Sun.COM INST("fhaddd", V9, 704*7718SJason.Beloro@Sun.COM FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 705*7718SJason.Beloro@Sun.COM INVALID, INVALID, 706*7718SJason.Beloro@Sun.COM INST("fhsubs", V9S, 707*7718SJason.Beloro@Sun.COM FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 708*7718SJason.Beloro@Sun.COM INST("fhsubd", V9S, 709*7718SJason.Beloro@Sun.COM FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 710*7718SJason.Beloro@Sun.COM INVALID, 7115198Sjmcp 7125198Sjmcp /* 0x068 */ 7135198Sjmcp INVALID, 7145198Sjmcp INST("fsmuld", VALL, 7155198Sjmcp FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)), 7165198Sjmcp INVALID, 7175198Sjmcp INVALID, 7185198Sjmcp 7195198Sjmcp INVALID, 7205198Sjmcp INVALID, 7215198Sjmcp INST("fdmulq", VALL, 7225198Sjmcp FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPQ)), 7235198Sjmcp INVALID, 7245198Sjmcp 7255198Sjmcp /* 0x070 */ 726*7718SJason.Beloro@Sun.COM INVALID, 727*7718SJason.Beloro@Sun.COM INST("fnhadds", V9S, 728*7718SJason.Beloro@Sun.COM FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 729*7718SJason.Beloro@Sun.COM INST("fnhaddd", V9S, 730*7718SJason.Beloro@Sun.COM FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 731*7718SJason.Beloro@Sun.COM INVALID, INVALID, INVALID, INVALID, INVALID, 732*7718SJason.Beloro@Sun.COM INVALID, 733*7718SJason.Beloro@Sun.COM INST("fnsmuld", V9S, 734*7718SJason.Beloro@Sun.COM FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)), 735*7718SJason.Beloro@Sun.COM INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 7365198Sjmcp 7375198Sjmcp /* 0x080 */ 7385198Sjmcp INVALID, 7395198Sjmcp INST("fstox", V9|V9S, 7405198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)), 7415198Sjmcp INST("fdtox", V9|V9S, 7425198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 7435198Sjmcp INST("fqtox", V9|V9S, 7445198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPD)), 7455198Sjmcp 7465198Sjmcp INST("fxtos", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM| 7475198Sjmcp FLG_P3(REG_FP)), 7485198Sjmcp INVALID, 7495198Sjmcp INVALID, 7505198Sjmcp INVALID, 7515198Sjmcp 7525198Sjmcp /* 0x088 */ 7535198Sjmcp INST("fxtod", V9|V9S, 7545198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 7555198Sjmcp INVALID, 7565198Sjmcp INVALID, 7575198Sjmcp INVALID, 7585198Sjmcp 7595198Sjmcp INST("fxtoq", V9|V9S, 7605198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPQ)), 7615198Sjmcp INVALID, 7625198Sjmcp INVALID, 7635198Sjmcp INVALID, 7645198Sjmcp 7655198Sjmcp /* 0x090 */ 7665198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 7675198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 7685198Sjmcp 7695198Sjmcp /* 0x0a0 */ 7705198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 7715198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 7725198Sjmcp 7735198Sjmcp /* 0x0b0 */ 7745198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 7755198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 7765198Sjmcp 7775198Sjmcp /* 0x0c0 */ 7785198Sjmcp INVALID, INVALID, INVALID, INVALID, 7795198Sjmcp 7805198Sjmcp INST("fitos", VALL, 7815198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 7825198Sjmcp INVALID, 7835198Sjmcp INST("fdtos", VALL, 7845198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FP)), 7855198Sjmcp INST("fqtos", VALL, 7865198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FP)), 7875198Sjmcp 7885198Sjmcp /* 0x0c8 */ 7895198Sjmcp INST("fitod", VALL, 7905198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)), 7915198Sjmcp INST("fstod", VALL, 7925198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)), 7935198Sjmcp INVALID, 7945198Sjmcp INST("fqtod", VALL, 7955198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPD)), 7965198Sjmcp 7975198Sjmcp INST("fitoq", VALL, 7985198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPQ)), 7995198Sjmcp INST("fstoq", VALL, 8005198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPQ)), 8015198Sjmcp INST("fdtoq", VALL, 8025198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPQ)), 8035198Sjmcp INVALID, 8045198Sjmcp 8055198Sjmcp /* 0x0d0 */ 8065198Sjmcp INVALID, 8075198Sjmcp INST("fstoi", VALL, 8085198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 8095198Sjmcp INST("fdtoi", VALL, 8105198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FP)), 8115198Sjmcp INST("fqtoi", VALL, 8125198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FP)), 8135198Sjmcp INVALID, INVALID, INVALID, INVALID, 8145198Sjmcp 8155198Sjmcp /* 0x0d8 */ 8165198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8175198Sjmcp 8185198Sjmcp /* 0x0e0 */ 8195198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8205198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8215198Sjmcp 8225198Sjmcp /* 0x0f0 */ 8235198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8245198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8255198Sjmcp 8265198Sjmcp /* 0x100 */ 8275198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8285198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8295198Sjmcp 8305198Sjmcp /* 0x110 */ 8315198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8325198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8335198Sjmcp 8345198Sjmcp /* 0x120 */ 8355198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8365198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8375198Sjmcp 8385198Sjmcp /* 0x130 */ 8395198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8405198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8415198Sjmcp 8425198Sjmcp /* 0x140 */ 8435198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8445198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8455198Sjmcp 8465198Sjmcp /* 0x150 */ 8475198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8485198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8495198Sjmcp 8505198Sjmcp /* 0x160 */ 8515198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8525198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8535198Sjmcp 8545198Sjmcp /* 0x170 */ 8555198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8565198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8575198Sjmcp 8585198Sjmcp /* 0x180 */ 8595198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8605198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8615198Sjmcp 8625198Sjmcp /* 0x190 */ 8635198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8645198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8655198Sjmcp 8665198Sjmcp /* 0x1a0 */ 8675198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8685198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8695198Sjmcp 8705198Sjmcp /* 0x1b0 */ 8715198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8725198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8735198Sjmcp 8745198Sjmcp /* 0x1c0 */ 8755198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8765198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8775198Sjmcp 8785198Sjmcp /* 0x1d0 */ 8795198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8805198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8815198Sjmcp 8825198Sjmcp /* 0x1e0 */ 8835198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8845198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8855198Sjmcp 8865198Sjmcp /* 0x1f0 */ 8875198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8885198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID 8895198Sjmcp }; 8905198Sjmcp 8915198Sjmcp static const table_t FPop1_table = { 8925198Sjmcp .tbl_field = 13, 8935198Sjmcp .tbl_len = 9, 8945198Sjmcp .tbl_ovp = NULL, 8955198Sjmcp .tbl_fmt = fmt_fpop1, 8965198Sjmcp .tbl_inp = FPop1_table_def 8975198Sjmcp }; 8985198Sjmcp 8995198Sjmcp static const inst_t FPop2_table_def[512] = { 9005198Sjmcp /* 0x000 */ 9015198Sjmcp INVALID, 9025198Sjmcp INST("fmovs", V9|V9S, 9035198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 9045198Sjmcp INST("fmovd", V9|V9S, 9055198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 9065198Sjmcp INST("fmovq", V9|V9S, 9075198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 9085198Sjmcp 9095198Sjmcp INVALID, INVALID, INVALID, INVALID, 9105198Sjmcp 9115198Sjmcp /* 0x008 */ 9125198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 9135198Sjmcp 9145198Sjmcp /* 0x010 */ 9155198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 9165198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 9175198Sjmcp 9185198Sjmcp /* 0x020 */ 9195198Sjmcp INVALID, INVALID, INVALID, INVALID, 9205198Sjmcp 9215198Sjmcp INST("fmovrsz", V9|V9S, 9225198Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)), 9235198Sjmcp INST("fmovrdz", V9|V9S, 9245198Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 9255198Sjmcp INST("fmovrqz", V9|V9S, 9265198Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)), 9275198Sjmcp INVALID, 9285198Sjmcp 9295198Sjmcp /* 0x028 */ 9305198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 9315198Sjmcp 9325198Sjmcp /* 0x030 */ 9335198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 9345198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 9355198Sjmcp 9365198Sjmcp /* 0x040 */ 9375198Sjmcp INVALID, 9385198Sjmcp INST("fmovs", V9|V9S, 9395198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 9405198Sjmcp INST("fmovd", V9|V9S, 9415198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 9425198Sjmcp INST("fmovq", V9|V9S, 9435198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 9445198Sjmcp 9455198Sjmcp INST("fmovrslez", V9|V9S, 9465198Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)), 9475198Sjmcp INST("fmovrdlez", V9|V9S, 9485198Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 9495198Sjmcp INST("fmovrqlez", V9|V9S, 9505198Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)), 9515198Sjmcp INVALID, 9525198Sjmcp 9535198Sjmcp /* 0x048 */ 9545198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 9555198Sjmcp 9565198Sjmcp /* 0x050 */ 9575198Sjmcp INVALID, 9585198Sjmcp INST("fcmps", VALL, FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_P3(REG_NONE) 9595198Sjmcp |FLG_NOIMM), 9605198Sjmcp INST("fcmpd", VALL, FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_P3(REG_NONE) 9615198Sjmcp |FLG_NOIMM), 9625198Sjmcp INST("fcmpq", VALL, FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_P3(REG_NONE) 9635198Sjmcp |FLG_NOIMM), 9645198Sjmcp 9655198Sjmcp INVALID, 9665198Sjmcp INST("fcmpes", VALL, FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_P3(REG_NONE) 9675198Sjmcp |FLG_NOIMM), 9685198Sjmcp INST("fcmped", VALL, FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_P3(REG_NONE) 9695198Sjmcp |FLG_NOIMM), 9705198Sjmcp INST("fcmpeq", VALL, FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_P3(REG_NONE) 9715198Sjmcp |FLG_NOIMM), 9725198Sjmcp 9735198Sjmcp /* 0x058 */ 9745198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 9755198Sjmcp 9765198Sjmcp /* 0x060 */ 9775198Sjmcp INVALID, INVALID, INVALID, INVALID, 9785198Sjmcp 9795198Sjmcp INVALID, 9805198Sjmcp INST("fmovrslz", V9|V9S, 9815198Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)), 9825198Sjmcp INST("fmovrdlz", V9|V9S, 9835198Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 9845198Sjmcp INST("fmovrqlz", V9|V9S, 9855198Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)), 9865198Sjmcp 9875198Sjmcp /* 0x068 */ 9885198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 9895198Sjmcp 9905198Sjmcp /* 0x070 */ 9915198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 9925198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 9935198Sjmcp 9945198Sjmcp /* 0x080 */ 9955198Sjmcp INVALID, 9965198Sjmcp INST("fmovs", V9|V9S, 9975198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 9985198Sjmcp INST("fmovd", V9|V9S, 9995198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 10005198Sjmcp INST("fmovq", V9|V9S, 10015198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 10025198Sjmcp 10035198Sjmcp INVALID, INVALID, INVALID, INVALID, 10045198Sjmcp 10055198Sjmcp /* 0x088 */ 10065198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10075198Sjmcp 10085198Sjmcp /* 0x090 */ 10095198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10105198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10115198Sjmcp 10125198Sjmcp /* 0x0a0 */ 10135198Sjmcp INVALID, INVALID, INVALID, INVALID, 10145198Sjmcp 10155198Sjmcp INVALID, 10165198Sjmcp INST("fmovrsnz", V9|V9S, 10175198Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)), 10185198Sjmcp INST("fmovrdnz", V9|V9S, 10195198Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 10205198Sjmcp INST("fmovrqnz", V9|V9S, 10215198Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)), 10225198Sjmcp 10235198Sjmcp /* 0x0a8 */ 10245198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10255198Sjmcp 10265198Sjmcp /* 0x0b0 */ 10275198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10285198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10295198Sjmcp 10305198Sjmcp /* 0x0c0 */ 10315198Sjmcp INVALID, 10325198Sjmcp INST("fmovs", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)| 10335198Sjmcp FLG_NOIMM|FLG_P3(REG_FP)), 10345198Sjmcp INST("fmovd", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)| 10355198Sjmcp FLG_NOIMM|FLG_P3(REG_FPD)), 10365198Sjmcp INST("fmovq", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)| 10375198Sjmcp FLG_NOIMM|FLG_P3(REG_FPQ)), 10385198Sjmcp 10395198Sjmcp INVALID, 10405198Sjmcp INST("fmovrsgz", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM| 10415198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 10425198Sjmcp INST("fmovrdgz", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM| 10435198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 10445198Sjmcp INST("fmovrqgz", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM| 10455198Sjmcp FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)), 10465198Sjmcp 10475198Sjmcp /* 0x0c8 */ 10485198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10495198Sjmcp 10505198Sjmcp /* 0x0d0 */ 10515198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10525198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10535198Sjmcp 10545198Sjmcp /* 0x0e0 */ 10555198Sjmcp INVALID, INVALID, INVALID, INVALID, 10565198Sjmcp 10575198Sjmcp INVALID, 10585198Sjmcp INST("fmovrsgez", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM| 10595198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 10605198Sjmcp INST("fmovrdgez", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM| 10615198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 10625198Sjmcp INST("fmovrqgez", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM| 10635198Sjmcp FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)), 10645198Sjmcp 10655198Sjmcp /* 0x0e8 */ 10665198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10675198Sjmcp 10685198Sjmcp /* 0x0f0 */ 10695198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10705198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10715198Sjmcp 10725198Sjmcp /* 0x100 */ 10735198Sjmcp INVALID, 10745198Sjmcp INST("fmovs", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)| 10755198Sjmcp FLG_NOIMM|FLG_P3(REG_FP)), 10765198Sjmcp INST("fmovd", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)| 10775198Sjmcp FLG_NOIMM|FLG_P3(REG_FPD)), 10785198Sjmcp INST("fmovq", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)| 10795198Sjmcp FLG_NOIMM|FLG_P3(REG_FPQ)), 10805198Sjmcp 10815198Sjmcp INVALID, INVALID, INVALID, INVALID, 10825198Sjmcp 10835198Sjmcp /* 0x108 */ 10845198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10855198Sjmcp 10865198Sjmcp /* 0x110 */ 10875198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10885198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10895198Sjmcp 10905198Sjmcp /* 0x120 */ 10915198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10925198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10935198Sjmcp 10945198Sjmcp /* 0x130 */ 10955198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10965198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 10975198Sjmcp 10985198Sjmcp /* 0x140 */ 10995198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11005198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11015198Sjmcp 11025198Sjmcp /* 0x150 */ 11035198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11045198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11055198Sjmcp 11065198Sjmcp /* 0x160 */ 11075198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11085198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11095198Sjmcp 11105198Sjmcp /* 0x170 */ 11115198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11125198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11135198Sjmcp 11145198Sjmcp /* 0x180 */ 11155198Sjmcp INVALID, 11165198Sjmcp INST("fmovs", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)| 11175198Sjmcp FLG_NOIMM|FLG_P3(REG_FP)), 11185198Sjmcp INST("fmovd", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)| 11195198Sjmcp FLG_NOIMM|FLG_P3(REG_FPD)), 11205198Sjmcp INST("fmovq", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)| 11215198Sjmcp FLG_NOIMM|FLG_P3(REG_FPQ)), 11225198Sjmcp 11235198Sjmcp INVALID, INVALID, INVALID, INVALID, 11245198Sjmcp 11255198Sjmcp /* 0x188 */ 11265198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11275198Sjmcp 11285198Sjmcp /* 0x190 */ 11295198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11305198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11315198Sjmcp 11325198Sjmcp /* 0x1a0 */ 11335198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11345198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11355198Sjmcp 11365198Sjmcp /* 0x1b0 */ 11375198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11385198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11395198Sjmcp 11405198Sjmcp /* 0x1c0 */ 11415198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11425198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11435198Sjmcp 11445198Sjmcp /* 0x1d0 */ 11455198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11465198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11475198Sjmcp 11485198Sjmcp /* 0x1e0 */ 11495198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11505198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11515198Sjmcp 11525198Sjmcp /* 0x1f0 */ 11535198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 11545198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID 11555198Sjmcp }; 11565198Sjmcp 11575198Sjmcp static const table_t FPop2_table = { 11585198Sjmcp .tbl_field = 13, 11595198Sjmcp .tbl_len = 9, 11605198Sjmcp .tbl_ovp = NULL, 11615198Sjmcp .tbl_fmt = fmt_fpop2, 11625198Sjmcp .tbl_inp = FPop2_table_def 11635198Sjmcp }; 11645198Sjmcp 11655198Sjmcp static const inst_t vis_table_def[512] = { 11665198Sjmcp /* 0x000 */ 11675198Sjmcp INST("edge8cc", V9S, FLG_NOIMM), 11685198Sjmcp INST("edge8n", V9S, FLG_NOIMM), 11695198Sjmcp INST("edge8lcc", V9S, FLG_NOIMM), 11705198Sjmcp INST("edge8ln", V9S, FLG_NOIMM), 11715198Sjmcp 11725198Sjmcp INST("edge16cc", V9S, FLG_NOIMM), 11735198Sjmcp INST("edge16n", V9S, FLG_NOIMM), 11745198Sjmcp INST("edge16lcc", V9S, FLG_NOIMM), 11755198Sjmcp INST("edge16ln", V9S, FLG_NOIMM), 11765198Sjmcp 11775198Sjmcp /* 0x008 */ 11785198Sjmcp INST("edge32cc", V9S, FLG_NOIMM), 11795198Sjmcp INST("edge32n", V9S, FLG_NOIMM), 11805198Sjmcp INST("edge32lcc", V9S, FLG_NOIMM), 11815198Sjmcp INST("edge32ln", V9S, FLG_NOIMM), 11825198Sjmcp 11835198Sjmcp INVALID, INVALID, INVALID, INVALID, 11845198Sjmcp 11855198Sjmcp /* 0x010 */ 11865198Sjmcp INST("array8", V9S, FLG_NOIMM), 1187*7718SJason.Beloro@Sun.COM INST("addxc", V9, 0), 11885198Sjmcp INST("array16", V9S, FLG_NOIMM), 1189*7718SJason.Beloro@Sun.COM INST("addxccc", V9, 0), 11905198Sjmcp 11915198Sjmcp INST("array32", V9S, FLG_NOIMM), 1192*7718SJason.Beloro@Sun.COM INST("random", V9, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)| 1193*7718SJason.Beloro@Sun.COM FLG_RD(REG_FPD)|FLG_NOIMM), 1194*7718SJason.Beloro@Sun.COM INST("umulxhi", V9, FLG_P1(REG_INT)|FLG_NOIMM| 1195*7718SJason.Beloro@Sun.COM FLG_P2(REG_INT)|FLG_P3(REG_INT)), 1196*7718SJason.Beloro@Sun.COM INST("lzd", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 1197*7718SJason.Beloro@Sun.COM FLG_P2(REG_INT)|FLG_RD(REG_INT)), 11985198Sjmcp 11995198Sjmcp /* 0x018 */ 12005198Sjmcp INST("alignaddr", V9S, FLG_NOIMM), 1201*7718SJason.Beloro@Sun.COM INST("bmask", V9S, FLG_P1(REG_INT)|FLG_P2(REG_INT)|FLG_RD(REG_INT)), 12025198Sjmcp INST("alignaddrl", V9S, FLG_NOIMM), 1203*7718SJason.Beloro@Sun.COM INST("cmask8", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 1204*7718SJason.Beloro@Sun.COM FLG_P2(REG_INT)|FLG_P3(REG_NONE)), 12055198Sjmcp INVALID, 1206*7718SJason.Beloro@Sun.COM INST("cmask16", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 1207*7718SJason.Beloro@Sun.COM FLG_P2(REG_INT)|FLG_P3(REG_NONE)), 1208*7718SJason.Beloro@Sun.COM INVALID, 1209*7718SJason.Beloro@Sun.COM INST("cmask32", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 1210*7718SJason.Beloro@Sun.COM FLG_P2(REG_INT)|FLG_P3(REG_NONE)), 12115198Sjmcp 12125198Sjmcp /* 0x020 */ 12135198Sjmcp INST("fcmple16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 12145198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 1215*7718SJason.Beloro@Sun.COM INST("fsll16", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1216*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12175198Sjmcp INST("fcmpne16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 12185198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 1219*7718SJason.Beloro@Sun.COM INST("fsrl16", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1220*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12215198Sjmcp 12225198Sjmcp INST("fcmple32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 12235198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 1224*7718SJason.Beloro@Sun.COM INST("fsll32", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1225*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12265198Sjmcp INST("fcmpne32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 12275198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 1228*7718SJason.Beloro@Sun.COM INST("fsrl32", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1229*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12305198Sjmcp 12315198Sjmcp /* 0x028 */ 12325198Sjmcp INST("fcmpgt16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 12335198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 1234*7718SJason.Beloro@Sun.COM INST("fslas16", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1235*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12365198Sjmcp INST("fcmpeq16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 12375198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 1238*7718SJason.Beloro@Sun.COM INST("fsra16", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1239*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12405198Sjmcp 12415198Sjmcp INST("fcmpgt32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 12425198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 1243*7718SJason.Beloro@Sun.COM INST("fslas32", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1244*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12455198Sjmcp INST("fcmpeq32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 12465198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 1247*7718SJason.Beloro@Sun.COM INST("fsra32", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1248*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12495198Sjmcp 12505198Sjmcp /* 0x030 */ 12515198Sjmcp INVALID, 12525198Sjmcp INST("fmul8x16", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 12535198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12545198Sjmcp INVALID, 12555198Sjmcp INST("fmul8x16au", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 12565198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FPD)), 12575198Sjmcp 12585198Sjmcp INVALID, 12595198Sjmcp INST("fmul8x16al", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 12605198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FPD)), 12615198Sjmcp INST("fmul8sux16", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 12625198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12635198Sjmcp INST("fmul8ulx16", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 12645198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12655198Sjmcp 12665198Sjmcp /* 0x038 */ 12675198Sjmcp INST("fmuld8sux16", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 12685198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FPD)), 12695198Sjmcp INST("fmuld8ulx16", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 12705198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FPD)), 12715198Sjmcp INST("fpack32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 12725198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12735198Sjmcp INST("fpack16", V9S, FLG_P1(REG_NONE)|FLG_NOIMM| 12745198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FP)), 12755198Sjmcp 12765198Sjmcp INVALID, 12775198Sjmcp INST("fpackfix", V9S, FLG_P1(REG_NONE)|FLG_NOIMM| 12785198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FP)), 12795198Sjmcp INST("pdist", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 12805198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1281*7718SJason.Beloro@Sun.COM INST("pdistn", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1282*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 12835198Sjmcp 12845198Sjmcp /* 0x040 */ 1285*7718SJason.Beloro@Sun.COM INST("fmean16", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1286*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1287*7718SJason.Beloro@Sun.COM INVALID, 1288*7718SJason.Beloro@Sun.COM INST("fpadd64", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1289*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1290*7718SJason.Beloro@Sun.COM INVALID, 1291*7718SJason.Beloro@Sun.COM INST("fchksm16", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1292*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1293*7718SJason.Beloro@Sun.COM INVALID, 1294*7718SJason.Beloro@Sun.COM INST("fpsub64", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1295*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1296*7718SJason.Beloro@Sun.COM INVALID, 12975198Sjmcp 12985198Sjmcp /* 0x048 */ 12995198Sjmcp INST("faligndata", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13005198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13015198Sjmcp INVALID, 13025198Sjmcp INVALID, 13035198Sjmcp INST("fpmerge", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13045198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FPD)), 13055198Sjmcp 13065198Sjmcp INST("bshuffle", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13075198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13085198Sjmcp INST("fexpand", V9S, FLG_P1(REG_NONE)|FLG_NOIMM| 13095198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FPD)), 13105198Sjmcp INVALID, 13115198Sjmcp INVALID, 13125198Sjmcp 13135198Sjmcp /* 0x050 */ 13145198Sjmcp INST("fpadd16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13155198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13165198Sjmcp INST("fpadd16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13175198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13185198Sjmcp INST("fpadd32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13195198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13205198Sjmcp INST("fpadd32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13215198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13225198Sjmcp 13235198Sjmcp INST("fpsub16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13245198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13255198Sjmcp INST("fpsub16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13265198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13275198Sjmcp INST("fpsub32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13285198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13295198Sjmcp INST("fpsub32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13305198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13315198Sjmcp 13325198Sjmcp /* 0x058 */ 1333*7718SJason.Beloro@Sun.COM INST("fpadds16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1334*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1335*7718SJason.Beloro@Sun.COM INST("fpadds16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1336*7718SJason.Beloro@Sun.COM FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1337*7718SJason.Beloro@Sun.COM INST("fpadds32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1338*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1339*7718SJason.Beloro@Sun.COM INST("fpadds32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1340*7718SJason.Beloro@Sun.COM FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1341*7718SJason.Beloro@Sun.COM INST("fpsubs16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1342*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1343*7718SJason.Beloro@Sun.COM INST("fpsubs16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1344*7718SJason.Beloro@Sun.COM FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1345*7718SJason.Beloro@Sun.COM INST("fpsubs32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1346*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1347*7718SJason.Beloro@Sun.COM INST("fpsubs32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1348*7718SJason.Beloro@Sun.COM FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13495198Sjmcp 13505198Sjmcp /* 0x060 */ 13515198Sjmcp INST("fzero", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)| 13525198Sjmcp FLG_P3(REG_FPD)), 13535198Sjmcp INST("fzeros", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)| 13545198Sjmcp FLG_P3(REG_FP)), 13555198Sjmcp INST("fnor", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13565198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13575198Sjmcp INST("fnors", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13585198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13595198Sjmcp 13605198Sjmcp INST("fandnot2", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13615198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13625198Sjmcp INST("fandnot2s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13635198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13645198Sjmcp INST("fnot2", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)| 13655198Sjmcp FLG_P3(REG_FPD)), 13665198Sjmcp INST("fnot2s", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)| 13675198Sjmcp FLG_P3(REG_FP)), 13685198Sjmcp 13695198Sjmcp /* 0x068 */ 13705198Sjmcp INST("fandnot1", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13715198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13725198Sjmcp INST("fandnot1s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13735198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13745198Sjmcp INST("fnot1", V9S, FLG_P1(REG_FPD)|FLG_P2(REG_NONE)| 13755198Sjmcp FLG_P3(REG_FPD)), 13765198Sjmcp INST("fnot1s", V9S, FLG_P1(REG_FP)|FLG_P2(REG_NONE)| 13775198Sjmcp FLG_P3(REG_FP)), 13785198Sjmcp 13795198Sjmcp INST("fxor", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13805198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13815198Sjmcp INST("fxors", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13825198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13835198Sjmcp INST("fnand", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13845198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13855198Sjmcp INST("fnands", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13865198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13875198Sjmcp 13885198Sjmcp /* 0x070 */ 13895198Sjmcp INST("fand", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13905198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13915198Sjmcp INST("fands", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13925198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13935198Sjmcp INST("fxnor", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13945198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13955198Sjmcp INST("fxnors", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13965198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13975198Sjmcp 13985198Sjmcp INST("fsrc1", V9S, FLG_P1(REG_FPD)|FLG_P2(REG_NONE)| 13995198Sjmcp FLG_P3(REG_FPD)), 14005198Sjmcp INST("fsrc1s", V9S, FLG_P1(REG_FP)|FLG_P2(REG_NONE)| 14015198Sjmcp FLG_P3(REG_FP)), 14025198Sjmcp INST("fornot2", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 14035198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 14045198Sjmcp INST("fornot2s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 14055198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 14065198Sjmcp 14075198Sjmcp /* 0x078 */ 14085198Sjmcp INST("fsrc2", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)| 14095198Sjmcp FLG_P3(REG_FPD)), 14105198Sjmcp INST("fsrc2s", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)| 14115198Sjmcp FLG_P3(REG_FP)), 14125198Sjmcp INST("fornot1", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 14135198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 14145198Sjmcp INST("fornot1s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 14155198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 14165198Sjmcp 14175198Sjmcp INST("for", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 14185198Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 14195198Sjmcp INST("fors", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 14205198Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 14215198Sjmcp INST("fone", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)| 14225198Sjmcp FLG_P3(REG_FPD)), 14235198Sjmcp INST("fones", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)| 14245198Sjmcp FLG_P3(REG_FP)), 14255198Sjmcp 14265198Sjmcp /* 0x080 */ 14275198Sjmcp INST("shutdown", V9S, 0), 14285198Sjmcp INST("siam", V9S, 0), 14295198Sjmcp INVALID, 14305198Sjmcp INVALID, 14315198Sjmcp 14325198Sjmcp INVALID, INVALID, INVALID, INVALID, 14335198Sjmcp 14345198Sjmcp /* 0x088 */ 14355198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14365198Sjmcp 14375198Sjmcp /* 0x090 */ 14385198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14395198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14405198Sjmcp 14415198Sjmcp /* 0x0a0 */ 14425198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14435198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14445198Sjmcp 14455198Sjmcp /* 0x0b0 */ 14465198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14475198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14485198Sjmcp 14495198Sjmcp /* 0x0c0 */ 14505198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14515198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14525198Sjmcp 14535198Sjmcp /* 0x0d0 */ 14545198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14555198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14565198Sjmcp 14575198Sjmcp /* 0x0e0 */ 14585198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14595198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14605198Sjmcp 14615198Sjmcp /* 0x0f0 */ 14625198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14635198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14645198Sjmcp 14655198Sjmcp /* 0x100 */ 14665198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14675198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14685198Sjmcp 14695198Sjmcp /* 0x110 */ 1470*7718SJason.Beloro@Sun.COM INST("movdtox", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 1471*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_RD(REG_INT)), 1472*7718SJason.Beloro@Sun.COM INST("movstouw", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 1473*7718SJason.Beloro@Sun.COM FLG_P2(REG_FP)|FLG_RD(REG_INT)), 1474*7718SJason.Beloro@Sun.COM INVALID, 1475*7718SJason.Beloro@Sun.COM INST("movstosw", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 1476*7718SJason.Beloro@Sun.COM FLG_P2(REG_FP)|FLG_RD(REG_INT)), 1477*7718SJason.Beloro@Sun.COM INVALID, 1478*7718SJason.Beloro@Sun.COM INST("xmulx", V9, FLG_P1(REG_INT)|FLG_NOIMM| 1479*7718SJason.Beloro@Sun.COM FLG_P2(REG_INT)|FLG_P3(REG_INT)), 1480*7718SJason.Beloro@Sun.COM INST("xmulxhi", V9, FLG_P1(REG_INT)|FLG_NOIMM| 1481*7718SJason.Beloro@Sun.COM FLG_P2(REG_INT)|FLG_P3(REG_INT)), 1482*7718SJason.Beloro@Sun.COM INVALID, 1483*7718SJason.Beloro@Sun.COM INST("movxtod", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 1484*7718SJason.Beloro@Sun.COM FLG_P2(REG_INT)|FLG_RD(REG_FPD)), 1485*7718SJason.Beloro@Sun.COM INST("movwtos", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 1486*7718SJason.Beloro@Sun.COM FLG_P2(REG_INT)|FLG_RD(REG_FP)), 1487*7718SJason.Beloro@Sun.COM INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 14885198Sjmcp 14895198Sjmcp /* 0x120 */ 1490*7718SJason.Beloro@Sun.COM INST("fucmple8", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1491*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_RD(REG_INT)), 1492*7718SJason.Beloro@Sun.COM INVALID, 1493*7718SJason.Beloro@Sun.COM INST("fucmpne8", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1494*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_RD(REG_INT)), 1495*7718SJason.Beloro@Sun.COM INVALID, INVALID, INVALID, INVALID, INVALID, 1496*7718SJason.Beloro@Sun.COM INST("fucmpgt8", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1497*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_RD(REG_INT)), 1498*7718SJason.Beloro@Sun.COM INVALID, 1499*7718SJason.Beloro@Sun.COM INST("fucmpeq8", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 1500*7718SJason.Beloro@Sun.COM FLG_P2(REG_FPD)|FLG_RD(REG_INT)), 1501*7718SJason.Beloro@Sun.COM INVALID, INVALID, INVALID, INVALID, INVALID, 15025198Sjmcp 15035198Sjmcp /* 0x130 */ 15045198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15055198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15065198Sjmcp 15075198Sjmcp /* 0x140 */ 15085198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15095198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15105198Sjmcp 15115198Sjmcp /* 0x150 */ 1512*7718SJason.Beloro@Sun.COM INVALID, 1513*7718SJason.Beloro@Sun.COM INST("flcmps", V9, FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_P3(REG_FCC) 1514*7718SJason.Beloro@Sun.COM |FLG_NOIMM), 1515*7718SJason.Beloro@Sun.COM INST("flcmpd", V9, FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_P3(REG_FCC) 1516*7718SJason.Beloro@Sun.COM |FLG_NOIMM), 1517*7718SJason.Beloro@Sun.COM INVALID, INVALID, INVALID, INVALID, INVALID, 15185198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15195198Sjmcp 15205198Sjmcp /* 0x160 */ 15215198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15225198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15235198Sjmcp 15245198Sjmcp /* 0x170 */ 15255198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15265198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15275198Sjmcp 15285198Sjmcp /* 0x180 */ 15295198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15305198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15315198Sjmcp 15325198Sjmcp /* 0x190 */ 15335198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15345198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15355198Sjmcp 15365198Sjmcp /* 0x1a0 */ 15375198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15385198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15395198Sjmcp 15405198Sjmcp /* 0x1b0 */ 15415198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15425198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15435198Sjmcp 15445198Sjmcp /* 0x1c0 */ 15455198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15465198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15475198Sjmcp 15485198Sjmcp /* 0x1d0 */ 15495198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15505198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15515198Sjmcp 15525198Sjmcp /* 0x1e0 */ 15535198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15545198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15555198Sjmcp 15565198Sjmcp /* 0x1f0 */ 15575198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 15585198Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID 15595198Sjmcp }; 15605198Sjmcp 15615198Sjmcp static const table_t vis_table = { 15625198Sjmcp .tbl_field = 13, 15635198Sjmcp .tbl_len = 9, 15645198Sjmcp .tbl_ovp = NULL, 15655198Sjmcp .tbl_fmt = fmt_vis, 15665198Sjmcp .tbl_inp = vis_table_def 15675198Sjmcp }; 15685198Sjmcp 15695198Sjmcp static const inst_t fused_table_def[16] = { 15705198Sjmcp /* 0x0 */ 15715198Sjmcp INVALID, 1572*7718SJason.Beloro@Sun.COM INST("fmadds", V9, FLG_P1(REG_FP)), 1573*7718SJason.Beloro@Sun.COM INST("fmaddd", V9, FLG_P1(REG_FPD)), 15745198Sjmcp INVALID, 15755198Sjmcp 15765198Sjmcp /* 0x4 */ 15775198Sjmcp INVALID, 1578*7718SJason.Beloro@Sun.COM INST("fmsubs", V9, FLG_P1(REG_FP)), 1579*7718SJason.Beloro@Sun.COM INST("fmsubd", V9, FLG_P1(REG_FPD)), 15805198Sjmcp INVALID, 15815198Sjmcp 15825198Sjmcp /* 0x8 */ 15835198Sjmcp INVALID, 1584*7718SJason.Beloro@Sun.COM INST("fnmsubs", V9, FLG_P1(REG_FP)), 1585*7718SJason.Beloro@Sun.COM INST("fnmsubd", V9, FLG_P1(REG_FPD)), 15865198Sjmcp INVALID, 15875198Sjmcp 15885198Sjmcp /* 0xc */ 15895198Sjmcp INVALID, 1590*7718SJason.Beloro@Sun.COM INST("fnmadds", V9, FLG_P1(REG_FP)), 1591*7718SJason.Beloro@Sun.COM INST("fnmaddd", V9, FLG_P1(REG_FPD)), 15925198Sjmcp INVALID 15935198Sjmcp }; 15945198Sjmcp 15955198Sjmcp static const table_t fused_table = { 1596*7718SJason.Beloro@Sun.COM .tbl_field = 8, 15975198Sjmcp .tbl_len = 4, 15985198Sjmcp .tbl_ovp = NULL, 15995198Sjmcp .tbl_fmt = fmt_fused, 16005198Sjmcp .tbl_inp = fused_table_def 16015198Sjmcp }; 16025198Sjmcp 1603*7718SJason.Beloro@Sun.COM static const inst_t unfused_table_def[16] = { 1604*7718SJason.Beloro@Sun.COM /* 0x0 */ 1605*7718SJason.Beloro@Sun.COM INVALID, 1606*7718SJason.Beloro@Sun.COM INST("fumadds", V9, FLG_P1(REG_FP)), 1607*7718SJason.Beloro@Sun.COM INST("fumaddd", V9, FLG_P1(REG_FPD)), 1608*7718SJason.Beloro@Sun.COM INVALID, 1609*7718SJason.Beloro@Sun.COM 1610*7718SJason.Beloro@Sun.COM /* 0x4 */ 1611*7718SJason.Beloro@Sun.COM INVALID, 1612*7718SJason.Beloro@Sun.COM INST("fumsubs", V9, FLG_P1(REG_FP)), 1613*7718SJason.Beloro@Sun.COM INST("fumsubd", V9, FLG_P1(REG_FPD)), 1614*7718SJason.Beloro@Sun.COM INVALID, 1615*7718SJason.Beloro@Sun.COM 1616*7718SJason.Beloro@Sun.COM /* 0x8 */ 1617*7718SJason.Beloro@Sun.COM INVALID, 1618*7718SJason.Beloro@Sun.COM INST("fnumsubs", V9, FLG_P1(REG_FP)), 1619*7718SJason.Beloro@Sun.COM INST("fnumsubd", V9, FLG_P1(REG_FPD)), 1620*7718SJason.Beloro@Sun.COM INVALID, 1621*7718SJason.Beloro@Sun.COM 1622*7718SJason.Beloro@Sun.COM /* 0xc */ 1623*7718SJason.Beloro@Sun.COM INVALID, 1624*7718SJason.Beloro@Sun.COM INST("fnumadds", V9, FLG_P1(REG_FP)), 1625*7718SJason.Beloro@Sun.COM INST("fnumaddd", V9, FLG_P1(REG_FPD)), 1626*7718SJason.Beloro@Sun.COM INVALID 1627*7718SJason.Beloro@Sun.COM }; 1628*7718SJason.Beloro@Sun.COM 1629*7718SJason.Beloro@Sun.COM static const table_t unfused_table = { 1630*7718SJason.Beloro@Sun.COM .tbl_field = 8, 1631*7718SJason.Beloro@Sun.COM .tbl_len = 4, 1632*7718SJason.Beloro@Sun.COM .tbl_ovp = NULL, 1633*7718SJason.Beloro@Sun.COM .tbl_fmt = fmt_fused, 1634*7718SJason.Beloro@Sun.COM .tbl_inp = unfused_table_def 1635*7718SJason.Beloro@Sun.COM }; 1636*7718SJason.Beloro@Sun.COM 16375198Sjmcp static const inst_t alu_table_def[64] = { 16385198Sjmcp /* 0x00 */ 16395198Sjmcp INST("add", VALL, 0), 16405198Sjmcp INST("and", VALL, 0), 16415198Sjmcp INST("or", VALL, 0), 16425198Sjmcp INST("xor", VALL, 0), 16435198Sjmcp 16445198Sjmcp INST("sub", VALL, 0), 16455198Sjmcp INST("andn", VALL, 0), 16465198Sjmcp INST("orn", VALL, 0), 16475198Sjmcp INST("xnor", VALL, 0), 16485198Sjmcp 16495198Sjmcp /* 0x08 */ 16505198Sjmcp INST("addx", VALL, 0), 16515198Sjmcp INST("mulx", V9|V9S, 0), 16525198Sjmcp INST("umul", VALL, 0), 16535198Sjmcp INST("smul", VALL, 0), 16545198Sjmcp 16555198Sjmcp INST("subx", VALL, 0), 16565198Sjmcp INST("udivx", V9|V9S, 0), 16575198Sjmcp INST("udiv", VALL, 0), 16585198Sjmcp INST("sdiv", VALL, 0), 16595198Sjmcp 16605198Sjmcp /* 0x10 */ 16615198Sjmcp INST("addcc", VALL, 0), 16625198Sjmcp INST("andcc", VALL, 0), 16635198Sjmcp INST("orcc", VALL, 0), 16645198Sjmcp INST("xorcc", VALL, 0), 16655198Sjmcp 16665198Sjmcp INST("subcc", VALL, 0), 16675198Sjmcp INST("andncc", VALL, 0), 16685198Sjmcp INST("orncc", VALL, 0), 16695198Sjmcp INST("xnorcc", VALL, 0), 16705198Sjmcp 16715198Sjmcp /* 0x18 */ 16725198Sjmcp INST("addxcc", VALL, 0), 16735198Sjmcp INVALID, 16745198Sjmcp INST("umulcc", VALL, 0), 16755198Sjmcp INST("smulcc", VALL, 0), 16765198Sjmcp 16775198Sjmcp INST("subxcc", VALL, 0), 16785198Sjmcp INVALID, 16795198Sjmcp INST("udivcc", VALL, 0), 16805198Sjmcp INST("sdivcc", VALL, 0), 16815198Sjmcp 16825198Sjmcp /* 0x20 */ 16835198Sjmcp INST("taddcc", VALL, 0), 16845198Sjmcp INST("tsubcc", VALL, 0), 16855198Sjmcp INST("taddcctv", VALL, 0), 16865198Sjmcp INST("tsubcctv", VALL, 0), 16875198Sjmcp 16885198Sjmcp INST("mulscc", VALL, 0), 16895198Sjmcp INST("sll", VALL, 0), 16905198Sjmcp INST("srl", VALL, 0), 16915198Sjmcp INST("sra", VALL, 0), 16925198Sjmcp 16935198Sjmcp /* 0x28 */ 16945198Sjmcp INST("rd", VALL, 0), 16955198Sjmcp INST("rd", V8, 0), 16965198Sjmcp INST("rd", V8, 0), 16975198Sjmcp INST("rd", V8, 0), 16985198Sjmcp 16995198Sjmcp TABLE(movcc_table, V9|V9S), 17005198Sjmcp INST("sdivx", V9|V9S, 0), 17015198Sjmcp INST("popc", V9|V9S, 17025198Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_INT)|FLG_P3(REG_INT)), 17035198Sjmcp TABLE(movr_table, V9|V9S), 17045198Sjmcp 17055198Sjmcp /* 0x30 */ 17065198Sjmcp INST("wr", VALL, 0), 17075198Sjmcp INST("wr", V8, 0), 17085198Sjmcp INST("wr", V8, 0), 17095198Sjmcp INST("wr", V8, 0), 17105198Sjmcp 17115198Sjmcp TABLE(FPop1_table, VALL), 17125198Sjmcp TABLE(FPop2_table, VALL), 17135198Sjmcp INST("cpop1", V8, 0), 17145198Sjmcp INST("cpop2", V8, 0), /* impdep2 */ 17155198Sjmcp 17165198Sjmcp /* 0x38 */ 17175198Sjmcp INST("jmpl", VALL, 0), 17185198Sjmcp INST("rett", VALL, 0), 17195198Sjmcp TABLE(Tcc_table, VALL), 17205198Sjmcp INST("flush", VALL, 0), 17215198Sjmcp 17225198Sjmcp INST("save", VALL, 0), 17235198Sjmcp INST("restore", VALL, 0), 17245198Sjmcp TABLE(tr_table, V9|V9S), 1725*7718SJason.Beloro@Sun.COM TABLE(unfused_table, V9|V9S) 17265198Sjmcp }; 17275198Sjmcp 1728*7718SJason.Beloro@Sun.COM 17295198Sjmcp static const overlay_t alu_ov_table[] = { 17305198Sjmcp OVERLAY(0x08, INST("addc", V9|V9S, 0)), 17315198Sjmcp OVERLAY(0x0c, INST("subc", V9|V9S, 0)), 17325198Sjmcp OVERLAY(0x18, INST("addccc", V9|V9S, 0)), 17335198Sjmcp OVERLAY(0x1c, INST("subccc", V9|V9S, 0)), 17345198Sjmcp 1735*7718SJason.Beloro@Sun.COM OVERLAY(0x29, INST("rdhpr", V9|V9S, 0)), 17365198Sjmcp OVERLAY(0x2a, INST("rdpr", V9|V9S, 0)), 17375198Sjmcp OVERLAY(0x2b, INST("flushw", V9|V9S, 0)), 17385198Sjmcp OVERLAY(0x31, TABLE(rwin_table, V9|V9S)), 17395198Sjmcp 17405198Sjmcp OVERLAY(0x32, INST("wrpr", V9|V9S, 0)), 1741*7718SJason.Beloro@Sun.COM OVERLAY(0x33, INST("wrhpr", V9|V9S, 0)), 17425198Sjmcp OVERLAY(0x36, TABLE(vis_table, V9S)), 1743*7718SJason.Beloro@Sun.COM OVERLAY(0x37, TABLE(fused_table, VALL)), 17445198Sjmcp OVERLAY(0x39, INST("return", VALL, 0)), 17455198Sjmcp 17465198Sjmcp OVERLAY_END 17475198Sjmcp }; 17485198Sjmcp 17495198Sjmcp static const table_t alu_table = { 17505198Sjmcp .tbl_field = 24, 17515198Sjmcp .tbl_len = 6, 17525198Sjmcp .tbl_ovp = alu_ov_table, 17535198Sjmcp .tbl_fmt = fmt_alu, 17545198Sjmcp .tbl_inp = alu_table_def 17555198Sjmcp }; 17565198Sjmcp 17575198Sjmcp static const inst_t initial_table_def[4] = { 17585198Sjmcp TABLE(branch_table, VALL), 17595198Sjmcp INST("call", VALL, 0), 17605198Sjmcp TABLE(alu_table, VALL), 17615198Sjmcp TABLE(ls_table, VALL) 17625198Sjmcp }; 17635198Sjmcp 17645198Sjmcp /* NOTE: this must not be made static */ 17655198Sjmcp const table_t initial_table = { 17665198Sjmcp .tbl_field = 31, 17675198Sjmcp .tbl_len = 2, 17685198Sjmcp .tbl_ovp = NULL, 17695198Sjmcp .tbl_fmt = fmt_call, 17705198Sjmcp .tbl_inp = initial_table_def 17715198Sjmcp }; 1772