[AArch64] Fix branch, terminator, etc properties for BRA* instructions.

Tests relying on some of these fixes will be added for this in follow-on
patches that introduce new features that require these properties to be
correct.

Differential Revision: https://reviews.llvm.org/D81399
This commit is contained in:
Kristof Beyls 2020-06-09 08:11:02 +01:00
parent cc8872400c
commit 09d098506b
1 changed files with 16 additions and 8 deletions

View File

@ -976,15 +976,23 @@ let Predicates = [HasPA] in {
def PACGA : SignAuthTwoOperand<0b1100, "pacga", null_frag>; def PACGA : SignAuthTwoOperand<0b1100, "pacga", null_frag>;
// Combined Instructions // Combined Instructions
def BRAA : AuthBranchTwoOperands<0, 0, "braa">; let isBranch = 1, isTerminator = 1, isBarrier = 1, isIndirectBranch = 1 in {
def BRAB : AuthBranchTwoOperands<0, 1, "brab">; def BRAA : AuthBranchTwoOperands<0, 0, "braa">;
def BLRAA : AuthBranchTwoOperands<1, 0, "blraa">; def BRAB : AuthBranchTwoOperands<0, 1, "brab">;
def BLRAB : AuthBranchTwoOperands<1, 1, "blrab">; }
let isCall = 1, Defs = [LR], Uses = [SP] in {
def BLRAA : AuthBranchTwoOperands<1, 0, "blraa">;
def BLRAB : AuthBranchTwoOperands<1, 1, "blrab">;
}
def BRAAZ : AuthOneOperand<0b000, 0, "braaz">; let isBranch = 1, isTerminator = 1, isBarrier = 1, isIndirectBranch = 1 in {
def BRABZ : AuthOneOperand<0b000, 1, "brabz">; def BRAAZ : AuthOneOperand<0b000, 0, "braaz">;
def BLRAAZ : AuthOneOperand<0b001, 0, "blraaz">; def BRABZ : AuthOneOperand<0b000, 1, "brabz">;
def BLRABZ : AuthOneOperand<0b001, 1, "blrabz">; }
let isCall = 1, Defs = [LR], Uses = [SP] in {
def BLRAAZ : AuthOneOperand<0b001, 0, "blraaz">;
def BLRABZ : AuthOneOperand<0b001, 1, "blrabz">;
}
let isReturn = 1, isTerminator = 1, isBarrier = 1 in { let isReturn = 1, isTerminator = 1, isBarrier = 1 in {
def RETAA : AuthReturn<0b010, 0, "retaa">; def RETAA : AuthReturn<0b010, 0, "retaa">;