acb4f4cc33
since it is useful for various emulations duties (e.g. unaligned trap handling).
1179 lines
21 KiB
C
1179 lines
21 KiB
C
/*-
|
|
* Copyright (c) 2000 Doug Rabson
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*
|
|
* $FreeBSD$
|
|
*/
|
|
|
|
#ifndef _MACHINE_INST_H_
|
|
#define _MACHINE_INST_H_
|
|
|
|
union ia64_instruction {
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
|
|
u_int64_t x4 :4;
|
|
u_int64_t v :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t resv :1;
|
|
u_int64_t op :4;
|
|
} A1;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t ct2d :2;
|
|
u_int64_t x4 :4;
|
|
u_int64_t v :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t resv :1;
|
|
u_int64_t op :4;
|
|
} A2;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t imm7b :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x2b :2;
|
|
u_int64_t x4 :4;
|
|
u_int64_t v :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} A3;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t imm7b :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t imm6d :6;
|
|
u_int64_t v :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} A4;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t imm7b :7;
|
|
u_int64_t r3 :2;
|
|
u_int64_t imm5c :5;
|
|
u_int64_t imm9d :9;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} A5;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t p1 :6;
|
|
u_int64_t c :1;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t p2 :6;
|
|
u_int64_t ta :1;
|
|
u_int64_t x2 :2;
|
|
u_int64_t tb :1;
|
|
u_int64_t op :4;
|
|
} A6;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t p1 :6;
|
|
u_int64_t c :1;
|
|
u_int64_t zero :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t p2 :6;
|
|
u_int64_t ta :1;
|
|
u_int64_t x2 :2;
|
|
u_int64_t tb :1;
|
|
u_int64_t op :4;
|
|
} A7;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t p1 :6;
|
|
u_int64_t c :1;
|
|
u_int64_t imm7b :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t p2 :6;
|
|
u_int64_t ta :1;
|
|
u_int64_t x2 :2;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} A8;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x2b :2;
|
|
u_int64_t x4 :4;
|
|
u_int64_t zb :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t za :1;
|
|
u_int64_t op :4;
|
|
} A9;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t ct2d :2;
|
|
u_int64_t x4 :4;
|
|
u_int64_t zb :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t za :1;
|
|
u_int64_t op :4;
|
|
} A10;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t resv :1;
|
|
u_int64_t x2b :2;
|
|
u_int64_t ct2d :2;
|
|
u_int64_t ve :1;
|
|
u_int64_t zb :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t za :1;
|
|
u_int64_t op :4;
|
|
} I1;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t resv :1;
|
|
u_int64_t x2b :2;
|
|
u_int64_t x2c :2;
|
|
u_int64_t ve :1;
|
|
u_int64_t zb :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t za :1;
|
|
u_int64_t op :4;
|
|
} I2;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t mbt4c :4;
|
|
u_int64_t resv :4;
|
|
u_int64_t x2b :2;
|
|
u_int64_t x2c :2;
|
|
u_int64_t ve :1;
|
|
u_int64_t zb :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t za :1;
|
|
u_int64_t op :4;
|
|
} I3;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t mht8c :8;
|
|
u_int64_t x2b :2;
|
|
u_int64_t x2c :2;
|
|
u_int64_t ve :1;
|
|
u_int64_t zb :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t za :1;
|
|
u_int64_t op :4;
|
|
} I4;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t resv :1;
|
|
u_int64_t x2b :2;
|
|
u_int64_t x2c :2;
|
|
u_int64_t ve :1;
|
|
u_int64_t zb :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t za :1;
|
|
u_int64_t op :4;
|
|
} I5;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t count5b :5;
|
|
u_int64_t resv2 :1;
|
|
u_int64_t r3 :7;
|
|
u_int64_t resv3 :1;
|
|
u_int64_t x2b :2;
|
|
u_int64_t x2c :2;
|
|
u_int64_t ve :1;
|
|
u_int64_t zb :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t za :1;
|
|
u_int64_t op :4;
|
|
} I6;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t resv :1;
|
|
u_int64_t x2b :2;
|
|
u_int64_t x2c :2;
|
|
u_int64_t ve :1;
|
|
u_int64_t zb :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t za :1;
|
|
u_int64_t op :4;
|
|
} I7;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t count5c :5;
|
|
u_int64_t resv :2;
|
|
u_int64_t x2b :2;
|
|
u_int64_t x2c :2;
|
|
u_int64_t ve :1;
|
|
u_int64_t zb :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t za :1;
|
|
u_int64_t op :4;
|
|
} I8;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t zero :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t resv :1;
|
|
u_int64_t x2b :2;
|
|
u_int64_t x2c :2;
|
|
u_int64_t ve :1;
|
|
u_int64_t zb :1;
|
|
u_int64_t x2a :2;
|
|
u_int64_t za :1;
|
|
u_int64_t op :4;
|
|
} I9;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t count6d :6;
|
|
u_int64_t x :1;
|
|
u_int64_t x2 :2;
|
|
u_int64_t resv :1;
|
|
u_int64_t op :4;
|
|
} I10;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t y :1;
|
|
u_int64_t pos6b :6;
|
|
u_int64_t r3 :7;
|
|
u_int64_t len6d :6;
|
|
u_int64_t x :1;
|
|
u_int64_t x2 :2;
|
|
u_int64_t resv :1;
|
|
u_int64_t op :4;
|
|
} I11;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t cpos6c :6;
|
|
u_int64_t y :1;
|
|
u_int64_t len6d :6;
|
|
u_int64_t x :1;
|
|
u_int64_t x2 :2;
|
|
u_int64_t resv :1;
|
|
u_int64_t op :4;
|
|
} I12;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t imm7b :7;
|
|
u_int64_t cpos6c :6;
|
|
u_int64_t y :1;
|
|
u_int64_t len6d :6;
|
|
u_int64_t x :1;
|
|
u_int64_t x2 :2;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} I13;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t resv :1;
|
|
u_int64_t cpos6b :6;
|
|
u_int64_t r3 :7;
|
|
u_int64_t len6d :6;
|
|
u_int64_t x :1;
|
|
u_int64_t x2 :2;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} I14;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t len4d :6;
|
|
u_int64_t cpos6d :6;
|
|
u_int64_t op :4;
|
|
} I15;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t p1 :6;
|
|
u_int64_t c :1;
|
|
u_int64_t y :1;
|
|
u_int64_t pos6b :6;
|
|
u_int64_t r3 :7;
|
|
u_int64_t p2 :6;
|
|
u_int64_t ta :1;
|
|
u_int64_t x2 :2;
|
|
u_int64_t tb :1;
|
|
u_int64_t op :4;
|
|
} I16;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t p1 :6;
|
|
u_int64_t c :1;
|
|
u_int64_t y :1;
|
|
u_int64_t resv :6;
|
|
u_int64_t r3 :7;
|
|
u_int64_t p2 :6;
|
|
u_int64_t ta :1;
|
|
u_int64_t x2 :2;
|
|
u_int64_t tb :1;
|
|
u_int64_t op :4;
|
|
} I17;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t imm20a :20;
|
|
u_int64_t resv :1;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t i :1;
|
|
u_int64_t op :4;
|
|
} I19;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t imm7a :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t imm13c :13;
|
|
u_int64_t x3 :3;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} I20;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t b1 :3;
|
|
u_int64_t resv1 :4;
|
|
u_int64_t r2 :7;
|
|
u_int64_t wh :2;
|
|
u_int64_t x :1;
|
|
u_int64_t ih :1;
|
|
u_int64_t timm9c :9;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv2 :1;
|
|
u_int64_t op :4;
|
|
} I21;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t b2 :3;
|
|
u_int64_t resv1 :11;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv2 :1;
|
|
u_int64_t op :4;
|
|
} I22;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t mask7a :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t resv1 :4;
|
|
u_int64_t mask8c :8;
|
|
u_int64_t resv2 :1;
|
|
u_int64_t x3 :3;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} I23;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t imm27a :27;
|
|
u_int64_t x3 :3;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} I24;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t resv1 :14;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv2 :1;
|
|
u_int64_t op :4;
|
|
} I25;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t ar3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv2 :1;
|
|
u_int64_t op :4;
|
|
} I26;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv1 :7;
|
|
u_int64_t imm7b :7;
|
|
u_int64_t ar3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} I27;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t resv1 :7;
|
|
u_int64_t ar3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv2 :1;
|
|
u_int64_t op :4;
|
|
} I28;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t resv1 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv2 :1;
|
|
u_int64_t op :4;
|
|
} I29;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t m :1;
|
|
u_int64_t op :4;
|
|
} M1;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t m :1;
|
|
u_int64_t op :4;
|
|
} M2, M16;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t imm7b :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t i :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} M3;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t m :1;
|
|
u_int64_t op :4;
|
|
} M4;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t imm7a :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t i :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} M5;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t m :1;
|
|
u_int64_t op :4;
|
|
} M6;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t m :1;
|
|
u_int64_t op :4;
|
|
} M7;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t imm7b :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t i :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} M8;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t f2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t m :1;
|
|
u_int64_t op :4;
|
|
} M9;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t imm7a :7;
|
|
u_int64_t f2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t i :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} M10;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t f2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t m :1;
|
|
u_int64_t op :4;
|
|
} M11, M12;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv14 :14;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t m :1;
|
|
u_int64_t op :4;
|
|
} M13;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t m :1;
|
|
u_int64_t op :4;
|
|
} M14;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t imm7b :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t i :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} M15;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t i2b :2;
|
|
u_int64_t s :1;
|
|
u_int64_t resv4 :4;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x :1;
|
|
u_int64_t hint :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t m :1;
|
|
u_int64_t op :4;
|
|
} M17;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t x :1;
|
|
u_int64_t resv2 :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t m :1;
|
|
u_int64_t op :4;
|
|
} M18;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t f2 :7;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t x :1;
|
|
u_int64_t resv2 :2;
|
|
u_int64_t x6 :6;
|
|
u_int64_t m :1;
|
|
u_int64_t op :4;
|
|
} M19;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t imm7a :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t imm13c :13;
|
|
u_int64_t x3 :3;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} M20;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t imm7a :7;
|
|
u_int64_t f2 :7;
|
|
u_int64_t imm13c :13;
|
|
u_int64_t x3 :3;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} M21;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t imm20b :20;
|
|
u_int64_t x3 :3;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} M22;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t imm20b :20;
|
|
u_int64_t x3 :3;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} M23;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv21 :21;
|
|
u_int64_t x4 :4;
|
|
u_int64_t x2 :2;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M24, M25;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t resv14 :14;
|
|
u_int64_t x4 :4;
|
|
u_int64_t x2 :2;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M26;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t resv14 :14;
|
|
u_int64_t x4 :4;
|
|
u_int64_t x2 :2;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M27;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv14 :14;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M28;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t ar3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M29;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t imm7b :7;
|
|
u_int64_t ar3 :7;
|
|
u_int64_t x4 :4;
|
|
u_int64_t x2 :2;
|
|
u_int64_t x3 :3;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} M30;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t ar3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M31;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t cr3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M32;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t cr3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M33;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t sof :7;
|
|
u_int64_t sol :7;
|
|
u_int64_t sor :4;
|
|
u_int64_t resv2 :2;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M34;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv7a :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t resv7b :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M35;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t resv14 :14;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M36;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t imm20a :20;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t x4 :4;
|
|
u_int64_t x2 :2;
|
|
u_int64_t x3 :3;
|
|
u_int64_t i :1;
|
|
u_int64_t op :4;
|
|
} M37;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M38;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t i2b :2;
|
|
u_int64_t resv5 :5;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M39;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t i2b :2;
|
|
u_int64_t resv5 :5;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M40;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv7a :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t resv7b :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M41;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t r2 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M42, M45;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t r3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} M43, M46;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t imm21a :21;
|
|
u_int64_t x4 :4;
|
|
u_int64_t i2d :2;
|
|
u_int64_t x3 :3;
|
|
u_int64_t i :1;
|
|
u_int64_t op :4;
|
|
} M44;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t btype :3;
|
|
u_int64_t resv3 :3;
|
|
u_int64_t p :1;
|
|
u_int64_t imm20b :20;
|
|
u_int64_t wh :2;
|
|
u_int64_t d :1;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} B1, B2;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t b1 :3;
|
|
u_int64_t resv3 :3;
|
|
u_int64_t p :1;
|
|
u_int64_t imm20b :20;
|
|
u_int64_t wh :2;
|
|
u_int64_t d :1;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} B3;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t btype :3;
|
|
u_int64_t resv3 :3;
|
|
u_int64_t p :1;
|
|
u_int64_t b2 :3;
|
|
u_int64_t resv11 :11;
|
|
u_int64_t x6 :6;
|
|
u_int64_t wh :2;
|
|
u_int64_t d :1;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} B4;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t b1 :3;
|
|
u_int64_t resv3 :3;
|
|
u_int64_t p :1;
|
|
u_int64_t b2 :3;
|
|
u_int64_t resv17 :17;
|
|
u_int64_t wh :2;
|
|
u_int64_t d :1;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} B5;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t wh :3;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t timm7a :7;
|
|
u_int64_t imm20b :20;
|
|
u_int64_t t2e :2;
|
|
u_int64_t ih :1;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} B6;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t wh :3;
|
|
u_int64_t resv1a :1;
|
|
u_int64_t timm7a :7;
|
|
u_int64_t b2 :3;
|
|
u_int64_t resv11 :11;
|
|
u_int64_t x6 :6;
|
|
u_int64_t t2e :2;
|
|
u_int64_t ih :1;
|
|
u_int64_t resv1b :1;
|
|
u_int64_t op :4;
|
|
} B7;
|
|
struct {
|
|
u_int64_t zero :6;
|
|
u_int64_t resv21 :21;
|
|
u_int64_t x6 :6;
|
|
u_int64_t resv4 :4;
|
|
u_int64_t op :4;
|
|
} B8;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t imm20a :20;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t x6 :6;
|
|
u_int64_t resv3 :3;
|
|
u_int64_t i :1;
|
|
u_int64_t op :4;
|
|
} B9;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t f2 :7;
|
|
u_int64_t f3 :7;
|
|
u_int64_t f4 :7;
|
|
u_int64_t sf :2;
|
|
u_int64_t x :1;
|
|
u_int64_t op :4;
|
|
} F1;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t f2 :7;
|
|
u_int64_t f3 :7;
|
|
u_int64_t f4 :7;
|
|
u_int64_t x2 :2;
|
|
u_int64_t x :1;
|
|
u_int64_t op :4;
|
|
} F2;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t f2 :7;
|
|
u_int64_t f3 :7;
|
|
u_int64_t f4 :7;
|
|
u_int64_t resv2 :2;
|
|
u_int64_t x :1;
|
|
u_int64_t op :4;
|
|
} F3;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t p1 :6;
|
|
u_int64_t ta :1;
|
|
u_int64_t f2 :7;
|
|
u_int64_t f3 :7;
|
|
u_int64_t p2 :6;
|
|
u_int64_t ra :1;
|
|
u_int64_t sf :2;
|
|
u_int64_t rb :1;
|
|
u_int64_t op :4;
|
|
} F4;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t p1 :6;
|
|
u_int64_t ta :1;
|
|
u_int64_t f2 :7;
|
|
u_int64_t fclass7c:7;
|
|
u_int64_t p2 :6;
|
|
u_int64_t fc2 :2;
|
|
u_int64_t resv2 :2;
|
|
u_int64_t op :4;
|
|
} F5;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t f2 :7;
|
|
u_int64_t f3 :7;
|
|
u_int64_t p2 :6;
|
|
u_int64_t x :1;
|
|
u_int64_t sf :2;
|
|
u_int64_t q :1;
|
|
u_int64_t op :4;
|
|
} F6;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t f3 :7;
|
|
u_int64_t p2 :6;
|
|
u_int64_t x :1;
|
|
u_int64_t sf :2;
|
|
u_int64_t q :1;
|
|
u_int64_t op :4;
|
|
} F7;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t f2 :7;
|
|
u_int64_t f3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x :1;
|
|
u_int64_t sf :2;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} F8;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t f2 :7;
|
|
u_int64_t f3 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x :1;
|
|
u_int64_t resv3 :3;
|
|
u_int64_t op :4;
|
|
} F9;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t f2 :7;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x :1;
|
|
u_int64_t sf :2;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} F10;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t f1 :7;
|
|
u_int64_t f2 :7;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x :1;
|
|
u_int64_t resv3 :2;
|
|
u_int64_t op :4;
|
|
} F11;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv7 :7;
|
|
u_int64_t amask7b :7;
|
|
u_int64_t omask7c :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x :1;
|
|
u_int64_t sf :2;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} F12;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t resv21 :7;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x :1;
|
|
u_int64_t sf :2;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t op :4;
|
|
} F13;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t imm20a :20;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x :1;
|
|
u_int64_t sf :2;
|
|
u_int64_t s :1;
|
|
u_int64_t op :4;
|
|
} F14;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t imm20a :20;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x :1;
|
|
u_int64_t resv2 :2;
|
|
u_int64_t i :1;
|
|
u_int64_t op :4;
|
|
} F15;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t imm20a :20;
|
|
u_int64_t resv1 :1;
|
|
u_int64_t x6 :6;
|
|
u_int64_t x3 :3;
|
|
u_int64_t i :1;
|
|
u_int64_t op :4;
|
|
} X1;
|
|
struct {
|
|
u_int64_t qp :6;
|
|
u_int64_t r1 :7;
|
|
u_int64_t imm7b :7;
|
|
u_int64_t vc :1;
|
|
u_int64_t ic :1;
|
|
u_int64_t imm5c :5;
|
|
u_int64_t imm9d :9;
|
|
u_int64_t i :1;
|
|
u_int64_t op :4;
|
|
} X2;
|
|
u_int64_t ins;
|
|
};
|
|
|
|
struct ia64_bundle {
|
|
u_int64_t slot[3];
|
|
int template;
|
|
};
|
|
|
|
extern void ia64_unpack_bundle(u_int64_t low, u_int64_t high,
|
|
struct ia64_bundle *bp);
|
|
extern void ia64_pack_bundle(u_int64_t *lowp, u_int64_t *highp,
|
|
const struct ia64_bundle *bp);
|
|
|
|
#endif /* _MACHINE_INST_H_ */
|