Skip to content

Commit

Permalink
[lanai] isBrImm should accept any non-constant immediate.
Browse files Browse the repository at this point in the history
isBrImm should accept any non-constant immediate. Previously it was only accepting LanaiMCExpr ones which was wrong.

Differential Revision: http://reviews.llvm.org/D18571

llvm-svn: 265032
  • Loading branch information
jpienaar committed Mar 31, 2016
1 parent 99b017a commit 4badd6a
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 17 deletions.
23 changes: 6 additions & 17 deletions llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
Expand Up @@ -195,23 +195,12 @@ struct LanaiOperand : public MCParsedAsmOperand {
return false;

// Constant case
if (const MCConstantExpr *ConstExpr = dyn_cast<MCConstantExpr>(Imm.Value)) {
int64_t Value = ConstExpr->getValue();
// Check if value fits in 25 bits with 2 least significant bits 0.
return isShiftedUInt<23, 2>(static_cast<int32_t>(Value));
}

// Symbolic reference expression
if (const LanaiMCExpr *SymbolRefExpr = dyn_cast<LanaiMCExpr>(Imm.Value))
return SymbolRefExpr->getKind() == LanaiMCExpr::VK_Lanai_None;

// Binary expression
if (const MCBinaryExpr *BinaryExpr = dyn_cast<MCBinaryExpr>(Imm.Value))
if (const LanaiMCExpr *SymbolRefExpr =
dyn_cast<LanaiMCExpr>(BinaryExpr->getLHS()))
return SymbolRefExpr->getKind() == LanaiMCExpr::VK_Lanai_None;

return false;
const MCConstantExpr *MCE = dyn_cast<MCConstantExpr>(Imm.Value);
if (!MCE)
return true;
int64_t Value = MCE->getValue();
// Check if value fits in 25 bits with 2 least significant bits 0.
return isShiftedUInt<23, 2>(static_cast<int32_t>(Value));
}

bool isBrTarget() { return isBrImm() || isToken(); }
Expand Down
13 changes: 13 additions & 0 deletions llvm/test/MC/Lanai/ctrl-instructions.s
@@ -0,0 +1,13 @@
// RUN: llvm-mc -triple lanai-unknown-unknown -show-encoding -o - %s | FileCheck %s

// CHECK: bt .Ltmp0 ! encoding: [0b1110000A,A,A,A]
// CHECK-NEXT: ! fixup A - offset: 0, value: .Ltmp0, kind: FIXUP_LANAI_25
bt 1f
nop
1:

// CHECK: bt foo ! encoding: [0b1110000A,A,A,A]
// CHECK-NEXT: ! fixup A - offset: 0, value: foo, kind: FIXUP_LANAI_25
bt foo
nop

0 comments on commit 4badd6a

Please sign in to comment.