jay: hide MAD->MAC behind !JAY_DEBUG=strict

in case this comes back to bite us. nice to keep our nonconformances
programatically triaged.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41808>
This commit is contained in:
Alyssa Rosenzweig 2026-05-27 09:20:11 -04:00 committed by Marge Bot
parent b2edda3037
commit 0c376dde89
3 changed files with 5 additions and 2 deletions

View file

@ -323,11 +323,12 @@ pass(jay_function *func)
*
* The bspec says "Instructions that specify an implicit accumulator
* source cannot specify an explicit accumulator source operand.". But
* it works fine on Lunar Lake so ¯\_()_/¯
* it works fine on Lunar Lake so ¯\_()_/¯ ... gate on !strict.
*/
if ((I->op == JAY_OPCODE_MAD && I->type == JAY_TYPE_F32) &&
(I->src[2].file == ACCUM && I->src[2].reg == 0) &&
!(I->src[2].negate || I->src[2].abs)) {
!(I->src[2].negate || I->src[2].abs) &&
!(jay_debug & JAY_DBG_STRICT)) {
I->op = JAY_OPCODE_MAC;
}

View file

@ -41,6 +41,7 @@ static const struct debug_named_value jay_debug_options[] = {
{ "sync", JAY_DBG_SYNC, "Sync after every instruction" },
{ "noacc", JAY_DBG_NOACC, "Disable accumulator substitution" },
{ "nosched", JAY_DBG_NOSCHED, "Disable scheduling" },
{ "strict", JAY_DBG_STRICT, "Strictly conform to bspec/fulsim" },
DEBUG_NAMED_VALUE_END
};

View file

@ -18,6 +18,7 @@ extern "C" {
#define JAY_DBG_SYNC BITFIELD_BIT(3)
#define JAY_DBG_NOACC BITFIELD_BIT(4)
#define JAY_DBG_NOSCHED BITFIELD_BIT(5)
#define JAY_DBG_STRICT BITFIELD_BIT(6)
extern int jay_debug;
bool jay_nir_lower_bool(nir_shader *nir);