#![allow(dead_code, unused)]
use crate::aarch64::encoder::{SizeOp, SizeOpMap, SizeOpTable};
macro_rules! B {
($e: expr) => {
1 << $e
};
}
pub(crate) const SHIFT_OP_TO_LD_ST_OP_MAP: [u8; 16] = [
3, 255, 255, 255, 255, 255, 255, 255, 2, 255, 255, 255, 6, 7, 255, 255,
];
pub(crate) static SIZE_OP_TABLE: [SizeOpTable; 2] = [SizeOpTable::bin(), SizeOpTable::any()];
const TABLE_BIN: usize = 0;
const TABLE_ANY: usize = 1;
pub(crate) static SIZE_OP_MAP: [SizeOpMap; 23] = [
SizeOpMap {
table_id: TABLE_BIN as u8,
size_op_mask: SizeOp::K_Q,
accept_mask: (B!(SizeOp::K00) | B!(SizeOp::K00_Q)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K00) | B!(SizeOp::K00_Q) | B!(SizeOp::K01) | B!(SizeOp::K01_Q))
as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K00)
| B!(SizeOp::K00_Q)
| B!(SizeOp::K01)
| B!(SizeOp::K01_Q)
| B!(SizeOp::K10_Q)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K00)
| B!(SizeOp::K00_Q)
| B!(SizeOp::K01)
| B!(SizeOp::K01_Q)
| B!(SizeOp::K10)
| B!(SizeOp::K10_Q)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K00)
| B!(SizeOp::K00_Q)
| B!(SizeOp::K01)
| B!(SizeOp::K01_Q)
| B!(SizeOp::K10)
| B!(SizeOp::K10_Q)
| B!(SizeOp::K11_Q)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K01) | B!(SizeOp::K01_Q) | B!(SizeOp::K10) | B!(SizeOp::K10_Q))
as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_Q,
accept_mask: (B!(SizeOp::K10) | B!(SizeOp::K10_Q)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K00) | B!(SizeOp::K01)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K00) | B!(SizeOp::K01) | B!(SizeOp::K10)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_Q,
accept_mask: (B!(SizeOp::K00) | B!(SizeOp::K11_S)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K01) | B!(SizeOp::K10)) as u16,
},
SizeOpMap {
table_id: TABLE_BIN as u8,
size_op_mask: SizeOp::K_Q,
accept_mask: (B!(SizeOp::K00_Q)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K00_Q) | B!(SizeOp::K01_Q)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K00_Q) | B!(SizeOp::K01_Q) | B!(SizeOp::K10_Q)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K00_Q) | B!(SizeOp::K11_Q)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K01_Q) | B!(SizeOp::K10_Q)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: 0,
accept_mask: (B!(SizeOp::K10_Q)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: 0,
accept_mask: (B!(SizeOp::K11_Q)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K00)
| B!(SizeOp::K00_Q)
| B!(SizeOp::K00_S)
| B!(SizeOp::K01)
| B!(SizeOp::K01_Q)
| B!(SizeOp::K01_S)
| B!(SizeOp::K10)
| B!(SizeOp::K10_Q)
| B!(SizeOp::K10_S)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K00)
| B!(SizeOp::K00_S)
| B!(SizeOp::K01)
| B!(SizeOp::K01_S)
| B!(SizeOp::K10)
| B!(SizeOp::K10_S)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K01)
| B!(SizeOp::K01_Q)
| B!(SizeOp::K01_S)
| B!(SizeOp::K10)
| B!(SizeOp::K10_Q)
| B!(SizeOp::K10_S)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K00)
| B!(SizeOp::K00_Q)
| B!(SizeOp::K01)
| B!(SizeOp::K01_Q)
| B!(SizeOp::K10)
| B!(SizeOp::K10_Q)
| B!(SizeOp::K11_S)
| B!(SizeOp::K11_Q)) as u16,
},
SizeOpMap {
table_id: TABLE_ANY as u8,
size_op_mask: SizeOp::K_SZ_QS,
accept_mask: (B!(SizeOp::K00)
| B!(SizeOp::K00_Q)
| B!(SizeOp::K00_S)
| B!(SizeOp::K01)
| B!(SizeOp::K01_Q)
| B!(SizeOp::K01_S)
| B!(SizeOp::K10)
| B!(SizeOp::K10_Q)
| B!(SizeOp::K10_S)
| B!(SizeOp::K11)
| B!(SizeOp::K11_Q)
| B!(SizeOp::K11_S)) as u16,
},
];