forked from OSchip/llvm-project
Hexagon: Set isPredicatedNew flag on predicate new instructions.
llvm-svn: 179388
This commit is contained in:
parent
bea8327fcb
commit
ce1be1130f
|
@ -97,8 +97,7 @@ let isExtendable = 1, opExtendable = 2, isExtentSigned = 1, opExtentBits = 8 in
|
|||
//===----------------------------------------------------------------------===//
|
||||
multiclass ALU32_Pbase<string mnemonic, bit isNot,
|
||||
bit isPredNew> {
|
||||
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME : ALU32_rr<(outs IntRegs:$dst),
|
||||
(ins PredRegs:$src1, IntRegs:$src2, IntRegs: $src3),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew,".new) $dst = ",
|
||||
|
@ -144,7 +143,7 @@ defm SUB_rr : ALU32_base<"sub", "SUB", sub>, ImmRegRel, PredNewRel;
|
|||
// ALU32/ALU (ADD with register-immediate form)
|
||||
//===----------------------------------------------------------------------===//
|
||||
multiclass ALU32ri_Pbase<string mnemonic, bit isNot, bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME : ALU32_ri<(outs IntRegs:$dst),
|
||||
(ins PredRegs:$src1, IntRegs:$src2, s8Ext: $src3),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew,".new) $dst = ",
|
||||
|
@ -228,7 +227,7 @@ multiclass TFR_Pred<bit PredNot> {
|
|||
!if(PredNot, "if (!$src1", "if ($src1")#") $dst = $src2",
|
||||
[]>;
|
||||
// Predicate new
|
||||
let PNewValue = "new" in
|
||||
let isPredicatedNew = 1 in
|
||||
def _cdn#NAME : ALU32_rr<(outs IntRegs:$dst),
|
||||
(ins PredRegs:$src1, IntRegs:$src2),
|
||||
!if(PredNot, "if (!$src1", "if ($src1")#".new) $dst = $src2",
|
||||
|
@ -277,7 +276,7 @@ multiclass TFR64_Pred<bit PredNot> {
|
|||
let isPredicatedFalse = PredNot in {
|
||||
def _c#NAME : T_TFR64_Pred<PredNot, 0>;
|
||||
|
||||
let PNewValue = "new" in
|
||||
let isPredicatedNew = 1 in
|
||||
def _cdn#NAME : T_TFR64_Pred<PredNot, 1>; // Predicate new
|
||||
}
|
||||
}
|
||||
|
@ -316,7 +315,7 @@ multiclass TFRI_Pred<bit PredNot> {
|
|||
[]>;
|
||||
|
||||
// Predicate new
|
||||
let PNewValue = "new" in
|
||||
let isPredicatedNew = 1 in
|
||||
def _cdn#NAME : ALU32_rr<(outs IntRegs:$dst),
|
||||
(ins PredRegs:$src1, s12Ext:$src2),
|
||||
!if(PredNot, "if (!$src1", "if ($src1")#".new) $dst = #$src2",
|
||||
|
@ -892,7 +891,7 @@ let isReturn = 1, isTerminator = 1, isBarrier = 1, isPredicated = 1,
|
|||
// Load -- MEMri operand
|
||||
multiclass LD_MEMri_Pbase<string mnemonic, RegisterClass RC,
|
||||
bit isNot, bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME : LDInst2<(outs RC:$dst),
|
||||
(ins PredRegs:$src1, MEMri:$addr),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
@ -958,7 +957,7 @@ def : Pat < (i64 (load ADDRriS11_3:$addr)),
|
|||
// Load - Base with Immediate offset addressing mode
|
||||
multiclass LD_Idxd_Pbase<string mnemonic, RegisterClass RC, Operand predImmOp,
|
||||
bit isNot, bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME : LDInst2<(outs RC:$dst),
|
||||
(ins PredRegs:$src1, IntRegs:$src2, predImmOp:$src3),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
@ -1038,7 +1037,7 @@ def : Pat < (i64 (load (add IntRegs:$src1, s11_3ExtPred:$offset))),
|
|||
|
||||
multiclass LD_PostInc_Pbase<string mnemonic, RegisterClass RC, Operand ImmOp,
|
||||
bit isNot, bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME : LDInst2PI<(outs RC:$dst, IntRegs:$dst2),
|
||||
(ins PredRegs:$src1, IntRegs:$src2, ImmOp:$offset),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
@ -1366,7 +1365,7 @@ def SUBri_acc : MInst_acc<(outs IntRegs: $dst), (ins IntRegs:$src1,
|
|||
|
||||
multiclass ST_PostInc_Pbase<string mnemonic, RegisterClass RC, Operand ImmOp,
|
||||
bit isNot, bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME : STInst2PI<(outs IntRegs:$dst),
|
||||
(ins PredRegs:$src1, IntRegs:$src2, ImmOp:$offset, RC:$src3),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
@ -1431,7 +1430,7 @@ def : Pat<(post_store (i64 DoubleRegs:$src1), IntRegs:$src2,
|
|||
//===----------------------------------------------------------------------===//
|
||||
multiclass ST_MEMri_Pbase<string mnemonic, RegisterClass RC, bit isNot,
|
||||
bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME : STInst2<(outs),
|
||||
(ins PredRegs:$src1, MEMri:$addr, RC: $src2),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
@ -1497,7 +1496,7 @@ def : Pat<(store (i64 DoubleRegs:$src1), ADDRriS11_3:$addr),
|
|||
//===----------------------------------------------------------------------===//
|
||||
multiclass ST_Idxd_Pbase<string mnemonic, RegisterClass RC, Operand predImmOp,
|
||||
bit isNot, bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME : STInst2<(outs),
|
||||
(ins PredRegs:$src1, IntRegs:$src2, predImmOp:$src3, RC: $src4),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
|
|
@ -307,7 +307,7 @@ def LDriw_abs_set_V4 : LDInst2<(outs IntRegs:$dst1, IntRegs:$dst2),
|
|||
// addressing mode
|
||||
multiclass ld_idxd_shl_pbase<string mnemonic, RegisterClass RC, bit isNot,
|
||||
bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME : LDInst2<(outs RC:$dst),
|
||||
(ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$offset),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
@ -598,7 +598,7 @@ def STriw_abs_set_V4 : STInst2<(outs IntRegs:$dst1),
|
|||
// mode
|
||||
multiclass ST_Idxd_shl_Pbase<string mnemonic, RegisterClass RC, bit isNot,
|
||||
bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME : STInst2<(outs),
|
||||
(ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
|
||||
RC:$src5),
|
||||
|
@ -637,7 +637,7 @@ multiclass ST_Idxd_shl<string mnemonic, string CextOp, RegisterClass RC> {
|
|||
// addressing mode.
|
||||
multiclass ST_Idxd_shl_Pbase_nv<string mnemonic, RegisterClass RC, bit isNot,
|
||||
bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME#_nv_V4 : NVInst_V4<(outs),
|
||||
(ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
|
||||
RC:$src5),
|
||||
|
@ -741,7 +741,7 @@ def STrid_shl_V4 : STInst<(outs),
|
|||
//===----------------------------------------------------------------------===//
|
||||
multiclass ST_Imm_Pbase<string mnemonic, Operand OffsetOp, bit isNot,
|
||||
bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME : STInst2<(outs),
|
||||
(ins PredRegs:$src1, IntRegs:$src2, OffsetOp:$src3, s6Ext:$src4),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
@ -907,7 +907,7 @@ def STriw_shl_V4 : STInst<(outs),
|
|||
//
|
||||
multiclass ST_Idxd_Pbase_nv<string mnemonic, RegisterClass RC,
|
||||
Operand predImmOp, bit isNot, bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME#_nv_V4 : NVInst_V4<(outs),
|
||||
(ins PredRegs:$src1, IntRegs:$src2, predImmOp:$src3, RC: $src4),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
@ -960,7 +960,7 @@ let addrMode = BaseImmOffset, validSubTargets = HasV4SubT in {
|
|||
// and MEMri operand.
|
||||
multiclass ST_MEMri_Pbase_nv<string mnemonic, RegisterClass RC, bit isNot,
|
||||
bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME#_nv_V4 : NVInst_V4<(outs),
|
||||
(ins PredRegs:$src1, MEMri:$addr, RC: $src2),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
@ -1022,7 +1022,7 @@ def STrib_shl_nv_V4 : NVInst_V4<(outs),
|
|||
|
||||
multiclass ST_PostInc_Pbase_nv<string mnemonic, RegisterClass RC, Operand ImmOp,
|
||||
bit isNot, bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME#_nv_V4 : NVInstPI_V4<(outs IntRegs:$dst),
|
||||
(ins PredRegs:$src1, IntRegs:$src2, ImmOp:$offset, RC:$src3),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
@ -2769,7 +2769,7 @@ let isReturn = 1, isTerminator = 1,
|
|||
|
||||
multiclass ST_Abs_Predbase<string mnemonic, RegisterClass RC, bit isNot,
|
||||
bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME#_V4 : STInst2<(outs),
|
||||
(ins PredRegs:$src1, globaladdressExt:$absaddr, RC: $src2),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
@ -2805,7 +2805,7 @@ multiclass ST_Abs<string mnemonic, string CextOp, RegisterClass RC> {
|
|||
|
||||
multiclass ST_Abs_Predbase_nv<string mnemonic, RegisterClass RC, bit isNot,
|
||||
bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME#_nv_V4 : NVInst_V4<(outs),
|
||||
(ins PredRegs:$src1, globaladdressExt:$absaddr, RC: $src2),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
@ -2974,7 +2974,7 @@ def : Pat<(store (i32 IntRegs:$src1), (HexagonCONST32_GP tglobaladdr:$global)),
|
|||
//===----------------------------------------------------------------------===//
|
||||
multiclass LD_Abs_Predbase<string mnemonic, RegisterClass RC, bit isNot,
|
||||
bit isPredNew> {
|
||||
let PNewValue = !if(isPredNew, "new", "") in
|
||||
let isPredicatedNew = isPredNew in
|
||||
def NAME : LDInst2<(outs RC:$dst),
|
||||
(ins PredRegs:$src1, globaladdressExt:$absaddr),
|
||||
!if(isNot, "if (!$src1", "if ($src1")#!if(isPredNew, ".new) ",
|
||||
|
|
Loading…
Reference in New Issue