src modifier is not supported by some instructions. so return false when it exists. This fix piglit % failed
Signed-off-by: rander.wang <rander.w...@intel.com> --- .../src/backend/gen_insn_selection_optimize.cpp | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/backend/src/backend/gen_insn_selection_optimize.cpp b/backend/src/backend/gen_insn_selection_optimize.cpp index 07547ec..730db5e 100644 --- a/backend/src/backend/gen_insn_selection_optimize.cpp +++ b/backend/src/backend/gen_insn_selection_optimize.cpp @@ -189,6 +189,38 @@ namespace gbe if (insn.opcode == SEL_OP_BSWAP) //should remove once bswap issue is fixed return false; + //the src modifier is not supported by the following instructions + if(info->replacement.negation || info->replacement.absolute) + { + switch(insn.opcode) + { + case SEL_OP_MATH: + { + switch(insn.extra.function) + { + case GEN_MATH_FUNCTION_INT_DIV_QUOTIENT: + case GEN_MATH_FUNCTION_INT_DIV_REMAINDER: + case GEN_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER: + return false; + default: + break; + } + + break; + } + case SEL_OP_CBIT: + case SEL_OP_FBH: + case SEL_OP_FBL: + case SEL_OP_BRC: + case SEL_OP_BRD: + case SEL_OP_BFREV: + case SEL_OP_LZD: + return false; + default: + break; + } + } + if (insn.isWrite() || insn.isRead()) //register in selection vector return false; -- 2.7.4 _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/beignet