diff options
author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-04-19 20:20:33 +0000 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-04-19 20:20:33 +0000 |
commit | 5ffee8d82986c4db6aeada6b115d093bf4d2b61d (patch) | |
tree | cf3acd4f0ad06e7696dfc7b3fccbf56f33432821 /llvm/lib/Target | |
parent | f350d25942402fb03aac4a0acdb23ab2c365a71b (diff) | |
download | bcm5719-llvm-5ffee8d82986c4db6aeada6b115d093bf4d2b61d.tar.gz bcm5719-llvm-5ffee8d82986c4db6aeada6b115d093bf4d2b61d.zip |
[Hexagon] Fix printing the address operand of S2_storerinewabs
llvm-svn: 266811
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td b/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td index 4bfc7e21f5b..ce018822b2b 100644 --- a/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td +++ b/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td @@ -3447,9 +3447,9 @@ multiclass ST_Abs<string mnemonic, string CextOp, RegisterClass RC, //===----------------------------------------------------------------------===// let hasSideEffects = 0, isPredicable = 1, mayStore = 1, isNVStore = 1, isNewValue = 1, opNewValue = 1 in -class T_StoreAbsGP_NV <string mnemonic, Operand ImmOp, bits<2>MajOp, bit isAbs> - : NVInst_V4<(outs), (ins u32Imm:$addr, IntRegs:$src), - mnemonic # !if(isAbs, "(##", "(#")#"$addr) = $src.new", +class T_StoreAbsGP_NV <string mnemonic, Operand ImmOp, bits<2>MajOp> + : NVInst_V4<(outs), (ins ImmOp:$addr, IntRegs:$src), + mnemonic #"(#$addr) = $src.new", [], "", V2LDST_tc_st_SLOT0> { bits<19> addr; bits<3> src; @@ -3460,7 +3460,6 @@ class T_StoreAbsGP_NV <string mnemonic, Operand ImmOp, bits<2>MajOp, bit isAbs> !if (!eq(ImmOpStr, "u16_2Imm"), addr{17-2}, !if (!eq(ImmOpStr, "u16_1Imm"), addr{16-1}, /* u16_0Imm */ addr{15-0}))); - let Uses = !if (isAbs, [], [GP]); let IClass = 0b0100; let Inst{27} = 1; @@ -3480,7 +3479,7 @@ class T_StoreAbsGP_NV <string mnemonic, Operand ImmOp, bits<2>MajOp, bit isAbs> let hasSideEffects = 0, isPredicated = 1, mayStore = 1, isNVStore = 1, isNewValue = 1, opNewValue = 2, opExtentBits = 6, opExtendable = 1 in class T_StoreAbs_NV_Pred <string mnemonic, bits<2> MajOp, bit isNot, bit isNew> - : NVInst_V4<(outs), (ins PredRegs:$src1, u6Ext:$absaddr, IntRegs:$src2), + : NVInst_V4<(outs), (ins PredRegs:$src1, u32MustExt:$absaddr, IntRegs:$src2), !if(isNot, "if (!$src1", "if ($src1")#!if(isNew, ".new) ", ") ")#mnemonic#"(#$absaddr) = $src2.new", [], "", ST_tc_st_SLOT0>, AddrModeRel { @@ -3510,7 +3509,7 @@ class T_StoreAbs_NV_Pred <string mnemonic, bits<2> MajOp, bit isNot, bit isNew> // absolute addressing. //===----------------------------------------------------------------------===// class T_StoreAbs_NV <string mnemonic, Operand ImmOp, bits<2> MajOp> - : T_StoreAbsGP_NV <mnemonic, ImmOp, MajOp, 1>, AddrModeRel { + : T_StoreAbsGP_NV <mnemonic, u32MustExt, MajOp>, AddrModeRel { string ImmOpStr = !cast<string>(ImmOp); let opExtentBits = !if (!eq(ImmOpStr, "u16_3Imm"), 19, @@ -3572,7 +3571,7 @@ defm storerf : ST_Abs <"memh", "STrif", IntRegs, u16_1Imm, 0b01, 1>; // if ([!]Pv[.new]) mem[bhwd](##global)=Rt //===----------------------------------------------------------------------===// -let isAsmParserOnly = 1 in +let Uses = [GP], isAsmParserOnly = 1 in class T_StoreGP <string mnemonic, string BaseOp, RegisterClass RC, Operand ImmOp, bits<2> MajOp, bit isHalf = 0> : T_StoreAbsGP <mnemonic, RC, ImmOp, MajOp, 0, isHalf> { @@ -3582,7 +3581,7 @@ class T_StoreGP <string mnemonic, string BaseOp, RegisterClass RC, let BaseOpcode = BaseOp#_abs; } -let isAsmParserOnly = 1 in +let Uses = [GP], isAsmParserOnly = 1 in multiclass ST_GP <string mnemonic, string BaseOp, Operand ImmOp, bits<2> MajOp, bit isHalf = 0> { // Set BaseOpcode same as absolute addressing instructions so that @@ -3592,7 +3591,7 @@ multiclass ST_GP <string mnemonic, string BaseOp, Operand ImmOp, def NAME#gp : T_StoreAbsGP <mnemonic, IntRegs, ImmOp, MajOp, 0, isHalf>; // New-value store - def NAME#newgp : T_StoreAbsGP_NV <mnemonic, ImmOp, MajOp, 0> ; + def NAME#newgp : T_StoreAbsGP_NV <mnemonic, ImmOp, MajOp> ; } } |