diff options
| author | Simon Atanasyan <simon@atanasyan.com> | 2019-11-05 01:12:10 +0300 |
|---|---|---|
| committer | Simon Atanasyan <simon@atanasyan.com> | 2019-11-07 13:58:50 +0300 |
| commit | 7bed381eae12277d6e0ef7e8a56491d11589ee7f (patch) | |
| tree | 25d051534dfdf1218c41f673bef6590ff0121824 /llvm/lib/Target/Mips/MipsInstrInfo.td | |
| parent | eaff3004019f97c64c88ab76da6b25106b659b30 (diff) | |
| download | bcm5719-llvm-7bed381eae12277d6e0ef7e8a56491d11589ee7f.tar.gz bcm5719-llvm-7bed381eae12277d6e0ef7e8a56491d11589ee7f.zip | |
[mips] Implement Octeon+ `saa` and `saad` instructions
`saa` and `saad` are 32-bit and 64-bit store atomic add instructions.
memory[base] = memory[base] + rt
These instructions are available for "Octeon+" CPU. The patch adds support
for both instructions to MIPS assembler and diassembler and introduces new
CPU type - "octeon+".
Next patches will implement `.set arch=octeon+` directive and `AFL_EXT_OCTEONP`
ISA extension flag support.
Differential Revision: https://reviews.llvm.org/D69849
Diffstat (limited to 'llvm/lib/Target/Mips/MipsInstrInfo.td')
| -rw-r--r-- | llvm/lib/Target/Mips/MipsInstrInfo.td | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MipsInstrInfo.td b/llvm/lib/Target/Mips/MipsInstrInfo.td index a1e245f5303..b560da8cc71 100644 --- a/llvm/lib/Target/Mips/MipsInstrInfo.td +++ b/llvm/lib/Target/Mips/MipsInstrInfo.td @@ -211,6 +211,10 @@ def HasCnMips : Predicate<"Subtarget->hasCnMips()">, AssemblerPredicate<"FeatureCnMips">; def NotCnMips : Predicate<"!Subtarget->hasCnMips()">, AssemblerPredicate<"!FeatureCnMips">; +def HasCnMipsP : Predicate<"Subtarget->hasCnMipsP()">, + AssemblerPredicate<"FeatureCnMipsP">; +def NotCnMipsP : Predicate<"!Subtarget->hasCnMipsP()">, + AssemblerPredicate<"!FeatureCnMipsP">; def IsSym32 : Predicate<"Subtarget->hasSym32()">, AssemblerPredicate<"FeatureSym32">; def IsSym64 : Predicate<"!Subtarget->hasSym32()">, @@ -439,6 +443,14 @@ class NOT_ASE_CNMIPS { list<Predicate> ASEPredicate = [NotCnMips]; } +class ASE_CNMIPSP { + list<Predicate> ASEPredicate = [HasCnMipsP]; +} + +class NOT_ASE_CNMIPSP { + list<Predicate> ASEPredicate = [NotCnMipsP]; +} + class ASE_MIPS64_CNMIPS { list<Predicate> ASEPredicate = [HasMips64, HasCnMips]; } |

