diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2021-08-22 19:00:43 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2021-12-06 16:30:02 +0000 |
commit | 5f7ddb1456d5b926e85710da690bf548ef0c9fc8 (patch) | |
tree | f8845b108c5c07836b95c8229c96cd745fc9fb2c /contrib/llvm-project/llvm/lib/Target/ARC/ARCInstrFormats.td | |
parent | 3f82687cdf02983d8f3294df4d97b09cf211141b (diff) | |
download | src-5f7ddb1456d5b926e85710da690bf548ef0c9fc8.tar.gz src-5f7ddb1456d5b926e85710da690bf548ef0c9fc8.zip |
Merge llvm-project main llvmorg-13-init-16847-g88e66fa60ae5
This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvmorg-13-init-16847-g88e66fa60ae5, the last commit before
the upstream release/13.x branch was created.
PR: 258209
(cherry picked from commit fe6060f10f634930ff71b7c50291ddc610da2475)
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Target/ARC/ARCInstrFormats.td')
-rw-r--r-- | contrib/llvm-project/llvm/lib/Target/ARC/ARCInstrFormats.td | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/contrib/llvm-project/llvm/lib/Target/ARC/ARCInstrFormats.td b/contrib/llvm-project/llvm/lib/Target/ARC/ARCInstrFormats.td index 584844d49553..5f539c92c745 100644 --- a/contrib/llvm-project/llvm/lib/Target/ARC/ARCInstrFormats.td +++ b/contrib/llvm-project/llvm/lib/Target/ARC/ARCInstrFormats.td @@ -261,6 +261,32 @@ class F32_SOP_RR<bits<5> major, bits<6> subop, bit F, dag outs, dag ins, let Inst{5-0} = subop; } +// Single Operand Immediate Instructions. +// 1-register, unsigned 6-bit immediate Single Operand instruction with +// condition code. +// |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0| +// |B[2-0] | 1| 1| subop| F|B[5-3] |U6 |1|cc | +class F32_SOP_CC_RU6<bits<5> major, bits<6> subop, bit F, dag outs, dag ins, + string asmstr, list<dag> pattern> : + InstARC<4, outs, ins, asmstr, pattern> { + + bits<5> cc; + bits<6> U6; + bits<6> B; + + let Inst{31-27} = major; + let Inst{26-24} = B{2-0}; + let Inst{23-22} = 0b11; + let Inst{21-16} = subop; + let Inst{15} = F; + let Inst{14-12} = B{5-3}; + let Inst{11-6} = U6; + let Inst{5} = 1; + let Inst{4-0} = cc; + + let DecoderMethod = "DecodeCCRU6Instruction"; +} + // Dual Operand Instructions. Inst[21-16] specifies the specific operation // for this format. @@ -327,6 +353,30 @@ class F32_DOP_RU6<bits<5> major, bits<6> subop, bit F, dag outs, dag ins, let Inst{5-0} = A; } +// 2-register, unsigned 6-bit immediate Dual Operand instruction with +// condition code. This instruction uses B as the first 2 operands +// (i.e, add.cc B, B, u6). +// |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0| +// |B[2-0] | 1| 1| subop| F|B[5-3] |U6 |1|cc | +class F32_DOP_CC_RRU6<bits<5> major, bits<6> subop, bit F, dag outs, dag ins, + string asmstr, list<dag> pattern> : + InstARC<4, outs, ins, asmstr, pattern> { + bits<5> cc; + bits<6> U6; + bits<6> B; + bits<6> A; + + let Inst{31-27} = major; + let Inst{26-24} = B{2-0}; + let Inst{23-22} = 0b11; + let Inst{21-16} = subop; + let Inst{15} = F; + let Inst{14-12} = B{5-3}; + let Inst{11-6} = U6; + let Inst{5} = 1; + let Inst{4-0} = cc; +} + // 2-register, signed 12-bit immediate Dual Operand instruction. // This instruction uses B as the first 2 operands (i.e., add B, B, -128). // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0| |