From 687950dcd4e71d2ca81bb6581655ce5694099404 Mon Sep 17 00:00:00 2001 From: Sebastian Schmidt Date: Mon, 30 Dec 2019 17:27:32 +0100 Subject: [PATCH] Fix MOVI.N immediate calculation Reported by @edi1 in #1, thanks! --- data/languages/xtensa.sinc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/languages/xtensa.sinc b/data/languages/xtensa.sinc index e225835..efe9420 100644 --- a/data/languages/xtensa.sinc +++ b/data/languages/xtensa.sinc @@ -147,8 +147,8 @@ s16_16.23_8.11: tmp is u4_8.11 & u8_16.23 [ # An “asymmetric” immediate from -32..95, used by MOVI.N. n_s8_12.15_4.6_asymm: tmp is n_s3_4.6 & n_s4_12.15 [ - tmp = ((((n_s3_4.6 >> 2) & 1) & ((n_s3_4.6 >> 3) & 1)) << 7) | # sign - (n_s3_4.6 << 4) | n_s4_12.15; + tmp = ((((n_s3_4.6 & 7) << 4) | (n_s4_12.15 & 15)) | + ((((n_s3_4.6 >> 2) & 1) & ((n_s3_4.6 >> 1) & 1)) << 7)); ] { export *[const]:1 tmp; } # Immediates shifted or with offset.