1# Copyright © 2024 Imagination Technologies Ltd. 2# SPDX-License-Identifier: MIT 3 4from pco_pygen_common import * 5 6OP_PHASE = enum_type('op_phase', [ 7 ('0', 0, 'p0'), 8 ('ctrl', 0), 9 ('1', 1, 'p1'), 10 ('2_pck', 2, 'p2_pck'), 11 ('2', 2, 'p2'), 12 ('2_tst', 3, 'p2_tst'), 13 ('2_mov', 4, 'p2_mov'), 14 ('backend', 5), 15]) 16 17SR = enum_type('sr', [ 18 ('pixout0', 32), 19 ('pixout1', 33), 20 ('pixout2', 34), 21 ('pixout3', 35), 22 23 ('intl0', 36), 24 ('intl1', 37), 25 ('intl2', 38), 26 ('intl3', 39), 27 ('intl4', 40), 28 ('intl5', 41), 29 ('intl6', 42), 30 ('intl7', 43), 31 32 ('slot7', 36), 33 ('slot6', 37), 34 ('slot5', 38), 35 ('slot4', 39), 36 ('slot3', 40), 37 ('slot2', 41), 38 ('slot1', 42), 39 ('slot0', 43), 40 41 ('face_orient', 44), 42 ('back_face', 44), 43 ('cluster_num', 45), 44 ('output_part', 46), 45 ('task_id', 47), 46 ('slot_num', 48), 47 ('tile_x_pix', 49), 48 ('tile_y_pix', 50), 49 ('inst_num', 51), 50 ('dm_task_type', 52), 51 ('samp_num', 53), 52 53 ('tiled_ld_comp0', 54), 54 ('tiled_ld_comp1', 55), 55 ('tiled_ld_comp2', 56), 56 ('tiled_ld_comp3', 57), 57 58 ('tiled_st_comp0', 58), 59 ('tiled_st_comp1', 59), 60 ('tiled_st_comp2', 60), 61 ('tiled_st_comp3', 61), 62 63 ('batch_num', 62), 64 ('inst_valid', 63), 65 66 ('tile_xy', 96), 67 68 ('x_p', 97), 69 ('x_s', 98), 70 71 ('y_p', 100), 72 ('y_s', 101), 73 74 ('wg_id', 102), 75 76 ('sh_alloc_size', 103), 77 78 ('global0', 104), 79 ('global1', 105), 80 ('global2', 106), 81 ('global3', 107), 82 ('global4', 108), 83 ('global5', 109), 84 ('global6', 110), 85 ('global7', 111), 86 87 ('local_addr_inst_num', 112), 88 89 ('tile_x_p', 114), 90 ('tile_x_s', 115), 91 ('tile_y_p', 116), 92 ('tile_y_s', 117), 93 94 ('render_tgt_id', 118), 95 96 ('tiled_ld_comp4', 119), 97 ('tiled_ld_comp5', 120), 98 ('tiled_ld_comp6', 121), 99 ('tiled_ld_comp7', 122), 100 101 ('tiled_st_comp4', 123), 102 ('tiled_st_comp5', 124), 103 ('tiled_st_comp6', 125), 104 ('tiled_st_comp7', 126), 105 106 ('gpu_offset', 127), 107 108 ('timer_80ns', 160), 109 110 ('pixout4', 164), 111 ('pixout5', 165), 112 ('pixout6', 166), 113 ('pixout7', 167), 114]) 115 116# Common field types. 117 118## Basic types. 119F_BOOL = field_type('bool', BaseType.bool, 1) 120F_UINT1 = field_type('uint1', BaseType.uint, 1) 121F_UINT2 = field_type('uint2', BaseType.uint, 2) 122F_UINT3 = field_type('uint3', BaseType.uint, 3) 123F_UINT4 = field_type('uint4', BaseType.uint, 4) 124F_UINT5 = field_type('uint5', BaseType.uint, 5) 125F_UINT6 = field_type('uint6', BaseType.uint, 6) 126F_UINT7 = field_type('uint7', BaseType.uint, 7) 127F_UINT8 = field_type('uint8', BaseType.uint, 8) 128F_UINT11 = field_type('uint11', BaseType.uint, 11) 129F_UINT16 = field_type('uint16', BaseType.uint, 16) 130F_UINT32 = field_type('uint32', BaseType.uint, 32) 131 132## [1..4] -> [0..3] 133F_UINT2_POS_INC = field_type('uint2_pos_inc', BaseType.uint, 2, dec_bits=3, check='{0} >= 1 && {0} <= 4', encode='{} - 1') 134## [1..16] -> [1..15,0] 135F_UINT4_POS_WRAP = field_type('uint4_pos_wrap', BaseType.uint, 4, dec_bits=5, check='{0} >= 1 && {0} <= 16', encode='{} % 16') 136## 32-bit offset; lowest bit == 0b0. 137F_OFFSET31 = field_type('offset31', BaseType.uint, 31, dec_bits=32, check='!({} & 0b1)', encode='{} >> 1') 138## 8-bit value; lowest 2 bits == 0b00. 139F_UINT6MUL4 = field_type('uint6mul4', BaseType.uint, 6, dec_bits=8, check='!({} & 0b11)', encode='{} >> 2') 140 141# Instruction group header definitions. 142F_OPORG = field_enum_type( 143name='oporg', num_bits=3, 144elems=[ 145 ('p0', 0b000), 146 ('p2', 0b001), 147 ('be', 0b010), 148 ('p0_p1', 0b011), 149 ('p0_p2', 0b100), 150 ('p0_p1_p2', 0b101), 151 ('p0_p2_be', 0b110), 152 ('p0_p1_p2_be', 0b111), 153]) 154 155F_OPCNT = field_enum_type( 156name='opcnt', num_bits=3, 157elems=[ 158 ('p0', 0b001), 159 ('p1', 0b010), 160 ('p2', 0b100), 161], is_bitset=True) 162 163F_CC = field_enum_type( 164name='cc', num_bits=2, 165elems=[ 166 ('e1_zx', 0b00, ''), 167 ('e1_z1', 0b01, 'if(p0)'), 168 ('ex_zx', 0b10, '(ignorepe)'), 169 ('e1_z0', 0b11, 'if(!p0)'), 170]) 171 172F_CC1 = field_enum_subtype(name='cc1', parent=F_CC, num_bits=1) 173 174F_ALUTYPE = field_enum_type( 175name='alutype', num_bits=2, 176elems=[ 177 ('main', 0b00), 178 ('bitwise', 0b10), 179 ('control', 0b11), 180]) 181 182F_CTRLOP = field_enum_type( 183name='ctrlop', num_bits=4, 184elems=[ 185 ('b', 0b0000), 186 ('lapc', 0b0001), 187 ('savl', 0b0010), 188 ('cnd', 0b0011), 189 ('wop', 0b0100), 190 ('wdf', 0b0101), 191 ('mutex', 0b0110), 192 ('nop', 0b0111), 193 ('itrsmp', 0b1000), 194 ('sbo', 0b1011), 195 ('ditr', 0b1100), 196]) 197 198I_IGRP_HDR = bit_set( 199name='igrp_hdr', 200pieces=[ 201 ('da', (0, '7:4')), 202 ('length', (0, '3:0')), 203 ('ext', (1, '7')), 204 ('oporg', (1, '6:4')), 205 ('opcnt', (1, '6:4')), 206 ('olchk', (1, '3')), 207 ('w1p', (1, '2')), 208 ('w0p', (1, '1')), 209 ('cc', (1, '0')), 210 211 ('end', (2, '7')), 212 ('alutype', (2, '6:5')), 213 ('rsvd', (2, '4')), 214 ('atom', (2, '3')), 215 ('rpt', (2, '2:1')), 216 ('ccext', (2, '0')), 217 218 ('miscctl', (2, '7')), 219 ('ctrlop', (2, '4:1')), 220], 221fields=[ 222 ('da', (F_UINT4, ['da'])), 223 ('length', (F_UINT4_POS_WRAP, ['length'])), 224 ('ext', (F_BOOL, ['ext'])), 225 ('oporg', (F_OPORG, ['oporg'])), 226 ('opcnt', (F_OPCNT, ['opcnt'])), 227 ('olchk', (F_BOOL, ['olchk'])), 228 ('w1p', (F_BOOL, ['w1p'])), 229 ('w0p', (F_BOOL, ['w0p'])), 230 ('cc1', (F_CC1, ['cc'])), 231 232 ('end', (F_BOOL, ['end'])), 233 ('alutype', (F_ALUTYPE, ['alutype'])), 234 ('rsvd', (F_UINT1, ['rsvd'], 0)), 235 ('atom', (F_BOOL, ['atom'])), 236 ('rpt', (F_UINT2_POS_INC, ['rpt'])), 237 ('cc', (F_CC, ['ccext', 'cc'])), 238 239 ('miscctl', (F_UINT1, ['miscctl'])), 240 ('ctrlop', (F_CTRLOP, ['ctrlop'])), 241]) 242 243I_IGRP_HDR_MAIN_BRIEF = bit_struct( 244name='main_brief', 245bit_set=I_IGRP_HDR, 246field_mappings=[ 247 'da', 248 'length', 249 ('ext', 'ext', False), 250 'oporg', 251 'olchk', 252 'w1p', 253 'w0p', 254 ('cc', 'cc1'), 255]) 256 257I_IGRP_HDR_MAIN = bit_struct( 258name='main', 259bit_set=I_IGRP_HDR, 260field_mappings=[ 261 'da', 262 'length', 263 ('ext', 'ext', True), 264 'oporg', 265 'olchk', 266 'w1p', 267 'w0p', 268 'cc', 269 'end', 270 ('alutype', 'alutype', 'main'), 271 'rsvd', 272 'atom', 273 'rpt', 274]) 275 276I_IGRP_HDR_BITWISE = bit_struct( 277name='bitwise', 278bit_set=I_IGRP_HDR, 279field_mappings=[ 280 'da', 281 'length', 282 ('ext', 'ext', True), 283 'opcnt', 284 'olchk', 285 'w1p', 286 'w0p', 287 'cc', 288 'end', 289 ('alutype', 'alutype', 'bitwise'), 290 'rsvd', 291 'atom', 292 'rpt', 293]) 294 295I_IGRP_HDR_CONTROL = bit_struct( 296name='control', 297bit_set=I_IGRP_HDR, 298field_mappings=[ 299 'da', 300 'length', 301 ('ext', 'ext', True), 302 ('opcnt', 'opcnt', 0), 303 'olchk', 304 'w1p', 305 'w0p', 306 'cc', 307 'miscctl', 308 ('alutype', 'alutype', 'control'), 309 'ctrlop', 310]) 311 312# Upper/lower source definitions. 313F_IS0_SEL = field_enum_type( 314name='is0_sel', num_bits=3, 315elems=[ 316 ('s0', 0b000), 317 ('s3', 0b001), 318 ('s4', 0b010), 319 ('s5', 0b011), 320 ('s1', 0b100), 321 ('s2', 0b101), 322]) 323 324F_IS0_SEL2 = field_enum_subtype(name='is0_sel2', parent=F_IS0_SEL, num_bits=2) 325 326F_REGBANK = field_enum_type( 327name='regbank', num_bits=3, 328elems=[ 329 ('special', 0b000), 330 ('temp', 0b001), 331 ('vtxin', 0b010), 332 ('coeff', 0b011), 333 ('shared', 0b100), 334 ('coeff_alt', 0b101), 335 ('idx0', 0b110), 336 ('idx1', 0b111), 337]) 338 339F_IDXBANK = field_enum_type( 340name='idxbank', num_bits=3, 341elems=[ 342 ('temp', 0b000), 343 ('vtxin', 0b001), 344 ('coeff', 0b010), 345 ('shared', 0b011), 346 ('idx', 0b101), 347 ('coeff_alt', 0b110), 348 ('pixout', 0b111), 349]) 350 351F_REGBANK2 = field_enum_subtype(name='regbank2', parent=F_REGBANK, num_bits=2) 352F_REGBANK1 = field_enum_subtype(name='regbank1', parent=F_REGBANK, num_bits=1) 353 354I_SRC = bit_set( 355name='src', 356pieces=[ 357 ('ext0', (0, '7')), 358 ('sbA_0_b0', (0, '6')), 359 ('sA_5_0_b0', (0, '5:0')), 360 361 ('sel', (1, '7')), 362 ('ext1', (1, '6')), 363 364 ('mux_1_0_b1', (1, '5:4')), 365 ('sbA_2_1_b1', (1, '3:2')), 366 ('sA_7_6_b1', (1, '1:0')), 367 368 ('sbB_0_b1', (1, '5')), 369 ('sB_4_0_b1', (1, '4:0')), 370 371 ('rsvd2', (2, '7:3')), 372 ('sA_10_8_b2', (2, '2:0')), 373 374 ('ext2', (2, '7')), 375 ('mux_1_0_b2', (2, '6:5')), 376 ('sbA_1_b2', (2, '4')), 377 ('sbB_1_b2', (2, '3')), 378 ('sA_6_b2', (2, '2')), 379 ('sB_6_5_b2', (2, '1:0')), 380 381 ('sA_10_8_b3', (3, '7:5')), 382 ('mux_2_b3', (3, '4')), 383 ('sbA_2_b3', (3, '3')), 384 ('rsvd3', (3, '2')), 385 ('sA_7_b3', (3, '1')), 386 ('sB_7_b3', (3, '0')), 387 388 ('sbC_1_0_b3', (3, '7:6')), 389 ('sC_5_0_b3', (3, '5:0')), 390 391 ('sbC_2_b4', (4, '7')), 392 ('sC_7_6_b4', (4, '6:5')), 393 ('mux_2_b4', (4, '4')), 394 ('sbA_2_b4', (4, '3')), 395 ('ext4', (4, '2')), 396 ('sA_7_b4', (4, '1')), 397 ('sB_7_b4', (4, '0')), 398 399 ('rsvd5', (5, '7:6')), 400 ('sC_10_8_b5', (5, '5:3')), 401 ('sA_10_8_b5', (5, '2:0')), 402], 403fields=[ 404 ('ext0', (F_BOOL, ['ext0'])), 405 ('sbA_1bit_b0', (F_REGBANK1, ['sbA_0_b0'])), 406 ('sA_6bit_b0', (F_UINT6, ['sA_5_0_b0'])), 407 408 ('sel', (F_BOOL, ['sel'])), 409 ('ext1', (F_BOOL, ['ext1'])), 410 ('mux_2bit_b1', (F_IS0_SEL2, ['mux_1_0_b1'])), 411 ('sbA_3bit_b1', (F_REGBANK, ['sbA_2_1_b1', 'sbA_0_b0'])), 412 ('sA_11bit_b2', (F_UINT11, ['sA_10_8_b2', 'sA_7_6_b1', 'sA_5_0_b0'])), 413 ('rsvd2', (F_UINT5, ['rsvd2'], 0)), 414 415 ('sbB_1bit_b1', (F_REGBANK1, ['sbB_0_b1'])), 416 ('sB_5bit_b1', (F_UINT5, ['sB_4_0_b1'])), 417 418 ('ext2', (F_BOOL, ['ext2'])), 419 ('mux_2bit_b2', (F_IS0_SEL2, ['mux_1_0_b2'])), 420 ('sbA_2bit_b2', (F_REGBANK2, ['sbA_1_b2', 'sbA_0_b0'])), 421 ('sbB_2bit_b2', (F_REGBANK2, ['sbB_1_b2', 'sbB_0_b1'])), 422 ('sA_7bit_b2', (F_UINT7, ['sA_6_b2', 'sA_5_0_b0'])), 423 ('sB_7bit_b2', (F_UINT7, ['sB_6_5_b2', 'sB_4_0_b1'])), 424 425 ('sA_11bit_b3', (F_UINT11, ['sA_10_8_b3', 'sA_7_b3', 'sA_6_b2', 'sA_5_0_b0'])), 426 ('mux_3bit_b3', (F_IS0_SEL, ['mux_2_b3', 'mux_1_0_b2'])), 427 ('sbA_3bit_b3', (F_REGBANK, ['sbA_2_b3', 'sbA_1_b2', 'sbA_0_b0'])), 428 ('rsvd3', (F_UINT1, ['rsvd3'], 0)), 429 ('sB_8bit_b3', (F_UINT8, ['sB_7_b3', 'sB_6_5_b2', 'sB_4_0_b1'])), 430 431 ('sbC_2bit_b3', (F_REGBANK2, ['sbC_1_0_b3'])), 432 ('sC_6bit_b3', (F_UINT6, ['sC_5_0_b3'])), 433 434 ('rsvd4', (F_UINT1, ['sbC_2_b4'], 0)), 435 ('sbC_3bit_b4', (F_REGBANK, ['sbC_2_b4', 'sbC_1_0_b3'])), 436 ('sC_8bit_b4', (F_UINT8, ['sC_7_6_b4', 'sC_5_0_b3'])), 437 ('mux_3bit_b4', (F_IS0_SEL, ['mux_2_b4', 'mux_1_0_b2'])), 438 ('sbA_3bit_b4', (F_REGBANK, ['sbA_2_b4', 'sbA_1_b2', 'sbA_0_b0'])), 439 ('ext4', (F_BOOL, ['ext4'])), 440 ('sA_8bit_b4', (F_UINT8, ['sA_7_b4', 'sA_6_b2', 'sA_5_0_b0'])), 441 ('sB_8bit_b4', (F_UINT8, ['sB_7_b4', 'sB_6_5_b2', 'sB_4_0_b1'])), 442 443 ('rsvd5', (F_UINT2, ['rsvd5'], 0)), 444 ('rsvd5_', (F_UINT3, ['sC_10_8_b5'], 0)), 445 ('sC_11bit_b5', (F_UINT11, ['sC_10_8_b5', 'sC_7_6_b4', 'sC_5_0_b3'])), 446 ('sA_11bit_b5', (F_UINT11, ['sA_10_8_b5', 'sA_7_b4', 'sA_6_b2', 'sA_5_0_b0'])), 447]) 448 449class SrcSpec(object): 450 def __init__(self, is_upper, sbA_bits, sA_bits, sbB_bits, sB_bits, sbC_bits, sC_bits, mux_bits): 451 self.is_upper = is_upper 452 self.sbA_bits = sbA_bits 453 self.sA_bits = sA_bits 454 self.sbB_bits = sbB_bits 455 self.sB_bits = sB_bits 456 self.sbC_bits = sbC_bits 457 self.sC_bits = sC_bits 458 self.mux_bits = mux_bits 459 460# Lower sources. 461I_ONE_LO_1B6I = bit_struct( 462name='1lo_1b6i', 463bit_set=I_SRC, 464field_mappings=[ 465 ('ext0', 'ext0', 0), 466 467 ('sb0', 'sbA_1bit_b0'), 468 ('s0', 'sA_6bit_b0'), 469], data=SrcSpec(False, 1, 6, -1, -1, -1, -1, -1)) 470 471I_ONE_LO_3B11I_2M = bit_struct( 472name='1lo_3b11i_2m', 473bit_set=I_SRC, 474field_mappings=[ 475 ('ext0', 'ext0', 1), 476 ('sel', 'sel', 0), 477 ('ext1', 'ext1', 0), 478 ('rsvd2', 'rsvd2'), 479 480 ('sb0', 'sbA_3bit_b1'), 481 ('s0', 'sA_11bit_b2'), 482 ('is0', 'mux_2bit_b1'), 483], data=SrcSpec(False, 3, 11, -1, -1, -1, -1, 2)) 484 485I_TWO_LO_1B6I_1B5I = bit_struct( 486name='2lo_1b6i_1b5i', 487bit_set=I_SRC, 488field_mappings=[ 489 ('ext0', 'ext0', 1), 490 ('sel', 'sel', 1), 491 ('ext1', 'ext1', 0), 492 493 ('sb0', 'sbA_1bit_b0'), 494 ('s0', 'sA_6bit_b0'), 495 ('sb1', 'sbB_1bit_b1'), 496 ('s1', 'sB_5bit_b1'), 497], data=SrcSpec(False, 1, 6, 1, 5, -1, -1, -1)) 498 499I_TWO_LO_2B7I_2B7I_2M = bit_struct( 500name='2lo_2b7i_2b7i_2m', 501bit_set=I_SRC, 502field_mappings=[ 503 ('ext0', 'ext0', 1), 504 ('sel', 'sel', 1), 505 ('ext1', 'ext1', 1), 506 ('ext2', 'ext2', 0), 507 508 ('sb0', 'sbA_2bit_b2'), 509 ('s0', 'sA_7bit_b2'), 510 ('sb1', 'sbB_2bit_b2'), 511 ('s1', 'sB_7bit_b2'), 512 ('is0', 'mux_2bit_b2'), 513], data=SrcSpec(False, 2, 7, 2, 7, -1, -1, 2)) 514 515I_TWO_LO_3B11I_2B8I_3M = bit_struct( 516name='2lo_3b11i_2b8i_3m', 517bit_set=I_SRC, 518field_mappings=[ 519 ('ext0', 'ext0', 1), 520 ('sel', 'sel', 1), 521 ('ext1', 'ext1', 1), 522 ('ext2', 'ext2', 1), 523 ('rsvd3', 'rsvd3'), 524 525 ('sb0', 'sbA_3bit_b3'), 526 ('s0', 'sA_11bit_b3'), 527 ('sb1', 'sbB_2bit_b2'), 528 ('s1', 'sB_8bit_b3'), 529 ('is0', 'mux_3bit_b3'), 530], data=SrcSpec(False, 3, 11, 2, 8, -1, -1, 3)) 531 532I_THREE_LO_2B7I_2B7I_2B6I_2M = bit_struct( 533name='3lo_2b7i_2b7i_2b6i_2m', 534bit_set=I_SRC, 535field_mappings=[ 536 ('ext0', 'ext0', 1), 537 ('sel', 'sel', 0), 538 ('ext1', 'ext1', 1), 539 ('ext2', 'ext2', 0), 540 541 ('sb0', 'sbA_2bit_b2'), 542 ('s0', 'sA_7bit_b2'), 543 ('sb1', 'sbB_2bit_b2'), 544 ('s1', 'sB_7bit_b2'), 545 ('sb2', 'sbC_2bit_b3'), 546 ('s2', 'sC_6bit_b3'), 547 ('is0', 'mux_2bit_b2'), 548], data=SrcSpec(False, 2, 7, 2, 7, 2, 6, 2)) 549 550I_THREE_LO_3B8I_2B8I_3B8I_3M = bit_struct( 551name='3lo_3b8i_2b8i_3b8i_3m', 552bit_set=I_SRC, 553field_mappings=[ 554 ('ext0', 'ext0', 1), 555 ('sel', 'sel', 0), 556 ('ext1', 'ext1', 1), 557 ('ext2', 'ext2', 1), 558 ('ext4', 'ext4', 0), 559 560 ('sb0', 'sbA_3bit_b4'), 561 ('s0', 'sA_8bit_b4'), 562 ('sb1', 'sbB_2bit_b2'), 563 ('s1', 'sB_8bit_b4'), 564 ('sb2', 'sbC_3bit_b4'), 565 ('s2', 'sC_8bit_b4'), 566 ('is0', 'mux_3bit_b4'), 567], data=SrcSpec(False, 3, 8, 2, 8, 3, 8, 3)) 568 569I_THREE_LO_3B11I_2B8I_3B11I_3M = bit_struct( 570name='3lo_3b11i_2b8i_3b11i_3m', 571bit_set=I_SRC, 572field_mappings=[ 573 ('ext0', 'ext0', 1), 574 ('sel', 'sel', 0), 575 ('ext1', 'ext1', 1), 576 ('ext2', 'ext2', 1), 577 ('ext4', 'ext4', 1), 578 ('rsvd5', 'rsvd5'), 579 580 ('sb0', 'sbA_3bit_b4'), 581 ('s0', 'sA_11bit_b5'), 582 ('sb1', 'sbB_2bit_b2'), 583 ('s1', 'sB_8bit_b4'), 584 ('sb2', 'sbC_3bit_b4'), 585 ('s2', 'sC_11bit_b5'), 586 ('is0', 'mux_3bit_b4'), 587], data=SrcSpec(False, 3, 11, 2, 8, 3, 11, 3)) 588 589# Upper sources. 590I_ONE_UP_1B6I = bit_struct( 591name='1up_1b6i', 592bit_set=I_SRC, 593field_mappings=[ 594 ('ext0', 'ext0', 0), 595 596 ('sb3', 'sbA_1bit_b0'), 597 ('s3', 'sA_6bit_b0'), 598], data=SrcSpec(True, 1, 6, -1, -1, -1, -1, -1)) 599 600I_ONE_UP_3B11I = bit_struct( 601name='1up_3b11i', 602bit_set=I_SRC, 603field_mappings=[ 604 ('ext0', 'ext0', 1), 605 ('sel', 'sel', 0), 606 ('ext1', 'ext1', 0), 607 ('rsvd1', 'mux_2bit_b1', 0), 608 ('rsvd2', 'rsvd2'), 609 610 ('sb3', 'sbA_3bit_b1'), 611 ('s3', 'sA_11bit_b2'), 612], data=SrcSpec(True, 3, 11, -1, -1, -1, -1, -1)) 613 614I_TWO_UP_1B6I_1B5I = bit_struct( 615name='2up_1b6i_1b5i', 616bit_set=I_SRC, 617field_mappings=[ 618 ('ext0', 'ext0', 1), 619 ('sel', 'sel', 1), 620 ('ext1', 'ext1', 0), 621 622 ('sb3', 'sbA_1bit_b0'), 623 ('s3', 'sA_6bit_b0'), 624 ('sb4', 'sbB_1bit_b1'), 625 ('s4', 'sB_5bit_b1'), 626], data=SrcSpec(True, 1, 6, 1, 5, -1, -1, -1)) 627 628I_TWO_UP_2B7I_2B7I = bit_struct( 629name='2up_2b7i_2b7i', 630bit_set=I_SRC, 631field_mappings=[ 632 ('ext0', 'ext0', 1), 633 ('sel', 'sel', 1), 634 ('ext1', 'ext1', 1), 635 ('ext2', 'ext2', 0), 636 ('rsvd2', 'mux_2bit_b2', 0), 637 638 ('sb3', 'sbA_2bit_b2'), 639 ('s3', 'sA_7bit_b2'), 640 ('sb4', 'sbB_2bit_b2'), 641 ('s4', 'sB_7bit_b2'), 642], data=SrcSpec(True, 2, 7, 2, 7, -1, -1, -1)) 643 644I_TWO_UP_3B11I_2B8I = bit_struct( 645name='2up_3b11i_2b8i', 646bit_set=I_SRC, 647field_mappings=[ 648 ('ext0', 'ext0', 1), 649 ('sel', 'sel', 1), 650 ('ext1', 'ext1', 1), 651 ('ext2', 'ext2', 1), 652 ('rsvd3', 'rsvd3'), 653 ('rsvd3_', 'mux_3bit_b3', 0), 654 655 ('sb3', 'sbA_3bit_b3'), 656 ('s3', 'sA_11bit_b3'), 657 ('sb4', 'sbB_2bit_b2'), 658 ('s4', 'sB_8bit_b3'), 659], data=SrcSpec(True, 3, 11, 2, 8, -1, -1, -1)) 660 661I_THREE_UP_2B7I_2B7I_2B6I = bit_struct( 662name='3up_2b7i_2b7i_2b6i', 663bit_set=I_SRC, 664field_mappings=[ 665 ('ext0', 'ext0', 1), 666 ('sel', 'sel', 0), 667 ('ext1', 'ext1', 1), 668 ('ext2', 'ext2', 0), 669 ('rsvd2', 'mux_2bit_b2', 0), 670 671 ('sb3', 'sbA_2bit_b2'), 672 ('s3', 'sA_7bit_b2'), 673 ('sb4', 'sbB_2bit_b2'), 674 ('s4', 'sB_7bit_b2'), 675 ('sb5', 'sbC_2bit_b3'), 676 ('s5', 'sC_6bit_b3'), 677], data=SrcSpec(True, 2, 7, 2, 7, 2, 6, -1)) 678 679I_THREE_UP_3B8I_2B8I_2B8I = bit_struct( 680name='3up_3b8i_2b8i_2b8i', 681bit_set=I_SRC, 682field_mappings=[ 683 ('ext0', 'ext0', 1), 684 ('sel', 'sel', 0), 685 ('ext1', 'ext1', 1), 686 ('ext2', 'ext2', 1), 687 ('ext4', 'ext4', 0), 688 ('rsvd4', 'mux_3bit_b4', 0), 689 ('rsvd4_', 'rsvd4'), 690 691 ('sb3', 'sbA_3bit_b4'), 692 ('s3', 'sA_8bit_b4'), 693 ('sb4', 'sbB_2bit_b2'), 694 ('s4', 'sB_8bit_b4'), 695 ('sb5', 'sbC_2bit_b3'), 696 ('s5', 'sC_8bit_b4'), 697], data=SrcSpec(True, 3, 8, 2, 8, 2, 8, -1)) 698 699I_THREE_UP_3B11I_2B8I_2B8I = bit_struct( 700name='3up_3b11i_2b8i_2b8i', 701bit_set=I_SRC, 702field_mappings=[ 703 ('ext0', 'ext0', 1), 704 ('sel', 'sel', 0), 705 ('ext1', 'ext1', 1), 706 ('ext2', 'ext2', 1), 707 ('ext4', 'ext4', 1), 708 ('rsvd4', 'mux_3bit_b4', 0), 709 ('rsvd4_', 'rsvd4'), 710 ('rsvd5', 'rsvd5'), 711 ('rsvd5_', 'rsvd5_'), 712 713 ('sb3', 'sbA_3bit_b4'), 714 ('s3', 'sA_11bit_b5'), 715 ('sb4', 'sbB_2bit_b2'), 716 ('s4', 'sB_8bit_b4'), 717 ('sb5', 'sbC_2bit_b3'), 718 ('s5', 'sC_8bit_b4'), 719], data=SrcSpec(True, 3, 11, 2, 8, 2, 8, -1)) 720 721# Internal source selector definitions. 722F_IS5_SEL = field_enum_type( 723name='is5_sel', num_bits=2, 724elems=[ 725 ('ft0', 0b00), 726 ('ft1', 0b01), 727 ('ft2', 0b10), 728 ('fte', 0b11), 729]) 730 731F_IS4_SEL = field_enum_type( 732name='is4_sel', num_bits=2, 733elems=[ 734 ('ft0', 0b00), 735 ('ft1', 0b01), 736 ('ft2', 0b10), 737 ('fte', 0b11), 738]) 739 740F_IS3_SEL = field_enum_type( 741name='is3_sel', num_bits=2, 742elems=[ 743 ('ft0', 0b00), 744 ('ft1', 0b01), 745 ('fte', 0b11), 746]) 747 748F_IS2_SEL = field_enum_type( 749name='is2_sel', num_bits=1, 750elems=[ 751 ('ft1', 0b0), 752 ('fte', 0b1), 753]) 754 755F_IS1_SEL = field_enum_type( 756name='is1_sel', num_bits=1, 757elems=[ 758 ('ft0', 0b0), 759 ('fte', 0b1), 760]) 761 762I__ISS = bit_set( 763name='iss', 764pieces=[ 765 ('is5', (0, '7:6')), 766 ('is4', (0, '5:4')), 767 ('is3', (0, '3:2')), 768 ('is2', (0, '1')), 769 ('is1', (0, '0')), 770], 771fields=[ 772 ('is5', (F_IS5_SEL, ['is5'])), 773 ('is4', (F_IS4_SEL, ['is4'])), 774 ('is3', (F_IS3_SEL, ['is3'])), 775 ('is2', (F_IS2_SEL, ['is2'])), 776 ('is1', (F_IS1_SEL, ['is1'])), 777]) 778 779I_ISS = bit_struct( 780name='iss', 781bit_set=I__ISS, 782field_mappings=[ 783 ('is5', 'is5'), 784 ('is4', 'is4'), 785 ('is3', 'is3'), 786 ('is2', 'is2'), 787 ('is1', 'is1'), 788]) 789 790# Destination definitions. 791I_DST = bit_set( 792name='dst', 793pieces=[ 794 ('ext0', (0, '7')), 795 ('dbN_0_b0', (0, '6')), 796 ('dN_5_0_b0', (0, '5:0')), 797 798 ('rsvd1', (1, '7')), 799 ('dN_10_8_b1', (1, '6:4')), 800 ('dbN_2_1_b1', (1, '3:2')), 801 ('dN_7_6_b1', (1, '1:0')), 802 803 ('db0_0_b0', (0, '7')), 804 ('d0_6_0_b0', (0, '6:0')), 805 806 ('ext1', (1, '7')), 807 ('db1_0_b1', (1, '6')), 808 ('d1_5_0_b1', (1, '5:0')), 809 810 ('ext2', (2, '7')), 811 ('db1_2_1_b2', (2, '6:5')), 812 ('d1_7_6_b2', (2, '4:3')), 813 ('db0_2_1_b2', (2, '2:1')), 814 ('d0_7_b2', (2, '0')), 815 816 ('rsvd3', (3, '7:6')), 817 ('d1_10_8_b3', (3, '5:3')), 818 ('d0_10_8_b3', (3, '2:0')), 819], 820fields=[ 821 ('ext0', (F_BOOL, ['ext0'])), 822 ('dbN_1bit_b0', (F_REGBANK1, ['dbN_0_b0'])), 823 ('dN_6bit_b0', (F_UINT6, ['dN_5_0_b0'])), 824 825 ('rsvd1', (F_UINT1, ['rsvd1'], 0)), 826 ('dbN_3bit_b1', (F_REGBANK, ['dbN_2_1_b1', 'dbN_0_b0'])), 827 ('dN_11bit_b1', (F_UINT11, ['dN_10_8_b1', 'dN_7_6_b1', 'dN_5_0_b0'])), 828 829 ('db0_1bit_b0', (F_REGBANK1, ['db0_0_b0'])), 830 ('d0_7bit_b0', (F_UINT7, ['d0_6_0_b0'])), 831 832 ('ext1', (F_BOOL, ['ext1'])), 833 ('db1_1bit_b1', (F_REGBANK1, ['db1_0_b1'])), 834 ('d1_6bit_b1', (F_UINT6, ['d1_5_0_b1'])), 835 836 ('ext2', (F_BOOL, ['ext2'])), 837 ('db0_3bit_b2', (F_REGBANK, ['db0_2_1_b2', 'db0_0_b0'])), 838 ('d0_8bit_b2', (F_UINT8, ['d0_7_b2', 'd0_6_0_b0'])), 839 ('db1_3bit_b2', (F_REGBANK, ['db1_2_1_b2', 'db1_0_b1'])), 840 ('d1_8bit_b2', (F_UINT8, ['d1_7_6_b2', 'd1_5_0_b1'])), 841 842 ('rsvd3', (F_UINT2, ['rsvd3'], 0)), 843 ('d0_11bit_b3', (F_UINT11, ['d0_10_8_b3', 'd0_7_b2', 'd0_6_0_b0'])), 844 ('d1_11bit_b3', (F_UINT11, ['d1_10_8_b3', 'd1_7_6_b2', 'd1_5_0_b1'])), 845]) 846 847class DstSpec(object): 848 def __init__(self, dual_dsts, db0_bits, d0_bits, db1_bits, d1_bits): 849 self.dual_dsts = dual_dsts 850 self.db0_bits = db0_bits 851 self.d0_bits = d0_bits 852 self.db1_bits = db1_bits 853 self.d1_bits = d1_bits 854 855I_ONE_1B6I = bit_struct( 856name='1_1b6i', 857bit_set=I_DST, 858field_mappings=[ 859 ('ext0', 'ext0', 0), 860 861 ('dbN', 'dbN_1bit_b0'), 862 ('dN', 'dN_6bit_b0'), 863], data=DstSpec(False, 1, 6, -1, -1)) 864 865I_ONE_3B11I = bit_struct( 866name='1_3b11i', 867bit_set=I_DST, 868field_mappings=[ 869 ('ext0', 'ext0', 1), 870 ('rsvd1', 'rsvd1'), 871 872 ('dbN', 'dbN_3bit_b1'), 873 ('dN', 'dN_11bit_b1'), 874], data=DstSpec(False, 3, 11, -1, -1)) 875 876I_TWO_1B7I_1B6I = bit_struct( 877name='2_1b7i_1b6i', 878bit_set=I_DST, 879field_mappings=[ 880 ('ext1', 'ext1', 0), 881 882 ('db0', 'db0_1bit_b0'), 883 ('d0', 'd0_7bit_b0'), 884 ('db1', 'db1_1bit_b1'), 885 ('d1', 'd1_6bit_b1'), 886], data=DstSpec(True, 1, 7, 1, 6)) 887 888I_TWO_3B8I_3B8I = bit_struct( 889name='2_3b8i_3b8i', 890bit_set=I_DST, 891field_mappings=[ 892 ('ext1', 'ext1', 1), 893 ('ext2', 'ext2', 0), 894 895 ('db0', 'db0_3bit_b2'), 896 ('d0', 'd0_8bit_b2'), 897 ('db1', 'db1_3bit_b2'), 898 ('d1', 'd1_8bit_b2'), 899], data=DstSpec(True, 3, 8, 3, 8)) 900 901I_TWO_3B11I_3B11I = bit_struct( 902name='2_3b11i_3b11i', 903bit_set=I_DST, 904field_mappings=[ 905 ('ext1', 'ext1', 1), 906 ('ext2', 'ext2', 1), 907 ('rsvd3', 'rsvd3'), 908 909 ('db0', 'db0_3bit_b2'), 910 ('d0', 'd0_11bit_b3'), 911 ('db1', 'db1_3bit_b2'), 912 ('d1', 'd1_11bit_b3'), 913], data=DstSpec(True, 3, 11, 3, 11)) 914 915# Main ALU ops. 916F_MAIN_OP = field_enum_type( 917name='main_op', num_bits=3, 918elems=[ 919 ('fadd', 0b000), 920 ('fadd_lp', 0b001), 921 ('fmul', 0b010), 922 ('fmul_lp', 0b011), 923 ('sngl', 0b100), 924 ('int8_16', 0b101), 925 ('fmad_movc', 0b110), 926 ('int32_64_tst', 0b111), 927]) 928 929F_SNGL_OP = field_enum_type( 930name='sngl_op', num_bits=4, 931elems=[ 932 ('rcp', 0b0000), 933 ('rsq', 0b0001), 934 ('log', 0b0010), 935 ('exp', 0b0011), 936 ('f16sop', 0b0100), 937 ('logcn', 0b0101), 938 ('gamma', 0b0110), 939 ('byp', 0b0111), 940 ('dsx', 0b1000), 941 ('dsy', 0b1001), 942 ('dsxf', 0b1010), 943 ('dsyf', 0b1011), 944 ('pck', 0b1100), 945 ('red', 0b1101), 946 ('sinc', 0b1110), 947 ('arctanc', 0b1111), 948]) 949 950F_RED_PART = field_enum_type( 951name='red_part', num_bits=1, 952elems=[ 953 ('a', 0b0), 954 ('b', 0b1), 955]) 956 957F_RED_TYPE = field_enum_type( 958name='red_type', num_bits=1, 959elems=[ 960 ('sin', 0b0), 961 ('cos', 0b1), 962]) 963 964F_GAMMA_OP = field_enum_type( 965name='gamma_op', num_bits=1, 966elems=[ 967 ('cmp', 0b0), 968 ('exp', 0b1), 969]) 970 971F_PCK_FORMAT = field_enum_type( 972name='pck_format', num_bits=5, 973elems=[ 974 ('u8888', 0b00000), 975 ('s8888', 0b00001), 976 ('o8888', 0b00010), 977 ('u1616', 0b00011), 978 ('s1616', 0b00100), 979 ('o1616', 0b00101), 980 ('u32', 0b00110), 981 ('s32', 0b00111), 982 ('u1010102', 0b01000), 983 ('s1010102', 0b01001), 984 ('u111110', 0b01010), 985 ('s111110', 0b01011), 986 ('f111110', 0b01100), 987 ('f16f16', 0b01110), 988 ('f32', 0b01111), 989 ('cov', 0b10000), 990 ('u565u565', 0b10001), 991 ('d24s8', 0b10010), 992 ('s8d24', 0b10011), 993 ('f32_mask', 0b10100), 994 ('2f10f10f10', 0b10101), 995 ('s8888ogl', 0b10110), 996 ('s1616ogl', 0b10111), 997 ('zero', 0b11110), 998 ('one', 0b11111), 999]) 1000 1001F_INT8_16_OP = field_enum_type( 1002name='int8_16_op', num_bits=2, 1003elems=[ 1004 ('add', 0b00), 1005 ('mul', 0b01), 1006 ('mad_0_1', 0b10), 1007 ('mad_2_3', 0b11), 1008]) 1009 1010F_INT8_16_FMT = field_enum_type( 1011name='int8_16_fmt', num_bits=1, 1012elems=[ 1013 ('8bit', 0b0), 1014 ('16bit', 0b1), 1015]) 1016 1017F_S2CH = field_enum_type( 1018name='s2ch', num_bits=1, 1019elems=[ 1020 ('elo', 0b0), 1021 ('ehi', 0b1), 1022]) 1023 1024F_S01CH = field_enum_type( 1025name='s01ch', num_bits=2, 1026elems=[ 1027 ('e0', 0b00), 1028 ('e1', 0b01), 1029 ('e2', 0b10), 1030 ('e3', 0b11), 1031]) 1032 1033F_MOVW01 = field_enum_type( 1034name='movw01', num_bits=2, 1035elems=[ 1036 ('ft0', 0b00), 1037 ('ft1', 0b01), 1038 ('ft2', 0b10), 1039 ('fte', 0b11), 1040]) 1041 1042F_MASKW0 = field_enum_type( 1043name='maskw0', num_bits=4, is_bitset=True, 1044elems=[ 1045 ('e0', 0b0001), 1046 ('e1', 0b0010), 1047 ('e2', 0b0100), 1048 ('e3', 0b1000), 1049 ('eall', 0b1111), 1050]) 1051 1052F_INT32_64_OP = field_enum_type( 1053name='int32_64_op', num_bits=2, 1054elems=[ 1055 ('add6432', 0b00), 1056 ('add64', 0b01), 1057 ('madd32', 0b10), 1058 ('madd64', 0b11), 1059]) 1060 1061F_TST_OP = field_enum_type( 1062name='tst_op', num_bits=4, 1063elems=[ 1064 ('z', 0b0000), 1065 ('gz', 0b0001), 1066 ('gez', 0b0010), 1067 ('c', 0b0011), 1068 ('e', 0b0100), 1069 ('g', 0b0101), 1070 ('ge', 0b0110), 1071 ('ne', 0b0111), 1072 ('l', 0b1000), 1073 ('le', 0b1001), 1074]) 1075 1076F_TST_OP3 = field_enum_subtype(name='tst_op3', parent=F_TST_OP, num_bits=3) 1077 1078F_TST_TYPE = field_enum_type( 1079name='tst_type', num_bits=3, 1080elems=[ 1081 ('f32', 0b000), 1082 ('u16', 0b001), 1083 ('s16', 0b010), 1084 ('u8', 0b011), 1085 ('s8', 0b100), 1086 ('u32', 0b101), 1087 ('s32', 0b110), 1088]) 1089 1090I_MAIN = bit_set( 1091name='main', 1092pieces=[ 1093 ('main_op', (0, '7:5')), 1094 ('ext0', (0, '4')), 1095 1096 # fadd/fadd.lp/fmul/fmul.lp 1097 ('sat_fam', (0, '4')), 1098 ('s0neg_fam', (0, '3')), 1099 ('s0abs_fam', (0, '2')), 1100 ('s1abs_fam', (0, '1')), 1101 ('s0flr_fam', (0, '0')), 1102 1103 # sngl 1104 ('sngl_op', (0, '3:0')), 1105 1106 ## RED 1107 ('red_part', (1, '7')), 1108 ('iter', (1, '6:4')), 1109 ('red_type', (1, '3')), 1110 ('pwen_red', (1, '2')), 1111 1112 ## Gamma 1113 ('gammaop', (1, '2')), 1114 1115 ## Common 1116 ('s0neg_sngl', (1, '1')), 1117 ('s0abs_sngl', (1, '0')), 1118 1119 ## PCK/UPCK 1120 ('upck_elem', (1, '7:6')), 1121 ('scale_rtz', (1, '5')), 1122 1123 ('prog', (1, '7')), 1124 ('rtz', (1, '6')), 1125 ('scale', (1, '5')), 1126 1127 ('pck_format', (1, '4:0')), 1128 1129 # int8_16 1130 ('int8_16_op', (0, '3:2')), 1131 ('s_i816', (0, '1')), 1132 ('f_i816', (0, '0')), 1133 1134 ('s2ch', (1, '7')), 1135 ('rsvd1_i816', (1, '6')), 1136 ('s2neg_i816', (1, '5')), 1137 ('s2abs_i816', (1, '4')), 1138 ('s1abs_i816', (1, '3')), 1139 ('s0neg_i816', (1, '2')), 1140 ('s0abs_i816', (1, '1')), 1141 ('sat_i816', (1, '0')), 1142 1143 ('rsvd2_i816', (2, '7:4')), 1144 ('s1ch', (2, '3:2')), 1145 ('s0ch', (2, '1:0')), 1146 1147 # fmad 1148 ('s0neg_fma', (0, '3')), 1149 ('s0abs_fma', (0, '2')), 1150 ('s2neg_fma', (0, '1')), 1151 ('sat_fma', (0, '0')), 1152 1153 ('rsvd1_fma', (1, '7:5')), 1154 ('lp_fma', (1, '4')), 1155 ('s1abs_fma', (1, '3')), 1156 ('s1neg_fma', (1, '2')), 1157 ('s2flr_fma', (1, '1')), 1158 ('s2abs_fma', (1, '0')), 1159 1160 # int32_64 1161 ('s_i3264', (0, '3')), 1162 ('s2neg_i3264', (0, '2')), 1163 ('int32_64_op', (0, '1:0')), 1164 1165 ('rsvd1_i3264', (1, '7')), 1166 ('cin_i3264', (1, '6')), 1167 ('s1neg_i3264', (1, '5')), 1168 ('s0neg_i3264', (1, '4')), 1169 ('rsvd1_i3264_', (1, '3')), 1170 ('s0abs_i3264', (1, '2')), 1171 ('s1abs_i3264', (1, '1')), 1172 ('s2abs_i3264', (1, '0')), 1173 1174 # movc 1175 ('movw1', (0, '3:2')), 1176 ('movw0', (0, '1:0')), 1177 1178 ('rsvd1_movc', (1, '7:6')), 1179 ('maskw0', (1, '5:2')), 1180 ('aw', (1, '1')), 1181 ('p2end_movc', (1, '0')), 1182 1183 # tst 1184 ('tst_op_2_0', (0, '3:1')), 1185 ('pwen_tst', (0, '0')), 1186 1187 ('tst_type', (1, '7:5')), 1188 ('p2end_tst', (1, '4')), 1189 ('tst_elem', (1, '3:2')), 1190 ('rsvd1_tst', (1, '1')), 1191 ('tst_op_3', (1, '0')), 1192], 1193fields=[ 1194 ('main_op', (F_MAIN_OP, ['main_op'])), 1195 ('ext0', (F_BOOL, ['ext0'])), 1196 1197 # fadd/fadd.lp/fmul/fmul.lp 1198 ('sat_fam', (F_BOOL, ['sat_fam'])), 1199 ('s0neg_fam', (F_BOOL, ['s0neg_fam'])), 1200 ('s0abs_fam', (F_BOOL, ['s0abs_fam'])), 1201 ('s1abs_fam', (F_BOOL, ['s1abs_fam'])), 1202 ('s0flr_fam', (F_BOOL, ['s0flr_fam'])), 1203 1204 # sngl 1205 ('sngl_op', (F_SNGL_OP, ['sngl_op'])), 1206 1207 ('rsvd1_sngl', (F_UINT5, ['red_part', 'iter', 'red_type'], 0)), 1208 ('rsvd1_sngl_', (F_UINT1, ['pwen_red'], 0)), 1209 1210 ## RED 1211 ('red_part', (F_RED_PART, ['red_part'])), 1212 ('iter', (F_UINT3, ['iter'])), 1213 ('red_type', (F_RED_TYPE, ['red_type'])), 1214 ('pwen_red', (F_BOOL, ['pwen_red'])), 1215 1216 ## Gamma 1217 ('gammaop', (F_GAMMA_OP, ['gammaop'])), 1218 1219 ## Common 1220 ('s0neg_sngl', (F_BOOL, ['s0neg_sngl'])), 1221 ('s0abs_sngl', (F_BOOL, ['s0abs_sngl'])), 1222 1223 ## PCK/UPCK 1224 ('upck_elem', (F_UINT2, ['upck_elem'])), 1225 ('scale_rtz', (F_BOOL, ['scale_rtz'])), 1226 1227 ('prog', (F_BOOL, ['prog'])), 1228 ('rtz', (F_BOOL, ['rtz'])), 1229 ('scale', (F_BOOL, ['scale'])), 1230 1231 ('pck_format', (F_PCK_FORMAT, ['pck_format'])), 1232 1233 # int8_16 1234 ('int8_16_op', (F_INT8_16_OP, ['int8_16_op'])), 1235 ('s_i816', (F_BOOL, ['s_i816'])), 1236 ('f_i816', (F_INT8_16_FMT, ['f_i816'])), 1237 1238 ('s2ch', (F_S2CH, ['s2ch'])), 1239 ('rsvd1_i816', (F_UINT1, ['rsvd1_i816'], 0)), 1240 ('s2neg_i816', (F_BOOL, ['s2neg_i816'])), 1241 ('s2abs_i816', (F_BOOL, ['s2abs_i816'])), 1242 ('s1abs_i816', (F_BOOL, ['s1abs_i816'])), 1243 ('s0neg_i816', (F_BOOL, ['s0neg_i816'])), 1244 ('s0abs_i816', (F_BOOL, ['s0abs_i816'])), 1245 ('sat_i816', (F_BOOL, ['sat_i816'])), 1246 1247 ('rsvd2_i816', (F_UINT4, ['rsvd2_i816'], 0)), 1248 ('s1ch', (F_S01CH, ['s1ch'])), 1249 ('s0ch', (F_S01CH, ['s0ch'])), 1250 1251 # fmad 1252 ('s0neg_fma', (F_BOOL, ['s0neg_fma'])), 1253 ('s0abs_fma', (F_BOOL, ['s0abs_fma'])), 1254 ('s2neg_fma', (F_BOOL, ['s2neg_fma'])), 1255 ('sat_fma', (F_BOOL, ['sat_fma'])), 1256 1257 ('rsvd1_fma', (F_UINT3, ['rsvd1_fma'], 0)), 1258 ('lp_fma', (F_BOOL, ['lp_fma'])), 1259 ('s1abs_fma', (F_BOOL, ['s1abs_fma'])), 1260 ('s1neg_fma', (F_BOOL, ['s1neg_fma'])), 1261 ('s2flr_fma', (F_BOOL, ['s2flr_fma'])), 1262 ('s2abs_fma', (F_BOOL, ['s2abs_fma'])), 1263 1264 # int32_64 1265 ('s_i3264', (F_BOOL, ['s_i3264'])), 1266 ('s2neg_i3264', (F_BOOL, ['s2neg_i3264'])), 1267 ('int32_64_op', (F_INT32_64_OP, ['int32_64_op'])), 1268 1269 ('rsvd1_i3264', (F_UINT2, ['rsvd1_i3264_', 'rsvd1_i3264'], 0)), 1270 ('cin_i3264', (F_BOOL, ['cin_i3264'])), 1271 ('s1neg_i3264', (F_BOOL, ['s1neg_i3264'])), 1272 ('s0neg_i3264', (F_BOOL, ['s0neg_i3264'])), 1273 ('s0abs_i3264', (F_BOOL, ['s0abs_i3264'])), 1274 ('s1abs_i3264', (F_BOOL, ['s1abs_i3264'])), 1275 ('s2abs_i3264', (F_BOOL, ['s2abs_i3264'])), 1276 1277 # movc 1278 ('movw1', (F_MOVW01, ['movw1'])), 1279 ('movw0', (F_MOVW01, ['movw0'])), 1280 1281 ('rsvd1_movc', (F_UINT2, ['rsvd1_movc'], 0)), 1282 ('maskw0', (F_MASKW0, ['maskw0'])), 1283 ('aw', (F_BOOL, ['aw'])), 1284 ('p2end_movc', (F_BOOL, ['p2end_movc'])), 1285 1286 # tst 1287 ('tst_op_3bit', (F_TST_OP3, ['tst_op_2_0'])), 1288 ('pwen_tst', (F_BOOL, ['pwen_tst'])), 1289 1290 ('tst_type', (F_TST_TYPE, ['tst_type'])), 1291 ('p2end_tst', (F_BOOL, ['p2end_tst'])), 1292 ('tst_elem', (F_UINT2, ['tst_elem'])), 1293 ('rsvd1_tst', (F_UINT1, ['rsvd1_tst'], 0)), 1294 ('tst_op_4bit', (F_TST_OP, ['tst_op_3', 'tst_op_2_0'])), 1295]) 1296 1297I_FADD = bit_struct( 1298name='fadd', 1299bit_set=I_MAIN, 1300field_mappings=[ 1301 ('main_op', 'main_op', 'fadd'), 1302 1303 ('sat', 'sat_fam'), 1304 ('s0neg', 's0neg_fam'), 1305 ('s0abs', 's0abs_fam'), 1306 ('s1abs', 's1abs_fam'), 1307 ('s0flr', 's0flr_fam'), 1308]) 1309 1310I_FADD_LP = bit_struct( 1311name='fadd_lp', 1312bit_set=I_MAIN, 1313field_mappings=[ 1314 ('main_op', 'main_op', 'fadd_lp'), 1315 1316 ('sat', 'sat_fam'), 1317 ('s0neg', 's0neg_fam'), 1318 ('s0abs', 's0abs_fam'), 1319 ('s1abs', 's1abs_fam'), 1320 ('s0flr', 's0flr_fam'), 1321]) 1322 1323I_FMUL = bit_struct( 1324name='fmul', 1325bit_set=I_MAIN, 1326field_mappings=[ 1327 ('main_op', 'main_op', 'fmul'), 1328 1329 ('sat', 'sat_fam'), 1330 ('s0neg', 's0neg_fam'), 1331 ('s0abs', 's0abs_fam'), 1332 ('s1abs', 's1abs_fam'), 1333 ('s0flr', 's0flr_fam'), 1334]) 1335 1336I_FMUL_LP = bit_struct( 1337name='fmul_lp', 1338bit_set=I_MAIN, 1339field_mappings=[ 1340 ('main_op', 'main_op', 'fmul_lp'), 1341 1342 ('sat', 'sat_fam'), 1343 ('s0neg', 's0neg_fam'), 1344 ('s0abs', 's0abs_fam'), 1345 ('s1abs', 's1abs_fam'), 1346 ('s0flr', 's0flr_fam'), 1347]) 1348 1349# Covers FRCP, FRSQ, FLOG, FEXP, FLOGCN, BYP, 1350# FDSX, FDSY, FDSXF, FDSYF, FSINC, FARCTANC 1351I_SNGL = bit_struct( 1352name='sngl', 1353bit_set=I_MAIN, 1354field_mappings=[ 1355 ('main_op', 'main_op', 'sngl'), 1356 ('ext0', 'ext0', 0), 1357 ('sngl_op', 'sngl_op'), 1358]) 1359 1360I_SNGL_EXT = bit_struct( 1361name='sngl_ext', 1362bit_set=I_MAIN, 1363field_mappings=[ 1364 ('main_op', 'main_op', 'sngl'), 1365 ('ext0', 'ext0', 1), 1366 ('sngl_op', 'sngl_op'), 1367 1368 ('rsvd1', 'rsvd1_sngl'), 1369 ('rsvd1_', 'rsvd1_sngl_'), 1370 ('s0neg', 's0neg_sngl'), 1371 ('s0abs', 's0abs_sngl'), 1372]) 1373 1374# F16SOP 1375# TODO 1376 1377# GCMP 1378I_GCMP = bit_struct( 1379name='gcmp', 1380bit_set=I_MAIN, 1381field_mappings=[ 1382 ('main_op', 'main_op', 'sngl'), 1383 ('ext0', 'ext0', 0), 1384 ('sngl_op', 'sngl_op', 'gamma'), 1385]) 1386 1387I_GCMP_EXT = bit_struct( 1388name='gcmp_ext', 1389bit_set=I_MAIN, 1390field_mappings=[ 1391 ('main_op', 'main_op', 'sngl'), 1392 ('ext0', 'ext0', 1), 1393 ('sngl_op', 'sngl_op', 'gamma'), 1394 1395 ('rsvd1', 'rsvd1_sngl'), 1396 ('gammaop', 'gammaop', 'cmp'), 1397 ('s0neg', 's0neg_sngl'), 1398 ('s0abs', 's0abs_sngl'), 1399]) 1400 1401# GEXP 1402I_GEXP = bit_struct( 1403name='gexp', 1404bit_set=I_MAIN, 1405field_mappings=[ 1406 ('main_op', 'main_op', 'sngl'), 1407 ('ext0', 'ext0', 1), 1408 ('sngl_op', 'sngl_op', 'gamma'), 1409 1410 ('rsvd1', 'rsvd1_sngl'), 1411 ('gammaop', 'gammaop', 'exp'), 1412 ('s0neg', 's0neg_sngl'), 1413 ('s0abs', 's0abs_sngl'), 1414]) 1415 1416# PCK 1417I_PCK = bit_struct( 1418name='pck', 1419bit_set=I_MAIN, 1420field_mappings=[ 1421 ('main_op', 'main_op', 'sngl'), 1422 ('ext0', 'ext0', 1), 1423 ('sngl_op', 'sngl_op', 'pck'), 1424 1425 ('prog', 'prog'), 1426 ('rtz', 'rtz'), 1427 ('scale', 'scale'), 1428 ('pck_format', 'pck_format'), 1429]) 1430 1431# UPCK 1432I_UPCK = bit_struct( 1433name='upck', 1434bit_set=I_MAIN, 1435field_mappings=[ 1436 ('main_op', 'main_op', 'sngl'), 1437 ('ext0', 'ext0', 1), 1438 ('sngl_op', 'sngl_op', 'pck'), 1439 1440 ('elem', 'upck_elem'), 1441 ('scale_rtz', 'scale_rtz'), 1442 ('pck_format', 'pck_format'), 1443]) 1444 1445# FRED 1446I_FRED = bit_struct( 1447name='fred', 1448bit_set=I_MAIN, 1449field_mappings=[ 1450 ('main_op', 'main_op', 'sngl'), 1451 ('ext0', 'ext0', 1), 1452 ('sngl_op', 'sngl_op', 'red'), 1453 1454 ('red_part', 'red_part'), 1455 ('iter', 'iter'), 1456 ('red_type', 'red_type'), 1457 ('pwen', 'pwen_red'), 1458 ('s0neg', 's0neg_sngl'), 1459 ('s0abs', 's0abs_sngl'), 1460]) 1461 1462I_INT8_16 = bit_struct( 1463name='int8_16', 1464bit_set=I_MAIN, 1465field_mappings=[ 1466 ('main_op', 'main_op', 'int8_16'), 1467 ('ext0', 'ext0', 0), 1468 ('int8_16_op', 'int8_16_op'), 1469 ('s', 's_i816'), 1470 ('f', 'f_i816'), 1471]) 1472 1473I_INT8_16_EXT = bit_struct( 1474name='int8_16_ext', 1475bit_set=I_MAIN, 1476field_mappings=[ 1477 ('main_op', 'main_op', 'int8_16'), 1478 ('ext0', 'ext0', 1), 1479 ('int8_16_op', 'int8_16_op'), 1480 ('s', 's_i816'), 1481 ('f', 'f_i816'), 1482 1483 ('s2ch', 's2ch'), 1484 ('rsvd1', 'rsvd1_i816'), 1485 ('s2neg', 's2neg_i816'), 1486 ('s2abs', 's2abs_i816'), 1487 ('s1abs', 's1abs_i816'), 1488 ('s0neg', 's0neg_i816'), 1489 ('s0abs', 's0abs_i816'), 1490 ('sat', 'sat_i816'), 1491]) 1492 1493I_INT8_16_EXT_SEL = bit_struct( 1494name='int8_16_ext_sel', 1495bit_set=I_MAIN, 1496field_mappings=[ 1497 ('main_op', 'main_op', 'int8_16'), 1498 ('ext0', 'ext0', 1), 1499 ('int8_16_op', 'int8_16_op'), 1500 ('s', 's_i816'), 1501 ('f', 'f_i816'), 1502 1503 ('s2ch', 's2ch'), 1504 ('rsvd1', 'rsvd1_i816'), 1505 ('s2neg', 's2neg_i816'), 1506 ('s2abs', 's2abs_i816'), 1507 ('s1abs', 's1abs_i816'), 1508 ('s0neg', 's0neg_i816'), 1509 ('s0abs', 's0abs_i816'), 1510 ('sat', 'sat_i816'), 1511 1512 ('rsvd2', 'rsvd2_i816'), 1513 ('s1ch', 's1ch'), 1514 ('s0ch', 's0ch'), 1515]) 1516 1517I_FMAD = bit_struct( 1518name='fmad', 1519bit_set=I_MAIN, 1520field_mappings=[ 1521 ('main_op', 'main_op', 'fmad_movc'), 1522 ('ext0', 'ext0', 0), 1523 1524 ('s0neg', 's0neg_fma'), 1525 ('s0abs', 's0abs_fma'), 1526 ('s2neg', 's2neg_fma'), 1527 ('sat', 'sat_fma'), 1528]) 1529 1530I_FMAD_EXT = bit_struct( 1531name='fmad_ext', 1532bit_set=I_MAIN, 1533field_mappings=[ 1534 ('main_op', 'main_op', 'fmad_movc'), 1535 ('ext0', 'ext0', 1), 1536 1537 ('s0neg', 's0neg_fma'), 1538 ('s0abs', 's0abs_fma'), 1539 ('s2neg', 's2neg_fma'), 1540 ('sat', 'sat_fma'), 1541 1542 ('rsvd1', 'rsvd1_fma'), 1543 ('lp', 'lp_fma'), 1544 ('s1abs', 's1abs_fma'), 1545 ('s1neg', 's1neg_fma'), 1546 ('s2flr', 's2flr_fma'), 1547 ('s2abs', 's2abs_fma'), 1548]) 1549 1550I_INT32_64 = bit_struct( 1551name='int32_64', 1552bit_set=I_MAIN, 1553field_mappings=[ 1554 ('main_op', 'main_op', 'int32_64_tst'), 1555 ('ext0', 'ext0', 0), 1556 1557 ('s', 's_i3264'), 1558 ('s2neg', 's2neg_i3264'), 1559 ('int32_64_op', 'int32_64_op'), 1560]) 1561 1562I_INT32_64_EXT = bit_struct( 1563name='int32_64_ext', 1564bit_set=I_MAIN, 1565field_mappings=[ 1566 ('main_op', 'main_op', 'int32_64_tst'), 1567 ('ext0', 'ext0', 1), 1568 1569 ('s', 's_i3264'), 1570 ('s2neg', 's2neg_i3264'), 1571 ('int32_64_op', 'int32_64_op'), 1572 1573 ('rsvd1', 'rsvd1_i3264'), 1574 1575 ('cin', 'cin_i3264'), 1576 ('s1neg', 's1neg_i3264'), 1577 ('s0neg', 's0neg_i3264'), 1578 ('s0abs', 's0abs_i3264'), 1579 ('s1abs', 's1abs_i3264'), 1580 ('s2abs', 's2abs_i3264'), 1581]) 1582 1583I_MOVC = bit_struct( 1584name='movc', 1585bit_set=I_MAIN, 1586field_mappings=[ 1587 ('main_op', 'main_op', 'fmad_movc'), 1588 ('ext0', 'ext0', 0), 1589 1590 ('movw1', 'movw1'), 1591 ('movw0', 'movw0'), 1592]) 1593 1594I_MOVC_EXT = bit_struct( 1595name='movc_ext', 1596bit_set=I_MAIN, 1597field_mappings=[ 1598 ('main_op', 'main_op', 'fmad_movc'), 1599 ('ext0', 'ext0', 1), 1600 1601 ('movw1', 'movw1'), 1602 ('movw0', 'movw0'), 1603 1604 ('rsvd1', 'rsvd1_movc'), 1605 ('maskw0', 'maskw0'), 1606 ('aw', 'aw'), 1607 ('p2end', 'p2end_movc'), 1608]) 1609 1610I_TST = bit_struct( 1611name='tst', 1612bit_set=I_MAIN, 1613field_mappings=[ 1614 ('main_op', 'main_op', 'int32_64_tst'), 1615 ('ext0', 'ext0', 0), 1616 1617 ('tst_op', 'tst_op_3bit'), 1618 ('pwen', 'pwen_tst'), 1619]) 1620 1621I_TST_EXT = bit_struct( 1622name='tst_ext', 1623bit_set=I_MAIN, 1624field_mappings=[ 1625 ('main_op', 'main_op', 'int32_64_tst'), 1626 ('ext0', 'ext0', 1), 1627 1628 ('tst_op', 'tst_op_4bit'), 1629 ('pwen', 'pwen_tst'), 1630 1631 ('type', 'tst_type'), 1632 ('p2end', 'p2end_tst'), 1633 ('elem', 'tst_elem'), 1634 ('rsvd1', 'rsvd1_tst'), 1635]) 1636 1637# Backend ALU ops. 1638F_BACKEND_OP = field_enum_type( 1639name='backend_op', num_bits=3, 1640elems=[ 1641 ('uvsw', 0b000), 1642 ('msk', 0b001), 1643 ('phas', 0b010), 1644 ('setl', 0b011), 1645 ('vistest', 0b100), 1646 ('fitr', 0b101), 1647 ('emit', 0b110), 1648 ('dma', 0b111), 1649]) 1650 1651F_DSEL = field_enum_type( 1652name='dsel', num_bits=1, 1653elems=[ 1654 ('w0', 0b0), 1655 ('w1', 0b1), 1656]) 1657 1658F_UVSW_OP = field_enum_type( 1659name='uvsw_op', num_bits=3, 1660elems=[ 1661 ('write', 0b000), 1662 ('emit', 0b001), 1663 ('cut', 0b010), 1664 ('emit_cut', 0b011), 1665 ('endtask', 0b100), 1666 ('emit_endtask', 0b101), 1667 ('write_emit_endtask', 0b110), 1668]) 1669 1670F_SRCSEL = field_enum_type( 1671name='srcsel', num_bits=3, 1672elems=[ 1673 ('s0', 0b000), 1674 ('s1', 0b001), 1675 ('s2', 0b010), 1676 ('s3', 0b011), 1677 ('s4', 0b100), 1678 ('s5', 0b101), 1679]) 1680 1681F_MSK_MODE = field_enum_type( 1682name='msk_mode', num_bits=3, 1683elems=[ 1684 ('vm', 0b000), 1685 ('icm', 0b001), 1686 ('icmoc', 0b010), 1687 ('icmi', 0b011), 1688 ('caxy', 0b100), 1689]) 1690 1691F_MSK_OP = field_enum_type( 1692name='msk_op', num_bits=1, 1693elems=[ 1694 ('sav', 0b0), 1695 ('mov', 0b1), 1696]) 1697 1698F_PHAS_TYPE = field_enum_type( 1699name='phas_type', num_bits=1, 1700elems=[ 1701 ('reg', 0b0), 1702 ('imm', 0b1), 1703]) 1704 1705F_PHAS_RATE = field_enum_type( 1706name='phas_rate', num_bits=2, 1707elems=[ 1708 ('inst', 0b00), 1709 ('smp_sel', 0b01), 1710 ('smp_full', 0b10), 1711]) 1712 1713F_VISTEST_OP = field_enum_type( 1714name='vistest_op', num_bits=1, 1715elems=[ 1716 ('depthf', 0b0), 1717 ('atst', 0b1), 1718]) 1719 1720F_ITER_MODE = field_enum_type( 1721name='iter_mode', num_bits=2, 1722elems=[ 1723 ('pixel', 0b00), 1724 ('sample', 0b01), 1725 ('centroid', 0b10), 1726]) 1727 1728F_ITER_MODE1 = field_enum_subtype(name='iter_mode1', parent=F_ITER_MODE, num_bits=1) 1729 1730F_PERSP_CTL = field_enum_type( 1731name='persp_ctl', num_bits=2, 1732elems=[ 1733 ('none', 0b00), 1734 ('iter_mul', 0b01), 1735 ('iter_mul_store', 0b10), 1736 ('mul_stored', 0b11), 1737]) 1738 1739F_PERSP_CTL1 = field_enum_subtype(name='persp_ctl1', parent=F_PERSP_CTL, num_bits=1) 1740 1741F_SCHED_CTRL = field_enum_type( 1742name='sched_ctrl', num_bits=2, 1743elems=[ 1744 ('none', 0b00), 1745 ('swap', 0b01), 1746 ('wdf', 0b10), 1747]) 1748 1749F_SCHED_CTRL1 = field_enum_subtype(name='sched_ctrl1', parent=F_SCHED_CTRL, num_bits=1) 1750 1751F_IDX_CTRL = field_enum_type( 1752name='idx_ctrl', num_bits=2, 1753elems=[ 1754 ('none', 0b00), 1755 ('idx0', 0b01), 1756 ('idx1', 0b10), 1757]) 1758 1759F_DMA_OP = field_enum_type( 1760name='dma_op', num_bits=3, 1761elems=[ 1762 ('idf', 0b000), 1763 ('ld', 0b001), 1764 ('st', 0b010), 1765 ('smp', 0b100), 1766 ('atomic', 0b101), 1767]) 1768 1769F_CACHEMODE_LD = field_enum_type( 1770name='cachemode_ld', num_bits=2, 1771elems=[ 1772 ('normal', 0b00), 1773 ('bypass', 0b01), 1774 ('force_line_fill', 0b10), 1775]) 1776 1777F_CACHEMODE_ST = field_enum_type( 1778name='cachemode_st', num_bits=2, 1779elems=[ 1780 ('write_through', 0b00), 1781 ('write_back', 0b01), 1782 ('write_back_lazy', 0b10), 1783]) 1784 1785F_DSIZE = field_enum_type( 1786name='dsize', num_bits=2, 1787elems=[ 1788 ('8bit', 0b00), 1789 ('16bit', 0b01), 1790 ('32bit', 0b10), 1791]) 1792 1793F_DMN = field_enum_type( 1794name='dmn', num_bits=2, 1795elems=[ 1796 ('1d', 0b01), 1797 ('2d', 0b10), 1798 ('3d', 0b11), 1799]) 1800 1801F_LODM = field_enum_type( 1802name='lodm', num_bits=2, 1803elems=[ 1804 ('normal', 0b00), 1805 ('bias', 0b01), 1806 ('replace', 0b10), 1807 ('gradients', 0b11), 1808]) 1809 1810F_SBMODE = field_enum_type( 1811name='sbmode', num_bits=2, 1812elems=[ 1813 ('none', 0b00), 1814 ('data', 0b01), 1815 ('info', 0b10), 1816 ('both', 0b11), 1817]) 1818 1819F_ATOMIC_OP = field_enum_type( 1820name='atomic_op', num_bits=4, 1821elems=[ 1822 ('add', 0b0000), 1823 ('sub', 0b0001), 1824 ('xchg', 0b0010), 1825 ('umin', 0b0100), 1826 ('imin', 0b0101), 1827 ('umax', 0b0110), 1828 ('imax', 0b0111), 1829 ('and', 0b1000), 1830 ('or', 0b1001), 1831 ('xor', 0b1010), 1832]) 1833 1834I_BACKEND = bit_set( 1835name='backend', 1836pieces=[ 1837 ('backend_op', (0, '7:5')), 1838 1839 # uvsw 1840 ('dsel', (0, '4')), 1841 ('imm_uvsw', (0, '3')), 1842 ('uvsw_op', (0, '2:0')), 1843 1844 ('rsvd1', (1, '7:3')), # Common 1845 ('srcsel', (1, '2:0')), # Common 1846 1847 ('imm_addr_uvsw', (1, '7:0')), 1848 1849 ('rsvd1_uvsw_', (1, '7:2')), 1850 ('stream_id', (1, '1:0')), 1851 1852 # movmsk 1853 ('msk_op', (0, '4')), 1854 ('sm', (0, '3')), 1855 ('msk_mode', (0, '2:0')), 1856 1857 # phas 1858 ('exeaddrsrc', (0, '4:2')), 1859 ('phas_end', (0, '1')), 1860 ('phas_type', (0, '0')), 1861 1862 ('phas_rate', (1, '7:6')), 1863 ('commontmp', (1, '5:0')), 1864 1865 # setl 1866 ('rsvd0_setl', (0, '4:1')), 1867 ('ressel', (0, '0')), 1868 1869 # vistest 1870 ('rsvd0_vistest', (0, '4:3')), 1871 ('pwen_vistest', (0, '2')), 1872 ('vistest_op', (0, '1')), 1873 ('ifb', (0, '0')), 1874 1875 # fitr 1876 ('p_fitr', (0, '4')), 1877 ('drc', (0, '3')), # Common 1878 ('rsvd0_fitr', (0, '2')), 1879 ('fitr_mode', (0, '1:0')), 1880 1881 ('rsvd1_fitr', (1, '7:5')), 1882 ('sat_fitr', (1, '4')), 1883 ('count_fitr', (1, '3:0')), 1884 1885 # emitpix 1886 ('rsvd0_emitpix', (0, '4:2')), 1887 ('freep', (0, '1')), 1888 ('rsvd0_emitpix_', (0, '0')), 1889 1890 # dma 1891 ('dma_op', (0, '2:0')), 1892 ('rsvd0_dma', (0, '4')), 1893 1894 ## ld/st 1895 ('immbl', (0, '4')), 1896 1897 ('srcseladd_ldst', (1, '7:5')), 1898 ('srcselbl_ldst', (1, '4:2')), 1899 ('burstlen_2_0', (1, '4:2')), 1900 ('cachemode_ldst', (1, '1:0')), 1901 1902 ('tiled', (2, '7')), 1903 ('srcseldata', (2, '6:4')), 1904 ('dsize', (2, '3:2')), 1905 ('rsvd2_ldst', (2, '1')), 1906 ('burstlen_3', (2, '0')), 1907 1908 ('rsvd3_st', (3, '7:3')), 1909 ('srcmask', (3, '2:0')), 1910 1911 ## smp 1912 ('fcnorm', (0, '4')), 1913 1914 ('extb', (1, '7')), 1915 ('dmn', (1, '6:5')), 1916 ('exta', (1, '4')), 1917 ('chan', (1, '3:2')), 1918 ('lodm', (1, '1:0')), 1919 1920 ('pplod', (2, '7')), 1921 ('proj', (2, '6')), 1922 ('sbmode', (2, '5:4')), 1923 ('nncoords', (2, '3')), 1924 ('sno', (2, '2')), 1925 ('soo', (2, '1')), 1926 ('tao', (2, '0')), 1927 1928 ('rsvd3_smp', (3, '7:5')), 1929 ('f16', (3, '4')), 1930 ('swap', (3, '3')), 1931 ('cachemode_smp', (3, '2:1')), 1932 ('smp_w', (3, '0')), 1933 1934 ## atomic 1935 ('atomic_op', (1, '7:4')), 1936 ('rsvd1_atomic', (1, '3')), 1937 1938 ('rsvd2_atomic', (2, '7:3')), 1939 ('dstsel', (2, '2:0')), 1940], 1941fields=[ 1942 ('backend_op', (F_BACKEND_OP, ['backend_op'])), 1943 1944 # uvsw 1945 ('dsel', (F_DSEL, ['dsel'])), 1946 ('imm_uvsw', (F_BOOL, ['imm_uvsw'])), 1947 ('uvsw_op', (F_UVSW_OP, ['uvsw_op'])), 1948 1949 ('rsvd1', (F_UINT5, ['rsvd1'], 0)), 1950 ('srcsel', (F_SRCSEL, ['srcsel'])), 1951 1952 ('imm_addr_uvsw', (F_UINT8, ['imm_addr_uvsw'])), 1953 1954 ('rsvd1_uvsw_', (F_UINT6, ['rsvd1_uvsw_'], 0)), 1955 ('stream_id', (F_UINT2, ['stream_id'])), 1956 1957 # movmsk 1958 ('msk_op', (F_MSK_OP, ['msk_op'])), 1959 ('sm', (F_BOOL, ['sm'])), 1960 ('msk_mode', (F_MSK_MODE, ['msk_mode'])), 1961 1962 # phas 1963 ('exeaddrsrc', (F_SRCSEL, ['exeaddrsrc'])), 1964 ('phas_end', (F_BOOL, ['phas_end'])), 1965 ('phas_type', (F_PHAS_TYPE, ['phas_type'])), 1966 1967 ('phas_rate', (F_PHAS_RATE, ['phas_rate'])), 1968 ('commontmp', (F_UINT6MUL4, ['commontmp'])), 1969 1970 # setl 1971 ('rsvd0_setl', (F_UINT4, ['rsvd0_setl'], 0)), 1972 ('ressel', (F_DSEL, ['ressel'])), 1973 1974 # vistest 1975 ('rsvd0_vistest', (F_UINT2, ['rsvd0_vistest'], 0)), 1976 ('pwen_vistest', (F_BOOL, ['pwen_vistest'])), 1977 ('vistest_op', (F_VISTEST_OP, ['vistest_op'])), 1978 ('ifb', (F_BOOL, ['ifb'])), 1979 1980 # fitr 1981 ('p_fitr', (F_PERSP_CTL1, ['p_fitr'])), 1982 ('drc', (F_UINT1, ['drc'])), 1983 ('rsvd0_fitr', (F_UINT1, ['rsvd0_fitr'], 0)), 1984 ('iter_mode', (F_ITER_MODE, ['fitr_mode'])), 1985 1986 ('rsvd1_fitr', (F_UINT3, ['rsvd1_fitr'], 0)), 1987 ('sat_fitr', (F_BOOL, ['sat_fitr'])), 1988 ('count_fitr', (F_UINT4_POS_WRAP, ['count_fitr'])), 1989 1990 # emitpix 1991 ('rsvd0_emitpix', (F_UINT3, ['rsvd0_emitpix'], 0)), 1992 ('freep', (F_BOOL, ['freep'])), 1993 ('rsvd0_emitpix_', (F_UINT1, ['rsvd0_emitpix_'], 0)), 1994 1995 # dma 1996 ('rsvd0_dma', (F_UINT1, ['rsvd0_dma'], 0)), 1997 ('dma_op', (F_DMA_OP, ['dma_op'])), 1998 1999 ## ld/st 2000 ('immbl', (F_BOOL, ['immbl'])), 2001 2002 ('srcseladd_ldst', (F_SRCSEL, ['srcseladd_ldst'])), 2003 ('srcselbl_ldst', (F_SRCSEL, ['srcselbl_ldst'])), 2004 2005 ('cachemode_ld', (F_CACHEMODE_LD, ['cachemode_ldst'])), 2006 ('cachemode_st', (F_CACHEMODE_ST, ['cachemode_ldst'])), 2007 2008 ('rsvd2_ld', (F_UINT7, ['tiled', 'srcseldata', 'dsize', 'rsvd2_ldst'], 0)), 2009 ('rsvd2_st', (F_UINT1, ['rsvd2_ldst'], 0)), 2010 2011 ('tiled', (F_BOOL, ['tiled'])), 2012 ('srcseldata', (F_SRCSEL, ['srcseldata'])), 2013 ('dsize', (F_DSIZE, ['dsize'])), 2014 2015 ('burstlen', (F_UINT4_POS_WRAP, ['burstlen_3', 'burstlen_2_0'])), 2016 ('rsvd2_st_', (F_UINT1, ['burstlen_3'], 0)), 2017 2018 ('rsvd3_st', (F_UINT5, ['rsvd3_st'], 0)), 2019 ('srcmask', (F_SRCSEL, ['srcmask'])), 2020 2021 ## smp 2022 ('fcnorm', (F_BOOL, ['fcnorm'])), 2023 2024 ('extb', (F_BOOL, ['extb'])), 2025 ('dmn', (F_DMN, ['dmn'])), 2026 ('exta', (F_BOOL, ['exta'])), 2027 ('chan', (F_UINT2_POS_INC, ['chan'])), 2028 ('lodm', (F_LODM, ['lodm'])), 2029 2030 ('pplod', (F_BOOL, ['pplod'])), 2031 ('proj', (F_BOOL, ['proj'])), 2032 ('sbmode', (F_SBMODE, ['sbmode'])), 2033 ('nncoords', (F_BOOL, ['nncoords'])), 2034 ('sno', (F_BOOL, ['sno'])), 2035 ('soo', (F_BOOL, ['soo'])), 2036 ('tao', (F_BOOL, ['tao'])), 2037 2038 ('rsvd3_smp', (F_UINT3, ['rsvd3_smp'], 0)), 2039 ('f16', (F_BOOL, ['f16'])), 2040 ('swap', (F_SCHED_CTRL1, ['swap'])), 2041 ('cachemode_smp_ld', (F_CACHEMODE_LD, ['cachemode_smp'])), 2042 ('cachemode_smp_st', (F_CACHEMODE_ST, ['cachemode_smp'])), 2043 ('smp_w', (F_BOOL, ['smp_w'])), 2044 2045 ## atomic 2046 ('atomic_op', (F_ATOMIC_OP, ['atomic_op'])), 2047 ('rsvd1_atomic', (F_UINT1, ['rsvd1_atomic'], 0)), 2048 2049 ('rsvd2_atomic', (F_UINT5, ['rsvd2_atomic'], 0)), 2050 ('dstsel', (F_SRCSEL, ['dstsel'])), 2051]) 2052 2053I_UVSW_WRITE_REG = bit_struct( 2054name='uvsw_write_reg', 2055bit_set=I_BACKEND, 2056field_mappings=[ 2057 ('backend_op', 'backend_op', 'uvsw'), 2058 2059 ('dsel', 'dsel'), 2060 ('imm', 'imm_uvsw', 0), 2061 ('uvsw_op', 'uvsw_op', 'write'), 2062 2063 ('rsvd1', 'rsvd1'), 2064 ('srcsel', 'srcsel'), 2065]) 2066 2067I_UVSW_WRITE_IMM = bit_struct( 2068name='uvsw_write_imm', 2069bit_set=I_BACKEND, 2070field_mappings=[ 2071 ('backend_op', 'backend_op', 'uvsw'), 2072 2073 ('dsel', 'dsel'), 2074 ('imm', 'imm_uvsw', 1), 2075 ('uvsw_op', 'uvsw_op', 'write'), 2076 2077 ('imm_addr', 'imm_addr_uvsw'), 2078]) 2079 2080I_UVSW_EMIT = bit_struct( 2081name='uvsw_emit', 2082bit_set=I_BACKEND, 2083field_mappings=[ 2084 ('backend_op', 'backend_op', 'uvsw'), 2085 2086 ('dsel', 'dsel', 0), 2087 ('imm', 'imm_uvsw', 0), 2088 ('uvsw_op', 'uvsw_op', 'emit'), 2089]) 2090 2091I_UVSW_EMIT_STREAM = bit_struct( 2092name='uvsw_emit_imm', 2093bit_set=I_BACKEND, 2094field_mappings=[ 2095 ('backend_op', 'backend_op', 'uvsw'), 2096 2097 ('dsel', 'dsel', 0), 2098 ('imm', 'imm_uvsw', 1), 2099 ('uvsw_op', 'uvsw_op', 'emit'), 2100 2101 ('rsvd1', 'rsvd1_uvsw_'), 2102 ('stream_id', 'stream_id'), 2103]) 2104 2105I_UVSW_CUT = bit_struct( 2106name='uvsw_cut', 2107bit_set=I_BACKEND, 2108field_mappings=[ 2109 ('backend_op', 'backend_op', 'uvsw'), 2110 2111 ('dsel', 'dsel', 0), 2112 ('imm', 'imm_uvsw', 0), 2113 ('uvsw_op', 'uvsw_op', 'cut'), 2114]) 2115 2116I_UVSW_CUT_STREAM = bit_struct( 2117name='uvsw_cut_imm', 2118bit_set=I_BACKEND, 2119field_mappings=[ 2120 ('backend_op', 'backend_op', 'uvsw'), 2121 2122 ('dsel', 'dsel', 0), 2123 ('imm', 'imm_uvsw', 1), 2124 ('uvsw_op', 'uvsw_op', 'cut'), 2125 2126 ('rsvd1', 'rsvd1_uvsw_'), 2127 ('stream_id', 'stream_id'), 2128]) 2129 2130I_UVSW_EMIT_CUT = bit_struct( 2131name='uvsw_emit_cut', 2132bit_set=I_BACKEND, 2133field_mappings=[ 2134 ('backend_op', 'backend_op', 'uvsw'), 2135 2136 ('dsel', 'dsel', 0), 2137 ('imm', 'imm_uvsw', 0), 2138 ('uvsw_op', 'uvsw_op', 'emit_cut'), 2139]) 2140 2141I_UVSW_EMIT_CUT_STREAM = bit_struct( 2142name='uvsw_emit_cut_imm', 2143bit_set=I_BACKEND, 2144field_mappings=[ 2145 ('backend_op', 'backend_op', 'uvsw'), 2146 2147 ('dsel', 'dsel', 0), 2148 ('imm', 'imm_uvsw', 1), 2149 ('uvsw_op', 'uvsw_op', 'emit_cut'), 2150 2151 ('rsvd1', 'rsvd1_uvsw_'), 2152 ('stream_id', 'stream_id'), 2153]) 2154 2155I_UVSW_ENDTASK = bit_struct( 2156name='uvsw_endtask', 2157bit_set=I_BACKEND, 2158field_mappings=[ 2159 ('backend_op', 'backend_op', 'uvsw'), 2160 2161 ('dsel', 'dsel', 0), 2162 ('imm', 'imm_uvsw', 0), 2163 ('uvsw_op', 'uvsw_op', 'endtask'), 2164]) 2165 2166I_UVSW_EMIT_ENDTASK = bit_struct( 2167name='uvsw_emit_endtask', 2168bit_set=I_BACKEND, 2169field_mappings=[ 2170 ('backend_op', 'backend_op', 'uvsw'), 2171 2172 ('dsel', 'dsel', 0), 2173 ('imm', 'imm_uvsw', 0), 2174 ('uvsw_op', 'uvsw_op', 'emit_endtask'), 2175]) 2176 2177I_UVSW_WRITE_EMIT_ENDTASK_REG = bit_struct( 2178name='uvsw_write_emit_endtask_reg', 2179bit_set=I_BACKEND, 2180field_mappings=[ 2181 ('backend_op', 'backend_op', 'uvsw'), 2182 2183 ('dsel', 'dsel'), 2184 ('imm', 'imm_uvsw', 0), 2185 ('uvsw_op', 'uvsw_op', 'write_emit_endtask'), 2186 2187 ('rsvd1', 'rsvd1'), 2188 ('srcsel', 'srcsel'), 2189]) 2190 2191I_UVSW_WRITE_EMIT_ENDTASK_IMM = bit_struct( 2192name='uvsw_write_emit_endtask_imm', 2193bit_set=I_BACKEND, 2194field_mappings=[ 2195 ('backend_op', 'backend_op', 'uvsw'), 2196 2197 ('dsel', 'dsel'), 2198 ('imm', 'imm_uvsw', 1), 2199 ('uvsw_op', 'uvsw_op', 'write_emit_endtask'), 2200 2201 ('imm_addr', 'imm_addr_uvsw'), 2202]) 2203 2204I_MOVMSK = bit_struct( 2205name='movmsk', 2206bit_set=I_BACKEND, 2207field_mappings=[ 2208 ('backend_op', 'backend_op', 'msk'), 2209 2210 ('msk_op', 'msk_op', 'mov'), 2211 ('sm', 'sm', 0), 2212 ('msk_mode', 'msk_mode', 'icm'), 2213]) 2214 2215I_MOVMSK_SM = bit_struct( 2216name='movmsk_sm', 2217bit_set=I_BACKEND, 2218field_mappings=[ 2219 ('backend_op', 'backend_op', 'msk'), 2220 2221 ('msk_op', 'msk_op', 'mov'), 2222 ('sm', 'sm', 1), 2223 ('msk_mode', 'msk_mode', 'icm'), 2224 2225 ('rsvd1', 'rsvd1'), 2226 ('srcsel', 'srcsel'), 2227]) 2228 2229I_SAVMSK = bit_struct( 2230name='savmsk', 2231bit_set=I_BACKEND, 2232field_mappings=[ 2233 ('backend_op', 'backend_op', 'msk'), 2234 2235 ('msk_op', 'msk_op', 'sav'), 2236 ('sm', 'sm', 0), 2237 ('msk_mode', 'msk_mode'), 2238]) 2239 2240I_PHAS_REG = bit_struct( 2241name='phas_reg', 2242bit_set=I_BACKEND, 2243field_mappings=[ 2244 ('backend_op', 'backend_op', 'phas'), 2245 2246 ('exeaddrsrc', 'exeaddrsrc'), 2247 ('end', 'phas_end', 0), 2248 ('type', 'phas_type', 'reg'), 2249 2250 ('rsvd1', 'rsvd1'), 2251 ('paramsrc', 'srcsel'), 2252]) 2253 2254I_PHAS_IMM = bit_struct( 2255name='phas_imm', 2256bit_set=I_BACKEND, 2257field_mappings=[ 2258 ('backend_op', 'backend_op', 'phas'), 2259 2260 ('exeaddrsrc', 'exeaddrsrc'), 2261 ('end', 'phas_end'), 2262 ('type', 'phas_type', 'imm'), 2263 2264 ('rate', 'phas_rate'), 2265 ('commontmp', 'commontmp'), 2266]) 2267 2268I_SETL = bit_struct( 2269name='setl', 2270bit_set=I_BACKEND, 2271field_mappings=[ 2272 ('backend_op', 'backend_op', 'setl'), 2273 2274 ('rsvd0', 'rsvd0_setl'), 2275 ('ressel', 'ressel'), 2276]) 2277 2278I_VISTEST_DEPTHF = bit_struct( 2279name='vistest_depthf', 2280bit_set=I_BACKEND, 2281field_mappings=[ 2282 ('backend_op', 'backend_op', 'vistest'), 2283 2284 ('rsvd0', 'rsvd0_vistest'), 2285 ('pwen', 'pwen_vistest', 0), 2286 ('vistest_op', 'vistest_op', 'depthf'), 2287 ('ifb', 'ifb', 0), 2288]) 2289 2290I_VISTEST_ATST = bit_struct( 2291name='vistest_atst', 2292bit_set=I_BACKEND, 2293field_mappings=[ 2294 ('backend_op', 'backend_op', 'vistest'), 2295 2296 ('rsvd0', 'rsvd0_vistest'), 2297 ('pwen', 'pwen_vistest'), 2298 ('vistest_op', 'vistest_op', 'atst'), 2299 ('ifb', 'ifb'), 2300]) 2301 2302I_FITR = bit_struct( 2303name='fitr', 2304bit_set=I_BACKEND, 2305field_mappings=[ 2306 ('backend_op', 'backend_op', 'fitr'), 2307 2308 ('p', 'p_fitr'), 2309 ('drc', 'drc'), 2310 ('rsvd0', 'rsvd0_fitr'), 2311 ('iter_mode', 'iter_mode'), 2312 2313 ('rsvd1', 'rsvd1_fitr'), 2314 ('sat', 'sat_fitr'), 2315 ('count', 'count_fitr'), 2316 2317]) 2318 2319I_EMITPIX = bit_struct( 2320name='emitpix', 2321bit_set=I_BACKEND, 2322field_mappings=[ 2323 ('backend_op', 'backend_op', 'emit'), 2324 2325 ('rsvd0', 'rsvd0_emitpix'), 2326 ('freep', 'freep'), 2327 ('rsvd0_', 'rsvd0_emitpix_'), 2328]) 2329 2330I_IDF = bit_struct( 2331name='idf', 2332bit_set=I_BACKEND, 2333field_mappings=[ 2334 ('backend_op', 'backend_op', 'dma'), 2335 2336 ('rsvd0', 'rsvd0_dma'), 2337 ('drc', 'drc'), 2338 ('dma_op', 'dma_op', 'idf'), 2339 2340 ('rsvd1', 'rsvd1'), 2341 ('srcseladd', 'srcsel'), 2342]) 2343 2344I_LD_IMMBL = bit_struct( 2345name='ld_immbl', 2346bit_set=I_BACKEND, 2347field_mappings=[ 2348 ('backend_op', 'backend_op', 'dma'), 2349 2350 ('immbl', 'immbl', 1), 2351 ('drc', 'drc'), 2352 ('dma_op', 'dma_op', 'ld'), 2353 2354 ('srcseladd', 'srcseladd_ldst'), 2355 ('burstlen', 'burstlen'), 2356 ('cachemode_ld', 'cachemode_ld'), 2357 2358 ('rsvd2', 'rsvd2_ld'), 2359]) 2360 2361I_LD_REGBL = bit_struct( 2362name='ld_regbl', 2363bit_set=I_BACKEND, 2364field_mappings=[ 2365 ('backend_op', 'backend_op', 'dma'), 2366 2367 ('immbl', 'immbl', 0), 2368 ('drc', 'drc'), 2369 ('dma_op', 'dma_op', 'ld'), 2370 2371 ('srcseladd', 'srcseladd_ldst'), 2372 ('srcselbl', 'srcselbl_ldst'), 2373 ('cachemode_ld', 'cachemode_ld'), 2374]) 2375 2376I_ST_IMMBL = bit_struct( 2377name='st_immbl', 2378bit_set=I_BACKEND, 2379field_mappings=[ 2380 ('backend_op', 'backend_op', 'dma'), 2381 2382 ('immbl', 'immbl', 1), 2383 ('drc', 'drc'), 2384 ('dma_op', 'dma_op', 'st'), 2385 2386 ('srcseladd', 'srcseladd_ldst'), 2387 ('burstlen', 'burstlen'), 2388 ('cachemode_st', 'cachemode_st'), 2389 2390 ('tiled', 'tiled', 0), 2391 ('srcseldata', 'srcseldata'), 2392 ('dsize', 'dsize'), 2393 ('rsvd2', 'rsvd2_st'), 2394]) 2395 2396I_ST_REGBL = bit_struct( 2397name='st_regbl', 2398bit_set=I_BACKEND, 2399field_mappings=[ 2400 ('backend_op', 'backend_op', 'dma'), 2401 2402 ('immbl', 'immbl', 0), 2403 ('drc', 'drc'), 2404 ('dma_op', 'dma_op', 'st'), 2405 2406 ('srcseladd', 'srcseladd_ldst'), 2407 ('srcselbl', 'srcselbl_ldst'), 2408 ('cachemode_st', 'cachemode_st'), 2409 2410 ('tiled', 'tiled', 0), 2411 ('srcseldata', 'srcseldata'), 2412 ('dsize', 'dsize'), 2413 ('rsvd2', 'rsvd2_st'), 2414 ('rsvd2_', 'rsvd2_st_'), 2415]) 2416 2417I_ST_IMMBL_TILED = bit_struct( 2418name='st_immbl_tiled', 2419bit_set=I_BACKEND, 2420field_mappings=[ 2421 ('backend_op', 'backend_op', 'dma'), 2422 2423 ('immbl', 'immbl', 1), 2424 ('drc', 'drc'), 2425 ('dma_op', 'dma_op', 'st'), 2426 2427 ('srcseladd', 'srcseladd_ldst'), 2428 ('burstlen', 'burstlen'), 2429 ('cachemode_st', 'cachemode_st'), 2430 2431 ('tiled', 'tiled', 1), 2432 ('srcseldata', 'srcseldata'), 2433 ('dsize', 'dsize'), 2434 ('rsvd2', 'rsvd2_st'), 2435 2436 ('rsvd3', 'rsvd3_st'), 2437 ('srcmask', 'srcmask'), 2438]) 2439 2440I_ST_REGBL_TILED = bit_struct( 2441name='st_regbl_tiled', 2442bit_set=I_BACKEND, 2443field_mappings=[ 2444 ('backend_op', 'backend_op', 'dma'), 2445 2446 ('immbl', 'immbl', 0), 2447 ('drc', 'drc'), 2448 ('dma_op', 'dma_op', 'st'), 2449 2450 ('srcseladd', 'srcseladd_ldst'), 2451 ('srcselbl', 'srcselbl_ldst'), 2452 ('cachemode_st', 'cachemode_st'), 2453 2454 ('tiled', 'tiled', 1), 2455 ('srcseldata', 'srcseldata'), 2456 ('dsize', 'dsize'), 2457 ('rsvd2', 'rsvd2_st'), 2458 ('rsvd2_', 'rsvd2_st_'), 2459 2460 ('rsvd3', 'rsvd3_st'), 2461 ('srcmask', 'srcmask'), 2462]) 2463 2464I_SMP_BRIEF = bit_struct( 2465name='smp_brief', 2466bit_set=I_BACKEND, 2467field_mappings=[ 2468 ('backend_op', 'backend_op', 'dma'), 2469 2470 ('fcnorm', 'fcnorm'), 2471 ('drc', 'drc'), 2472 ('dma_op', 'dma_op', 'smp'), 2473 2474 ('extb', 'extb', 0), 2475 ('dmn', 'dmn'), 2476 ('exta', 'exta', 0), 2477 ('chan', 'chan'), 2478 ('lodm', 'lodm'), 2479]) 2480 2481I_SMP_EXTA = bit_struct( 2482name='smp_exta', 2483bit_set=I_BACKEND, 2484field_mappings=[ 2485 ('backend_op', 'backend_op', 'dma'), 2486 2487 ('fcnorm', 'fcnorm'), 2488 ('drc', 'drc'), 2489 ('dma_op', 'dma_op', 'smp'), 2490 2491 ('extb', 'extb', 0), 2492 ('dmn', 'dmn'), 2493 ('exta', 'exta', 1), 2494 ('chan', 'chan'), 2495 ('lodm', 'lodm'), 2496 2497 ('pplod', 'pplod'), 2498 ('proj', 'proj'), 2499 ('sbmode', 'sbmode'), 2500 ('nncoords', 'nncoords'), 2501 ('sno', 'sno'), 2502 ('soo', 'soo'), 2503 ('tao', 'tao'), 2504]) 2505 2506I_SMP_EXTB = bit_struct( 2507name='smp_extb', 2508bit_set=I_BACKEND, 2509field_mappings=[ 2510 ('backend_op', 'backend_op', 'dma'), 2511 2512 ('fcnorm', 'fcnorm'), 2513 ('drc', 'drc'), 2514 ('dma_op', 'dma_op', 'smp'), 2515 2516 ('extb', 'extb', 1), 2517 ('dmn', 'dmn'), 2518 ('exta', 'exta', 0), 2519 ('chan', 'chan'), 2520 ('lodm', 'lodm'), 2521 2522 ('rsvd3', 'rsvd3_smp'), 2523 ('f16', 'f16'), 2524 ('swap', 'swap'), 2525 ('cachemode_ld', 'cachemode_smp_ld'), 2526 ('w', 'smp_w', 0), 2527]) 2528 2529I_SMP_EXTB_W = bit_struct( 2530name='smp_extb_w', 2531bit_set=I_BACKEND, 2532field_mappings=[ 2533 ('backend_op', 'backend_op', 'dma'), 2534 2535 ('fcnorm', 'fcnorm'), 2536 ('drc', 'drc'), 2537 ('dma_op', 'dma_op', 'smp'), 2538 2539 ('extb', 'extb', 1), 2540 ('dmn', 'dmn'), 2541 ('exta', 'exta', 0), 2542 ('chan', 'chan'), 2543 ('lodm', 'lodm'), 2544 2545 ('rsvd3', 'rsvd3_smp'), 2546 ('f16', 'f16'), 2547 ('swap', 'swap'), 2548 ('cachemode_st', 'cachemode_smp_st'), 2549 ('w', 'smp_w', 1), 2550]) 2551 2552I_SMP_EXTAB = bit_struct( 2553name='smp_extab', 2554bit_set=I_BACKEND, 2555field_mappings=[ 2556 ('backend_op', 'backend_op', 'dma'), 2557 2558 ('fcnorm', 'fcnorm'), 2559 ('drc', 'drc'), 2560 ('dma_op', 'dma_op', 'smp'), 2561 2562 ('extb', 'extb', 1), 2563 ('dmn', 'dmn'), 2564 ('exta', 'exta', 1), 2565 ('chan', 'chan'), 2566 ('lodm', 'lodm'), 2567 2568 ('pplod', 'pplod'), 2569 ('proj', 'proj'), 2570 ('sbmode', 'sbmode'), 2571 ('nncoords', 'nncoords'), 2572 ('sno', 'sno'), 2573 ('soo', 'soo'), 2574 ('tao', 'tao'), 2575 2576 ('rsvd3', 'rsvd3_smp'), 2577 ('f16', 'f16'), 2578 ('swap', 'swap'), 2579 ('cachemode_ld', 'cachemode_smp_ld'), 2580 ('w', 'smp_w', 0), 2581]) 2582 2583I_SMP_EXTAB_W = bit_struct( 2584name='smp_extab_w', 2585bit_set=I_BACKEND, 2586field_mappings=[ 2587 ('backend_op', 'backend_op', 'dma'), 2588 2589 ('fcnorm', 'fcnorm'), 2590 ('drc', 'drc'), 2591 ('dma_op', 'dma_op', 'smp'), 2592 2593 ('extb', 'extb', 1), 2594 ('dmn', 'dmn'), 2595 ('exta', 'exta', 1), 2596 ('chan', 'chan'), 2597 ('lodm', 'lodm'), 2598 2599 ('pplod', 'pplod'), 2600 ('proj', 'proj'), 2601 ('sbmode', 'sbmode'), 2602 ('nncoords', 'nncoords'), 2603 ('sno', 'sno'), 2604 ('soo', 'soo'), 2605 ('tao', 'tao'), 2606 2607 ('rsvd3', 'rsvd3_smp'), 2608 ('f16', 'f16'), 2609 ('swap', 'swap'), 2610 ('cachemode_st', 'cachemode_smp_st'), 2611 ('w', 'smp_w', 1), 2612]) 2613 2614I_ATOMIC = bit_struct( 2615name='atomic', 2616bit_set=I_BACKEND, 2617field_mappings=[ 2618 ('backend_op', 'backend_op', 'dma'), 2619 2620 ('rsvd0', 'rsvd0_dma'), 2621 ('drc', 'drc'), 2622 ('dma_op', 'dma_op', 'atomic'), 2623 2624 ('atomic_op', 'atomic_op'), 2625 ('rsvd1', 'rsvd1_atomic'), 2626 ('srcsel', 'srcsel'), 2627 2628 ('rsvd2', 'rsvd2_atomic'), 2629 ('dstsel', 'dstsel'), 2630]) 2631 2632# Bitwise ALU ops. 2633F_COUNT_SRC = field_enum_type( 2634name='count_src', num_bits=1, 2635elems=[ 2636 ('s2', 0b0), 2637 ('ft2', 0b1), 2638]) 2639 2640F_COUNT_OP = field_enum_type( 2641name='count_op', num_bits=2, 2642elems=[ 2643 ('cbs', 0b00), 2644 ('ftb', 0b01), 2645 ('byp', 0b10), 2646]) 2647 2648F_BITMASK_SRC_OP = field_enum_type( 2649name='bitmask_src_op', num_bits=1, 2650elems=[ 2651 ('byp', 0b0), 2652 ('msk', 0b1), 2653]) 2654 2655F_BITMASK_IMM_OP = field_enum_type( 2656name='bitmask_imm_op', num_bits=1, 2657elems=[ 2658 ('byp16', 0b0), 2659 ('byp32', 0b1), 2660]) 2661 2662F_SHIFT1_OP = field_enum_type( 2663name='shift1_op', num_bits=2, 2664elems=[ 2665 ('byp', 0b00), 2666 ('shfl', 0b01), 2667 ('rev', 0b10), 2668 ('lsl', 0b11), 2669]) 2670 2671F_LOGICAL_OP = field_enum_type( 2672name='logical_op', num_bits=3, 2673elems=[ 2674 ('or', 0b000), 2675 ('and', 0b001), 2676 ('xor', 0b010), 2677 ('nor', 0b100), 2678 ('nand', 0b101), 2679 ('xnor', 0b110), 2680 ('byp', 0b111), 2681]) 2682 2683F_BW_TST_SRC = field_enum_type( 2684name='bw_tst_src', num_bits=1, 2685elems=[ 2686 ('ft5', 0b0), 2687 ('ft3', 0b1), 2688]) 2689 2690F_BW_TST_OP = field_enum_type( 2691name='bw_tst_op', num_bits=1, 2692elems=[ 2693 ('z', 0b0), 2694 ('nz', 0b1), 2695]) 2696 2697F_SHIFT2_OP = field_enum_type( 2698name='shift2_op', num_bits=3, 2699elems=[ 2700 ('lsl', 0b000), 2701 ('shr', 0b001), 2702 ('rol', 0b010), 2703 ('cps', 0b011), 2704 ('asr_twb', 0b100), 2705 ('asr_pwb', 0b101), 2706 ('asr_mtb', 0b110), 2707 ('asr_ftb', 0b111), 2708]) 2709 2710I_BITWISE = bit_set( 2711name='bitwise', 2712pieces=[ 2713 ('ph0', (0, '7')), 2714 ('ph1', (0, '6')), 2715 2716 # phase 0 2717 ('csrc', (0, '6')), 2718 ('cnt', (0, '5')), 2719 ('ext0', (0, '4')), 2720 ('shft1', (0, '3:2')), 2721 ('cnt_byp', (0, '1')), 2722 ('bm', (0, '0')), 2723 2724 ('imm_7_0', (1, '7:0')), 2725 ('imm_15_8', (2, '7:0')), 2726 ('imm_23_16', (3, '7:0')), 2727 ('imm_31_24', (4, '7:0')), 2728 2729 # phase 1 2730 ('mskb', (0, '5')), 2731 ('mska', (0, '3')), 2732 ('logical_op', (0, '2:0')), 2733 2734 # phase 2 2735 ('pwen', (0, '5')), 2736 ('tsrc', (0, '4')), 2737 ('top', (0, '3')), 2738 ('shft2', (0, '2:0')), 2739], 2740fields=[ 2741 ('ph0', (F_BOOL, ['ph0'])), 2742 ('ph1', (F_BOOL, ['ph1'])), 2743 2744 # phase 0 2745 ('count_src', (F_COUNT_SRC, ['csrc'])), 2746 ('bitmask_imm', (F_BOOL, ['ext0'])), 2747 ('count_op', (F_COUNT_OP, ['cnt_byp', 'cnt'])), 2748 ('bitmask_src_op', (F_BITMASK_SRC_OP, ['bm'])), 2749 ('bitmask_imm_op', (F_BITMASK_IMM_OP, ['bm'])), 2750 ('shift1_op', (F_SHIFT1_OP, ['shft1'])), 2751 2752 ('imm16', (F_UINT16, ['imm_15_8', 'imm_7_0'])), 2753 ('imm32', (F_UINT32, ['imm_31_24', 'imm_23_16', 'imm_15_8', 'imm_7_0'])), 2754 2755 # phase 1 2756 ('mskb', (F_BOOL, ['mskb'])), 2757 ('rsvd0_ph1', (F_UINT1, ['ext0'], 0)), 2758 ('mska', (F_BOOL, ['mska'])), 2759 ('logical_op', (F_LOGICAL_OP, ['logical_op'])), 2760 2761 # phase 2 2762 ('pwen', (F_BOOL, ['pwen'])), 2763 ('tst_src', (F_BW_TST_SRC, ['tsrc'])), 2764 ('tst_op', (F_BW_TST_OP, ['top'])), 2765 ('shift2_op', (F_SHIFT2_OP, ['shft2'])), 2766]) 2767 2768I_PHASE0_SRC = bit_struct( 2769name='phase0_src', 2770bit_set=I_BITWISE, 2771field_mappings=[ 2772 ('ph0', 'ph0', 0), 2773 2774 ('count_src', 'count_src'), 2775 ('bitmask_imm', 'bitmask_imm', 0), 2776 ('count_op', 'count_op'), 2777 ('bitmask_src_op', 'bitmask_src_op'), 2778 ('shift1_op', 'shift1_op'), 2779]) 2780 2781I_PHASE0_IMM16 = bit_struct( 2782name='phase0_imm16', 2783bit_set=I_BITWISE, 2784field_mappings=[ 2785 ('ph0', 'ph0', 0), 2786 2787 ('count_src', 'count_src'), 2788 ('bitmask_imm', 'bitmask_imm', 1), 2789 ('count_op', 'count_op'), 2790 ('bitmask_imm_op', 'bitmask_imm_op', 'byp16'), 2791 ('shift1_op', 'shift1_op'), 2792 ('imm16', 'imm16'), 2793]) 2794 2795I_PHASE0_IMM32 = bit_struct( 2796name='phase0_imm32', 2797bit_set=I_BITWISE, 2798field_mappings=[ 2799 ('ph0', 'ph0', 0), 2800 2801 ('count_src', 'count_src'), 2802 ('bitmask_imm', 'bitmask_imm', 1), 2803 ('count_op', 'count_op'), 2804 ('bitmask_imm_op', 'bitmask_imm_op', 'byp32'), 2805 ('shift1_op', 'shift1_op'), 2806 ('imm32', 'imm32'), 2807]) 2808 2809I_PHASE1 = bit_struct( 2810name='phase1', 2811bit_set=I_BITWISE, 2812field_mappings=[ 2813 ('ph0', 'ph0', 0), 2814 ('ph1', 'ph1', 1), 2815 2816 ('mskb', 'mskb'), 2817 ('rsvd0', 'rsvd0_ph1'), 2818 ('mska', 'mska'), 2819 ('logical_op', 'logical_op'), 2820]) 2821 2822I_PHASE2 = bit_struct( 2823name='phase2', 2824bit_set=I_BITWISE, 2825field_mappings=[ 2826 ('ph0', 'ph0', 0), 2827 ('ph1', 'ph1', 0), 2828 2829 ('pwen', 'pwen'), 2830 ('tst_src', 'tst_src'), 2831 ('bw_tst_op', 'tst_op'), 2832 ('shift2_op', 'shift2_op'), 2833]) 2834 2835# Control ALU ops. 2836F_PCND = field_enum_type( 2837name='pcnd', num_bits=2, 2838elems=[ 2839 ('always', 0b00), 2840 ('p0_true', 0b01), 2841 ('never', 0b10), 2842 ('p0_false', 0b11), 2843]) 2844 2845F_CNDINST = field_enum_type( 2846name='cndinst', num_bits=3, 2847elems=[ 2848 ('st', 0b000), 2849 ('ef', 0b001), 2850 ('sm', 0b010), 2851 ('lt', 0b011), 2852 ('end', 0b100), 2853 ('setl_b', 0b101), 2854 ('lpc', 0b110), 2855 ('setl_a', 0b111), 2856]) 2857 2858F_LR = field_enum_type( 2859name='lr', num_bits=2, 2860elems=[ 2861 ('release', 0b00), 2862 ('release_sleep', 0b01), 2863 ('release_wakeup', 0b10), 2864 ('lock', 0b11), 2865]) 2866 2867F_TGT = field_enum_type( 2868name='tgt', num_bits=1, 2869elems=[ 2870 ('coeff', 0b0), 2871 ('shared', 0b1), 2872]) 2873 2874F_BPRED = field_enum_type( 2875name='bpred', num_bits=2, 2876elems=[ 2877 ('cc', 0b00), 2878 ('allp', 0b01), 2879 ('anyp', 0b10), 2880]) 2881 2882I_CTRL = bit_set( 2883name='ctrl', 2884pieces=[ 2885 # Branch 2886 ('link', (0, '4')), 2887 ('bpred', (0, '3:2')), 2888 ('abs', (0, '1')), 2889 ('rsvd0_branch_', (0, '0')), 2890 2891 ('branch_offset_7_1', (1, '7:1')), 2892 ('rsvd1_branch', (1, '0')), 2893 2894 ('branch_offset_15_8', (2, '7:0')), 2895 ('branch_offset_23_16', (3, '7:0')), 2896 ('branch_offset_31_24', (4, '7:0')), 2897 2898 # Conditional. 2899 ('rsvd0_cnd', (0, '7')), 2900 ('adjust', (0, '6:5')), 2901 ('pcnd', (0, '4:3')), 2902 ('cndinst', (0, '2:0')), 2903 2904 # Mutex. 2905 ('lr', (0, '7:6')), 2906 ('rsvd0_mutex', (0, '5:4')), 2907 ('id', (0, '3:0')), 2908 2909 # NOP 2910 ('rsvd0_nop', (0, '7:0')), 2911 2912 # SBO 2913 ('sbo_offset_6_0', (0, '7:1')), 2914 ('tgt', (0, '0')), 2915 2916 ('rsvd1_sbo', (1, '7:1')), 2917 ('sbo_offset_7', (1, '0')), 2918 2919 # ditr 2920 ('dest_7_0', (0, '7:0')), 2921 2922 ('coff_7_2', (1, '7:2')), 2923 ('p_itr', (1, '1:0')), 2924 2925 ('woff_b2_7_2', (2, '7:2')), 2926 ('ditr_mode', (2, '1:0')), 2927 2928 ('itr_count_b3', (3, '7:4')), 2929 ('coff_idx_ctrl_b3', (3, '3:2')), 2930 ('woff_idx_ctrl_b3', (3, '1:0')), 2931 2932 ('rsvd4_7_ditr', (4, '7')), 2933 ('f16_b4', (4, '6')), 2934 ('rsvd4_5_ditr', (4, '5:4')), 2935 ('sched_ctrl_b4', (4, '3:2')), 2936 ('drc_b4', (4, '1')), 2937 ('sat', (4, '0')), 2938 2939 # itrsmp 2940 ('texoff_7_2', (2, '7:2')), 2941 ('drc_b2', (2, '1')), 2942 ('itrsmp_mode_0', (2, '0')), 2943 2944 ('smpoff_7_2', (3, '7:2')), 2945 ('dmn', (3, '1:0')), 2946 2947 ('woff_b4_7_2', (4, '7:2')), 2948 ('proj', (4, '1')), 2949 2950 ('ext5', (5, '7')), 2951 ('f16_b5', (5, '6')), 2952 ('sched_ctrl_b5', (5, '5:4')), 2953 ('chan', (5, '3:2')), 2954 ('nncoords', (5, '1')), 2955 ('fcnorm', (5, '0')), 2956 2957 ('ext6', (6, '7')), 2958 ('itr_count_b6', (6, '6:3')), 2959 ('comparison', (6, '2')), 2960 ('rsvd6_itrsmp', (6, '1:0')), 2961 2962 ('rsvd7_itrsmp', (7, '7:5')), 2963 ('coff_idx_ctrl_b7', (7, '4:3')), 2964 ('woff_idx_ctrl_b7', (7, '2:1')), 2965 ('itrsmp_mode_1', (7, '0')), 2966], 2967fields=[ 2968 # Branch 2969 ('rsvd_branch', (F_UINT5, ['rsvd1_branch', 'rsvd0_branch_', 'adjust', 'rsvd0_cnd'], 0)), 2970 ('link', (F_BOOL, ['link'])), 2971 ('bpred', (F_BPRED, ['bpred'])), 2972 ('abs', (F_BOOL, ['abs'])), 2973 ('branch_offset', (F_OFFSET31, ['branch_offset_31_24', 'branch_offset_23_16', 'branch_offset_15_8', 'branch_offset_7_1'])), 2974 2975 # Conditional. 2976 ('rsvd_cnd', (F_UINT1, ['rsvd0_cnd'], 0)), 2977 ('adjust', (F_UINT2, ['adjust'])), 2978 ('pcnd', (F_PCND, ['pcnd'])), 2979 ('cndinst', (F_CNDINST, ['cndinst'])), 2980 2981 # Mutex. 2982 ('lr', (F_LR, ['lr'])), 2983 ('rsvd_mutex', (F_UINT2, ['rsvd0_mutex'], 0)), 2984 ('id', (F_UINT4, ['id'])), 2985 2986 # NOP 2987 ('rsvd_nop', (F_UINT8, ['rsvd0_nop'], 0)), 2988 2989 # SBO 2990 ('rsvd_sbo', (F_UINT7, ['rsvd1_sbo'], 0)), 2991 ('tgt', (F_TGT, ['tgt'])), 2992 ('sbo_offset', (F_UINT8, ['sbo_offset_7', 'sbo_offset_6_0'])), 2993 2994 # ditr 2995 ('dest', (F_UINT8, ['dest_7_0'])), 2996 2997 ('coff', (F_UINT6MUL4, ['coff_7_2'])), 2998 ('p_itr', (F_PERSP_CTL, ['p_itr'])), 2999 3000 ('woff_b2', (F_UINT6MUL4, ['woff_b2_7_2'])), 3001 ('ditr_mode', (F_ITER_MODE, ['ditr_mode'])), 3002 3003 ('itr_count_b3', (F_UINT4_POS_WRAP, ['itr_count_b3'])), 3004 ('coff_idx_ctrl_b3', (F_IDX_CTRL, ['coff_idx_ctrl_b3'])), 3005 ('woff_idx_ctrl_b3', (F_IDX_CTRL, ['woff_idx_ctrl_b3'])), 3006 3007 ('rsvd4_7_ditr', (F_UINT1, ['rsvd4_7_ditr'], 0)), 3008 ('f16_b4', (F_BOOL, ['f16_b4'])), 3009 ('rsvd4_5_ditr', (F_UINT2, ['rsvd4_5_ditr'], 0)), 3010 ('sched_ctrl_b4', (F_SCHED_CTRL, ['sched_ctrl_b4'])), 3011 ('drc_b4', (F_UINT1, ['drc_b4'])), 3012 ('sat', (F_BOOL, ['sat'])), 3013 3014 # itrsmp 3015 ('texoff', (F_UINT6MUL4, ['texoff_7_2'])), 3016 ('drc_b2', (F_UINT1, ['drc_b2'])), 3017 ('itrsmp_mode1', (F_ITER_MODE1, ['itrsmp_mode_0'])), 3018 3019 ('smpoff', (F_UINT6MUL4, ['smpoff_7_2'])), 3020 ('dmn', (F_DMN, ['dmn'])), 3021 3022 ('woff_b4', (F_UINT6MUL4, ['woff_b4_7_2'])), 3023 ('proj', (F_BOOL, ['proj'])), 3024 3025 ('ext5', (F_BOOL, ['ext5'])), 3026 ('f16_b5', (F_BOOL, ['f16_b5'])), 3027 ('sched_ctrl_b5', (F_SCHED_CTRL, ['sched_ctrl_b5'])), 3028 ('chan', (F_UINT2_POS_INC, ['chan'])), 3029 ('nncoords', (F_BOOL, ['nncoords'])), 3030 ('fcnorm', (F_BOOL, ['fcnorm'])), 3031 3032 ('ext6', (F_BOOL, ['ext6'])), 3033 ('itr_count_b6', (F_UINT4_POS_WRAP, ['itr_count_b6'])), 3034 ('comparison', (F_BOOL, ['comparison'])), 3035 ('rsvd6_itrsmp', (F_UINT2, ['rsvd6_itrsmp'], 0)), 3036 3037 ('rsvd7_itrsmp', (F_UINT3, ['rsvd7_itrsmp'], 0)), 3038 ('coff_idx_ctrl_b7', (F_IDX_CTRL, ['coff_idx_ctrl_b7'])), 3039 ('woff_idx_ctrl_b7', (F_IDX_CTRL, ['woff_idx_ctrl_b7'])), 3040 ('itrsmp_mode', (F_ITER_MODE, ['itrsmp_mode_1', 'itrsmp_mode_0'])), 3041]) 3042 3043I_BRANCH = bit_struct( 3044name='branch', 3045bit_set=I_CTRL, 3046field_mappings=[ 3047 ('rsvd', 'rsvd_branch'), 3048 3049 ('link', 'link'), 3050 ('bpred', 'bpred'), 3051 ('abs', 'abs'), 3052 ('offset', 'branch_offset'), 3053]) 3054 3055I_LAPC = bit_struct( 3056name='lapc', 3057bit_set=I_CTRL, 3058field_mappings=[]) 3059 3060I_SAVL = bit_struct( 3061name='savl', 3062bit_set=I_CTRL, 3063field_mappings=[]) 3064 3065I_CND = bit_struct( 3066name='cnd', 3067bit_set=I_CTRL, 3068field_mappings=[ 3069 ('rsvd', 'rsvd_cnd'), 3070 3071 ('adjust', 'adjust'), 3072 ('pcnd', 'pcnd'), 3073 ('cndinst', 'cndinst'), 3074]) 3075 3076I_WOP = bit_struct( 3077name='wop', 3078bit_set=I_CTRL, 3079field_mappings=[]) 3080 3081I_WDF = bit_struct( 3082name='wdf', 3083bit_set=I_CTRL, 3084field_mappings=[]) 3085 3086I_MUTEX = bit_struct( 3087name='mutex', 3088bit_set=I_CTRL, 3089field_mappings=[ 3090 ('rsvd', 'rsvd_mutex'), 3091 3092 ('lr', 'lr'), 3093 ('id', 'id'), 3094]) 3095 3096I_NOP = bit_struct( 3097name='nop', 3098bit_set=I_CTRL, 3099field_mappings=[ 3100 ('rsvd', 'rsvd_nop'), 3101]) 3102 3103# SBO. 3104I_SBO = bit_struct( 3105name='sbo', 3106bit_set=I_CTRL, 3107field_mappings=[ 3108 ('rsvd', 'rsvd_sbo'), 3109 ('tgt', 'tgt'), 3110 ('offset', 'sbo_offset'), 3111]) 3112 3113I_DITR = bit_struct( 3114name='ditr', 3115bit_set=I_CTRL, 3116field_mappings=[ 3117 'dest', 3118 3119 'coff', 3120 ('p', 'p_itr'), 3121 3122 ('woff', 'woff_b2'), 3123 ('mode', 'ditr_mode'), 3124 3125 ('count', 'itr_count_b3'), 3126 ('coff_idx_ctrl', 'coff_idx_ctrl_b3'), 3127 ('woff_idx_ctrl', 'woff_idx_ctrl_b3'), 3128 3129 ('rsvd0', 'rsvd4_7_ditr'), 3130 ('f16', 'f16_b4'), 3131 ('rsvd1', 'rsvd4_5_ditr'), 3132 ('sched_ctrl', 'sched_ctrl_b4'), 3133 ('drc', 'drc_b4'), 3134 'sat', 3135]) 3136 3137I_ITRSMP = bit_struct( 3138name='itrsmp', 3139bit_set=I_CTRL, 3140field_mappings=[ 3141 'dest', 3142 3143 'coff', 3144 ('p', 'p_itr'), 3145 3146 'texoff', 3147 ('drc', 'drc_b2'), 3148 ('mode', 'itrsmp_mode1'), 3149 3150 'smpoff', 3151 'dmn', 3152 3153 ('woff', 'woff_b4'), 3154 'proj', 3155 'sat', 3156 3157 ('ext5', 'ext5', False), 3158 ('f16', 'f16_b5'), 3159 ('sched_ctrl', 'sched_ctrl_b5'), 3160 'chan', 3161 'nncoords', 3162 'fcnorm', 3163]) 3164 3165I_ITRSMP_EXT = bit_struct( 3166name='itrsmp_ext', 3167bit_set=I_CTRL, 3168field_mappings=[ 3169 'dest', 3170 3171 'coff', 3172 ('p', 'p_itr'), 3173 3174 'texoff', 3175 ('drc', 'drc_b2'), 3176 ('mode', 'itrsmp_mode1'), 3177 3178 'smpoff', 3179 'dmn', 3180 3181 ('woff', 'woff_b4'), 3182 'proj', 3183 'sat', 3184 3185 ('ext5', 'ext5', True), 3186 ('f16', 'f16_b5'), 3187 ('sched_ctrl', 'sched_ctrl_b5'), 3188 'chan', 3189 'nncoords', 3190 'fcnorm', 3191 3192 ('ext6', 'ext6', False), 3193 ('count', 'itr_count_b6'), 3194 'comparison', 3195 'rsvd6_itrsmp', 3196]) 3197 3198I_ITRSMP_EXT2 = bit_struct( 3199name='itrsmp_ext2', 3200bit_set=I_CTRL, 3201field_mappings=[ 3202 'dest', 3203 3204 'coff', 3205 ('p', 'p_itr'), 3206 3207 'texoff', 3208 ('drc', 'drc_b2'), 3209 3210 'smpoff', 3211 'dmn', 3212 3213 ('woff', 'woff_b4'), 3214 'proj', 3215 'sat', 3216 3217 ('ext5', 'ext5', True), 3218 ('f16', 'f16_b5'), 3219 ('sched_ctrl', 'sched_ctrl_b5'), 3220 'chan', 3221 'nncoords', 3222 'fcnorm', 3223 3224 ('ext6', 'ext6', True), 3225 ('count', 'itr_count_b6'), 3226 'comparison', 3227 'rsvd6_itrsmp', 3228 3229 'rsvd7_itrsmp', 3230 ('coff_idx_ctrl', 'coff_idx_ctrl_b7'), 3231 ('woff_idx_ctrl', 'woff_idx_ctrl_b7'), 3232 ('mode', 'itrsmp_mode'), 3233]) 3234