r600g: Add IMUL_HI/UMUL_HI support
authorGlenn Kennard <glenn.kennard@gmail.com>
Wed, 23 Jul 2014 09:10:06 +0000 (11:10 +0200)
committerAndreas Boll <andreas.boll.dev@gmail.com>
Thu, 31 Jul 2014 09:51:04 +0000 (11:51 +0200)
Fixes fs-imulExtended, fs-imulExtended-only-msb, fs-umulExtended,
fs-umulExtended-only-msb piglit tests.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
src/gallium/drivers/r600/r600_shader.c

index 0d9cb26..7b79646 100644 (file)
@@ -6671,8 +6671,8 @@ static struct r600_shader_tgsi_instruction r600_shader_tgsi_instruction[] = {
        {TGSI_OPCODE_TEX2,      0, FETCH_OP_SAMPLE, tgsi_tex},
        {TGSI_OPCODE_TXB2,      0, FETCH_OP_SAMPLE_LB, tgsi_tex},
        {TGSI_OPCODE_TXL2,      0, FETCH_OP_SAMPLE_L, tgsi_tex},
-       {TGSI_OPCODE_IMUL_HI, 0, ALU_OP0_NOP, tgsi_unsupported},
-       {TGSI_OPCODE_UMUL_HI, 0, ALU_OP0_NOP, tgsi_unsupported},
+       {TGSI_OPCODE_IMUL_HI,   0, ALU_OP2_MULHI_INT, tgsi_op2_trans},
+       {TGSI_OPCODE_UMUL_HI,   0, ALU_OP2_MULHI_UINT, tgsi_op2_trans},
        {TGSI_OPCODE_TG4,   0, FETCH_OP_GATHER4, tgsi_unsupported},
        {TGSI_OPCODE_LODQ,      0, FETCH_OP_GET_LOD, tgsi_unsupported},
        {TGSI_OPCODE_LAST,      0, ALU_OP0_NOP, tgsi_unsupported},
@@ -6866,8 +6866,8 @@ static struct r600_shader_tgsi_instruction eg_shader_tgsi_instruction[] = {
        {TGSI_OPCODE_TEX2,      0, FETCH_OP_SAMPLE, tgsi_tex},
        {TGSI_OPCODE_TXB2,      0, FETCH_OP_SAMPLE_LB, tgsi_tex},
        {TGSI_OPCODE_TXL2,      0, FETCH_OP_SAMPLE_L, tgsi_tex},
-       {TGSI_OPCODE_IMUL_HI, 0, ALU_OP0_NOP, tgsi_unsupported},
-       {TGSI_OPCODE_UMUL_HI, 0, ALU_OP0_NOP, tgsi_unsupported},
+       {TGSI_OPCODE_IMUL_HI,   0, ALU_OP2_MULHI_INT, tgsi_op2_trans},
+       {TGSI_OPCODE_UMUL_HI,   0, ALU_OP2_MULHI_UINT, tgsi_op2_trans},
        {TGSI_OPCODE_TG4,   0, FETCH_OP_GATHER4, tgsi_tex},
        {TGSI_OPCODE_LODQ,      0, FETCH_OP_GET_LOD, tgsi_tex},
        {TGSI_OPCODE_LAST,      0, ALU_OP0_NOP, tgsi_unsupported},
@@ -7062,8 +7062,8 @@ static struct r600_shader_tgsi_instruction cm_shader_tgsi_instruction[] = {
        {TGSI_OPCODE_TEX2,      0, FETCH_OP_SAMPLE, tgsi_tex},
        {TGSI_OPCODE_TXB2,      0, FETCH_OP_SAMPLE_LB, tgsi_tex},
        {TGSI_OPCODE_TXL2,      0, FETCH_OP_SAMPLE_L, tgsi_tex},
-       {TGSI_OPCODE_IMUL_HI, 0, ALU_OP0_NOP, tgsi_unsupported},
-       {TGSI_OPCODE_UMUL_HI, 0, ALU_OP0_NOP, tgsi_unsupported},
+       {TGSI_OPCODE_IMUL_HI,   0, ALU_OP2_MULHI_INT, cayman_mul_int_instr},
+       {TGSI_OPCODE_UMUL_HI,   0, ALU_OP2_MULHI_UINT, cayman_mul_int_instr},
        {TGSI_OPCODE_TG4,   0, FETCH_OP_GATHER4, tgsi_tex},
        {TGSI_OPCODE_LODQ,      0, FETCH_OP_GET_LOD, tgsi_tex},
        {TGSI_OPCODE_LAST,      0, ALU_OP0_NOP, tgsi_unsupported},