+static const uint32_t gen12_control_index_table[32] = {
+ 0b000000000000000000100, /* (16|M0) */
+ 0b000000000000000000011, /* (8|M0) */
+ 0b000000010000000000000, /* (W) (1|M0) */
+ 0b000000010000000000100, /* (W) (16|M0) */
+ 0b000000010000000000011, /* (W) (8|M0) */
+ 0b010000000000000000100, /* (16|M0) (ge)f0.0 */
+ 0b000000000000000100100, /* (16|M16) */
+ 0b010100000000000000100, /* (16|M0) (lt)f0.0 */
+ 0b000000000000000000000, /* (1|M0) */
+ 0b000010000000000000100, /* (16|M0) (sat) */
+ 0b000000000000000010011, /* (8|M8) */
+ 0b001100000000000000100, /* (16|M0) (gt)f0.0 */
+ 0b000100000000000000100, /* (16|M0) (eq)f0.0 */
+ 0b000100010000000000100, /* (W) (16|M0) (eq)f0.0 */
+ 0b001000000000000000100, /* (16|M0) (ne)f0.0 */
+ 0b000000000000100000100, /* (f0.0) (16|M0) */
+ 0b010100000000000000011, /* (8|M0) (lt)f0.0 */
+ 0b000000000000110000100, /* (f1.0) (16|M0) */
+ 0b000000010000000000001, /* (W) (2|M0) */
+ 0b000000000000101000100, /* (f0.1) (16|M0) */
+ 0b000000000000111000100, /* (f1.1) (16|M0) */
+ 0b010000010000000000100, /* (W) (16|M0) (ge)f0.0 */
+ 0b000000000000000100011, /* (8|M16) */
+ 0b000000000000000110011, /* (8|M24) */
+ 0b010100010000000000100, /* (W) (16|M0) (lt)f0.0 */
+ 0b010000000000000000011, /* (8|M0) (ge)f0.0 */
+ 0b000100010000000000000, /* (W) (1|M0) (eq)f0.0 */
+ 0b000010000000000000011, /* (8|M0) (sat) */
+ 0b010100000000010000100, /* (16|M0) (lt)f1.0 */
+ 0b000100000000000000011, /* (8|M0) (eq)f0.0 */
+ 0b000001000000000000011, /* (8|M0) {AccWrEn} */
+ 0b000000010000000100100, /* (W) (16|M16) */
+};
+
+static const uint32_t gen12_datatype_table[32] = {
+ 0b11010110100101010100, /* grf<1>:f grf:f grf:f */
+ 0b00000110100101010100, /* grf<1>:f grf:f arf:ub */
+ 0b00000010101101010100, /* grf<1>:f imm:f arf:ub */
+ 0b01010110110101010100, /* grf<1>:f grf:f imm:f */
+ 0b11010100100101010100, /* arf<1>:f grf:f grf:f */
+ 0b11010010100101010100, /* grf<1>:f arf:f grf:f */
+ 0b01010100110101010100, /* arf<1>:f grf:f imm:f */
+ 0b00000000100000000000, /* arf<1>:ub arf:ub arf:ub */
+ 0b11010000100101010100, /* arf<1>:f arf:f grf:f */
+ 0b00101110110011001100, /* grf<1>:d grf:d imm:w */
+ 0b10110110100011001100, /* grf<1>:d grf:d grf:d */
+ 0b01010010110101010100, /* grf<1>:f arf:f imm:f */
+ 0b10010110100001000100, /* grf<1>:ud grf:ud grf:ud */
+ 0b01010000110101010100, /* arf<1>:f arf:f imm:f */
+ 0b00110110110011001100, /* grf<1>:d grf:d imm:d */
+ 0b00010110110001000100, /* grf<1>:ud grf:ud imm:ud */
+ 0b00000111000101010100, /* grf<2>:f grf:f arf:ub */
+ 0b00101100110011001100, /* arf<1>:d grf:d imm:w */
+ 0b00000000100000100010, /* arf<1>:uw arf:uw arf:ub */
+ 0b00000010100001000100, /* grf<1>:ud arf:ud arf:ub */
+ 0b00100110110000101010, /* grf<1>:w grf:uw imm:uv */
+ 0b00001110110000100010, /* grf<1>:uw grf:uw imm:uw */
+ 0b10010111000001000100, /* grf<2>:ud grf:ud grf:ud */
+ 0b00000110100101001100, /* grf<1>:d grf:f arf:ub */
+ 0b10001100100011001100, /* arf<1>:d grf:d grf:uw */
+ 0b00000110100001010100, /* grf<1>:f grf:ud arf:ub */
+ 0b00101110110001001100, /* grf<1>:d grf:ud imm:w */
+ 0b00000010100000100010, /* grf<1>:uw arf:uw arf:ub */
+ 0b00000110100000110100, /* grf<1>:f grf:uw arf:ub */
+ 0b00000110100000010100, /* grf<1>:f grf:ub arf:ub */
+ 0b00000110100011010100, /* grf<1>:f grf:d arf:ub */
+ 0b00000010100101010100, /* grf<1>:f arf:f arf:ub */
+};
+
+static const uint16_t gen12_subreg_table[32] = {
+ 0b000000000000000, /* .0 .0 .0 */
+ 0b100000000000000, /* .0 .0 .16 */
+ 0b001000000000000, /* .0 .0 .4 */
+ 0b011000000000000, /* .0 .0 .12 */
+ 0b000000010000000, /* .0 .4 .0 */
+ 0b010000000000000, /* .0 .0 .8 */
+ 0b101000000000000, /* .0 .0 .20 */
+ 0b000000000001000, /* .8 .0 .0 */
+ 0b000000100000000, /* .0 .8 .0 */
+ 0b110000000000000, /* .0 .0 .24 */
+ 0b111000000000000, /* .0 .0 .28 */
+ 0b000001000000000, /* .0 .16 .0 */
+ 0b000000000000100, /* .4 .0 .0 */
+ 0b000001100000000, /* .0 .24 .0 */
+ 0b000001010000000, /* .0 .20 .0 */
+ 0b000000110000000, /* .0 .12 .0 */
+ 0b000001110000000, /* .0 .28 .0 */
+ 0b000000000011100, /* .28 .0 .0 */
+ 0b000000000010000, /* .16 .0 .0 */
+ 0b000000000001100, /* .12 .0 .0 */
+ 0b000000000011000, /* .24 .0 .0 */
+ 0b000000000010100, /* .20 .0 .0 */
+ 0b000000000000010, /* .2 .0 .0 */
+ 0b000000101000000, /* .0 .10 .0 */
+ 0b000000001000000, /* .0 .2 .0 */
+ 0b000000010000100, /* .4 .4 .0 */
+ 0b000000001011100, /* .28 .2 .0 */
+ 0b000000001000010, /* .2 .2 .0 */
+ 0b000000110001100, /* .12 .12 .0 */
+ 0b000000000100000, /* .0 .1 .0 */
+ 0b000000001100000, /* .0 .3 .0 */
+ 0b110001100000000, /* .0 .24 .24 */
+};
+
+static const uint16_t gen12_src0_index_table[16] = {
+ 0b010001100100, /* r<8;8,1> */
+ 0b000000000000, /* r<0;1,0> */
+ 0b010001100110, /* -r<8;8,1> */
+ 0b010001100101, /* (abs)r<8;8,1> */
+ 0b000000000010, /* -r<0;1,0> */
+ 0b001000000000, /* r<2;1,0> */
+ 0b001001000000, /* r<2;4,0> */
+ 0b001101000000, /* r<4;4,0> */
+ 0b001000100100, /* r<2;2,1> */
+ 0b001100000000, /* r<4;1,0> */
+ 0b001000100110, /* -r<2;2,1> */
+ 0b001101000100, /* r<4;4,1> */
+ 0b010001100111, /* -(abs)r<8;8,1> */
+ 0b000100000000, /* r<1;1,0> */
+ 0b000000000001, /* (abs)r<0;1,0> */
+ 0b111100010000, /* r[a]<1,0> */
+};
+
+static const uint16_t gen12_src1_index_table[16] = {
+ 0b000100011001, /* r<8;8,1> */
+ 0b000000000000, /* r<0;1,0> */
+ 0b100100011001, /* -r<8;8,1> */
+ 0b100000000000, /* -r<0;1,0> */
+ 0b010100011001, /* (abs)r<8;8,1> */
+ 0b100011010000, /* -r<4;4,0> */
+ 0b000010000000, /* r<2;1,0> */
+ 0b000010001001, /* r<2;2,1> */
+ 0b100010001001, /* -r<2;2,1> */
+ 0b000011010000, /* r<4;4,0> */
+ 0b000011010001, /* r<4;4,1> */
+ 0b000011000000, /* r<4;1,0> */
+ 0b110100011001, /* -(abs)r<8;8,1> */
+ 0b010000000000, /* (abs)r<0;1,0> */
+ 0b110000000000, /* -(abs)r<0;1,0> */
+ 0b100011010001, /* -r<4;4,1> */
+};
+