diff options
author | Jason Ekstrand <[email protected]> | 2017-04-19 16:21:08 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-04-20 15:24:06 -0700 |
commit | e23129ac0c1e9a60e1952765f51fe7638af90577 (patch) | |
tree | 90c1cf54c6f18f0f8397c362bee8feb67946bd77 /src/intel | |
parent | b7a2af8e382b4f3bd8e38eb39b3eddd0d379c693 (diff) |
genxml: Add better support for MI_MATH
This breaks the guts of MI_MATH (the instruction part) out into its own
structure with proper named values.
Reviewed-by: Kenneth Graunke <[email protected]>
Reviewed by: Iago Toral Quiroga <[email protected]>
Diffstat (limited to 'src/intel')
-rw-r--r-- | src/intel/genxml/gen75.xml | 69 | ||||
-rw-r--r-- | src/intel/genxml/gen8.xml | 69 | ||||
-rw-r--r-- | src/intel/genxml/gen9.xml | 69 |
3 files changed, 195 insertions, 12 deletions
diff --git a/src/intel/genxml/gen75.xml b/src/intel/genxml/gen75.xml index 16d2d743a51..4d1feafd5f0 100644 --- a/src/intel/genxml/gen75.xml +++ b/src/intel/genxml/gen75.xml @@ -812,6 +812,69 @@ <field name="TCZ Address Control Mode" start="96" end="98" type="uint"/> </struct> + <struct name="MI_MATH_ALU_INSTRUCTION" length="1"> + <field name="ALU Opcode" start="20" end="31" type="uint" prefix="MI_ALU"> + <value name="NOOP" value="0x000"/> + <value name="LOAD" value="0x080"/> + <value name="LOADINV" value="0x480"/> + <value name="LOAD0" value="0x081"/> + <value name="LOAD1" value="0x481"/> + <value name="ADD" value="0x100"/> + <value name="SUB" value="0x101"/> + <value name="AND" value="0x102"/> + <value name="OR" value="0x103"/> + <value name="XOR" value="0x104"/> + <value name="STORE" value="0x180"/> + <value name="STOREINV" value="0x580"/> + </field> + <field name="Operand 1" start="10" end="19" type="uint" prefix="MI_ALU"> + <value name="REG0" value="0x00"/> + <value name="REG1" value="0x01"/> + <value name="REG2" value="0x02"/> + <value name="REG3" value="0x03"/> + <value name="REG4" value="0x04"/> + <value name="REG5" value="0x05"/> + <value name="REG6" value="0x06"/> + <value name="REG7" value="0x07"/> + <value name="REG8" value="0x08"/> + <value name="REG9" value="0x09"/> + <value name="REG10" value="0x0a"/> + <value name="REG11" value="0x0b"/> + <value name="REG12" value="0x0c"/> + <value name="REG13" value="0x0d"/> + <value name="REG14" value="0x0e"/> + <value name="REG15" value="0x0f"/> + <value name="SRCA" value="0x20"/> + <value name="SRCB" value="0x21"/> + <value name="ACCU" value="0x31"/> + <value name="ZF" value="0x32"/> + <value name="CF" value="0x33"/> + </field> + <field name="Operand 2" start="0" end="9" type="uint" prefix="MI_ALU"> + <value name="REG0" value="0x00"/> + <value name="REG1" value="0x01"/> + <value name="REG2" value="0x02"/> + <value name="REG3" value="0x03"/> + <value name="REG4" value="0x04"/> + <value name="REG5" value="0x05"/> + <value name="REG6" value="0x06"/> + <value name="REG7" value="0x07"/> + <value name="REG8" value="0x08"/> + <value name="REG9" value="0x09"/> + <value name="REG10" value="0x0a"/> + <value name="REG11" value="0x0b"/> + <value name="REG12" value="0x0c"/> + <value name="REG13" value="0x0d"/> + <value name="REG14" value="0x0e"/> + <value name="REG15" value="0x0f"/> + <value name="SRCA" value="0x20"/> + <value name="SRCB" value="0x21"/> + <value name="ACCU" value="0x31"/> + <value name="ZF" value="0x32"/> + <value name="CF" value="0x33"/> + </field> + </struct> + <instruction name="3DPRIMITIVE" bias="2" length="7"> <field name="Command Type" start="29" end="31" type="uint" default="3"/> <field name="Command SubType" start="27" end="28" type="uint" default="3"/> @@ -2594,10 +2657,8 @@ <field name="Command Type" start="29" end="31" type="uint" default="0"/> <field name="MI Command Opcode" start="23" end="28" type="uint" default="26"/> <field name="DWord Length" start="0" end="5" type="uint" default="0"/> - <field name="ALU INSTRUCTION 1" start="32" end="63" type="uint"/> - <field name="ALU INSTRUCTION 2" start="64" end="95" type="uint"/> - <group count="0" start="96" size="32"> - <field name="ALU INSTRUCTION n" start="0" end="31" type="uint"/> + <group count="0" start="32" size="32"> + <field name="Instruction" start="0" end="31" type="MI_MATH_ALU_INSTRUCTION"/> </group> </instruction> diff --git a/src/intel/genxml/gen8.xml b/src/intel/genxml/gen8.xml index 1390fe68c12..33c8c9f9c83 100644 --- a/src/intel/genxml/gen8.xml +++ b/src/intel/genxml/gen8.xml @@ -881,6 +881,69 @@ <field name="Table 1Y Filter Coefficient[n,4]" start="224" end="231" type="s1.6"/> </struct> + <struct name="MI_MATH_ALU_INSTRUCTION" length="1"> + <field name="ALU Opcode" start="20" end="31" type="uint" prefix="MI_ALU"> + <value name="NOOP" value="0x000"/> + <value name="LOAD" value="0x080"/> + <value name="LOADINV" value="0x480"/> + <value name="LOAD0" value="0x081"/> + <value name="LOAD1" value="0x481"/> + <value name="ADD" value="0x100"/> + <value name="SUB" value="0x101"/> + <value name="AND" value="0x102"/> + <value name="OR" value="0x103"/> + <value name="XOR" value="0x104"/> + <value name="STORE" value="0x180"/> + <value name="STOREINV" value="0x580"/> + </field> + <field name="Operand 1" start="10" end="19" type="uint" prefix="MI_ALU"> + <value name="REG0" value="0x00"/> + <value name="REG1" value="0x01"/> + <value name="REG2" value="0x02"/> + <value name="REG3" value="0x03"/> + <value name="REG4" value="0x04"/> + <value name="REG5" value="0x05"/> + <value name="REG6" value="0x06"/> + <value name="REG7" value="0x07"/> + <value name="REG8" value="0x08"/> + <value name="REG9" value="0x09"/> + <value name="REG10" value="0x0a"/> + <value name="REG11" value="0x0b"/> + <value name="REG12" value="0x0c"/> + <value name="REG13" value="0x0d"/> + <value name="REG14" value="0x0e"/> + <value name="REG15" value="0x0f"/> + <value name="SRCA" value="0x20"/> + <value name="SRCB" value="0x21"/> + <value name="ACCU" value="0x31"/> + <value name="ZF" value="0x32"/> + <value name="CF" value="0x33"/> + </field> + <field name="Operand 2" start="0" end="9" type="uint" prefix="MI_ALU"> + <value name="REG0" value="0x00"/> + <value name="REG1" value="0x01"/> + <value name="REG2" value="0x02"/> + <value name="REG3" value="0x03"/> + <value name="REG4" value="0x04"/> + <value name="REG5" value="0x05"/> + <value name="REG6" value="0x06"/> + <value name="REG7" value="0x07"/> + <value name="REG8" value="0x08"/> + <value name="REG9" value="0x09"/> + <value name="REG10" value="0x0a"/> + <value name="REG11" value="0x0b"/> + <value name="REG12" value="0x0c"/> + <value name="REG13" value="0x0d"/> + <value name="REG14" value="0x0e"/> + <value name="REG15" value="0x0f"/> + <value name="SRCA" value="0x20"/> + <value name="SRCB" value="0x21"/> + <value name="ACCU" value="0x31"/> + <value name="ZF" value="0x32"/> + <value name="CF" value="0x33"/> + </field> + </struct> + <instruction name="3DPRIMITIVE" bias="2" length="7"> <field name="Command Type" start="29" end="31" type="uint" default="3"/> <field name="Command SubType" start="27" end="28" type="uint" default="3"/> @@ -2822,10 +2885,8 @@ <field name="Command Type" start="29" end="31" type="uint" default="0"/> <field name="MI Command Opcode" start="23" end="28" type="uint" default="26"/> <field name="DWord Length" start="0" end="5" type="uint" default="0"/> - <field name="ALU INSTRUCTION 1" start="32" end="63" type="uint"/> - <field name="ALU INSTRUCTION 2" start="64" end="95" type="uint"/> - <group count="0" start="96" size="32"> - <field name="ALU INSTRUCTION n" start="0" end="31" type="uint"/> + <group count="0" start="32" size="32"> + <field name="Instruction" start="0" end="31" type="MI_MATH_ALU_INSTRUCTION"/> </group> </instruction> diff --git a/src/intel/genxml/gen9.xml b/src/intel/genxml/gen9.xml index 4bf0fb61992..c04e9d4e482 100644 --- a/src/intel/genxml/gen9.xml +++ b/src/intel/genxml/gen9.xml @@ -939,6 +939,69 @@ <field name="Table 1Y Filter Coefficient[n,4]" start="224" end="231" type="s1.6"/> </struct> + <struct name="MI_MATH_ALU_INSTRUCTION" length="1"> + <field name="ALU Opcode" start="20" end="31" type="uint" prefix="MI_ALU"> + <value name="NOOP" value="0x000"/> + <value name="LOAD" value="0x080"/> + <value name="LOADINV" value="0x480"/> + <value name="LOAD0" value="0x081"/> + <value name="LOAD1" value="0x481"/> + <value name="ADD" value="0x100"/> + <value name="SUB" value="0x101"/> + <value name="AND" value="0x102"/> + <value name="OR" value="0x103"/> + <value name="XOR" value="0x104"/> + <value name="STORE" value="0x180"/> + <value name="STOREINV" value="0x580"/> + </field> + <field name="Operand 1" start="10" end="19" type="uint" prefix="MI_ALU"> + <value name="REG0" value="0x00"/> + <value name="REG1" value="0x01"/> + <value name="REG2" value="0x02"/> + <value name="REG3" value="0x03"/> + <value name="REG4" value="0x04"/> + <value name="REG5" value="0x05"/> + <value name="REG6" value="0x06"/> + <value name="REG7" value="0x07"/> + <value name="REG8" value="0x08"/> + <value name="REG9" value="0x09"/> + <value name="REG10" value="0x0a"/> + <value name="REG11" value="0x0b"/> + <value name="REG12" value="0x0c"/> + <value name="REG13" value="0x0d"/> + <value name="REG14" value="0x0e"/> + <value name="REG15" value="0x0f"/> + <value name="SRCA" value="0x20"/> + <value name="SRCB" value="0x21"/> + <value name="ACCU" value="0x31"/> + <value name="ZF" value="0x32"/> + <value name="CF" value="0x33"/> + </field> + <field name="Operand 2" start="0" end="9" type="uint" prefix="MI_ALU"> + <value name="REG0" value="0x00"/> + <value name="REG1" value="0x01"/> + <value name="REG2" value="0x02"/> + <value name="REG3" value="0x03"/> + <value name="REG4" value="0x04"/> + <value name="REG5" value="0x05"/> + <value name="REG6" value="0x06"/> + <value name="REG7" value="0x07"/> + <value name="REG8" value="0x08"/> + <value name="REG9" value="0x09"/> + <value name="REG10" value="0x0a"/> + <value name="REG11" value="0x0b"/> + <value name="REG12" value="0x0c"/> + <value name="REG13" value="0x0d"/> + <value name="REG14" value="0x0e"/> + <value name="REG15" value="0x0f"/> + <value name="SRCA" value="0x20"/> + <value name="SRCB" value="0x21"/> + <value name="ACCU" value="0x31"/> + <value name="ZF" value="0x32"/> + <value name="CF" value="0x33"/> + </field> + </struct> + <instruction name="3DPRIMITIVE" bias="2" length="7"> <field name="Command Type" start="29" end="31" type="uint" default="3"/> <field name="Command SubType" start="27" end="28" type="uint" default="3"/> @@ -3103,10 +3166,8 @@ <field name="Command Type" start="29" end="31" type="uint" default="0"/> <field name="MI Command Opcode" start="23" end="28" type="uint" default="26"/> <field name="DWord Length" start="0" end="7" type="uint" default="0"/> - <field name="ALU INSTRUCTION 1" start="32" end="63" type="uint"/> - <field name="ALU INSTRUCTION 2" start="64" end="95" type="uint"/> - <group count="0" start="96" size="32"> - <field name="ALU INSTRUCTION n" start="0" end="31" type="uint"/> + <group count="0" start="32" size="32"> + <field name="Instruction" start="0" end="31" type="MI_MATH_ALU_INSTRUCTION"/> </group> </instruction> |