1a2bb96e7Sjmcp /* 2a2bb96e7Sjmcp * CDDL HEADER START 3a2bb96e7Sjmcp * 4a2bb96e7Sjmcp * The contents of this file are subject to the terms of the 5a2bb96e7Sjmcp * Common Development and Distribution License (the "License"). 6a2bb96e7Sjmcp * You may not use this file except in compliance with the License. 7a2bb96e7Sjmcp * 8a2bb96e7Sjmcp * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9a2bb96e7Sjmcp * or http://www.opensolaris.org/os/licensing. 10a2bb96e7Sjmcp * See the License for the specific language governing permissions 11a2bb96e7Sjmcp * and limitations under the License. 12a2bb96e7Sjmcp * 13a2bb96e7Sjmcp * When distributing Covered Code, include this CDDL HEADER in each 14a2bb96e7Sjmcp * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15a2bb96e7Sjmcp * If applicable, add the following below this CDDL HEADER, with the 16a2bb96e7Sjmcp * fields enclosed by brackets "[]" replaced with your own identifying 17a2bb96e7Sjmcp * information: Portions Copyright [yyyy] [name of copyright owner] 18a2bb96e7Sjmcp * 19a2bb96e7Sjmcp * CDDL HEADER END 20a2bb96e7Sjmcp */ 21a2bb96e7Sjmcp 22a2bb96e7Sjmcp /* 239d0d62adSJason Beloro * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24a2bb96e7Sjmcp * Use is subject to license terms. 25a2bb96e7Sjmcp */ 26a2bb96e7Sjmcp 27a2bb96e7Sjmcp /* 289d0d62adSJason Beloro * Copyright 2009 Jason King. All rights reserved. 29a2bb96e7Sjmcp * Use is subject to license terms. 30a2bb96e7Sjmcp */ 31a2bb96e7Sjmcp 32a2bb96e7Sjmcp #include "libdisasm.h" 33a2bb96e7Sjmcp #include "libdisasm_impl.h" 34a2bb96e7Sjmcp #include "dis_sparc.h" 35a2bb96e7Sjmcp #include "dis_sparc_fmt.h" 36a2bb96e7Sjmcp 37a2bb96e7Sjmcp #define INVALID \ 38a2bb96e7Sjmcp { \ 39a2bb96e7Sjmcp .in_type = INST_NONE, \ 40a2bb96e7Sjmcp .in_arch = 0, \ 41a2bb96e7Sjmcp .in_data = { \ 42a2bb96e7Sjmcp .in_tbl = NULL \ 43a2bb96e7Sjmcp } \ 44a2bb96e7Sjmcp } 45a2bb96e7Sjmcp 46a2bb96e7Sjmcp #define INVALIDA(_arch) \ 47a2bb96e7Sjmcp { \ 48a2bb96e7Sjmcp .in_type = INST_NONE, \ 49a2bb96e7Sjmcp .in_arch = _arch, \ 50a2bb96e7Sjmcp .in_data = { \ 51a2bb96e7Sjmcp .in_tbl = NULL \ 52a2bb96e7Sjmcp } \ 53a2bb96e7Sjmcp } 54a2bb96e7Sjmcp 55a2bb96e7Sjmcp #define INST(_name, _arch, _flags) \ 56a2bb96e7Sjmcp { \ 57a2bb96e7Sjmcp .in_type = INST_DEF, \ 58a2bb96e7Sjmcp .in_arch = _arch, \ 59a2bb96e7Sjmcp .in_data = { \ 60a2bb96e7Sjmcp .in_def = { \ 61a2bb96e7Sjmcp .in_name = _name, \ 62a2bb96e7Sjmcp .in_flags = _flags \ 63a2bb96e7Sjmcp } \ 64a2bb96e7Sjmcp } \ 65a2bb96e7Sjmcp } 66a2bb96e7Sjmcp 67a2bb96e7Sjmcp #define TABLE(_name, _arch) \ 68a2bb96e7Sjmcp { \ 69a2bb96e7Sjmcp .in_type = INST_TBL, \ 70a2bb96e7Sjmcp .in_arch = _arch, \ 71a2bb96e7Sjmcp .in_data = { \ 72a2bb96e7Sjmcp .in_tbl = &_name \ 73a2bb96e7Sjmcp } \ 74a2bb96e7Sjmcp } 75a2bb96e7Sjmcp 76a2bb96e7Sjmcp #define OVERLAY(_idx, _inst) \ 77a2bb96e7Sjmcp { \ 78a2bb96e7Sjmcp .ov_idx = _idx, \ 79a2bb96e7Sjmcp .ov_inst = _inst \ 80a2bb96e7Sjmcp } 81a2bb96e7Sjmcp 82a2bb96e7Sjmcp #define OVERLAY_END { .ov_idx = -1, .ov_inst = INVALID } 83a2bb96e7Sjmcp 84a2bb96e7Sjmcp #define V8 DIS_SPARC_V8 85a2bb96e7Sjmcp #define V9 DIS_SPARC_V9 86a2bb96e7Sjmcp #define V9S DIS_SPARC_V9_SGI 87a2bb96e7Sjmcp #define V9O DIS_SPARC_V9_OPL 88a2bb96e7Sjmcp #define VALL V8|V9|V9S|V9O 89a2bb96e7Sjmcp 90a2bb96e7Sjmcp /* branches */ 91a2bb96e7Sjmcp static const inst_t BPcc_table_def[16] = { 92a2bb96e7Sjmcp INST("bn", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 93a2bb96e7Sjmcp INST("be", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 94a2bb96e7Sjmcp INST("ble", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 95a2bb96e7Sjmcp INST("bl", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 96a2bb96e7Sjmcp 97a2bb96e7Sjmcp INST("bleu", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 98a2bb96e7Sjmcp INST("bcs", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 99a2bb96e7Sjmcp INST("bneg", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 100a2bb96e7Sjmcp INST("bvs", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 101a2bb96e7Sjmcp 102a2bb96e7Sjmcp INST("ba", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 103a2bb96e7Sjmcp INST("bne", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 104a2bb96e7Sjmcp INST("bg", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 105a2bb96e7Sjmcp INST("bge", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 106a2bb96e7Sjmcp 107a2bb96e7Sjmcp INST("bgu", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 108a2bb96e7Sjmcp INST("bcc", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 109a2bb96e7Sjmcp INST("bpos", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)), 110a2bb96e7Sjmcp INST("bvc", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)) 111a2bb96e7Sjmcp }; 112a2bb96e7Sjmcp 1132f0fcb93SJason Beloro 114a2bb96e7Sjmcp static const table_t BPcc_table = { 115a2bb96e7Sjmcp .tbl_field = 28, 116a2bb96e7Sjmcp .tbl_len = 4, 117a2bb96e7Sjmcp .tbl_ovp = NULL, 118a2bb96e7Sjmcp .tbl_fmt = fmt_branch, 119a2bb96e7Sjmcp .tbl_inp = BPcc_table_def 120a2bb96e7Sjmcp }; 121a2bb96e7Sjmcp 122a2bb96e7Sjmcp static const inst_t Bicc_table_def[16] = { 123a2bb96e7Sjmcp INST("bn", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 124a2bb96e7Sjmcp INST("be", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 125a2bb96e7Sjmcp INST("ble", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 126a2bb96e7Sjmcp INST("bl", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 127a2bb96e7Sjmcp 128a2bb96e7Sjmcp INST("bleu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 129a2bb96e7Sjmcp /* docs say it's 'bcs' but disassembler calles it synonym 'blu' */ 130a2bb96e7Sjmcp INST("blu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 131a2bb96e7Sjmcp INST("bneg", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 132a2bb96e7Sjmcp INST("bvs", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 133a2bb96e7Sjmcp 134a2bb96e7Sjmcp INST("ba", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 135a2bb96e7Sjmcp INST("bne", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 136a2bb96e7Sjmcp INST("bg", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 137a2bb96e7Sjmcp INST("bge", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 138a2bb96e7Sjmcp 139a2bb96e7Sjmcp INST("bgu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 140a2bb96e7Sjmcp /* 141a2bb96e7Sjmcp * while the docs say it's officially 'bcc', existing disassembler 142a2bb96e7Sjmcp * uses the synonym bgeu 143a2bb96e7Sjmcp */ 144a2bb96e7Sjmcp INST("bgeu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 145a2bb96e7Sjmcp INST("bpos", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 146a2bb96e7Sjmcp INST("bvc", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)) 147a2bb96e7Sjmcp }; 148a2bb96e7Sjmcp 149a2bb96e7Sjmcp static const table_t Bicc_table = { 150a2bb96e7Sjmcp .tbl_field = 28, 151a2bb96e7Sjmcp .tbl_len = 4, 152a2bb96e7Sjmcp .tbl_ovp = NULL, 153a2bb96e7Sjmcp .tbl_fmt = fmt_branch, 154a2bb96e7Sjmcp .tbl_inp = Bicc_table_def 155a2bb96e7Sjmcp }; 156a2bb96e7Sjmcp 157a2bb96e7Sjmcp static const inst_t BPr_table_def[16] = { 1589d0d62adSJason Beloro INVALID, 159a2bb96e7Sjmcp INST("brz", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 160a2bb96e7Sjmcp INST("brlez", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 161a2bb96e7Sjmcp INST("brlz", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 162a2bb96e7Sjmcp 1639d0d62adSJason Beloro INVALID, 164a2bb96e7Sjmcp INST("brnz", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 165a2bb96e7Sjmcp INST("brgz", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 166a2bb96e7Sjmcp INST("brgez", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)), 167a2bb96e7Sjmcp 168a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID 169a2bb96e7Sjmcp }; 170a2bb96e7Sjmcp 171a2bb96e7Sjmcp static const table_t BPr_table = { 172a2bb96e7Sjmcp .tbl_field = 28, 173a2bb96e7Sjmcp .tbl_len = 4, 174a2bb96e7Sjmcp .tbl_ovp = NULL, 175a2bb96e7Sjmcp .tbl_fmt = fmt_branch, 176a2bb96e7Sjmcp .tbl_inp = BPr_table_def 177a2bb96e7Sjmcp }; 178a2bb96e7Sjmcp 179a2bb96e7Sjmcp static const inst_t FBPfcc_table_def[16] = { 180a2bb96e7Sjmcp INST("fbn", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 181a2bb96e7Sjmcp INST("fbne", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 182a2bb96e7Sjmcp INST("fblg", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 183a2bb96e7Sjmcp INST("fbul", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 184a2bb96e7Sjmcp 185a2bb96e7Sjmcp INST("fbl", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 186a2bb96e7Sjmcp INST("fbug", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 187a2bb96e7Sjmcp INST("fbg", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 188a2bb96e7Sjmcp INST("fbu", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 189a2bb96e7Sjmcp 190a2bb96e7Sjmcp INST("fba", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 191a2bb96e7Sjmcp INST("fbe", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 192a2bb96e7Sjmcp INST("fbue", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 193a2bb96e7Sjmcp INST("fbge", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 194a2bb96e7Sjmcp 195a2bb96e7Sjmcp INST("fbuge", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 196a2bb96e7Sjmcp INST("fble", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 197a2bb96e7Sjmcp INST("fbule", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)), 198a2bb96e7Sjmcp INST("fbo", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)) 199a2bb96e7Sjmcp }; 200a2bb96e7Sjmcp 201a2bb96e7Sjmcp static const table_t FBPfcc_table = { 202a2bb96e7Sjmcp .tbl_field = 28, 203a2bb96e7Sjmcp .tbl_len = 4, 204a2bb96e7Sjmcp .tbl_ovp = NULL, 205a2bb96e7Sjmcp .tbl_fmt = fmt_branch, 206a2bb96e7Sjmcp .tbl_inp = FBPfcc_table_def 207a2bb96e7Sjmcp }; 208a2bb96e7Sjmcp 209a2bb96e7Sjmcp static const inst_t FBfcc_table_def[16] = { 210a2bb96e7Sjmcp INST("fbn", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 211a2bb96e7Sjmcp INST("fbne", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 212a2bb96e7Sjmcp INST("fblg", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 213a2bb96e7Sjmcp INST("fbul", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 214a2bb96e7Sjmcp 215a2bb96e7Sjmcp INST("fbl", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 216a2bb96e7Sjmcp INST("fbug", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 217a2bb96e7Sjmcp INST("fbg", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 218a2bb96e7Sjmcp INST("fbu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 219a2bb96e7Sjmcp 220a2bb96e7Sjmcp INST("fba", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 221a2bb96e7Sjmcp INST("fbe", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 222a2bb96e7Sjmcp INST("fbue", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 223a2bb96e7Sjmcp INST("fbge", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 224a2bb96e7Sjmcp 225a2bb96e7Sjmcp INST("fbuge", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 226a2bb96e7Sjmcp INST("fble", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 227a2bb96e7Sjmcp INST("fbule", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 228a2bb96e7Sjmcp INST("fbo", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)) 229a2bb96e7Sjmcp }; 230a2bb96e7Sjmcp 231a2bb96e7Sjmcp static const table_t FBfcc_table = { 232a2bb96e7Sjmcp .tbl_field = 28, 233a2bb96e7Sjmcp .tbl_len = 4, 234a2bb96e7Sjmcp .tbl_ovp = NULL, 235a2bb96e7Sjmcp .tbl_fmt = fmt_branch, 236a2bb96e7Sjmcp .tbl_inp = FBfcc_table_def 237a2bb96e7Sjmcp }; 238a2bb96e7Sjmcp 239a2bb96e7Sjmcp static const inst_t CBccc_table_def[16] = { 240a2bb96e7Sjmcp INST("cbn", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 241a2bb96e7Sjmcp INST("cb123", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 242a2bb96e7Sjmcp INST("cb12", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 243a2bb96e7Sjmcp INST("cb13", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 244a2bb96e7Sjmcp INST("cb1", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 245a2bb96e7Sjmcp INST("cb23", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 246a2bb96e7Sjmcp INST("cb2", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 247a2bb96e7Sjmcp INST("cb3", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 248a2bb96e7Sjmcp INST("cba", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 249a2bb96e7Sjmcp INST("cb0", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 250a2bb96e7Sjmcp INST("cb03", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 251a2bb96e7Sjmcp INST("cb02", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 252a2bb96e7Sjmcp INST("cb023", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 253a2bb96e7Sjmcp INST("cb01", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 254a2bb96e7Sjmcp INST("cb013", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)), 255a2bb96e7Sjmcp INST("cb012", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)) 256a2bb96e7Sjmcp }; 257a2bb96e7Sjmcp 258a2bb96e7Sjmcp static const table_t CBccc_table = { 259a2bb96e7Sjmcp .tbl_field = 28, 260a2bb96e7Sjmcp .tbl_len = 4, 261a2bb96e7Sjmcp .tbl_ovp = NULL, 262a2bb96e7Sjmcp .tbl_fmt = fmt_branch, 263a2bb96e7Sjmcp .tbl_inp = CBccc_table_def 264a2bb96e7Sjmcp }; 265a2bb96e7Sjmcp 266a2bb96e7Sjmcp static const inst_t branch_table_def[8] = { 267a2bb96e7Sjmcp INST("unimp", VALL, 0), 268a2bb96e7Sjmcp TABLE(BPcc_table, V9|V9S), 269a2bb96e7Sjmcp TABLE(Bicc_table, VALL), 270a2bb96e7Sjmcp TABLE(BPr_table, V9|V9S), 271a2bb96e7Sjmcp 272a2bb96e7Sjmcp INST("sethi", VALL, 0), 273a2bb96e7Sjmcp TABLE(FBPfcc_table, V9|V9S), 274a2bb96e7Sjmcp TABLE(FBfcc_table, VALL), 275a2bb96e7Sjmcp TABLE(CBccc_table, V8) 276a2bb96e7Sjmcp }; 277a2bb96e7Sjmcp 278a2bb96e7Sjmcp static const overlay_t branch_ov_table[] = { 279a2bb96e7Sjmcp OVERLAY(0x00, INST("illtrap", V9|V9S, 0)), 280a2bb96e7Sjmcp OVERLAY_END 281a2bb96e7Sjmcp }; 282a2bb96e7Sjmcp 283a2bb96e7Sjmcp static const table_t branch_table = { 284a2bb96e7Sjmcp .tbl_field = 24, 285a2bb96e7Sjmcp .tbl_len = 3, 286a2bb96e7Sjmcp .tbl_ovp = branch_ov_table, 287a2bb96e7Sjmcp .tbl_fmt = fmt_sethi, 288a2bb96e7Sjmcp .tbl_inp = branch_table_def 289a2bb96e7Sjmcp }; 290a2bb96e7Sjmcp 291a2bb96e7Sjmcp /* load/stores */ 292a2bb96e7Sjmcp static const inst_t ls_table_def[64] = { 293a2bb96e7Sjmcp /* 0x00 */ 294a2bb96e7Sjmcp INST("ld", VALL, 0), 295a2bb96e7Sjmcp INST("ldub", VALL, 0), 296a2bb96e7Sjmcp INST("lduh", VALL, 0), 297a2bb96e7Sjmcp INST("ldd", VALL, 0), 298a2bb96e7Sjmcp 299a2bb96e7Sjmcp INST("st", VALL, FLG_STORE), 300a2bb96e7Sjmcp INST("stb", VALL, FLG_STORE), 301a2bb96e7Sjmcp INST("sth", VALL, FLG_STORE), 302a2bb96e7Sjmcp INST("std", VALL, FLG_STORE), 303a2bb96e7Sjmcp 304a2bb96e7Sjmcp /* 0x08 */ 305a2bb96e7Sjmcp INST("ldsw", V9|V9S, 0), 306a2bb96e7Sjmcp INST("ldsb", VALL, 0), 307a2bb96e7Sjmcp INST("ldsh", VALL, 0), 308a2bb96e7Sjmcp INST("ldx", V9|V9S, 0), 309a2bb96e7Sjmcp 310a2bb96e7Sjmcp INVALID, 311a2bb96e7Sjmcp INST("ldstub", VALL, 0), 312a2bb96e7Sjmcp INST("stx", V9|V9S, FLG_STORE), 313a2bb96e7Sjmcp INST("swap", VALL, 0), 314a2bb96e7Sjmcp 315a2bb96e7Sjmcp /* 0x10 */ 316a2bb96e7Sjmcp INST("lda", VALL, FLG_ASI), 317a2bb96e7Sjmcp INST("lduba", VALL, FLG_ASI), 318a2bb96e7Sjmcp INST("lduha", VALL, FLG_ASI), 319a2bb96e7Sjmcp INST("ldda", VALL, FLG_ASI), 320a2bb96e7Sjmcp 321a2bb96e7Sjmcp INST("sta", VALL, FLG_STORE|FLG_ASI), 322a2bb96e7Sjmcp INST("stba", VALL, FLG_STORE|FLG_ASI), 323a2bb96e7Sjmcp INST("stha", VALL, FLG_STORE|FLG_ASI), 324a2bb96e7Sjmcp INST("stda", VALL, FLG_STORE|FLG_ASI), 325a2bb96e7Sjmcp 326a2bb96e7Sjmcp /* 0x18 */ 327a2bb96e7Sjmcp INST("ldswa", V9|V9S, FLG_ASI), 328a2bb96e7Sjmcp INST("ldsba", VALL, FLG_ASI), 329a2bb96e7Sjmcp INST("ldsha", VALL, FLG_ASI), 330a2bb96e7Sjmcp INST("ldxa", V9|V9S, FLG_ASI), 331a2bb96e7Sjmcp 332a2bb96e7Sjmcp INVALID, 333a2bb96e7Sjmcp INST("ldstuba", VALL, FLG_ASI), 334a2bb96e7Sjmcp INST("stxa", V9|V9S, FLG_STORE|FLG_ASI), 335a2bb96e7Sjmcp INST("swapa", VALL, FLG_ASI), 336a2bb96e7Sjmcp 337a2bb96e7Sjmcp /* 0x20 */ 338a2bb96e7Sjmcp INST("ld", VALL, FLG_RD(REG_FP)), 339a2bb96e7Sjmcp /* ldx on v9 */ 340a2bb96e7Sjmcp INST("ld", VALL, FLG_RD(REG_FSR)), 341a2bb96e7Sjmcp INST("ldq", V9|V9S, FLG_RD(REG_FPQ)), 342a2bb96e7Sjmcp INST("ldd", VALL, FLG_RD(REG_FPD)), 343a2bb96e7Sjmcp 344a2bb96e7Sjmcp INST("st", VALL, FLG_STORE|FLG_RD(REG_FP)), 345a2bb96e7Sjmcp /* stx on v9 */ 346a2bb96e7Sjmcp INST("st", VALL, FLG_STORE|FLG_RD(REG_FSR)), 347a2bb96e7Sjmcp INST("stq", VALL, FLG_STORE|FLG_RD(REG_FPQ)), 348a2bb96e7Sjmcp INST("std", VALL, FLG_STORE|FLG_RD(REG_FPD)), 349a2bb96e7Sjmcp 350a2bb96e7Sjmcp /* 0x28 */ 351a2bb96e7Sjmcp INVALID, 352a2bb96e7Sjmcp INVALID, 353a2bb96e7Sjmcp INVALID, 354a2bb96e7Sjmcp INVALID, 355a2bb96e7Sjmcp 356a2bb96e7Sjmcp INVALID, 357a2bb96e7Sjmcp INST("prefetch", V9|V9S, 0), 358a2bb96e7Sjmcp INVALID, 359a2bb96e7Sjmcp INVALID, 360a2bb96e7Sjmcp 361a2bb96e7Sjmcp /* 0x30 */ 362a2bb96e7Sjmcp INST("ld", V8, FLG_RD(REG_CP)), 363a2bb96e7Sjmcp INST("ld", V8, FLG_RD(REG_CSR)), 364a2bb96e7Sjmcp INST("ldqa", V9|V9S, FLG_ASI|FLG_RD(REG_FPQ)), 365a2bb96e7Sjmcp INST("ldd", V8, FLG_RD(REG_CP)), 366a2bb96e7Sjmcp 367a2bb96e7Sjmcp INST("st", V8, FLG_STORE|FLG_RD(REG_CP)), 368a2bb96e7Sjmcp INST("st", V8, FLG_STORE|FLG_RD(REG_CSR)), 369a2bb96e7Sjmcp INST("std", V8, FLG_STORE|FLG_RD(REG_CQ)), 370a2bb96e7Sjmcp INST("std", V8, FLG_STORE|FLG_RD(REG_CP)), 371a2bb96e7Sjmcp 372a2bb96e7Sjmcp /* 0x38 */ 373a2bb96e7Sjmcp INVALID, 374a2bb96e7Sjmcp INVALID, 375a2bb96e7Sjmcp INVALID, 376a2bb96e7Sjmcp INVALID, 377a2bb96e7Sjmcp 378a2bb96e7Sjmcp INST("casa", V9|V9S, 0), 379a2bb96e7Sjmcp INST("prefetcha", V9|V9S, FLG_STORE|FLG_ASI), 380a2bb96e7Sjmcp INST("casxa", V9|V9S, 0), 381a2bb96e7Sjmcp INVALID 382a2bb96e7Sjmcp }; 383a2bb96e7Sjmcp 384a2bb96e7Sjmcp static const overlay_t ld_ov_table[] = { 385a2bb96e7Sjmcp OVERLAY(0x10, INST("lduwa", V9|V9S, FLG_ASI|FLG_RD(REG_INT))), 386a2bb96e7Sjmcp OVERLAY(0x14, INST("stwa", V9|V9S, 387a2bb96e7Sjmcp FLG_STORE|FLG_ASI|FLG_RD(REG_INT))), 388a2bb96e7Sjmcp OVERLAY(0x30, INST("lda", V9|V9S, FLG_ASI|FLG_RD(REG_FP))), 389a2bb96e7Sjmcp OVERLAY(0x33, INST("ldda", V9|V9S, FLG_ASI|FLG_RD(REG_FPD))), 390a2bb96e7Sjmcp 391a2bb96e7Sjmcp OVERLAY(0x34, INST("sta", V9|V9S, FLG_STORE|FLG_ASI|FLG_RD(REG_FP))), 392a2bb96e7Sjmcp OVERLAY(0x36, INST("stqa", V9|V9S, 393a2bb96e7Sjmcp FLG_STORE|FLG_ASI|FLG_RD(REG_FPQ))), 394a2bb96e7Sjmcp OVERLAY(0x37, INST("stda", V9|V9S, 395a2bb96e7Sjmcp FLG_STORE|FLG_ASI|FLG_RD(REG_FPD))), 396a2bb96e7Sjmcp 397a2bb96e7Sjmcp OVERLAY_END 398a2bb96e7Sjmcp }; 399a2bb96e7Sjmcp 400a2bb96e7Sjmcp static const table_t ls_table = { 401a2bb96e7Sjmcp .tbl_field = 24, 402a2bb96e7Sjmcp .tbl_len = 6, 403a2bb96e7Sjmcp .tbl_ovp = ld_ov_table, 404a2bb96e7Sjmcp .tbl_fmt = fmt_ls, 405a2bb96e7Sjmcp .tbl_inp = ls_table_def 406a2bb96e7Sjmcp }; 407a2bb96e7Sjmcp 4082f0fcb93SJason Beloro 409a2bb96e7Sjmcp /* ALU operations */ 410a2bb96e7Sjmcp static const inst_t Tcc_table_def[16] = { 411a2bb96e7Sjmcp INST("tn", VALL, 0), 412a2bb96e7Sjmcp INST("te", VALL, 0), 413a2bb96e7Sjmcp INST("tle", VALL, 0), 414a2bb96e7Sjmcp INST("tl", VALL, 0), 415a2bb96e7Sjmcp 416a2bb96e7Sjmcp INST("tleu", VALL, 0), 417a2bb96e7Sjmcp INST("tcs", VALL, 0), 418a2bb96e7Sjmcp INST("tneg", VALL, 0), 419a2bb96e7Sjmcp INST("tvs", VALL, 0), 420a2bb96e7Sjmcp 421a2bb96e7Sjmcp INST("ta", VALL, 0), 422a2bb96e7Sjmcp INST("tne", VALL, 0), 423a2bb96e7Sjmcp INST("tg", VALL, 0), 424a2bb96e7Sjmcp INST("tge", VALL, 0), 425a2bb96e7Sjmcp 426a2bb96e7Sjmcp INST("tgu", VALL, 0), 427a2bb96e7Sjmcp INST("tcc", VALL, 0), 428a2bb96e7Sjmcp INST("tpos", VALL, 0), 429a2bb96e7Sjmcp INST("tvc", VALL, 0) 430a2bb96e7Sjmcp }; 431a2bb96e7Sjmcp 432a2bb96e7Sjmcp static const table_t Tcc_table = { 433a2bb96e7Sjmcp .tbl_field = 28, 434a2bb96e7Sjmcp .tbl_len = 4, 435a2bb96e7Sjmcp .tbl_ovp = NULL, 436a2bb96e7Sjmcp .tbl_fmt = fmt_trap, 437a2bb96e7Sjmcp .tbl_inp = Tcc_table_def 438a2bb96e7Sjmcp }; 439a2bb96e7Sjmcp 440a2bb96e7Sjmcp static const inst_t rwin_table_def[32] = { 441a2bb96e7Sjmcp /* 0x00 */ 442a2bb96e7Sjmcp INST("saved", V9|V9S, 0), 443a2bb96e7Sjmcp INST("restored", V9|V9S, 0), 444a2bb96e7Sjmcp INST("allclean", V9|V9S, 0), 445a2bb96e7Sjmcp INST("otherw", V9|V9S, 0), 446a2bb96e7Sjmcp 447a2bb96e7Sjmcp INST("normalw", V9|V9S, 0), 448a2bb96e7Sjmcp INST("invalw", V9|V9S, 0), 449a2bb96e7Sjmcp INVALID, 450a2bb96e7Sjmcp INVALID, 451a2bb96e7Sjmcp 452a2bb96e7Sjmcp /* 0x08 */ 453a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 454a2bb96e7Sjmcp 455a2bb96e7Sjmcp /* 0x10 */ 456a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 457a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID 458a2bb96e7Sjmcp }; 459a2bb96e7Sjmcp 460a2bb96e7Sjmcp static const table_t rwin_table = { 461a2bb96e7Sjmcp .tbl_field = 29, 462a2bb96e7Sjmcp .tbl_len = 5, 463a2bb96e7Sjmcp .tbl_ovp = NULL, 464a2bb96e7Sjmcp .tbl_fmt = fmt_regwin, 465a2bb96e7Sjmcp .tbl_inp = rwin_table_def 466a2bb96e7Sjmcp }; 467a2bb96e7Sjmcp 468a2bb96e7Sjmcp static const inst_t tr_table_def[32] = { 469a2bb96e7Sjmcp /* 0x00 */ 470a2bb96e7Sjmcp INST("done", V9|V9S, 0), 471a2bb96e7Sjmcp INST("retry", V9|V9S, 0), 472a2bb96e7Sjmcp INVALID, 473a2bb96e7Sjmcp INVALID, 474a2bb96e7Sjmcp 475a2bb96e7Sjmcp INVALID, 476a2bb96e7Sjmcp INVALID, 477a2bb96e7Sjmcp INVALID, 478a2bb96e7Sjmcp INVALID, 479a2bb96e7Sjmcp 480a2bb96e7Sjmcp /* 0x08 */ 4812f0fcb93SJason Beloro INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 4822f0fcb93SJason Beloro INST("jpriv", V9, FLG_DISP(DISP19)), 483a2bb96e7Sjmcp 484a2bb96e7Sjmcp /* 0x10 */ 485a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 4869d0d62adSJason Beloro INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID 487a2bb96e7Sjmcp }; 488a2bb96e7Sjmcp 489a2bb96e7Sjmcp static const table_t tr_table = { 490a2bb96e7Sjmcp .tbl_field = 29, 491a2bb96e7Sjmcp .tbl_len = 5, 492a2bb96e7Sjmcp .tbl_ovp = NULL, 493a2bb96e7Sjmcp .tbl_fmt = fmt_trap_ret, 494a2bb96e7Sjmcp .tbl_inp = tr_table_def 495a2bb96e7Sjmcp }; 496a2bb96e7Sjmcp 497a2bb96e7Sjmcp static const inst_t movicc_table_def[16] = { 498a2bb96e7Sjmcp INST("movn", V9|V9S, 0), 499a2bb96e7Sjmcp INST("move", V9|V9S, 0), 500a2bb96e7Sjmcp INST("movle", V9|V9S, 0), 501a2bb96e7Sjmcp INST("movl", V9|V9S, 0), 502a2bb96e7Sjmcp 503a2bb96e7Sjmcp INST("movleu", V9|V9S, 0), 504a2bb96e7Sjmcp INST("movcs", V9|V9S, 0), 505a2bb96e7Sjmcp INST("movneg", V9|V9S, 0), 506a2bb96e7Sjmcp INST("movvs", V9|V9S, 0), 507a2bb96e7Sjmcp 508a2bb96e7Sjmcp INST("mova", V9|V9S, 0), 509a2bb96e7Sjmcp INST("movne", V9|V9S, 0), 510a2bb96e7Sjmcp INST("movg", V9|V9S, 0), 511a2bb96e7Sjmcp INST("movge", V9|V9S, 0), 512a2bb96e7Sjmcp 513a2bb96e7Sjmcp INST("movgu", V9|V9S, 0), 514a2bb96e7Sjmcp INST("movcc", V9|V9S, 0), 515a2bb96e7Sjmcp INST("movpos", V9|V9S, 0), 516a2bb96e7Sjmcp INST("movvc", V9|V9S, 0) 517a2bb96e7Sjmcp }; 518a2bb96e7Sjmcp 519a2bb96e7Sjmcp static const inst_t movfcc_table_def[16] = { 520a2bb96e7Sjmcp INST("movn", V9|V9S, 0), 521a2bb96e7Sjmcp INST("movne", V9|V9S, 0), 522a2bb96e7Sjmcp INST("movlg", V9|V9S, 0), 523a2bb96e7Sjmcp INST("movul", V9|V9S, 0), 524a2bb96e7Sjmcp 525a2bb96e7Sjmcp INST("movl", V9|V9S, 0), 526a2bb96e7Sjmcp INST("movug", V9|V9S, 0), 527a2bb96e7Sjmcp INST("movg", V9|V9S, 0), 528a2bb96e7Sjmcp INST("movu", V9|V9S, 0), 529a2bb96e7Sjmcp 530a2bb96e7Sjmcp INST("mova", V9|V9S, 0), 531a2bb96e7Sjmcp INST("move", V9|V9S, 0), 532a2bb96e7Sjmcp INST("movue", V9|V9S, 0), 533a2bb96e7Sjmcp INST("movge", V9|V9S, 0), 534a2bb96e7Sjmcp 535a2bb96e7Sjmcp INST("movuge", V9|V9S, 0), 536a2bb96e7Sjmcp INST("movle", V9|V9S, 0), 537a2bb96e7Sjmcp INST("movule", V9|V9S, 0), 538a2bb96e7Sjmcp INST("movo", V9|V9S, 0) 539a2bb96e7Sjmcp }; 540a2bb96e7Sjmcp 541a2bb96e7Sjmcp static const table_t movfcc_table = { 542a2bb96e7Sjmcp .tbl_field = 17, 543a2bb96e7Sjmcp .tbl_len = 4, 544a2bb96e7Sjmcp .tbl_ovp = NULL, 545a2bb96e7Sjmcp .tbl_fmt = fmt_movcc, 546a2bb96e7Sjmcp .tbl_inp = movfcc_table_def 547a2bb96e7Sjmcp }; 548a2bb96e7Sjmcp 549a2bb96e7Sjmcp static const table_t movicc_table = { 550a2bb96e7Sjmcp .tbl_field = 17, 551a2bb96e7Sjmcp .tbl_len = 4, 552a2bb96e7Sjmcp .tbl_ovp = NULL, 553a2bb96e7Sjmcp .tbl_fmt = fmt_movcc, 554a2bb96e7Sjmcp .tbl_inp = movicc_table_def 555a2bb96e7Sjmcp }; 556a2bb96e7Sjmcp 557a2bb96e7Sjmcp static const inst_t movcc_table_def[2] = { 558a2bb96e7Sjmcp TABLE(movfcc_table, V9|V9S), 559a2bb96e7Sjmcp TABLE(movicc_table, V9|V9S) 560a2bb96e7Sjmcp }; 561a2bb96e7Sjmcp 562a2bb96e7Sjmcp static const table_t movcc_table = { 563a2bb96e7Sjmcp .tbl_field = 18, 564a2bb96e7Sjmcp .tbl_len = 1, 565a2bb96e7Sjmcp .tbl_ovp = NULL, 566a2bb96e7Sjmcp .tbl_fmt = NULL, 567a2bb96e7Sjmcp .tbl_inp = movcc_table_def 568a2bb96e7Sjmcp }; 569a2bb96e7Sjmcp 570a2bb96e7Sjmcp static const inst_t movr_table_def[8] = { 571a2bb96e7Sjmcp INVALID, 572a2bb96e7Sjmcp /* aka movrz */ 573a2bb96e7Sjmcp INST("movre", V9|V9S, 0), 574a2bb96e7Sjmcp INST("movrlez", V9|V9S, 0), 575a2bb96e7Sjmcp INST("movrlz", V9|V9S, 0), 576a2bb96e7Sjmcp 577a2bb96e7Sjmcp INVALID, 578a2bb96e7Sjmcp /* aka movrnz */ 579a2bb96e7Sjmcp INST("movrne", V9|V9S, 0), 580a2bb96e7Sjmcp INST("movrgz", V9|V9S, 0), 581a2bb96e7Sjmcp INST("movrgez", V9|V9S, 0) 582a2bb96e7Sjmcp }; 583a2bb96e7Sjmcp 584a2bb96e7Sjmcp static const table_t movr_table = { 585a2bb96e7Sjmcp .tbl_field = 12, 586a2bb96e7Sjmcp .tbl_len = 3, 587a2bb96e7Sjmcp .tbl_ovp = NULL, 588a2bb96e7Sjmcp .tbl_fmt = fmt_movr, 589a2bb96e7Sjmcp .tbl_inp = movr_table_def 590a2bb96e7Sjmcp }; 591a2bb96e7Sjmcp 592a2bb96e7Sjmcp static const inst_t FPop1_table_def[512] = { 593a2bb96e7Sjmcp /* 0x000 */ 594a2bb96e7Sjmcp INVALID, 595a2bb96e7Sjmcp INST("fmovs", VALL, 596a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 597a2bb96e7Sjmcp INST("fmovd", V9|V9S, 598a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 599a2bb96e7Sjmcp INST("fmovq", V9|V9S, 600a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 601a2bb96e7Sjmcp 602a2bb96e7Sjmcp INVALID, 603a2bb96e7Sjmcp INST("fnegs", VALL, 604a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 605a2bb96e7Sjmcp INST("fnegd", V9|V9S, 606a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 607a2bb96e7Sjmcp INST("fnegq", V9|V9S, 608a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 609a2bb96e7Sjmcp 610a2bb96e7Sjmcp /* 0x008 */ 611a2bb96e7Sjmcp INVALID, 612a2bb96e7Sjmcp INST("fabss", VALL, 613a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 614a2bb96e7Sjmcp INST("fabsd", V9|V9S, 615a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 616a2bb96e7Sjmcp INST("fabsq", V9|V9S, 617a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 618a2bb96e7Sjmcp 619a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, 620a2bb96e7Sjmcp 621a2bb96e7Sjmcp /* 0x010 */ 622a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 623a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 624a2bb96e7Sjmcp 625a2bb96e7Sjmcp /* 0x020 */ 626a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 627a2bb96e7Sjmcp 628a2bb96e7Sjmcp /* 0x028 */ 629a2bb96e7Sjmcp INVALID, 630a2bb96e7Sjmcp INST("fsqrts", VALL, 631a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 632a2bb96e7Sjmcp INST("fsqrtd", VALL, 633a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 634a2bb96e7Sjmcp INST("fsqrtq", VALL, 635a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 636a2bb96e7Sjmcp 6379d0d62adSJason Beloro INVALID, INVALID, INVALID, INVALID, 638a2bb96e7Sjmcp 639a2bb96e7Sjmcp /* 0x30 */ 640a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 641a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 642a2bb96e7Sjmcp 643a2bb96e7Sjmcp /* 0x40 */ 644a2bb96e7Sjmcp INVALID, 645a2bb96e7Sjmcp INST("fadds", VALL, 646a2bb96e7Sjmcp FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 647a2bb96e7Sjmcp INST("faddd", VALL, 648a2bb96e7Sjmcp FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 649a2bb96e7Sjmcp INST("faddq", VALL, 650a2bb96e7Sjmcp FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 651a2bb96e7Sjmcp 652a2bb96e7Sjmcp INVALID, 653a2bb96e7Sjmcp INST("fsubs", VALL, 654a2bb96e7Sjmcp FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 655a2bb96e7Sjmcp INST("fsubd", VALL, 656a2bb96e7Sjmcp FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 657a2bb96e7Sjmcp INST("fsubq", VALL, 658a2bb96e7Sjmcp FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 659a2bb96e7Sjmcp 660a2bb96e7Sjmcp /* 0x048 */ 661a2bb96e7Sjmcp INVALID, 662a2bb96e7Sjmcp INST("fmuls", VALL, 663a2bb96e7Sjmcp FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 664a2bb96e7Sjmcp INST("fmuld", VALL, 665a2bb96e7Sjmcp FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 666a2bb96e7Sjmcp INST("fmulq", VALL, 667a2bb96e7Sjmcp FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 668a2bb96e7Sjmcp 669a2bb96e7Sjmcp INVALID, 670a2bb96e7Sjmcp INST("fdivs", VALL, 671a2bb96e7Sjmcp FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 672a2bb96e7Sjmcp INST("fdivd", VALL, 673a2bb96e7Sjmcp FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 674a2bb96e7Sjmcp INST("fdivq", VALL, 675a2bb96e7Sjmcp FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 676a2bb96e7Sjmcp 677a2bb96e7Sjmcp /* 0x050 */ 6789d0d62adSJason Beloro INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 6799d0d62adSJason Beloro INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 680a2bb96e7Sjmcp 681a2bb96e7Sjmcp /* 0x060 */ 6829d0d62adSJason Beloro INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 683a2bb96e7Sjmcp 684a2bb96e7Sjmcp /* 0x068 */ 685a2bb96e7Sjmcp INVALID, 686a2bb96e7Sjmcp INST("fsmuld", VALL, 687a2bb96e7Sjmcp FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)), 688a2bb96e7Sjmcp INVALID, 689a2bb96e7Sjmcp INVALID, 690a2bb96e7Sjmcp 691a2bb96e7Sjmcp INVALID, 692a2bb96e7Sjmcp INVALID, 693a2bb96e7Sjmcp INST("fdmulq", VALL, 694a2bb96e7Sjmcp FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPQ)), 695a2bb96e7Sjmcp INVALID, 696a2bb96e7Sjmcp 697a2bb96e7Sjmcp /* 0x070 */ 6989d0d62adSJason Beloro INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 6999d0d62adSJason Beloro INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 700a2bb96e7Sjmcp 701a2bb96e7Sjmcp /* 0x080 */ 702a2bb96e7Sjmcp INVALID, 703a2bb96e7Sjmcp INST("fstox", V9|V9S, 704a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)), 705a2bb96e7Sjmcp INST("fdtox", V9|V9S, 706a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 707a2bb96e7Sjmcp INST("fqtox", V9|V9S, 708a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPD)), 709a2bb96e7Sjmcp 710a2bb96e7Sjmcp INST("fxtos", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM| 711a2bb96e7Sjmcp FLG_P3(REG_FP)), 712a2bb96e7Sjmcp INVALID, 713a2bb96e7Sjmcp INVALID, 714a2bb96e7Sjmcp INVALID, 715a2bb96e7Sjmcp 716a2bb96e7Sjmcp /* 0x088 */ 717a2bb96e7Sjmcp INST("fxtod", V9|V9S, 718a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 719a2bb96e7Sjmcp INVALID, 720a2bb96e7Sjmcp INVALID, 721a2bb96e7Sjmcp INVALID, 722a2bb96e7Sjmcp 723a2bb96e7Sjmcp INST("fxtoq", V9|V9S, 724a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPQ)), 725a2bb96e7Sjmcp INVALID, 726a2bb96e7Sjmcp INVALID, 727a2bb96e7Sjmcp INVALID, 728a2bb96e7Sjmcp 729a2bb96e7Sjmcp /* 0x090 */ 730a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 731a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 732a2bb96e7Sjmcp 733a2bb96e7Sjmcp /* 0x0a0 */ 734a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 735a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 736a2bb96e7Sjmcp 737a2bb96e7Sjmcp /* 0x0b0 */ 738a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 739a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 740a2bb96e7Sjmcp 741a2bb96e7Sjmcp /* 0x0c0 */ 742a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, 743a2bb96e7Sjmcp 744a2bb96e7Sjmcp INST("fitos", VALL, 745a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 746a2bb96e7Sjmcp INVALID, 747a2bb96e7Sjmcp INST("fdtos", VALL, 748a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FP)), 749a2bb96e7Sjmcp INST("fqtos", VALL, 750a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FP)), 751a2bb96e7Sjmcp 752a2bb96e7Sjmcp /* 0x0c8 */ 753a2bb96e7Sjmcp INST("fitod", VALL, 754a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)), 755a2bb96e7Sjmcp INST("fstod", VALL, 756a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)), 757a2bb96e7Sjmcp INVALID, 758a2bb96e7Sjmcp INST("fqtod", VALL, 759a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPD)), 760a2bb96e7Sjmcp 761a2bb96e7Sjmcp INST("fitoq", VALL, 762a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPQ)), 763a2bb96e7Sjmcp INST("fstoq", VALL, 764a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPQ)), 765a2bb96e7Sjmcp INST("fdtoq", VALL, 766a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPQ)), 767a2bb96e7Sjmcp INVALID, 768a2bb96e7Sjmcp 769a2bb96e7Sjmcp /* 0x0d0 */ 770a2bb96e7Sjmcp INVALID, 771a2bb96e7Sjmcp INST("fstoi", VALL, 772a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 773a2bb96e7Sjmcp INST("fdtoi", VALL, 774a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FP)), 775a2bb96e7Sjmcp INST("fqtoi", VALL, 776a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FP)), 777a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, 778a2bb96e7Sjmcp 779a2bb96e7Sjmcp /* 0x0d8 */ 780a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 781a2bb96e7Sjmcp 782a2bb96e7Sjmcp /* 0x0e0 */ 783a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 784a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 785a2bb96e7Sjmcp 786a2bb96e7Sjmcp /* 0x0f0 */ 787a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 788a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 789a2bb96e7Sjmcp 790a2bb96e7Sjmcp /* 0x100 */ 791a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 792a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 793a2bb96e7Sjmcp 794a2bb96e7Sjmcp /* 0x110 */ 795a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 796a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 797a2bb96e7Sjmcp 798a2bb96e7Sjmcp /* 0x120 */ 799a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 800a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 801a2bb96e7Sjmcp 802a2bb96e7Sjmcp /* 0x130 */ 803a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 804a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 805a2bb96e7Sjmcp 806a2bb96e7Sjmcp /* 0x140 */ 807a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 808a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 809a2bb96e7Sjmcp 810a2bb96e7Sjmcp /* 0x150 */ 811a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 812a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 813a2bb96e7Sjmcp 814a2bb96e7Sjmcp /* 0x160 */ 815a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 816a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 817a2bb96e7Sjmcp 818a2bb96e7Sjmcp /* 0x170 */ 819a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 820a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 821a2bb96e7Sjmcp 822a2bb96e7Sjmcp /* 0x180 */ 823a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 824a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 825a2bb96e7Sjmcp 826a2bb96e7Sjmcp /* 0x190 */ 827a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 828a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 829a2bb96e7Sjmcp 830a2bb96e7Sjmcp /* 0x1a0 */ 831a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 832a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 833a2bb96e7Sjmcp 834a2bb96e7Sjmcp /* 0x1b0 */ 835a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 836a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 837a2bb96e7Sjmcp 838a2bb96e7Sjmcp /* 0x1c0 */ 839a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 840a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 841a2bb96e7Sjmcp 842a2bb96e7Sjmcp /* 0x1d0 */ 843a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 844a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 845a2bb96e7Sjmcp 846a2bb96e7Sjmcp /* 0x1e0 */ 847a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 848a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 849a2bb96e7Sjmcp 850a2bb96e7Sjmcp /* 0x1f0 */ 851a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 852a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID 853a2bb96e7Sjmcp }; 854a2bb96e7Sjmcp 855a2bb96e7Sjmcp static const table_t FPop1_table = { 856a2bb96e7Sjmcp .tbl_field = 13, 857a2bb96e7Sjmcp .tbl_len = 9, 858a2bb96e7Sjmcp .tbl_ovp = NULL, 859a2bb96e7Sjmcp .tbl_fmt = fmt_fpop1, 860a2bb96e7Sjmcp .tbl_inp = FPop1_table_def 861a2bb96e7Sjmcp }; 862a2bb96e7Sjmcp 863a2bb96e7Sjmcp static const inst_t FPop2_table_def[512] = { 864a2bb96e7Sjmcp /* 0x000 */ 865a2bb96e7Sjmcp INVALID, 866a2bb96e7Sjmcp INST("fmovs", V9|V9S, 867a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 868a2bb96e7Sjmcp INST("fmovd", V9|V9S, 869a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 870a2bb96e7Sjmcp INST("fmovq", V9|V9S, 871a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 872a2bb96e7Sjmcp 873a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, 874a2bb96e7Sjmcp 875a2bb96e7Sjmcp /* 0x008 */ 876a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 877a2bb96e7Sjmcp 878a2bb96e7Sjmcp /* 0x010 */ 879a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 880a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 881a2bb96e7Sjmcp 882a2bb96e7Sjmcp /* 0x020 */ 883a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, 884a2bb96e7Sjmcp 885a2bb96e7Sjmcp INST("fmovrsz", V9|V9S, 886a2bb96e7Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)), 887a2bb96e7Sjmcp INST("fmovrdz", V9|V9S, 888a2bb96e7Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 889a2bb96e7Sjmcp INST("fmovrqz", V9|V9S, 890a2bb96e7Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)), 891a2bb96e7Sjmcp INVALID, 892a2bb96e7Sjmcp 893a2bb96e7Sjmcp /* 0x028 */ 894a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 895a2bb96e7Sjmcp 896a2bb96e7Sjmcp /* 0x030 */ 897a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 898a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 899a2bb96e7Sjmcp 900a2bb96e7Sjmcp /* 0x040 */ 901a2bb96e7Sjmcp INVALID, 902a2bb96e7Sjmcp INST("fmovs", V9|V9S, 903a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 904a2bb96e7Sjmcp INST("fmovd", V9|V9S, 905a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 906a2bb96e7Sjmcp INST("fmovq", V9|V9S, 907a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 908a2bb96e7Sjmcp 909a2bb96e7Sjmcp INST("fmovrslez", V9|V9S, 910a2bb96e7Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)), 911a2bb96e7Sjmcp INST("fmovrdlez", V9|V9S, 912a2bb96e7Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 913a2bb96e7Sjmcp INST("fmovrqlez", V9|V9S, 914a2bb96e7Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)), 915a2bb96e7Sjmcp INVALID, 916a2bb96e7Sjmcp 917a2bb96e7Sjmcp /* 0x048 */ 918a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 919a2bb96e7Sjmcp 920a2bb96e7Sjmcp /* 0x050 */ 921a2bb96e7Sjmcp INVALID, 922a2bb96e7Sjmcp INST("fcmps", VALL, FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_P3(REG_NONE) 923a2bb96e7Sjmcp |FLG_NOIMM), 924a2bb96e7Sjmcp INST("fcmpd", VALL, FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_P3(REG_NONE) 925a2bb96e7Sjmcp |FLG_NOIMM), 926a2bb96e7Sjmcp INST("fcmpq", VALL, FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_P3(REG_NONE) 927a2bb96e7Sjmcp |FLG_NOIMM), 928a2bb96e7Sjmcp 929a2bb96e7Sjmcp INVALID, 930a2bb96e7Sjmcp INST("fcmpes", VALL, FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_P3(REG_NONE) 931a2bb96e7Sjmcp |FLG_NOIMM), 932a2bb96e7Sjmcp INST("fcmped", VALL, FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_P3(REG_NONE) 933a2bb96e7Sjmcp |FLG_NOIMM), 934a2bb96e7Sjmcp INST("fcmpeq", VALL, FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_P3(REG_NONE) 935a2bb96e7Sjmcp |FLG_NOIMM), 936a2bb96e7Sjmcp 937a2bb96e7Sjmcp /* 0x058 */ 938a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 939a2bb96e7Sjmcp 940a2bb96e7Sjmcp /* 0x060 */ 941a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, 942a2bb96e7Sjmcp 943a2bb96e7Sjmcp INVALID, 944a2bb96e7Sjmcp INST("fmovrslz", V9|V9S, 945a2bb96e7Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)), 946a2bb96e7Sjmcp INST("fmovrdlz", V9|V9S, 947a2bb96e7Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 948a2bb96e7Sjmcp INST("fmovrqlz", V9|V9S, 949a2bb96e7Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)), 950a2bb96e7Sjmcp 951a2bb96e7Sjmcp /* 0x068 */ 952a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 953a2bb96e7Sjmcp 954a2bb96e7Sjmcp /* 0x070 */ 955a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 956a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 957a2bb96e7Sjmcp 958a2bb96e7Sjmcp /* 0x080 */ 959a2bb96e7Sjmcp INVALID, 960a2bb96e7Sjmcp INST("fmovs", V9|V9S, 961a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)), 962a2bb96e7Sjmcp INST("fmovd", V9|V9S, 963a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)), 964a2bb96e7Sjmcp INST("fmovq", V9|V9S, 965a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)), 966a2bb96e7Sjmcp 967a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, 968a2bb96e7Sjmcp 969a2bb96e7Sjmcp /* 0x088 */ 970a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 971a2bb96e7Sjmcp 972a2bb96e7Sjmcp /* 0x090 */ 973a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 974a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 975a2bb96e7Sjmcp 976a2bb96e7Sjmcp /* 0x0a0 */ 977a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, 978a2bb96e7Sjmcp 979a2bb96e7Sjmcp INVALID, 980a2bb96e7Sjmcp INST("fmovrsnz", V9|V9S, 981a2bb96e7Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)), 982a2bb96e7Sjmcp INST("fmovrdnz", V9|V9S, 983a2bb96e7Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 984a2bb96e7Sjmcp INST("fmovrqnz", V9|V9S, 985a2bb96e7Sjmcp FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)), 986a2bb96e7Sjmcp 987a2bb96e7Sjmcp /* 0x0a8 */ 988a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 989a2bb96e7Sjmcp 990a2bb96e7Sjmcp /* 0x0b0 */ 991a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 992a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 993a2bb96e7Sjmcp 994a2bb96e7Sjmcp /* 0x0c0 */ 995a2bb96e7Sjmcp INVALID, 996a2bb96e7Sjmcp INST("fmovs", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)| 997a2bb96e7Sjmcp FLG_NOIMM|FLG_P3(REG_FP)), 998a2bb96e7Sjmcp INST("fmovd", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)| 999a2bb96e7Sjmcp FLG_NOIMM|FLG_P3(REG_FPD)), 1000a2bb96e7Sjmcp INST("fmovq", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)| 1001a2bb96e7Sjmcp FLG_NOIMM|FLG_P3(REG_FPQ)), 1002a2bb96e7Sjmcp 1003a2bb96e7Sjmcp INVALID, 1004a2bb96e7Sjmcp INST("fmovrsgz", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM| 1005a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1006a2bb96e7Sjmcp INST("fmovrdgz", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM| 1007a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1008a2bb96e7Sjmcp INST("fmovrqgz", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM| 1009a2bb96e7Sjmcp FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)), 1010a2bb96e7Sjmcp 1011a2bb96e7Sjmcp /* 0x0c8 */ 1012a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1013a2bb96e7Sjmcp 1014a2bb96e7Sjmcp /* 0x0d0 */ 1015a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1016a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1017a2bb96e7Sjmcp 1018a2bb96e7Sjmcp /* 0x0e0 */ 1019a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, 1020a2bb96e7Sjmcp 1021a2bb96e7Sjmcp INVALID, 1022a2bb96e7Sjmcp INST("fmovrsgez", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM| 1023a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1024a2bb96e7Sjmcp INST("fmovrdgez", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM| 1025a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1026a2bb96e7Sjmcp INST("fmovrqgez", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM| 1027a2bb96e7Sjmcp FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)), 1028a2bb96e7Sjmcp 1029a2bb96e7Sjmcp /* 0x0e8 */ 1030a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1031a2bb96e7Sjmcp 1032a2bb96e7Sjmcp /* 0x0f0 */ 1033a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1034a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1035a2bb96e7Sjmcp 1036a2bb96e7Sjmcp /* 0x100 */ 1037a2bb96e7Sjmcp INVALID, 1038a2bb96e7Sjmcp INST("fmovs", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)| 1039a2bb96e7Sjmcp FLG_NOIMM|FLG_P3(REG_FP)), 1040a2bb96e7Sjmcp INST("fmovd", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)| 1041a2bb96e7Sjmcp FLG_NOIMM|FLG_P3(REG_FPD)), 1042a2bb96e7Sjmcp INST("fmovq", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)| 1043a2bb96e7Sjmcp FLG_NOIMM|FLG_P3(REG_FPQ)), 1044a2bb96e7Sjmcp 1045a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, 1046a2bb96e7Sjmcp 1047a2bb96e7Sjmcp /* 0x108 */ 1048a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1049a2bb96e7Sjmcp 1050a2bb96e7Sjmcp /* 0x110 */ 1051a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1052a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1053a2bb96e7Sjmcp 1054a2bb96e7Sjmcp /* 0x120 */ 1055a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1056a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1057a2bb96e7Sjmcp 1058a2bb96e7Sjmcp /* 0x130 */ 1059a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1060a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1061a2bb96e7Sjmcp 1062a2bb96e7Sjmcp /* 0x140 */ 1063a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1064a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1065a2bb96e7Sjmcp 1066a2bb96e7Sjmcp /* 0x150 */ 1067a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1068a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1069a2bb96e7Sjmcp 1070a2bb96e7Sjmcp /* 0x160 */ 1071a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1072a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1073a2bb96e7Sjmcp 1074a2bb96e7Sjmcp /* 0x170 */ 1075a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1076a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1077a2bb96e7Sjmcp 1078a2bb96e7Sjmcp /* 0x180 */ 1079a2bb96e7Sjmcp INVALID, 1080a2bb96e7Sjmcp INST("fmovs", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)| 1081a2bb96e7Sjmcp FLG_NOIMM|FLG_P3(REG_FP)), 1082a2bb96e7Sjmcp INST("fmovd", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)| 1083a2bb96e7Sjmcp FLG_NOIMM|FLG_P3(REG_FPD)), 1084a2bb96e7Sjmcp INST("fmovq", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)| 1085a2bb96e7Sjmcp FLG_NOIMM|FLG_P3(REG_FPQ)), 1086a2bb96e7Sjmcp 1087a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, 1088a2bb96e7Sjmcp 1089a2bb96e7Sjmcp /* 0x188 */ 1090a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1091a2bb96e7Sjmcp 1092a2bb96e7Sjmcp /* 0x190 */ 1093a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1094a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1095a2bb96e7Sjmcp 1096a2bb96e7Sjmcp /* 0x1a0 */ 1097a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1098a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1099a2bb96e7Sjmcp 1100a2bb96e7Sjmcp /* 0x1b0 */ 1101a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1102a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1103a2bb96e7Sjmcp 1104a2bb96e7Sjmcp /* 0x1c0 */ 1105a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1106a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1107a2bb96e7Sjmcp 1108a2bb96e7Sjmcp /* 0x1d0 */ 1109a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1110a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1111a2bb96e7Sjmcp 1112a2bb96e7Sjmcp /* 0x1e0 */ 1113a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1114a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1115a2bb96e7Sjmcp 1116a2bb96e7Sjmcp /* 0x1f0 */ 1117a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1118a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID 1119a2bb96e7Sjmcp }; 1120a2bb96e7Sjmcp 1121a2bb96e7Sjmcp static const table_t FPop2_table = { 1122a2bb96e7Sjmcp .tbl_field = 13, 1123a2bb96e7Sjmcp .tbl_len = 9, 1124a2bb96e7Sjmcp .tbl_ovp = NULL, 1125a2bb96e7Sjmcp .tbl_fmt = fmt_fpop2, 1126a2bb96e7Sjmcp .tbl_inp = FPop2_table_def 1127a2bb96e7Sjmcp }; 1128a2bb96e7Sjmcp 1129a2bb96e7Sjmcp static const inst_t vis_table_def[512] = { 1130a2bb96e7Sjmcp /* 0x000 */ 1131a2bb96e7Sjmcp INST("edge8cc", V9S, FLG_NOIMM), 1132a2bb96e7Sjmcp INST("edge8n", V9S, FLG_NOIMM), 1133a2bb96e7Sjmcp INST("edge8lcc", V9S, FLG_NOIMM), 1134a2bb96e7Sjmcp INST("edge8ln", V9S, FLG_NOIMM), 1135a2bb96e7Sjmcp 1136a2bb96e7Sjmcp INST("edge16cc", V9S, FLG_NOIMM), 1137a2bb96e7Sjmcp INST("edge16n", V9S, FLG_NOIMM), 1138a2bb96e7Sjmcp INST("edge16lcc", V9S, FLG_NOIMM), 1139a2bb96e7Sjmcp INST("edge16ln", V9S, FLG_NOIMM), 1140a2bb96e7Sjmcp 1141a2bb96e7Sjmcp /* 0x008 */ 1142a2bb96e7Sjmcp INST("edge32cc", V9S, FLG_NOIMM), 1143a2bb96e7Sjmcp INST("edge32n", V9S, FLG_NOIMM), 1144a2bb96e7Sjmcp INST("edge32lcc", V9S, FLG_NOIMM), 1145a2bb96e7Sjmcp INST("edge32ln", V9S, FLG_NOIMM), 1146a2bb96e7Sjmcp 1147a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, 1148a2bb96e7Sjmcp 1149a2bb96e7Sjmcp /* 0x010 */ 1150a2bb96e7Sjmcp INST("array8", V9S, FLG_NOIMM), 11512f0fcb93SJason Beloro INST("addxc", V9, 0), 1152a2bb96e7Sjmcp INST("array16", V9S, FLG_NOIMM), 11532f0fcb93SJason Beloro INST("addxccc", V9, 0), 1154a2bb96e7Sjmcp 1155a2bb96e7Sjmcp INST("array32", V9S, FLG_NOIMM), 11562f0fcb93SJason Beloro INST("random", V9, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)| 11572f0fcb93SJason Beloro FLG_RD(REG_FPD)|FLG_NOIMM), 11582f0fcb93SJason Beloro INST("umulxhi", V9, FLG_P1(REG_INT)|FLG_NOIMM| 11592f0fcb93SJason Beloro FLG_P2(REG_INT)|FLG_P3(REG_INT)), 11602f0fcb93SJason Beloro INST("lzd", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 11612f0fcb93SJason Beloro FLG_P2(REG_INT)|FLG_RD(REG_INT)), 1162a2bb96e7Sjmcp 1163a2bb96e7Sjmcp /* 0x018 */ 1164a2bb96e7Sjmcp INST("alignaddr", V9S, FLG_NOIMM), 11652f0fcb93SJason Beloro INST("bmask", V9S, FLG_P1(REG_INT)|FLG_P2(REG_INT)|FLG_RD(REG_INT)), 1166a2bb96e7Sjmcp INST("alignaddrl", V9S, FLG_NOIMM), 11672f0fcb93SJason Beloro INST("cmask8", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 11682f0fcb93SJason Beloro FLG_P2(REG_INT)|FLG_P3(REG_NONE)), 1169a2bb96e7Sjmcp INVALID, 11702f0fcb93SJason Beloro INST("cmask16", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 11712f0fcb93SJason Beloro FLG_P2(REG_INT)|FLG_P3(REG_NONE)), 11722f0fcb93SJason Beloro INVALID, 11732f0fcb93SJason Beloro INST("cmask32", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 11742f0fcb93SJason Beloro FLG_P2(REG_INT)|FLG_P3(REG_NONE)), 1175a2bb96e7Sjmcp 1176a2bb96e7Sjmcp /* 0x020 */ 1177a2bb96e7Sjmcp INST("fcmple16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1178a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 11792f0fcb93SJason Beloro INST("fsll16", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 11802f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1181a2bb96e7Sjmcp INST("fcmpne16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1182a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 11832f0fcb93SJason Beloro INST("fsrl16", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 11842f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1185a2bb96e7Sjmcp 1186a2bb96e7Sjmcp INST("fcmple32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1187a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 11882f0fcb93SJason Beloro INST("fsll32", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 11892f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1190a2bb96e7Sjmcp INST("fcmpne32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1191a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 11922f0fcb93SJason Beloro INST("fsrl32", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 11932f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1194a2bb96e7Sjmcp 1195a2bb96e7Sjmcp /* 0x028 */ 1196a2bb96e7Sjmcp INST("fcmpgt16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1197a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 11982f0fcb93SJason Beloro INST("fslas16", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 11992f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1200a2bb96e7Sjmcp INST("fcmpeq16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1201a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 12022f0fcb93SJason Beloro INST("fsra16", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 12032f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1204a2bb96e7Sjmcp 1205a2bb96e7Sjmcp INST("fcmpgt32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1206a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 12072f0fcb93SJason Beloro INST("fslas32", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 12082f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1209a2bb96e7Sjmcp INST("fcmpeq32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1210a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 12112f0fcb93SJason Beloro INST("fsra32", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 12122f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1213a2bb96e7Sjmcp 1214a2bb96e7Sjmcp /* 0x030 */ 1215a2bb96e7Sjmcp INVALID, 1216a2bb96e7Sjmcp INST("fmul8x16", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1217a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1218a2bb96e7Sjmcp INVALID, 1219a2bb96e7Sjmcp INST("fmul8x16au", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1220a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FPD)), 1221a2bb96e7Sjmcp 1222a2bb96e7Sjmcp INVALID, 1223a2bb96e7Sjmcp INST("fmul8x16al", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1224a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FPD)), 1225a2bb96e7Sjmcp INST("fmul8sux16", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1226a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1227a2bb96e7Sjmcp INST("fmul8ulx16", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1228a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1229a2bb96e7Sjmcp 1230a2bb96e7Sjmcp /* 0x038 */ 1231a2bb96e7Sjmcp INST("fmuld8sux16", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1232a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FPD)), 1233a2bb96e7Sjmcp INST("fmuld8ulx16", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1234a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FPD)), 1235a2bb96e7Sjmcp INST("fpack32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1236a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1237a2bb96e7Sjmcp INST("fpack16", V9S, FLG_P1(REG_NONE)|FLG_NOIMM| 1238a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FP)), 1239a2bb96e7Sjmcp 1240a2bb96e7Sjmcp INVALID, 1241a2bb96e7Sjmcp INST("fpackfix", V9S, FLG_P1(REG_NONE)|FLG_NOIMM| 1242a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FP)), 1243a2bb96e7Sjmcp INST("pdist", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1244a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12452f0fcb93SJason Beloro INST("pdistn", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 12462f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_INT)), 1247a2bb96e7Sjmcp 1248a2bb96e7Sjmcp /* 0x040 */ 12492f0fcb93SJason Beloro INST("fmean16", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 12502f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12512f0fcb93SJason Beloro INVALID, 12522f0fcb93SJason Beloro INST("fpadd64", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 12532f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12542f0fcb93SJason Beloro INVALID, 12552f0fcb93SJason Beloro INST("fchksm16", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 12562f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12572f0fcb93SJason Beloro INVALID, 12582f0fcb93SJason Beloro INST("fpsub64", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 12592f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12602f0fcb93SJason Beloro INVALID, 1261a2bb96e7Sjmcp 1262a2bb96e7Sjmcp /* 0x048 */ 1263a2bb96e7Sjmcp INST("faligndata", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1264a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1265a2bb96e7Sjmcp INVALID, 1266a2bb96e7Sjmcp INVALID, 1267a2bb96e7Sjmcp INST("fpmerge", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1268a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FPD)), 1269a2bb96e7Sjmcp 1270a2bb96e7Sjmcp INST("bshuffle", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1271a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1272a2bb96e7Sjmcp INST("fexpand", V9S, FLG_P1(REG_NONE)|FLG_NOIMM| 1273a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FPD)), 1274a2bb96e7Sjmcp INVALID, 1275a2bb96e7Sjmcp INVALID, 1276a2bb96e7Sjmcp 1277a2bb96e7Sjmcp /* 0x050 */ 1278a2bb96e7Sjmcp INST("fpadd16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1279a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1280a2bb96e7Sjmcp INST("fpadd16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1281a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1282a2bb96e7Sjmcp INST("fpadd32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1283a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1284a2bb96e7Sjmcp INST("fpadd32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1285a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1286a2bb96e7Sjmcp 1287a2bb96e7Sjmcp INST("fpsub16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1288a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1289a2bb96e7Sjmcp INST("fpsub16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1290a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1291a2bb96e7Sjmcp INST("fpsub32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1292a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1293a2bb96e7Sjmcp INST("fpsub32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1294a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1295a2bb96e7Sjmcp 1296a2bb96e7Sjmcp /* 0x058 */ 12972f0fcb93SJason Beloro INST("fpadds16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 12982f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 12992f0fcb93SJason Beloro INST("fpadds16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13002f0fcb93SJason Beloro FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13012f0fcb93SJason Beloro INST("fpadds32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13022f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13032f0fcb93SJason Beloro INST("fpadds32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13042f0fcb93SJason Beloro FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13052f0fcb93SJason Beloro INST("fpsubs16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13062f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13072f0fcb93SJason Beloro INST("fpsubs16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13082f0fcb93SJason Beloro FLG_P2(REG_FP)|FLG_P3(REG_FP)), 13092f0fcb93SJason Beloro INST("fpsubs32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 13102f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 13112f0fcb93SJason Beloro INST("fpsubs32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 13122f0fcb93SJason Beloro FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1313a2bb96e7Sjmcp 1314a2bb96e7Sjmcp /* 0x060 */ 1315a2bb96e7Sjmcp INST("fzero", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)| 1316a2bb96e7Sjmcp FLG_P3(REG_FPD)), 1317a2bb96e7Sjmcp INST("fzeros", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)| 1318a2bb96e7Sjmcp FLG_P3(REG_FP)), 1319a2bb96e7Sjmcp INST("fnor", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1320a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1321a2bb96e7Sjmcp INST("fnors", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1322a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1323a2bb96e7Sjmcp 1324a2bb96e7Sjmcp INST("fandnot2", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1325a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1326a2bb96e7Sjmcp INST("fandnot2s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1327a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1328a2bb96e7Sjmcp INST("fnot2", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)| 1329a2bb96e7Sjmcp FLG_P3(REG_FPD)), 1330a2bb96e7Sjmcp INST("fnot2s", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)| 1331a2bb96e7Sjmcp FLG_P3(REG_FP)), 1332a2bb96e7Sjmcp 1333a2bb96e7Sjmcp /* 0x068 */ 1334a2bb96e7Sjmcp INST("fandnot1", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1335a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1336a2bb96e7Sjmcp INST("fandnot1s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1337a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1338a2bb96e7Sjmcp INST("fnot1", V9S, FLG_P1(REG_FPD)|FLG_P2(REG_NONE)| 1339a2bb96e7Sjmcp FLG_P3(REG_FPD)), 1340a2bb96e7Sjmcp INST("fnot1s", V9S, FLG_P1(REG_FP)|FLG_P2(REG_NONE)| 1341a2bb96e7Sjmcp FLG_P3(REG_FP)), 1342a2bb96e7Sjmcp 1343a2bb96e7Sjmcp INST("fxor", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1344a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1345a2bb96e7Sjmcp INST("fxors", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1346a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1347a2bb96e7Sjmcp INST("fnand", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1348a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1349a2bb96e7Sjmcp INST("fnands", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1350a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1351a2bb96e7Sjmcp 1352a2bb96e7Sjmcp /* 0x070 */ 1353a2bb96e7Sjmcp INST("fand", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1354a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1355a2bb96e7Sjmcp INST("fands", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1356a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1357a2bb96e7Sjmcp INST("fxnor", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1358a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1359a2bb96e7Sjmcp INST("fxnors", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1360a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1361a2bb96e7Sjmcp 1362a2bb96e7Sjmcp INST("fsrc1", V9S, FLG_P1(REG_FPD)|FLG_P2(REG_NONE)| 1363a2bb96e7Sjmcp FLG_P3(REG_FPD)), 1364a2bb96e7Sjmcp INST("fsrc1s", V9S, FLG_P1(REG_FP)|FLG_P2(REG_NONE)| 1365a2bb96e7Sjmcp FLG_P3(REG_FP)), 1366a2bb96e7Sjmcp INST("fornot2", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1367a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1368a2bb96e7Sjmcp INST("fornot2s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1369a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1370a2bb96e7Sjmcp 1371a2bb96e7Sjmcp /* 0x078 */ 1372a2bb96e7Sjmcp INST("fsrc2", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)| 1373a2bb96e7Sjmcp FLG_P3(REG_FPD)), 1374a2bb96e7Sjmcp INST("fsrc2s", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)| 1375a2bb96e7Sjmcp FLG_P3(REG_FP)), 1376a2bb96e7Sjmcp INST("fornot1", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1377a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1378a2bb96e7Sjmcp INST("fornot1s", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1379a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1380a2bb96e7Sjmcp 1381a2bb96e7Sjmcp INST("for", V9S, FLG_P1(REG_FPD)|FLG_NOIMM| 1382a2bb96e7Sjmcp FLG_P2(REG_FPD)|FLG_P3(REG_FPD)), 1383a2bb96e7Sjmcp INST("fors", V9S, FLG_P1(REG_FP)|FLG_NOIMM| 1384a2bb96e7Sjmcp FLG_P2(REG_FP)|FLG_P3(REG_FP)), 1385a2bb96e7Sjmcp INST("fone", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)| 1386a2bb96e7Sjmcp FLG_P3(REG_FPD)), 1387a2bb96e7Sjmcp INST("fones", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)| 1388a2bb96e7Sjmcp FLG_P3(REG_FP)), 1389a2bb96e7Sjmcp 1390a2bb96e7Sjmcp /* 0x080 */ 1391a2bb96e7Sjmcp INST("shutdown", V9S, 0), 1392a2bb96e7Sjmcp INST("siam", V9S, 0), 1393a2bb96e7Sjmcp INVALID, 1394a2bb96e7Sjmcp INVALID, 1395a2bb96e7Sjmcp 1396a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, 1397a2bb96e7Sjmcp 1398a2bb96e7Sjmcp /* 0x088 */ 1399a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1400a2bb96e7Sjmcp 1401a2bb96e7Sjmcp /* 0x090 */ 1402a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1403a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1404a2bb96e7Sjmcp 1405a2bb96e7Sjmcp /* 0x0a0 */ 1406a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1407a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1408a2bb96e7Sjmcp 1409a2bb96e7Sjmcp /* 0x0b0 */ 1410a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1411a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1412a2bb96e7Sjmcp 1413a2bb96e7Sjmcp /* 0x0c0 */ 1414a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1415a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1416a2bb96e7Sjmcp 1417a2bb96e7Sjmcp /* 0x0d0 */ 1418a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1419a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1420a2bb96e7Sjmcp 1421a2bb96e7Sjmcp /* 0x0e0 */ 1422a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1423a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1424a2bb96e7Sjmcp 1425a2bb96e7Sjmcp /* 0x0f0 */ 1426a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1427a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1428a2bb96e7Sjmcp 1429a2bb96e7Sjmcp /* 0x100 */ 1430a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1431a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1432a2bb96e7Sjmcp 1433a2bb96e7Sjmcp /* 0x110 */ 14342f0fcb93SJason Beloro INST("movdtox", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 14352f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_RD(REG_INT)), 14362f0fcb93SJason Beloro INST("movstouw", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 14372f0fcb93SJason Beloro FLG_P2(REG_FP)|FLG_RD(REG_INT)), 14382f0fcb93SJason Beloro INVALID, 14392f0fcb93SJason Beloro INST("movstosw", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 14402f0fcb93SJason Beloro FLG_P2(REG_FP)|FLG_RD(REG_INT)), 14412f0fcb93SJason Beloro INVALID, 14422f0fcb93SJason Beloro INST("xmulx", V9, FLG_P1(REG_INT)|FLG_NOIMM| 14432f0fcb93SJason Beloro FLG_P2(REG_INT)|FLG_P3(REG_INT)), 14442f0fcb93SJason Beloro INST("xmulxhi", V9, FLG_P1(REG_INT)|FLG_NOIMM| 14452f0fcb93SJason Beloro FLG_P2(REG_INT)|FLG_P3(REG_INT)), 14462f0fcb93SJason Beloro INVALID, 14472f0fcb93SJason Beloro INST("movxtod", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 14482f0fcb93SJason Beloro FLG_P2(REG_INT)|FLG_RD(REG_FPD)), 14492f0fcb93SJason Beloro INST("movwtos", V9, FLG_P1(REG_NONE)|FLG_NOIMM| 14502f0fcb93SJason Beloro FLG_P2(REG_INT)|FLG_RD(REG_FP)), 14512f0fcb93SJason Beloro INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1452a2bb96e7Sjmcp 1453a2bb96e7Sjmcp /* 0x120 */ 14542f0fcb93SJason Beloro INST("fucmple8", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 14552f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_RD(REG_INT)), 14562f0fcb93SJason Beloro INVALID, 14572f0fcb93SJason Beloro INST("fucmpne8", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 14582f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_RD(REG_INT)), 14592f0fcb93SJason Beloro INVALID, INVALID, INVALID, INVALID, INVALID, 14602f0fcb93SJason Beloro INST("fucmpgt8", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 14612f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_RD(REG_INT)), 14622f0fcb93SJason Beloro INVALID, 14632f0fcb93SJason Beloro INST("fucmpeq8", V9, FLG_P1(REG_FPD)|FLG_NOIMM| 14642f0fcb93SJason Beloro FLG_P2(REG_FPD)|FLG_RD(REG_INT)), 14652f0fcb93SJason Beloro INVALID, INVALID, INVALID, INVALID, INVALID, 1466a2bb96e7Sjmcp 1467a2bb96e7Sjmcp /* 0x130 */ 1468a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1469a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1470a2bb96e7Sjmcp 1471a2bb96e7Sjmcp /* 0x140 */ 1472a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1473a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1474a2bb96e7Sjmcp 1475a2bb96e7Sjmcp /* 0x150 */ 14762f0fcb93SJason Beloro INVALID, 14772f0fcb93SJason Beloro INST("flcmps", V9, FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_P3(REG_FCC) 14782f0fcb93SJason Beloro |FLG_NOIMM), 14792f0fcb93SJason Beloro INST("flcmpd", V9, FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_P3(REG_FCC) 14802f0fcb93SJason Beloro |FLG_NOIMM), 14812f0fcb93SJason Beloro INVALID, INVALID, INVALID, INVALID, INVALID, 1482a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1483a2bb96e7Sjmcp 1484a2bb96e7Sjmcp /* 0x160 */ 1485a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1486a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1487a2bb96e7Sjmcp 1488a2bb96e7Sjmcp /* 0x170 */ 1489a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1490a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1491a2bb96e7Sjmcp 1492a2bb96e7Sjmcp /* 0x180 */ 1493a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1494a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1495a2bb96e7Sjmcp 1496a2bb96e7Sjmcp /* 0x190 */ 1497a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1498a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1499a2bb96e7Sjmcp 1500a2bb96e7Sjmcp /* 0x1a0 */ 1501a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1502a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1503a2bb96e7Sjmcp 1504a2bb96e7Sjmcp /* 0x1b0 */ 1505a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1506a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1507a2bb96e7Sjmcp 1508a2bb96e7Sjmcp /* 0x1c0 */ 1509a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1510a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1511a2bb96e7Sjmcp 1512a2bb96e7Sjmcp /* 0x1d0 */ 1513a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1514a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1515a2bb96e7Sjmcp 1516a2bb96e7Sjmcp /* 0x1e0 */ 1517a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1518a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1519a2bb96e7Sjmcp 1520a2bb96e7Sjmcp /* 0x1f0 */ 1521a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 1522a2bb96e7Sjmcp INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID 1523a2bb96e7Sjmcp }; 1524a2bb96e7Sjmcp 1525a2bb96e7Sjmcp static const table_t vis_table = { 1526a2bb96e7Sjmcp .tbl_field = 13, 1527a2bb96e7Sjmcp .tbl_len = 9, 1528a2bb96e7Sjmcp .tbl_ovp = NULL, 1529a2bb96e7Sjmcp .tbl_fmt = fmt_vis, 1530a2bb96e7Sjmcp .tbl_inp = vis_table_def 1531a2bb96e7Sjmcp }; 1532a2bb96e7Sjmcp 1533a2bb96e7Sjmcp static const inst_t fused_table_def[16] = { 1534a2bb96e7Sjmcp /* 0x0 */ 1535a2bb96e7Sjmcp INVALID, 15362f0fcb93SJason Beloro INST("fmadds", V9, FLG_P1(REG_FP)), 15372f0fcb93SJason Beloro INST("fmaddd", V9, FLG_P1(REG_FPD)), 1538a2bb96e7Sjmcp INVALID, 1539a2bb96e7Sjmcp 1540a2bb96e7Sjmcp /* 0x4 */ 1541a2bb96e7Sjmcp INVALID, 15422f0fcb93SJason Beloro INST("fmsubs", V9, FLG_P1(REG_FP)), 15432f0fcb93SJason Beloro INST("fmsubd", V9, FLG_P1(REG_FPD)), 1544a2bb96e7Sjmcp INVALID, 1545a2bb96e7Sjmcp 1546a2bb96e7Sjmcp /* 0x8 */ 1547a2bb96e7Sjmcp INVALID, 15482f0fcb93SJason Beloro INST("fnmsubs", V9, FLG_P1(REG_FP)), 15492f0fcb93SJason Beloro INST("fnmsubd", V9, FLG_P1(REG_FPD)), 1550a2bb96e7Sjmcp INVALID, 1551a2bb96e7Sjmcp 1552a2bb96e7Sjmcp /* 0xc */ 1553a2bb96e7Sjmcp INVALID, 15542f0fcb93SJason Beloro INST("fnmadds", V9, FLG_P1(REG_FP)), 15552f0fcb93SJason Beloro INST("fnmaddd", V9, FLG_P1(REG_FPD)), 1556a2bb96e7Sjmcp INVALID 1557a2bb96e7Sjmcp }; 1558a2bb96e7Sjmcp 1559a2bb96e7Sjmcp static const table_t fused_table = { 15602f0fcb93SJason Beloro .tbl_field = 8, 1561a2bb96e7Sjmcp .tbl_len = 4, 1562a2bb96e7Sjmcp .tbl_ovp = NULL, 1563a2bb96e7Sjmcp .tbl_fmt = fmt_fused, 1564a2bb96e7Sjmcp .tbl_inp = fused_table_def 1565a2bb96e7Sjmcp }; 1566a2bb96e7Sjmcp 1567a2bb96e7Sjmcp static const inst_t alu_table_def[64] = { 1568a2bb96e7Sjmcp /* 0x00 */ 1569a2bb96e7Sjmcp INST("add", VALL, 0), 1570a2bb96e7Sjmcp INST("and", VALL, 0), 1571a2bb96e7Sjmcp INST("or", VALL, 0), 1572a2bb96e7Sjmcp INST("xor", VALL, 0), 1573a2bb96e7Sjmcp 1574a2bb96e7Sjmcp INST("sub", VALL, 0), 1575a2bb96e7Sjmcp INST("andn", VALL, 0), 1576a2bb96e7Sjmcp INST("orn", VALL, 0), 1577a2bb96e7Sjmcp INST("xnor", VALL, 0), 1578a2bb96e7Sjmcp 1579a2bb96e7Sjmcp /* 0x08 */ 1580a2bb96e7Sjmcp INST("addx", VALL, 0), 1581a2bb96e7Sjmcp INST("mulx", V9|V9S, 0), 1582a2bb96e7Sjmcp INST("umul", VALL, 0), 1583a2bb96e7Sjmcp INST("smul", VALL, 0), 1584a2bb96e7Sjmcp 1585a2bb96e7Sjmcp INST("subx", VALL, 0), 1586a2bb96e7Sjmcp INST("udivx", V9|V9S, 0), 1587a2bb96e7Sjmcp INST("udiv", VALL, 0), 1588a2bb96e7Sjmcp INST("sdiv", VALL, 0), 1589a2bb96e7Sjmcp 1590a2bb96e7Sjmcp /* 0x10 */ 1591a2bb96e7Sjmcp INST("addcc", VALL, 0), 1592a2bb96e7Sjmcp INST("andcc", VALL, 0), 1593a2bb96e7Sjmcp INST("orcc", VALL, 0), 1594a2bb96e7Sjmcp INST("xorcc", VALL, 0), 1595a2bb96e7Sjmcp 1596a2bb96e7Sjmcp INST("subcc", VALL, 0), 1597a2bb96e7Sjmcp INST("andncc", VALL, 0), 1598a2bb96e7Sjmcp INST("orncc", VALL, 0), 1599a2bb96e7Sjmcp INST("xnorcc", VALL, 0), 1600a2bb96e7Sjmcp 1601a2bb96e7Sjmcp /* 0x18 */ 1602a2bb96e7Sjmcp INST("addxcc", VALL, 0), 1603a2bb96e7Sjmcp INVALID, 1604a2bb96e7Sjmcp INST("umulcc", VALL, 0), 1605a2bb96e7Sjmcp INST("smulcc", VALL, 0), 1606a2bb96e7Sjmcp 1607a2bb96e7Sjmcp INST("subxcc", VALL, 0), 1608a2bb96e7Sjmcp INVALID, 1609a2bb96e7Sjmcp INST("udivcc", VALL, 0), 1610a2bb96e7Sjmcp INST("sdivcc", VALL, 0), 1611a2bb96e7Sjmcp 1612a2bb96e7Sjmcp /* 0x20 */ 1613a2bb96e7Sjmcp INST("taddcc", VALL, 0), 1614a2bb96e7Sjmcp INST("tsubcc", VALL, 0), 1615a2bb96e7Sjmcp INST("taddcctv", VALL, 0), 1616a2bb96e7Sjmcp INST("tsubcctv", VALL, 0), 1617a2bb96e7Sjmcp 1618a2bb96e7Sjmcp INST("mulscc", VALL, 0), 1619a2bb96e7Sjmcp INST("sll", VALL, 0), 1620a2bb96e7Sjmcp INST("srl", VALL, 0), 1621a2bb96e7Sjmcp INST("sra", VALL, 0), 1622a2bb96e7Sjmcp 1623a2bb96e7Sjmcp /* 0x28 */ 1624a2bb96e7Sjmcp INST("rd", VALL, 0), 1625a2bb96e7Sjmcp INST("rd", V8, 0), 1626a2bb96e7Sjmcp INST("rd", V8, 0), 1627a2bb96e7Sjmcp INST("rd", V8, 0), 1628a2bb96e7Sjmcp 1629a2bb96e7Sjmcp TABLE(movcc_table, V9|V9S), 1630a2bb96e7Sjmcp INST("sdivx", V9|V9S, 0), 1631a2bb96e7Sjmcp INST("popc", V9|V9S, 1632a2bb96e7Sjmcp FLG_P1(REG_NONE)|FLG_P2(REG_INT)|FLG_P3(REG_INT)), 1633a2bb96e7Sjmcp TABLE(movr_table, V9|V9S), 1634a2bb96e7Sjmcp 1635a2bb96e7Sjmcp /* 0x30 */ 1636a2bb96e7Sjmcp INST("wr", VALL, 0), 1637a2bb96e7Sjmcp INST("wr", V8, 0), 1638a2bb96e7Sjmcp INST("wr", V8, 0), 1639a2bb96e7Sjmcp INST("wr", V8, 0), 1640a2bb96e7Sjmcp 1641a2bb96e7Sjmcp TABLE(FPop1_table, VALL), 1642a2bb96e7Sjmcp TABLE(FPop2_table, VALL), 1643a2bb96e7Sjmcp INST("cpop1", V8, 0), 1644a2bb96e7Sjmcp INST("cpop2", V8, 0), /* impdep2 */ 1645a2bb96e7Sjmcp 1646a2bb96e7Sjmcp /* 0x38 */ 1647a2bb96e7Sjmcp INST("jmpl", VALL, 0), 1648a2bb96e7Sjmcp INST("rett", VALL, 0), 1649a2bb96e7Sjmcp TABLE(Tcc_table, VALL), 1650a2bb96e7Sjmcp INST("flush", VALL, 0), 1651a2bb96e7Sjmcp 1652a2bb96e7Sjmcp INST("save", VALL, 0), 1653a2bb96e7Sjmcp INST("restore", VALL, 0), 1654a2bb96e7Sjmcp TABLE(tr_table, V9|V9S), 16559d0d62adSJason Beloro INVALID 1656a2bb96e7Sjmcp }; 1657a2bb96e7Sjmcp 16582f0fcb93SJason Beloro 1659a2bb96e7Sjmcp static const overlay_t alu_ov_table[] = { 1660a2bb96e7Sjmcp OVERLAY(0x08, INST("addc", V9|V9S, 0)), 1661a2bb96e7Sjmcp OVERLAY(0x0c, INST("subc", V9|V9S, 0)), 1662a2bb96e7Sjmcp OVERLAY(0x18, INST("addccc", V9|V9S, 0)), 1663a2bb96e7Sjmcp OVERLAY(0x1c, INST("subccc", V9|V9S, 0)), 1664a2bb96e7Sjmcp 16652f0fcb93SJason Beloro OVERLAY(0x29, INST("rdhpr", V9|V9S, 0)), 1666a2bb96e7Sjmcp OVERLAY(0x2a, INST("rdpr", V9|V9S, 0)), 1667a2bb96e7Sjmcp OVERLAY(0x2b, INST("flushw", V9|V9S, 0)), 1668a2bb96e7Sjmcp OVERLAY(0x31, TABLE(rwin_table, V9|V9S)), 1669a2bb96e7Sjmcp 1670a2bb96e7Sjmcp OVERLAY(0x32, INST("wrpr", V9|V9S, 0)), 16712f0fcb93SJason Beloro OVERLAY(0x33, INST("wrhpr", V9|V9S, 0)), 1672a2bb96e7Sjmcp OVERLAY(0x36, TABLE(vis_table, V9S)), 16732f0fcb93SJason Beloro OVERLAY(0x37, TABLE(fused_table, VALL)), 1674a2bb96e7Sjmcp OVERLAY(0x39, INST("return", VALL, 0)), 1675a2bb96e7Sjmcp 1676a2bb96e7Sjmcp OVERLAY_END 1677a2bb96e7Sjmcp }; 1678a2bb96e7Sjmcp 1679a2bb96e7Sjmcp static const table_t alu_table = { 1680a2bb96e7Sjmcp .tbl_field = 24, 1681a2bb96e7Sjmcp .tbl_len = 6, 1682a2bb96e7Sjmcp .tbl_ovp = alu_ov_table, 1683a2bb96e7Sjmcp .tbl_fmt = fmt_alu, 1684a2bb96e7Sjmcp .tbl_inp = alu_table_def 1685a2bb96e7Sjmcp }; 1686a2bb96e7Sjmcp 1687a2bb96e7Sjmcp static const inst_t initial_table_def[4] = { 1688a2bb96e7Sjmcp TABLE(branch_table, VALL), 1689a2bb96e7Sjmcp INST("call", VALL, 0), 1690a2bb96e7Sjmcp TABLE(alu_table, VALL), 1691a2bb96e7Sjmcp TABLE(ls_table, VALL) 1692a2bb96e7Sjmcp }; 1693a2bb96e7Sjmcp 1694a2bb96e7Sjmcp /* NOTE: this must not be made static */ 1695a2bb96e7Sjmcp const table_t initial_table = { 1696a2bb96e7Sjmcp .tbl_field = 31, 1697a2bb96e7Sjmcp .tbl_len = 2, 1698a2bb96e7Sjmcp .tbl_ovp = NULL, 1699a2bb96e7Sjmcp .tbl_fmt = fmt_call, 1700a2bb96e7Sjmcp .tbl_inp = initial_table_def 1701a2bb96e7Sjmcp }; 1702