From 3d661e60625492a0e9f7931856c7e97e2eb7ef50 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Mon, 31 Jul 2017 19:07:42 -0700 Subject: [PATCH] i965: Test instruction compaction on all supported Gens Note that there's no point in testing on G45, since its compaction is the same as Gen5. Same logic applies to Gen7 variants and low-power parts. Reviewed-by: Scott D Phillips --- src/intel/compiler/test_eu_compact.cpp | 50 +++++++++++++++++++++----- 1 file changed, 42 insertions(+), 8 deletions(-) diff --git a/src/intel/compiler/test_eu_compact.cpp b/src/intel/compiler/test_eu_compact.cpp index 1ef7e5ae7f1..668a972bfa6 100644 --- a/src/intel/compiler/test_eu_compact.cpp +++ b/src/intel/compiler/test_eu_compact.cpp @@ -74,6 +74,13 @@ clear_pad_bits(const struct gen_device_info *devinfo, brw_inst *inst) brw_inst_src1_reg_file(devinfo, inst) != BRW_IMMEDIATE_VALUE) { brw_inst_set_bits(inst, 127, 111, 0); } + + if (devinfo->gen == 8 && !devinfo->is_cherryview && + is_3src(devinfo, (opcode)brw_inst_opcode(devinfo, inst))) { + brw_inst_set_bits(inst, 105, 105, 0); + brw_inst_set_bits(inst, 84, 84, 0); + brw_inst_set_bits(inst, 36, 35, 0); + } } static bool @@ -87,13 +94,41 @@ skip_bit(const struct gen_device_info *devinfo, brw_inst *src, int bit) if (bit == 29) return true; - /* pad bit */ - if (bit == 47) - return true; + if (is_3src(devinfo, (opcode)brw_inst_opcode(devinfo, src))) { + if (devinfo->gen >= 9 || devinfo->is_cherryview) { + if (bit == 127) + return true; + } else { + if (bit >= 126 && bit <= 127) + return true; - /* pad bits */ - if (bit >= 90 && bit <= 95) - return true; + if (bit == 105) + return true; + + if (bit == 84) + return true; + + if (bit >= 35 && bit <= 36) + return true; + } + } else { + if (bit == 47) + return true; + + if (devinfo->gen >= 8) { + if (bit == 11) + return true; + + if (bit == 95) + return true; + } else { + if (devinfo->gen < 7 && bit == 90) + return true; + + if (bit >= 91 && bit <= 95) + return true; + } + } /* sometimes these are pad bits. */ if (brw_inst_opcode(devinfo, src) != BRW_OPCODE_SEND && @@ -289,10 +324,9 @@ int main(int argc, char **argv) { struct gen_device_info *devinfo = (struct gen_device_info *)calloc(1, sizeof(*devinfo)); - devinfo->gen = 6; bool fail = false; - for (devinfo->gen = 6; devinfo->gen <= 7; devinfo->gen++) { + for (devinfo->gen = 5; devinfo->gen <= 9; devinfo->gen++) { fail |= run_tests(devinfo); } -- 2.30.2