i965: Add Gen assertion checks for newer instructions.
authorMatt Turner <mattst88@gmail.com>
Fri, 20 Sep 2013 05:55:24 +0000 (22:55 -0700)
committerMatt Turner <mattst88@gmail.com>
Mon, 7 Oct 2013 17:43:19 +0000 (10:43 -0700)
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs_generator.cpp
src/mesa/drivers/dri/i965/brw_vec4_generator.cpp

index 8fe4203348122440b3b9fb0502871ce394ce8817..a35c172c81ccf1659349eb4eed10c8d8ac539ecc 100644 (file)
@@ -1244,6 +1244,7 @@ fs_generator::generate_code(exec_list *instructions)
         break;
 
       case BRW_OPCODE_MAD:
+         assert(brw->gen >= 6);
         brw_set_access_mode(p, BRW_ALIGN_16);
         if (dispatch_width == 16) {
            brw_set_compression_control(p, BRW_COMPRESSION_NONE);
@@ -1258,6 +1259,7 @@ fs_generator::generate_code(exec_list *instructions)
         break;
 
       case BRW_OPCODE_LRP:
+         assert(brw->gen >= 6);
         brw_set_access_mode(p, BRW_ALIGN_16);
         if (dispatch_width == 16) {
            brw_set_compression_control(p, BRW_COMPRESSION_NONE);
@@ -1306,9 +1308,11 @@ fs_generator::generate_code(exec_list *instructions)
         brw_SHL(p, dst, src[0], src[1]);
         break;
       case BRW_OPCODE_F32TO16:
+         assert(brw->gen >= 7);
          brw_F32TO16(p, dst, src[0]);
          break;
       case BRW_OPCODE_F16TO32:
+         assert(brw->gen >= 7);
          brw_F16TO32(p, dst, src[0]);
          break;
       case BRW_OPCODE_CMP:
@@ -1318,19 +1322,23 @@ fs_generator::generate_code(exec_list *instructions)
         brw_SEL(p, dst, src[0], src[1]);
         break;
       case BRW_OPCODE_BFREV:
+         assert(brw->gen >= 7);
          /* BFREV only supports UD type for src and dst. */
          brw_BFREV(p, retype(dst, BRW_REGISTER_TYPE_UD),
                       retype(src[0], BRW_REGISTER_TYPE_UD));
          break;
       case BRW_OPCODE_FBH:
+         assert(brw->gen >= 7);
          /* FBH only supports UD type for dst. */
          brw_FBH(p, retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
          break;
       case BRW_OPCODE_FBL:
+         assert(brw->gen >= 7);
          /* FBL only supports UD type for dst. */
          brw_FBL(p, retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
          break;
       case BRW_OPCODE_CBIT:
+         assert(brw->gen >= 7);
          /* CBIT only supports UD type for dst. */
          brw_CBIT(p, retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
          break;
@@ -1348,6 +1356,7 @@ fs_generator::generate_code(exec_list *instructions)
          break;
 
       case BRW_OPCODE_BFE:
+         assert(brw->gen >= 7);
          brw_set_access_mode(p, BRW_ALIGN_16);
          if (dispatch_width == 16) {
             brw_set_compression_control(p, BRW_COMPRESSION_NONE);
@@ -1362,9 +1371,11 @@ fs_generator::generate_code(exec_list *instructions)
          break;
 
       case BRW_OPCODE_BFI1:
+         assert(brw->gen >= 7);
          brw_BFI1(p, dst, src[0], src[1]);
          break;
       case BRW_OPCODE_BFI2:
+         assert(brw->gen >= 7);
          brw_set_access_mode(p, BRW_ALIGN_16);
          if (dispatch_width == 16) {
             brw_set_compression_control(p, BRW_COMPRESSION_NONE);
index ae6e43ca34a57383779d5452966a5803fec65c41..67af0ddec8d7ad17a0d438ad044f1c0f1f41624a 100644 (file)
@@ -873,6 +873,7 @@ vec4_generator::generate_vec4_instruction(vec4_instruction *instruction,
       break;
 
    case BRW_OPCODE_MAD:
+      assert(brw->gen >= 6);
       brw_MAD(p, dst, src[0], src[1], src[2]);
       break;
 
@@ -935,31 +936,38 @@ vec4_generator::generate_vec4_instruction(vec4_instruction *instruction,
       break;
 
    case BRW_OPCODE_F32TO16:
+      assert(brw->gen >= 7);
       brw_F32TO16(p, dst, src[0]);
       break;
 
    case BRW_OPCODE_F16TO32:
+      assert(brw->gen >= 7);
       brw_F16TO32(p, dst, src[0]);
       break;
 
    case BRW_OPCODE_LRP:
+      assert(brw->gen >= 6);
       brw_LRP(p, dst, src[0], src[1], src[2]);
       break;
 
    case BRW_OPCODE_BFREV:
+      assert(brw->gen >= 7);
       /* BFREV only supports UD type for src and dst. */
       brw_BFREV(p, retype(dst, BRW_REGISTER_TYPE_UD),
                    retype(src[0], BRW_REGISTER_TYPE_UD));
       break;
    case BRW_OPCODE_FBH:
+      assert(brw->gen >= 7);
       /* FBH only supports UD type for dst. */
       brw_FBH(p, retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
       break;
    case BRW_OPCODE_FBL:
+      assert(brw->gen >= 7);
       /* FBL only supports UD type for dst. */
       brw_FBL(p, retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
       break;
    case BRW_OPCODE_CBIT:
+      assert(brw->gen >= 7);
       /* CBIT only supports UD type for dst. */
       brw_CBIT(p, retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
       break;
@@ -977,13 +985,16 @@ vec4_generator::generate_vec4_instruction(vec4_instruction *instruction,
       break;
 
    case BRW_OPCODE_BFE:
+      assert(brw->gen >= 7);
       brw_BFE(p, dst, src[0], src[1], src[2]);
       break;
 
    case BRW_OPCODE_BFI1:
+      assert(brw->gen >= 7);
       brw_BFI1(p, dst, src[0], src[1]);
       break;
    case BRW_OPCODE_BFI2:
+      assert(brw->gen >= 7);
       brw_BFI2(p, dst, src[0], src[1], src[2]);
       break;