00001 #ifndef __NV40_REG_H__
00002 #define __NV40_REG_H__
00003
00024 #define NV40_VTX_FORMAT 0x1740
00025 #define NV40_VTX_FORMAT_TYPE_SHIFT 0
00026 #define NV40_VTX_FORMAT_TYPE_MASK (0x0F << 0)
00027 # define NV40_VTX_FORMAT_TYPE_FLOAT 2
00028 # define NV40_VTX_FORMAT_TYPE_UBYTE 4
00029 #define NV40_VTX_FORMAT_NCOMP_SHIFT 4
00030 #define NV40_VTX_FORMAT_NCOMP_MASK (0x0F << 4)
00031 #define NV40_VTX_FORMAT_STRIDE_SHIFT 8
00032 #define NV40_VTX_FORMAT_STRIDE_MASK (UNKNOWN << 8)
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #define NV40_VB_POINTER 0x1680
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058 #define NV40_VB_VERTEX_BATCH 0x1814
00059 #define NV40_VB_VERTEX_BATCH_OFFSET_SHIFT 0
00060 #define NV40_VB_VERTEX_BATCH_OFFSET_MASK (0xFFFFFF << 0)
00061 #define NV40_VB_VERTEX_BATCH_COUNT_SHIFT 24
00062 #define NV40_VB_VERTEX_BATCH_COUNT_MASK (0xFF << 24)
00063
00064 #define NV30_TX 0x00001A00
00065 #define NV30_TX_UNIT(n) (0x1A00 + (n * 32))
00066
00067
00068 # define NV30_TX_MIPMAP_COUNT_SHIFT 20
00069 # define NV30_TX_MIPMAP_COUNT_MASK (0xF << 20)
00070 # define NV30_TX_NPOT (1 << 13)
00071 # define NV30_TX_RECTANGLE (1 << 14)
00072 # define NV30_TX_FORMAT_SHIFT 8
00073 # define NV30_TX_FORMAT_MASK (0x1F << 8)
00074 # define NV30_TX_FORMAT_L8 0x01
00075 # define NV30_TX_FORMAT_A1R5G5B5 0x02
00076 # define NV30_TX_FORMAT_A4R4G4B4 0x03
00077 # define NV30_TX_FORMAT_R5G6B5 0x04
00078 # define NV30_TX_FORMAT_A8R8G8B8 0x05
00079 # define NV30_TX_FORMAT_DXT1 0x06
00080 # define NV30_TX_FORMAT_DXT3 0x07
00081 # define NV30_TX_FORMAT_DXT5 0x08
00082 # define NV30_TX_FORMAT_L16 0x14
00083 # define NV30_TX_FORMAT_G16R16 0x15
00084 # define NV30_TX_FORMAT_A8L8 0x18
00085 # define NV30_TX_NCOMP_SHIFT 4
00086 # define NV30_TX_NCOMP_MASK (0x3 << 4)
00087 # define NV30_TX_CUBIC (1 << 2)
00088 # define NV30_TX_WRAP_S_SHIFT 0
00089 # define NV30_TX_WRAP_S_MASK (0xF << 0)
00090 # define NV30_TX_WRAP_T_SHIFT 8
00091 # define NV30_TX_WRAP_T_MASK (0xF << 8)
00092 # define NV30_TX_WRAP_R_SHIFT 16
00093 # define NV30_TX_WRAP_R_MASK (0xF << 16)
00094 # define NV30_TX_REPEAT 1
00095 # define NV30_TX_MIRRORED_REPEAT 2
00096 # define NV30_TX_CLAMP_TO_EDGE 3
00097 # define NV30_TX_CLAMP_TO_BORDER 4
00098 # define NV30_TX_CLAMP 5
00099
00100
00101
00102
00103
00104 # define NV30_TX_S0_X_SHIFT 14
00105 # define NV30_TX_S0_Y_SHIFT 12
00106 # define NV30_TX_S0_Z_SHIFT 10
00107 # define NV30_TX_S0_W_SHIFT 8
00108 # define NV30_TX_S0_ZERO 0
00109 # define NV30_TX_S0_ONE 1
00110 # define NV30_TX_S0_S1 2
00111 # define NV30_TX_S1_X_SHIFT 6
00112 # define NV30_TX_S1_Y_SHIFT 4
00113 # define NV30_TX_S1_Z_SHIFT 2
00114 # define NV30_TX_S1_W_SHIFT 0
00115 # define NV30_TX_S1_X 3
00116 # define NV30_TX_S1_Y 2
00117 # define NV30_TX_S1_Z 1
00118 # define NV30_TX_S1_W 0
00119
00120 # define NV30_TX_MIN_FILTER_SHIFT 16
00121 # define NV30_TX_MIN_FILTER_MASK (0xF << 16)
00122 # define NV30_TX_MAG_FILTER_SHIFT 24
00123 # define NV30_TX_MAG_FILTER_MASK (0xF << 24)
00124 # define NV30_TX_FILTER_NEAREST 1
00125 # define NV30_TX_FILTER_LINEAR 2
00126 # define NV30_TX_FILTER_NEAREST_MIPMAP_NEAREST 3
00127 # define NV30_TX_FILTER_LINEAR_MIPMAP_NEAREST 4
00128 # define NV30_TX_FILTER_NEAREST_MIPMAP_LINEAR 5
00129 # define NV30_TX_FILTER_LINEAR_MIPMAP_LINEAR 6
00130
00131 # define NV30_TX_WIDTH_SHIFT 16
00132 # define NV30_TX_WIDTH_MASK (0xFFFF << 16)
00133 # define NV30_TX_HEIGHT_SHIFT 0
00134 # define NV30_TX_HEIGHT_MASK (0xFFFF << 0)
00135
00136
00137
00138 #define NV30_TX_DEPTH 0x1840
00139 #define NV30_TX_DEPTH_UNIT(n) (0x1840 + n*4)
00140 # define NV30_TX_DEPTH_SHIFT 20
00141 # define NV30_TX_DEPTH_MASK (0xFFF << 20)
00142 # define NV30_TX_DEPTH_NPOT (1 << 7)
00143
00144
00145 #define NV40_VP_UPLOAD_FROM_ID 0x1E9C
00146 #define NV40_VP_PROGRAM_START_ID 0x1EA0
00147
00148
00149
00213
00214 #define NV40_VP_INST0_UNK0 (1 << 30)
00215 #define NV40_VP_INST_COND_UPDATE_ENABLE ((1 << 14)|1<<29)
00216 #define NV40_VP_INST_INDEX_INPUT (1 << 27)
00217 #define NV40_VP_INST_COND_REG_SELECT_1 (1 << 25)
00218 #define NV40_VP_INST_ADDR_REG_SELECT_1 (1 << 24)
00219 #define NV40_VP_INST_SRC2_ABS (1 << 23)
00220 #define NV40_VP_INST_SRC1_ABS (1 << 22)
00221 #define NV40_VP_INST_SRC0_ABS (1 << 21)
00222 #define NV40_VP_INST_VEC_DEST_TEMP_SHIFT 15
00223 #define NV40_VP_INST_VEC_DEST_TEMP_MASK (0x3F << 15)
00224 #define NV40_VP_INST_COND_TEST_ENABLE (1 << 13)
00225 #define NV40_VP_INST_COND_SHIFT 10
00226 #define NV40_VP_INST_COND_MASK (0x7 << 10)
00227 # define NV40_VP_INST_COND_FL 0
00228 # define NV40_VP_INST_COND_LT 1
00229 # define NV40_VP_INST_COND_EQ 2
00230 # define NV40_VP_INST_COND_LE 3
00231 # define NV40_VP_INST_COND_GT 4
00232 # define NV40_VP_INST_COND_NE 5
00233 # define NV40_VP_INST_COND_GE 6
00234 # define NV40_VP_INST_COND_TR 7
00235 #define NV40_VP_INST_COND_SWZ_X_SHIFT 8
00236 #define NV40_VP_INST_COND_SWZ_X_MASK (3 << 8)
00237 #define NV40_VP_INST_COND_SWZ_Y_SHIFT 6
00238 #define NV40_VP_INST_COND_SWZ_Y_MASK (3 << 6)
00239 #define NV40_VP_INST_COND_SWZ_Z_SHIFT 4
00240 #define NV40_VP_INST_COND_SWZ_Z_MASK (3 << 4)
00241 #define NV40_VP_INST_COND_SWZ_W_SHIFT 2
00242 #define NV40_VP_INST_COND_SWZ_W_MASK (3 << 2)
00243 #define NV40_VP_INST_COND_SWZ_ALL_SHIFT 2
00244 #define NV40_VP_INST_COND_SWZ_ALL_MASK (0xFF << 2)
00245 #define NV40_VP_INST_ADDR_SWZ_SHIFT 0
00246 #define NV40_VP_INST_ADDR_SWZ_MASK (0x03 << 0)
00247 #define NV40_VP_INST0_KNOWN ( \
00248 NV40_VP_INST_INDEX_INPUT | \
00249 NV40_VP_INST_COND_REG_SELECT_1 | \
00250 NV40_VP_INST_ADDR_REG_SELECT_1 | \
00251 NV40_VP_INST_SRC2_ABS | \
00252 NV40_VP_INST_SRC1_ABS | \
00253 NV40_VP_INST_SRC0_ABS | \
00254 NV40_VP_INST_VEC_DEST_TEMP_MASK | \
00255 NV40_VP_INST_COND_TEST_ENABLE | \
00256 NV40_VP_INST_COND_MASK | \
00257 NV40_VP_INST_COND_SWZ_ALL_MASK | \
00258 NV40_VP_INST_ADDR_SWZ_MASK)
00259
00260
00261 #define NV40_VP_INST_VEC_OPCODE_SHIFT 22
00262 #define NV40_VP_INST_VEC_OPCODE_MASK (0x1F << 22)
00263 # define NV40_VP_INST_OP_NOP 0x00
00264 # define NV40_VP_INST_OP_MOV 0x01
00265 # define NV40_VP_INST_OP_MUL 0x02
00266 # define NV40_VP_INST_OP_ADD 0x03
00267 # define NV40_VP_INST_OP_MAD 0x04
00268 # define NV40_VP_INST_OP_DP3 0x05
00269 # define NV40_VP_INST_OP_DP4 0x07
00270 # define NV40_VP_INST_OP_DPH 0x06
00271 # define NV40_VP_INST_OP_DST 0x08
00272 # define NV40_VP_INST_OP_MIN 0x09
00273 # define NV40_VP_INST_OP_MAX 0x0A
00274 # define NV40_VP_INST_OP_SLT 0x0B
00275 # define NV40_VP_INST_OP_SGE 0x0C
00276 # define NV40_VP_INST_OP_ARL 0x0D
00277 # define NV40_VP_INST_OP_FRC 0x0E
00278 # define NV40_VP_INST_OP_FLR 0x0F
00279 # define NV40_VP_INST_OP_SEQ 0x10
00280 # define NV40_VP_INST_OP_SFL 0x11
00281 # define NV40_VP_INST_OP_SGT 0x12
00282 # define NV40_VP_INST_OP_SLE 0x13
00283 # define NV40_VP_INST_OP_SNE 0x14
00284 # define NV40_VP_INST_OP_STR 0x15
00285 # define NV40_VP_INST_OP_SSG 0x16
00286 # define NV40_VP_INST_OP_ARR 0x17
00287 # define NV40_VP_INST_OP_ARA 0x18
00288 #define NV40_VP_INST_SCA_OPCODE_SHIFT 27
00289 #define NV40_VP_INST_SCA_OPCODE_MASK (0x1F << 27)
00290 # define NV40_VP_INST_OP_RCP 0x02
00291 # define NV40_VP_INST_OP_RCC 0x03
00292 # define NV40_VP_INST_OP_RSQ 0x04
00293 # define NV40_VP_INST_OP_EXP 0x05
00294 # define NV40_VP_INST_OP_LOG 0x06
00295 # define NV40_VP_INST_OP_LIT 0x07
00296 # define NV40_VP_INST_OP_BRA 0x09
00297 # define NV40_VP_INST_OP_CAL 0x0B
00298 # define NV40_VP_INST_OP_RET 0x0C
00299 # define NV40_VP_INST_OP_LG2 0x0D
00300 # define NV40_VP_INST_OP_EX2 0x0E
00301 # define NV40_VP_INST_OP_SIN 0x0F
00302 # define NV40_VP_INST_OP_COS 0x10
00303 # define NV40_VP_INST_OP_PUSHA 0x13
00304 # define NV40_VP_INST_OP_POPA 0x14
00305 #define NV40_VP_INST_CONST_SRC_SHIFT 12
00306 #define NV40_VP_INST_CONST_SRC_MASK (0xFF << 12)
00307 #define NV40_VP_INST_INPUT_SRC_SHIFT 8
00308 #define NV40_VP_INST_INPUT_SRC_MASK (0x0F << 8)
00309 # define NV40_VP_INST_IN_POS 0
00310 # define NV40_VP_INST_IN_WEIGHT 1
00311 # define NV40_VP_INST_IN_NORMAL 2
00312 # define NV40_VP_INST_IN_COL0 3
00313 # define NV40_VP_INST_IN_COL1 4
00314 # define NV40_VP_INST_IN_FOGC 5
00315 # define NV40_VP_INST_IN_TC0 8
00316 # define NV40_VP_INST_IN_TC(n) (8+n)
00317 #define NV40_VP_INST_SRC0H_SHIFT 0
00318 #define NV40_VP_INST_SRC0H_MASK (0xFF << 0)
00319 #define NV40_VP_INST1_KNOWN ( \
00320 NV40_VP_INST_VEC_OPCODE_MASK | \
00321 NV40_VP_INST_SCA_OPCODE_MASK | \
00322 NV40_VP_INST_CONST_SRC_MASK | \
00323 NV40_VP_INST_INPUT_SRC_MASK | \
00324 NV40_VP_INST_SRC0H_MASK \
00325 )
00326
00327
00328 #define NV40_VP_INST_SRC0L_SHIFT 23
00329 #define NV40_VP_INST_SRC0L_MASK (0x1FF << 23)
00330 #define NV40_VP_INST_SRC1_SHIFT 6
00331 #define NV40_VP_INST_SRC1_MASK (0x1FFFF << 6)
00332 #define NV40_VP_INST_SRC2H_SHIFT 0
00333 #define NV40_VP_INST_SRC2H_MASK (0x3F << 0)
00334 #define NV40_VP_INST_IADDRH_SHIFT 0
00335 #define NV40_VP_INST_IADDRH_MASK (0x1F << 0)
00336
00337
00338 #define NV40_VP_INST_IADDRL_SHIFT 29
00339 #define NV40_VP_INST_IADDRL_MASK (7 << 29)
00340 #define NV40_VP_INST_SRC2L_SHIFT 21
00341 #define NV40_VP_INST_SRC2L_MASK (0x7FF << 21)
00342 #define NV40_VP_INST_SCA_WRITEMASK_SHIFT 17
00343 #define NV40_VP_INST_SCA_WRITEMASK_MASK (0xF << 17)
00344 # define NV40_VP_INST_SCA_WRITEMASK_X (1 << 20)
00345 # define NV40_VP_INST_SCA_WRITEMASK_Y (1 << 19)
00346 # define NV40_VP_INST_SCA_WRITEMASK_Z (1 << 18)
00347 # define NV40_VP_INST_SCA_WRITEMASK_W (1 << 17)
00348 #define NV40_VP_INST_VEC_WRITEMASK_SHIFT 13
00349 #define NV40_VP_INST_VEC_WRITEMASK_MASK (0xF << 13)
00350 # define NV40_VP_INST_VEC_WRITEMASK_X (1 << 16)
00351 # define NV40_VP_INST_VEC_WRITEMASK_Y (1 << 15)
00352 # define NV40_VP_INST_VEC_WRITEMASK_Z (1 << 14)
00353 # define NV40_VP_INST_VEC_WRITEMASK_W (1 << 13)
00354 #define NV40_VP_INST_SCA_DEST_TEMP_SHIFT 7
00355 #define NV40_VP_INST_SCA_DEST_TEMP_MASK (0x3F << 7)
00356 #define NV40_VP_INST_DEST_SHIFT 2
00357 #define NV40_VP_INST_DEST_MASK (31 << 2)
00358 # define NV40_VP_INST_DEST_POS 0
00359 # define NV40_VP_INST_DEST_COL0 1
00360 # define NV40_VP_INST_DEST_COL1 2
00361 # define NV40_VP_INST_DEST_BFC0 3
00362 # define NV40_VP_INST_DEST_BFC1 4
00363 # define NV40_VP_INST_DEST_FOGC 5
00364 # define NV40_VP_INST_DEST_PSZ 6
00365 # define NV40_VP_INST_DEST_TC0 7
00366 # define NV40_VP_INST_DEST_TC(n) (7+n)
00367 # define NV40_VP_INST_DEST_TEMP 0x1F
00368 #define NV40_VP_INST_INDEX_CONST (1 << 1)
00369 #define NV40_VP_INST_UNK_00 (1 << 0)
00370 #define NV40_VP_INST3_KNOWN ( \
00371 NV40_VP_INST_SRC2L_MASK |\
00372 NV40_VP_INST_SCA_WRITEMASK_MASK |\
00373 NV40_VP_INST_VEC_WRITEMASK_MASK |\
00374 NV40_VP_INST_SCA_DEST_TEMP_MASK |\
00375 NV40_VP_INST_DEST_MASK |\
00376 NV40_VP_INST_INDEX_CONST)
00377
00378
00379 #define NV40_VP_SRC0_HIGH_SHIFT 9
00380 #define NV40_VP_SRC0_HIGH_MASK 0x0001FE00
00381 #define NV40_VP_SRC0_LOW_MASK 0x000001FF
00382 #define NV40_VP_SRC2_HIGH_SHIFT 11
00383 #define NV40_VP_SRC2_HIGH_MASK 0x0001F800
00384 #define NV40_VP_SRC2_LOW_MASK 0x000007FF
00385
00386
00387 #define NV40_VP_SRC_NEGATE (1 << 16)
00388 #define NV40_VP_SRC_SWZ_X_SHIFT 14
00389 #define NV40_VP_SRC_SWZ_X_MASK (3 << 14)
00390 #define NV40_VP_SRC_SWZ_Y_SHIFT 12
00391 #define NV40_VP_SRC_SWZ_Y_MASK (3 << 12)
00392 #define NV40_VP_SRC_SWZ_Z_SHIFT 10
00393 #define NV40_VP_SRC_SWZ_Z_MASK (3 << 10)
00394 #define NV40_VP_SRC_SWZ_W_SHIFT 8
00395 #define NV40_VP_SRC_SWZ_W_MASK (3 << 8)
00396 #define NV40_VP_SRC_SWZ_ALL_SHIFT 8
00397 #define NV40_VP_SRC_SWZ_ALL_MASK (0xFF << 8)
00398 #define NV40_VP_SRC_TEMP_SRC_SHIFT 2
00399 #define NV40_VP_SRC_TEMP_SRC_MASK (0x3F << 2)
00400 #define NV40_VP_SRC_REG_TYPE_SHIFT 0
00401 #define NV40_VP_SRC_REG_TYPE_MASK (3 << 0)
00402 # define NV40_VP_SRC_REG_TYPE_UNK0 0
00403 # define NV40_VP_SRC_REG_TYPE_TEMP 1
00404 # define NV40_VP_SRC_REG_TYPE_INPUT 2
00405 # define NV40_VP_SRC_REG_TYPE_CONST 3
00406
00462
00463 #define NV40_FP_OP_PROGRAM_END (1 << 0)
00464 #define NV40_FP_OP_OUT_REG_SHIFT 1
00465 #define NV40_FP_OP_OUT_REG_MASK (31 << 1)
00466 #define NV40_FP_OP_COND_WRITE_ENABLE (1 << 8)
00467 #define NV40_FP_OP_OUTMASK_SHIFT 9
00468 #define NV40_FP_OP_OUTMASK_MASK (0xF << 9)
00469 # define NV40_FP_OP_OUT_X (1 << 9)
00470 # define NV40_FP_OP_OUT_Y (1 << 10)
00471 # define NV40_FP_OP_OUT_Z (1 << 11)
00472 # define NV40_FP_OP_OUT_W (1 << 12)
00473
00474
00475
00476 #define NV40_FP_OP_INPUT_SRC_SHIFT 13
00477 #define NV40_FP_OP_INPUT_SRC_MASK (15 << 13)
00478 # define NV40_FP_OP_INPUT_SRC_POSITION 0x0
00479 # define NV40_FP_OP_INPUT_SRC_COL0 0x1
00480 # define NV40_FP_OP_INPUT_SRC_COL1 0x2
00481 # define NV40_FP_OP_INPUT_SRC_FOGC 0x3
00482 # define NV40_FP_OP_INPUT_SRC_TC0 0x4
00483 # define NV40_FP_OP_INPUT_SRC_TC(n) (0x4 + n)
00484 #define NV40_FP_OP_TEX_UNIT_SHIFT 17
00485 #define NV40_FP_OP_TEX_UNIT_MASK (0xF << 17)
00486 #define NV40_FP_OP_PRECISION_SHIFT 22
00487 #define NV40_FP_OP_PRECISION_MASK (3 << 22)
00488 # define NV40_FP_PRECISION_FP32 0
00489 # define NV40_FP_PRECISION_FP16 1
00490 # define NV40_FP_PRECISION_FX12 2
00491 #define NV40_FP_OP_OPCODE_SHIFT 24
00492 #define NV40_FP_OP_OPCODE_MASK (0x3F << 24)
00493 # define NV40_FP_OP_OPCODE_NOP 0x00
00494 # define NV40_FP_OP_OPCODE_MOV 0x01
00495 # define NV40_FP_OP_OPCODE_MUL 0x02
00496 # define NV40_FP_OP_OPCODE_ADD 0x03
00497 # define NV40_FP_OP_OPCODE_MAD 0x04
00498 # define NV40_FP_OP_OPCODE_DP3 0x05
00499 # define NV40_FP_OP_OPCODE_DP4 0x06
00500 # define NV40_FP_OP_OPCODE_DST 0x07
00501 # define NV40_FP_OP_OPCODE_MIN 0x08
00502 # define NV40_FP_OP_OPCODE_MAX 0x09
00503 # define NV40_FP_OP_OPCODE_SLT 0x0A
00504 # define NV40_FP_OP_OPCODE_SGE 0x0B
00505 # define NV40_FP_OP_OPCODE_SLE 0x0C
00506 # define NV40_FP_OP_OPCODE_SGT 0x0D
00507 # define NV40_FP_OP_OPCODE_SNE 0x0E
00508 # define NV40_FP_OP_OPCODE_SEQ 0x0F
00509 # define NV40_FP_OP_OPCODE_FRC 0x10
00510 # define NV40_FP_OP_OPCODE_FLR 0x11
00511 # define NV40_FP_OP_OPCODE_PK4B 0x13
00512 # define NV40_FP_OP_OPCODE_UP4B 0x14
00513 # define NV40_FP_OP_OPCODE_DDX 0x15
00514 # define NV40_FP_OP_OPCODE_DDY 0x16
00515 # define NV40_FP_OP_OPCODE_TEX 0x17
00516 # define NV40_FP_OP_OPCODE_TXP 0x18
00517 # define NV40_FP_OP_OPCODE_TXD 0x19
00518 # define NV40_FP_OP_OPCODE_RCP 0x1A
00519 # define NV40_FP_OP_OPCODE_EX2 0x1C
00520 # define NV40_FP_OP_OPCODE_LG2 0x1D
00521 # define NV40_FP_OP_OPCODE_COS 0x22
00522 # define NV40_FP_OP_OPCODE_SIN 0x23
00523 # define NV40_FP_OP_OPCODE_PK2H 0x24
00524 # define NV40_FP_OP_OPCODE_UP2H 0x25
00525 # define NV40_FP_OP_OPCODE_PK4UB 0x27
00526 # define NV40_FP_OP_OPCODE_UP4UB 0x28
00527 # define NV40_FP_OP_OPCODE_PK2US 0x29
00528 # define NV40_FP_OP_OPCODE_UP2US 0x2A
00529 # define NV40_FP_OP_OPCODE_DP2A 0x2E
00530 # define NV40_FP_OP_OPCODE_TXL 0x2F
00531 # define NV40_FP_OP_OPCODE_TXB 0x31
00532 # define NV40_FP_OP_OPCODE_DIV 0x3A
00533
00534 # define NV40_FP_OP_BRA_OPCODE_BRK 0x0
00535 # define NV40_FP_OP_BRA_OPCODE_CAL 0x1
00536 # define NV40_FP_OP_BRA_OPCODE_IF 0x2
00537 # define NV40_FP_OP_BRA_OPCODE_LOOP 0x3
00538 # define NV40_FP_OP_BRA_OPCODE_REP 0x4
00539 # define NV40_FP_OP_BRA_OPCODE_RET 0x5
00540 #define NV40_FP_OP_OUT_SAT (1 << 31)
00541
00542
00543 #define NV40_FP_OP_OUT_ABS (1 << 29)
00544 #define NV40_FP_OP_COND_SWZ_W_SHIFT 27
00545 #define NV40_FP_OP_COND_SWZ_W_MASK (3 << 27)
00546 #define NV40_FP_OP_COND_SWZ_Z_SHIFT 25
00547 #define NV40_FP_OP_COND_SWZ_Z_MASK (3 << 25)
00548 #define NV40_FP_OP_COND_SWZ_Y_SHIFT 23
00549 #define NV40_FP_OP_COND_SWZ_Y_MASK (3 << 23)
00550 #define NV40_FP_OP_COND_SWZ_X_SHIFT 21
00551 #define NV40_FP_OP_COND_SWZ_X_MASK (3 << 21)
00552 #define NV40_FP_OP_COND_SWZ_ALL_SHIFT 21
00553 #define NV40_FP_OP_COND_SWZ_ALL_MASK (0xFF << 21)
00554 #define NV40_FP_OP_COND_SHIFT 18
00555 #define NV40_FP_OP_COND_MASK (0x07 << 18)
00556 # define NV40_FP_OP_COND_FL 0
00557 # define NV40_FP_OP_COND_LT 1
00558 # define NV40_FP_OP_COND_EQ 2
00559 # define NV40_FP_OP_COND_LE 3
00560 # define NV40_FP_OP_COND_GT 4
00561 # define NV40_FP_OP_COND_NE 5
00562 # define NV40_FP_OP_COND_GE 6
00563 # define NV40_FP_OP_COND_TR 7
00564
00565
00566 #define NV40_FP_OP_SRC_SCALE_SHIFT 28
00567 #define NV40_FP_OP_SRC_SCALE_MASK (3 << 28)
00568
00569
00570 #define NV40_FP_OP_LOOP_INCR_SHIFT 19
00571 #define NV40_FP_OP_LOOP_INCR_MASK (0xFF << 19)
00572 #define NV40_FP_OP_LOOP_INDEX_SHIFT 10
00573 #define NV40_FP_OP_LOOP_INDEX_MASK (0xFF << 10)
00574 #define NV40_FP_OP_LOOP_COUNT_SHIFT 2
00575 #define NV40_FP_OP_LOOP_COUNT_MASK (0xFF << 2)
00576
00577
00578 #define NV40_FP_OP_ELSE_ID_SHIFT 2
00579 #define NV40_FP_OP_ELSE_ID_MASK (0xFF << 2)
00580
00581
00582 #define NV40_FP_OP_IADDR_SHIFT 2
00583 #define NV40_FP_OP_IADDR_MASK (0xFF << 2)
00584
00585
00586
00587
00588
00589
00590 #define NV40_FP_OP_REP_COUNT1_SHIFT 2
00591 #define NV40_FP_OP_REP_COUNT1_MASK (0xFF << 2)
00592 #define NV40_FP_OP_REP_COUNT2_SHIFT 10
00593 #define NV40_FP_OP_REP_COUNT2_MASK (0xFF << 10)
00594 #define NV40_FP_OP_REP_COUNT3_SHIFT 19
00595 #define NV40_FP_OP_REP_COUNT3_MASK (0xFF << 19)
00596
00597
00598 #define NV40_FP_OP_END_ID_SHIFT 2
00599 #define NV40_FP_OP_END_ID_MASK (0xFF << 2)
00600
00601
00602 #define NV40_FP_OP_INDEX_INPUT (1 << 30)
00603 #define NV40_FP_OP_ADDR_INDEX_SHIFT 19
00604 #define NV40_FP_OP_ADDR_INDEX_MASK (0xF << 19) //UNKNOWN
00605
00606
00607 #define NV40_FP_REG_SRC_INPUT (1 << 0)
00608 #define NV40_FP_REG_SRC_CONST (1 << 1)
00609 #define NV40_FP_REG_SRC_SHIFT 2
00610 #define NV40_FP_REG_SRC_MASK (31 << 2)
00611 #define NV40_FP_REG_UNK_0 (1 << 8)
00612 #define NV40_FP_REG_SWZ_ALL_SHIFT 9
00613 #define NV40_FP_REG_SWZ_ALL_MASK (255 << 9)
00614 #define NV40_FP_REG_SWZ_X_SHIFT 9
00615 #define NV40_FP_REG_SWZ_X_MASK (3 << 9)
00616 #define NV40_FP_REG_SWZ_Y_SHIFT 11
00617 #define NV40_FP_REG_SWZ_Y_MASK (3 << 11)
00618 #define NV40_FP_REG_SWZ_Z_SHIFT 13
00619 #define NV40_FP_REG_SWZ_Z_MASK (3 << 13)
00620 #define NV40_FP_REG_SWZ_W_SHIFT 15
00621 #define NV40_FP_REG_SWZ_W_MASK (3 << 15)
00622 # define NV40_FP_SWIZZLE_X 0
00623 # define NV40_FP_SWIZZLE_Y 1
00624 # define NV40_FP_SWIZZLE_Z 2
00625 # define NV40_FP_SWIZZLE_W 3
00626 #define NV40_FP_REG_NEGATE (1 << 17)
00627
00628 #endif