From 56ed8a2877a54fbd76195ab7f8fd0d6aa416730c Mon Sep 17 00:00:00 2001 From: Rot127 Date: Sat, 5 Oct 2024 05:01:04 -0500 Subject: [PATCH] Fix Xtensa reachable assert. The immediate given to decodeImm8_sh8Operand has been already shifted. Checking if it is an 8bit value fails therefore. --- llvm/lib/Target/Xtensa/Disassembler/XtensaDisassembler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Target/Xtensa/Disassembler/XtensaDisassembler.cpp b/llvm/lib/Target/Xtensa/Disassembler/XtensaDisassembler.cpp index 2d36b94dd40c..18a3fdfbb47d 100644 --- a/llvm/lib/Target/Xtensa/Disassembler/XtensaDisassembler.cpp +++ b/llvm/lib/Target/Xtensa/Disassembler/XtensaDisassembler.cpp @@ -157,8 +157,8 @@ static DecodeStatus decodeImm8Operand(MCInst &Inst, uint64_t Imm, static DecodeStatus decodeImm8_sh8Operand(MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder) { - assert(isUInt<8>(Imm) && "Invalid immediate"); - Inst.addOperand(MCOperand::createImm(SignExtend64<16>(Imm << 8))); + assert(isUInt<16>(Imm) && "Invalid immediate"); + Inst.addOperand(MCOperand::createImm(SignExtend64<16>(Imm))); return MCDisassembler::Success; }