From 943f666b69c5c7afc670b0bdecfe854f294ced6c Mon Sep 17 00:00:00 2001 From: Job Noorman Date: Mon, 9 Dec 2024 12:01:23 +0100 Subject: [PATCH] ir3/isa: fix cat3-alt immed src The override used for the immed encoding in #cat3-src-const-or-immed used a pattern which isn't supported in overrides by isaspec. The pattern in the base bitset (10) was too strict for immediates since it didn't allow the most significant bit to be 1. Fix this by making the base pattern 1 and adding an assert for the next bit to be 0 in the non-immed case. Signed-off-by: Job Noorman Fixes: 1c6c200c0d7 ("ir3: add newly found shlg.b16 instruction") Part-of: --- src/freedreno/ir3/tests/disasm.c | 1 + src/freedreno/isa/ir3-cat3.xml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/freedreno/ir3/tests/disasm.c b/src/freedreno/ir3/tests/disasm.c index 1069175f1d5..fc4d40571eb 100644 --- a/src/freedreno/ir3/tests/disasm.c +++ b/src/freedreno/ir3/tests/disasm.c @@ -125,6 +125,7 @@ static const struct test { INSTR_6XX(65900820_0c0aac05, "(nop3) shlg hr8.x, hc, hr8.x, hc"), /* not seen in blob */ INSTR_6XX(65ae0c5c_0002a001, "(nop3) shlg r23.x, r0.y, r23.x, r0.z"), /* (nop3) shlg.b32 r23.x, (r)r0.y, (r)r23.x, r0.z */ INSTR_6XX(64018802_0002e003, "(nop3) shrm hr0.z, (neg)hr0.w, hr0.w, hr0.z"), + INSTR_6XX(646084c3_1fff300a, "shrm r48.w, 10, r48.y, 4095"), INSTR_6XX(64818802_0002e003, "(nop3) shlm hr0.z, (neg)hr0.w, hr0.w, hr0.z"), INSTR_6XX(65018802_0002e003, "(nop3) shrg hr0.z, (neg)hr0.w, hr0.w, hr0.z"), INSTR_6XX(66018802_0002e003, "(nop3) andg hr0.z, (neg)hr0.w, hr0.w, hr0.z"), diff --git a/src/freedreno/isa/ir3-cat3.xml b/src/freedreno/isa/ir3-cat3.xml index 4e53472cea5..33361a569ae 100644 --- a/src/freedreno/isa/ir3-cat3.xml +++ b/src/freedreno/isa/ir3-cat3.xml @@ -60,7 +60,6 @@ SOFTWARE. {IMMED} - 1 @@ -68,7 +67,8 @@ SOFTWARE. - 10 + 1 + 0 src->num >> 2 src->num & 0x3