i965: Add LINTERP/CINTERP to can_do_cmod().
authorMatt Turner <mattst88@gmail.com>
Sat, 24 Jan 2015 05:58:51 +0000 (21:58 -0800)
committerMatt Turner <mattst88@gmail.com>
Wed, 11 Feb 2015 21:50:19 +0000 (13:50 -0800)
LINTERP is implemented as a PLN instruction or a LINE+MAC. PLN and MAC
can do conditional mod. CINTERP is just a MOV.

total instructions in shared programs: 5952103 -> 5950284 (-0.03%)
instructions in affected programs:     324573 -> 322754 (-0.56%)
helped:                                1819

We lose the SIMD16 in one Unigine Heaven shader which appears six times
in shader-db.

src/mesa/drivers/dri/i965/brw_shader.cpp

index 3eea088f093a693d01f83156568fa3cdb6903c57..7fc4a84a384d83dc8d0c17d18b103e3d8ec5c232 100644 (file)
@@ -905,6 +905,8 @@ backend_instruction::can_do_cmod() const
    case BRW_OPCODE_SHR:
    case BRW_OPCODE_SUBB:
    case BRW_OPCODE_XOR:
+   case FS_OPCODE_CINTERP:
+   case FS_OPCODE_LINTERP:
       return true;
    default:
       return false;