mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 04:10:10 +01:00
pco, pygen: isa main alu ops
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com> Acked-by: Frank Binns <frank.binns@imgtec.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258>
This commit is contained in:
parent
ba959bc992
commit
9fa96b6140
1 changed files with 722 additions and 0 deletions
|
|
@ -792,3 +792,725 @@ field_mappings=[
|
|||
('db1', 'db1_3bit_b2'),
|
||||
('d1', 'd1_11bit_b3'),
|
||||
], data=(3, 11, 3, 11))
|
||||
|
||||
# Main ALU ops.
|
||||
F_MAIN_OP = field_enum_type(
|
||||
name='main_op', num_bits=3,
|
||||
elems=[
|
||||
('fadd', 0b000),
|
||||
('fadd_lp', 0b001),
|
||||
('fmul', 0b010),
|
||||
('fmul_lp', 0b011),
|
||||
('sngl', 0b100),
|
||||
('int8_16', 0b101),
|
||||
('fmad_movc', 0b110),
|
||||
('int32_64_tst', 0b111),
|
||||
])
|
||||
|
||||
F_SNGL_OP = field_enum_type(
|
||||
name='sngl_op', num_bits=4,
|
||||
elems=[
|
||||
('rcp', 0b0000),
|
||||
('rsq', 0b0001),
|
||||
('log', 0b0010),
|
||||
('exp', 0b0011),
|
||||
('f16sop', 0b0100),
|
||||
('logcn', 0b0101),
|
||||
('gamma', 0b0110),
|
||||
('byp', 0b0111),
|
||||
('dsx', 0b1000),
|
||||
('dsy', 0b1001),
|
||||
('dsxf', 0b1010),
|
||||
('dsyf', 0b1011),
|
||||
('pck', 0b1100),
|
||||
('red', 0b1101),
|
||||
('sinc', 0b1110),
|
||||
('arctanc', 0b1111),
|
||||
])
|
||||
|
||||
F_RED_PART = field_enum_type(
|
||||
name='red_part', num_bits=1,
|
||||
elems=[
|
||||
('a', 0b0),
|
||||
('b', 0b1),
|
||||
])
|
||||
|
||||
F_RED_TYPE = field_enum_type(
|
||||
name='red_type', num_bits=1,
|
||||
elems=[
|
||||
('sin', 0b0),
|
||||
('cos', 0b1),
|
||||
])
|
||||
|
||||
F_GAMMA_OP = field_enum_type(
|
||||
name='gamma_op', num_bits=1,
|
||||
elems=[
|
||||
('cmp', 0b0),
|
||||
('exp', 0b1),
|
||||
])
|
||||
|
||||
F_PCK_FORMAT = field_enum_type(
|
||||
name='pck_format', num_bits=5,
|
||||
elems=[
|
||||
('u8888', 0b00000),
|
||||
('s8888', 0b00001),
|
||||
('o8888', 0b00010),
|
||||
('u1616', 0b00011),
|
||||
('s1616', 0b00100),
|
||||
('o1616', 0b00101),
|
||||
('u32', 0b00110),
|
||||
('s32', 0b00111),
|
||||
('u1010102', 0b01000),
|
||||
('s1010102', 0b01001),
|
||||
('u111110', 0b01010),
|
||||
('s111110', 0b01011),
|
||||
('f111110', 0b01100),
|
||||
('f16f16', 0b01110),
|
||||
('f32', 0b01111),
|
||||
('cov', 0b10000),
|
||||
('u565u565', 0b10001),
|
||||
('d24s8', 0b10010),
|
||||
('s8d24', 0b10011),
|
||||
('f32_mask', 0b10100),
|
||||
('2f10f10f10', 0b10101),
|
||||
('s8888ogl', 0b10110),
|
||||
('s1616ogl', 0b10111),
|
||||
('zero', 0b11110),
|
||||
('one', 0b11111),
|
||||
])
|
||||
|
||||
F_INT8_16_OP = field_enum_type(
|
||||
name='int8_16_op', num_bits=2,
|
||||
elems=[
|
||||
('add', 0b00),
|
||||
('mul', 0b01),
|
||||
('mad_0_1', 0b10),
|
||||
('mad_2_3', 0b11),
|
||||
])
|
||||
|
||||
F_INT8_16_FMT = field_enum_type(
|
||||
name='int8_16_fmt', num_bits=1,
|
||||
elems=[
|
||||
('8bit', 0b0),
|
||||
('16bit', 0b1),
|
||||
])
|
||||
|
||||
F_S2CH = field_enum_type(
|
||||
name='s2ch', num_bits=1,
|
||||
elems=[
|
||||
('elo', 0b0),
|
||||
('ehi', 0b1),
|
||||
])
|
||||
|
||||
F_S01CH = field_enum_type(
|
||||
name='s01ch', num_bits=2,
|
||||
elems=[
|
||||
('e0', 0b00),
|
||||
('e1', 0b01),
|
||||
('e2', 0b10),
|
||||
('e3', 0b11),
|
||||
])
|
||||
|
||||
F_MOVW01 = field_enum_type(
|
||||
name='movw01', num_bits=2,
|
||||
elems=[
|
||||
('ft0', 0b00),
|
||||
('ft1', 0b01),
|
||||
('ft2', 0b10),
|
||||
('fte', 0b11),
|
||||
])
|
||||
|
||||
F_MASKW0 = field_enum_type(
|
||||
name='maskw0', num_bits=4, is_bitset=True,
|
||||
elems=[
|
||||
('e0', 0b0001),
|
||||
('e1', 0b0010),
|
||||
('e2', 0b0100),
|
||||
('e3', 0b1000),
|
||||
('eall', 0b1111),
|
||||
])
|
||||
|
||||
F_INT32_64_OP = field_enum_type(
|
||||
name='int32_64_op', num_bits=2,
|
||||
elems=[
|
||||
('add6432', 0b00),
|
||||
('add64', 0b01),
|
||||
('madd32', 0b10),
|
||||
('madd64', 0b11),
|
||||
])
|
||||
|
||||
F_TST_OP = field_enum_type(
|
||||
name='tst_op', num_bits=4,
|
||||
elems=[
|
||||
('z', 0b0000),
|
||||
('gz', 0b0001),
|
||||
('gez', 0b0010),
|
||||
('c', 0b0011),
|
||||
('e', 0b0100),
|
||||
('g', 0b0101),
|
||||
('ge', 0b0110),
|
||||
('ne', 0b0111),
|
||||
('l', 0b1000),
|
||||
('le', 0b1001),
|
||||
])
|
||||
|
||||
F_TST_OP3 = field_enum_subtype(name='tst_op3', parent=F_TST_OP, num_bits=3)
|
||||
|
||||
F_TST_TYPE = field_enum_type(
|
||||
name='tst_type', num_bits=3,
|
||||
elems=[
|
||||
('f32', 0b000),
|
||||
('u16', 0b001),
|
||||
('s16', 0b010),
|
||||
('u8', 0b011),
|
||||
('s8', 0b100),
|
||||
('u32', 0b101),
|
||||
('s32', 0b110),
|
||||
])
|
||||
|
||||
I_MAIN = bit_set(
|
||||
name='main',
|
||||
pieces=[
|
||||
('main_op', (0, '7:5')),
|
||||
('ext0', (0, '4')),
|
||||
|
||||
# fadd/fadd.lp/fmul/fmul.lp
|
||||
('sat_fam', (0, '4')),
|
||||
('s0neg_fam', (0, '3')),
|
||||
('s0abs_fam', (0, '2')),
|
||||
('s1abs_fam', (0, '1')),
|
||||
('s0flr_fam', (0, '0')),
|
||||
|
||||
# sngl
|
||||
('sngl_op', (0, '3:0')),
|
||||
|
||||
## RED
|
||||
('red_part', (1, '7')),
|
||||
('iter', (1, '6:4')),
|
||||
('red_type', (1, '3')),
|
||||
('pwen_red', (1, '2')),
|
||||
|
||||
## Gamma
|
||||
('gammaop', (1, '2')),
|
||||
|
||||
## Common
|
||||
('s0neg_sngl', (1, '1')),
|
||||
('s0abs_sngl', (1, '0')),
|
||||
|
||||
## PCK/UPCK
|
||||
('upck_elem', (1, '7:6')),
|
||||
('scale_rtz', (1, '5')),
|
||||
|
||||
('prog', (1, '7')),
|
||||
('rtz', (1, '6')),
|
||||
('scale', (1, '5')),
|
||||
|
||||
('pck_format', (1, '4:0')),
|
||||
|
||||
# int8_16
|
||||
('int8_16_op', (0, '3:2')),
|
||||
('s_i816', (0, '1')),
|
||||
('f_i816', (0, '0')),
|
||||
|
||||
('s2ch', (1, '7')),
|
||||
('rsvd1_i816', (1, '6')),
|
||||
('s2neg_i816', (1, '5')),
|
||||
('s2abs_i816', (1, '4')),
|
||||
('s1abs_i816', (1, '3')),
|
||||
('s0neg_i816', (1, '2')),
|
||||
('s0abs_i816', (1, '1')),
|
||||
('sat_i816', (1, '0')),
|
||||
|
||||
('rsvd2_i816', (2, '7:4')),
|
||||
('s1ch', (2, '3:2')),
|
||||
('s0ch', (2, '1:0')),
|
||||
|
||||
# fmad
|
||||
('s0neg_fma', (0, '3')),
|
||||
('s0abs_fma', (0, '2')),
|
||||
('s2neg_fma', (0, '1')),
|
||||
('sat_fma', (0, '0')),
|
||||
|
||||
('rsvd1_fma', (1, '7:5')),
|
||||
('lp_fma', (1, '4')),
|
||||
('s1abs_fma', (1, '3')),
|
||||
('s1neg_fma', (1, '2')),
|
||||
('s2flr_fma', (1, '1')),
|
||||
('s2abs_fma', (1, '0')),
|
||||
|
||||
# int32_64
|
||||
('s_i3264', (0, '3')),
|
||||
('s2neg_i3264', (0, '2')),
|
||||
('int32_64_op', (0, '1:0')),
|
||||
|
||||
('rsvd1_i3264', (1, '7')),
|
||||
('cin_i3264', (1, '6')),
|
||||
('s1neg_i3264', (1, '5')),
|
||||
('s0neg_i3264', (1, '4')),
|
||||
('rsvd1_i3264_', (1, '3')),
|
||||
('s0abs_i3264', (1, '2')),
|
||||
('s1abs_i3264', (1, '1')),
|
||||
('s2abs_i3264', (1, '0')),
|
||||
|
||||
# movc
|
||||
('movw1', (0, '3:2')),
|
||||
('movw0', (0, '1:0')),
|
||||
|
||||
('rsvd1_movc', (1, '7:6')),
|
||||
('maskw0', (1, '5:2')),
|
||||
('aw', (1, '1')),
|
||||
('p2end_movc', (1, '0')),
|
||||
|
||||
# tst
|
||||
('tst_op_2_0', (0, '3:1')),
|
||||
('pwen_tst', (0, '0')),
|
||||
|
||||
('tst_type', (1, '7:5')),
|
||||
('p2end_tst', (1, '4')),
|
||||
('tst_elem', (1, '3:2')),
|
||||
('rsvd1_tst', (1, '1')),
|
||||
('tst_op_3', (1, '0')),
|
||||
],
|
||||
fields=[
|
||||
('main_op', (F_MAIN_OP, ['main_op'])),
|
||||
('ext0', (F_BOOL, ['ext0'])),
|
||||
|
||||
# fadd/fadd.lp/fmul/fmul.lp
|
||||
('sat_fam', (F_BOOL, ['sat_fam'])),
|
||||
('s0neg_fam', (F_BOOL, ['s0neg_fam'])),
|
||||
('s0abs_fam', (F_BOOL, ['s0abs_fam'])),
|
||||
('s1abs_fam', (F_BOOL, ['s1abs_fam'])),
|
||||
('s0flr_fam', (F_BOOL, ['s0flr_fam'])),
|
||||
|
||||
# sngl
|
||||
('sngl_op', (F_SNGL_OP, ['sngl_op'])),
|
||||
|
||||
('rsvd1_sngl', (F_UINT5, ['red_part', 'iter', 'red_type'], 0)),
|
||||
('rsvd1_sngl_', (F_UINT1, ['pwen_red'], 0)),
|
||||
|
||||
## RED
|
||||
('red_part', (F_RED_PART, ['red_part'])),
|
||||
('iter', (F_UINT3, ['iter'])),
|
||||
('red_type', (F_RED_TYPE, ['red_type'])),
|
||||
('pwen_red', (F_BOOL, ['pwen_red'])),
|
||||
|
||||
## Gamma
|
||||
('gammaop', (F_GAMMA_OP, ['gammaop'])),
|
||||
|
||||
## Common
|
||||
('s0neg_sngl', (F_BOOL, ['s0neg_sngl'])),
|
||||
('s0abs_sngl', (F_BOOL, ['s0abs_sngl'])),
|
||||
|
||||
## PCK/UPCK
|
||||
('upck_elem', (F_UINT2, ['upck_elem'])),
|
||||
('scale_rtz', (F_BOOL, ['scale_rtz'])),
|
||||
|
||||
('prog', (F_BOOL, ['prog'])),
|
||||
('rtz', (F_BOOL, ['rtz'])),
|
||||
('scale', (F_BOOL, ['scale'])),
|
||||
|
||||
('pck_format', (F_PCK_FORMAT, ['pck_format'])),
|
||||
|
||||
# int8_16
|
||||
('int8_16_op', (F_INT8_16_OP, ['int8_16_op'])),
|
||||
('s_i816', (F_BOOL, ['s_i816'])),
|
||||
('f_i816', (F_INT8_16_FMT, ['f_i816'])),
|
||||
|
||||
('s2ch', (F_S2CH, ['s2ch'])),
|
||||
('rsvd1_i816', (F_UINT1, ['rsvd1_i816'], 0)),
|
||||
('s2neg_i816', (F_BOOL, ['s2neg_i816'])),
|
||||
('s2abs_i816', (F_BOOL, ['s2abs_i816'])),
|
||||
('s1abs_i816', (F_BOOL, ['s1abs_i816'])),
|
||||
('s0neg_i816', (F_BOOL, ['s0neg_i816'])),
|
||||
('s0abs_i816', (F_BOOL, ['s0abs_i816'])),
|
||||
('sat_i816', (F_BOOL, ['sat_i816'])),
|
||||
|
||||
('rsvd2_i816', (F_UINT4, ['rsvd2_i816'], 0)),
|
||||
('s1ch', (F_S01CH, ['s1ch'])),
|
||||
('s0ch', (F_S01CH, ['s0ch'])),
|
||||
|
||||
# fmad
|
||||
('s0neg_fma', (F_BOOL, ['s0neg_fma'])),
|
||||
('s0abs_fma', (F_BOOL, ['s0abs_fma'])),
|
||||
('s2neg_fma', (F_BOOL, ['s2neg_fma'])),
|
||||
('sat_fma', (F_BOOL, ['sat_fma'])),
|
||||
|
||||
('rsvd1_fma', (F_UINT3, ['rsvd1_fma'], 0)),
|
||||
('lp_fma', (F_BOOL, ['lp_fma'])),
|
||||
('s1abs_fma', (F_BOOL, ['s1abs_fma'])),
|
||||
('s1neg_fma', (F_BOOL, ['s1neg_fma'])),
|
||||
('s2flr_fma', (F_BOOL, ['s2flr_fma'])),
|
||||
('s2abs_fma', (F_BOOL, ['s2abs_fma'])),
|
||||
|
||||
# int32_64
|
||||
('s_i3264', (F_BOOL, ['s_i3264'])),
|
||||
('s2neg_i3264', (F_BOOL, ['s2neg_i3264'])),
|
||||
('int32_64_op', (F_INT32_64_OP, ['int32_64_op'])),
|
||||
|
||||
('rsvd1_i3264', (F_UINT2, ['rsvd1_i3264_', 'rsvd1_i3264'], 0)),
|
||||
('cin_i3264', (F_BOOL, ['cin_i3264'])),
|
||||
('s1neg_i3264', (F_BOOL, ['s1neg_i3264'])),
|
||||
('s0neg_i3264', (F_BOOL, ['s0neg_i3264'])),
|
||||
('s0abs_i3264', (F_BOOL, ['s0abs_i3264'])),
|
||||
('s1abs_i3264', (F_BOOL, ['s1abs_i3264'])),
|
||||
('s2abs_i3264', (F_BOOL, ['s2abs_i3264'])),
|
||||
|
||||
# movc
|
||||
('movw1', (F_MOVW01, ['movw1'])),
|
||||
('movw0', (F_MOVW01, ['movw0'])),
|
||||
|
||||
('rsvd1_movc', (F_UINT2, ['rsvd1_movc'], 0)),
|
||||
('maskw0', (F_MASKW0, ['maskw0'])),
|
||||
('aw', (F_BOOL, ['aw'])),
|
||||
('p2end_movc', (F_BOOL, ['p2end_movc'])),
|
||||
|
||||
# tst
|
||||
('tst_op_3bit', (F_TST_OP3, ['tst_op_2_0'])),
|
||||
('pwen_tst', (F_BOOL, ['pwen_tst'])),
|
||||
|
||||
('tst_type', (F_TST_TYPE, ['tst_type'])),
|
||||
('p2end_tst', (F_BOOL, ['p2end_tst'])),
|
||||
('tst_elem', (F_UINT2, ['tst_elem'])),
|
||||
('rsvd1_tst', (F_UINT1, ['rsvd1_tst'], 0)),
|
||||
('tst_op_4bit', (F_TST_OP, ['tst_op_3', 'tst_op_2_0'])),
|
||||
])
|
||||
|
||||
I_FADD = bit_struct(
|
||||
name='fadd',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'fadd'),
|
||||
|
||||
('sat', 'sat_fam'),
|
||||
('s0neg', 's0neg_fam'),
|
||||
('s0abs', 's0abs_fam'),
|
||||
('s1abs', 's1abs_fam'),
|
||||
('s0flr', 's0flr_fam'),
|
||||
])
|
||||
|
||||
I_FADD_LP = bit_struct(
|
||||
name='fadd_lp',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'fadd_lp'),
|
||||
|
||||
('sat', 'sat_fam'),
|
||||
('s0neg', 's0neg_fam'),
|
||||
('s0abs', 's0abs_fam'),
|
||||
('s1abs', 's1abs_fam'),
|
||||
('s0flr', 's0flr_fam'),
|
||||
])
|
||||
|
||||
I_FMUL = bit_struct(
|
||||
name='fmul',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'fmul'),
|
||||
|
||||
('sat', 'sat_fam'),
|
||||
('s0neg', 's0neg_fam'),
|
||||
('s0abs', 's0abs_fam'),
|
||||
('s1abs', 's1abs_fam'),
|
||||
('s0flr', 's0flr_fam'),
|
||||
])
|
||||
|
||||
I_FMUL_LP = bit_struct(
|
||||
name='fmul_lp',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'fmul_lp'),
|
||||
|
||||
('sat', 'sat_fam'),
|
||||
('s0neg', 's0neg_fam'),
|
||||
('s0abs', 's0abs_fam'),
|
||||
('s1abs', 's1abs_fam'),
|
||||
('s0flr', 's0flr_fam'),
|
||||
])
|
||||
|
||||
# Covers FRCP, FRSQ, FLOG, FEXP, FLOGCN, BYP,
|
||||
# FDSX, FDSY, FDSXF, FDSYF, FSINC, FARCTANC
|
||||
I_SNGL = bit_struct(
|
||||
name='sngl',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'sngl'),
|
||||
('ext0', 'ext0', 0),
|
||||
('sngl_op', 'sngl_op'),
|
||||
])
|
||||
|
||||
I_SNGL_EXT = bit_struct(
|
||||
name='sngl_ext',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'sngl'),
|
||||
('ext0', 'ext0', 1),
|
||||
('sngl_op', 'sngl_op'),
|
||||
|
||||
('rsvd1', 'rsvd1_sngl'),
|
||||
('rsvd1_', 'rsvd1_sngl_'),
|
||||
('s0neg', 's0neg_sngl'),
|
||||
('s0abs', 's0abs_sngl'),
|
||||
])
|
||||
|
||||
# F16SOP
|
||||
# TODO
|
||||
|
||||
# GCMP
|
||||
I_GCMP = bit_struct(
|
||||
name='gcmp',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'sngl'),
|
||||
('ext0', 'ext0', 0),
|
||||
('sngl_op', 'sngl_op', 'gamma'),
|
||||
])
|
||||
|
||||
I_GCMP_EXT = bit_struct(
|
||||
name='gcmp_ext',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'sngl'),
|
||||
('ext0', 'ext0', 1),
|
||||
('sngl_op', 'sngl_op', 'gamma'),
|
||||
|
||||
('rsvd1', 'rsvd1_sngl'),
|
||||
('gammaop', 'gammaop', 'cmp'),
|
||||
('s0neg', 's0neg_sngl'),
|
||||
('s0abs', 's0abs_sngl'),
|
||||
])
|
||||
|
||||
# GEXP
|
||||
I_GEXP = bit_struct(
|
||||
name='gexp',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'sngl'),
|
||||
('ext0', 'ext0', 1),
|
||||
('sngl_op', 'sngl_op', 'gamma'),
|
||||
|
||||
('rsvd1', 'rsvd1_sngl'),
|
||||
('gammaop', 'gammaop', 'exp'),
|
||||
('s0neg', 's0neg_sngl'),
|
||||
('s0abs', 's0abs_sngl'),
|
||||
])
|
||||
|
||||
# PCK
|
||||
I_PCK = bit_struct(
|
||||
name='pck',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'sngl'),
|
||||
('ext0', 'ext0', 1),
|
||||
('sngl_op', 'sngl_op', 'pck'),
|
||||
|
||||
('prog', 'prog'),
|
||||
('rtz', 'rtz'),
|
||||
('scale', 'scale'),
|
||||
('pck_format', 'pck_format'),
|
||||
])
|
||||
|
||||
# UPCK
|
||||
I_UPCK = bit_struct(
|
||||
name='upck',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'sngl'),
|
||||
('ext0', 'ext0', 1),
|
||||
('sngl_op', 'sngl_op', 'pck'),
|
||||
|
||||
('elem', 'upck_elem'),
|
||||
('scale_rtz', 'scale_rtz'),
|
||||
('pck_format', 'pck_format'),
|
||||
])
|
||||
|
||||
# FRED
|
||||
I_FRED = bit_struct(
|
||||
name='fred',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'sngl'),
|
||||
('ext0', 'ext0', 1),
|
||||
('sngl_op', 'sngl_op', 'red'),
|
||||
|
||||
('red_part', 'red_part'),
|
||||
('iter', 'iter'),
|
||||
('red_type', 'red_type'),
|
||||
('pwen', 'pwen_red'),
|
||||
('s0neg', 's0neg_sngl'),
|
||||
('s0abs', 's0abs_sngl'),
|
||||
])
|
||||
|
||||
I_INT8_16 = bit_struct(
|
||||
name='int8_16',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'int8_16'),
|
||||
('ext0', 'ext0', 0),
|
||||
('int8_16_op', 'int8_16_op'),
|
||||
('s', 's_i816'),
|
||||
('f', 'f_i816'),
|
||||
])
|
||||
|
||||
I_INT8_16_EXT = bit_struct(
|
||||
name='int8_16_ext',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'int8_16'),
|
||||
('ext0', 'ext0', 1),
|
||||
('int8_16_op', 'int8_16_op'),
|
||||
('s', 's_i816'),
|
||||
('f', 'f_i816'),
|
||||
|
||||
('s2ch', 's2ch'),
|
||||
('rsvd1', 'rsvd1_i816'),
|
||||
('s2neg', 's2neg_i816'),
|
||||
('s2abs', 's2abs_i816'),
|
||||
('s1abs', 's1abs_i816'),
|
||||
('s0neg', 's0neg_i816'),
|
||||
('s0abs', 's0abs_i816'),
|
||||
('sat', 'sat_i816'),
|
||||
])
|
||||
|
||||
I_INT8_16_EXT_SEL = bit_struct(
|
||||
name='int8_16_ext_sel',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'int8_16'),
|
||||
('ext0', 'ext0', 1),
|
||||
('int8_16_op', 'int8_16_op'),
|
||||
('s', 's_i816'),
|
||||
('f', 'f_i816'),
|
||||
|
||||
('s2ch', 's2ch'),
|
||||
('rsvd1', 'rsvd1_i816'),
|
||||
('s2neg', 's2neg_i816'),
|
||||
('s2abs', 's2abs_i816'),
|
||||
('s1abs', 's1abs_i816'),
|
||||
('s0neg', 's0neg_i816'),
|
||||
('s0abs', 's0abs_i816'),
|
||||
('sat', 'sat_i816'),
|
||||
|
||||
('rsvd2', 'rsvd2_i816'),
|
||||
('s1ch', 's1ch'),
|
||||
('s0ch', 's0ch'),
|
||||
])
|
||||
|
||||
I_FMAD = bit_struct(
|
||||
name='fmad',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'fmad_movc'),
|
||||
('ext0', 'ext0', 0),
|
||||
|
||||
('s0neg', 's0neg_fma'),
|
||||
('s0abs', 's0abs_fma'),
|
||||
('s2neg', 's2neg_fma'),
|
||||
('sat', 'sat_fma'),
|
||||
])
|
||||
|
||||
I_FMAD_EXT = bit_struct(
|
||||
name='fmad_ext',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'fmad_movc'),
|
||||
('ext0', 'ext0', 1),
|
||||
|
||||
('s0neg', 's0neg_fma'),
|
||||
('s0abs', 's0abs_fma'),
|
||||
('s2neg', 's2neg_fma'),
|
||||
('sat', 'sat_fma'),
|
||||
|
||||
('rsvd1', 'rsvd1_fma'),
|
||||
('lp', 'lp_fma'),
|
||||
('s1abs', 's1abs_fma'),
|
||||
('s1neg', 's1neg_fma'),
|
||||
('s2flr', 's2flr_fma'),
|
||||
('s2abs', 's2abs_fma'),
|
||||
])
|
||||
|
||||
I_INT32_64 = bit_struct(
|
||||
name='int32_64',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'int32_64_tst'),
|
||||
('ext0', 'ext0', 0),
|
||||
|
||||
('s', 's_i3264'),
|
||||
('s2neg', 's2neg_i3264'),
|
||||
('int32_64_op', 'int32_64_op'),
|
||||
])
|
||||
|
||||
I_INT32_64_EXT = bit_struct(
|
||||
name='int32_64_ext',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'int32_64_tst'),
|
||||
('ext0', 'ext0', 1),
|
||||
|
||||
('s', 's_i3264'),
|
||||
('s2neg', 's2neg_i3264'),
|
||||
('int32_64_op', 'int32_64_op'),
|
||||
|
||||
('rsvd1', 'rsvd1_i3264'),
|
||||
|
||||
('cin', 'cin_i3264'),
|
||||
('s1neg', 's1neg_i3264'),
|
||||
('s0neg', 's0neg_i3264'),
|
||||
('s0abs', 's0abs_i3264'),
|
||||
('s1abs', 's1abs_i3264'),
|
||||
('s2abs', 's2abs_i3264'),
|
||||
])
|
||||
|
||||
I_MOVC = bit_struct(
|
||||
name='movc',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'fmad_movc'),
|
||||
('ext0', 'ext0', 0),
|
||||
|
||||
('movw1', 'movw1'),
|
||||
('movw0', 'movw0'),
|
||||
])
|
||||
|
||||
I_MOVC_EXT = bit_struct(
|
||||
name='movc_ext',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'fmad_movc'),
|
||||
('ext0', 'ext0', 1),
|
||||
|
||||
('movw1', 'movw1'),
|
||||
('movw0', 'movw0'),
|
||||
|
||||
('rsvd1', 'rsvd1_movc'),
|
||||
('maskw0', 'maskw0'),
|
||||
('aw', 'aw'),
|
||||
('p2end', 'p2end_movc'),
|
||||
])
|
||||
|
||||
I_TST = bit_struct(
|
||||
name='tst',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'int32_64_tst'),
|
||||
('ext0', 'ext0', 0),
|
||||
|
||||
('tst_op', 'tst_op_3bit'),
|
||||
('pwen', 'pwen_tst'),
|
||||
])
|
||||
|
||||
I_TST_EXT = bit_struct(
|
||||
name='tst_ext',
|
||||
bit_set=I_MAIN,
|
||||
field_mappings=[
|
||||
('main_op', 'main_op', 'int32_64_tst'),
|
||||
('ext0', 'ext0', 1),
|
||||
|
||||
('tst_op', 'tst_op_4bit'),
|
||||
('pwen', 'pwen_tst'),
|
||||
|
||||
('type', 'tst_type'),
|
||||
('p2end', 'p2end_tst'),
|
||||
('elem', 'tst_elem'),
|
||||
('rsvd1', 'rsvd1_tst'),
|
||||
])
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue