From: cupertinomiranda@gmail.com To: qemu-devel@nongnu.org Cc: linux-snps-arc@lists.infradead.org, claziss@synopsys.com, shahab@synopsys.com, cmiranda@synopsys.com Subject: [PATCH 20/27] arcv3: TCG, decoder glue code and helper changes Date: Mon, 5 Apr 2021 15:31:31 +0100 [thread overview] Message-ID: <20210405143138.17016-21-cupertinomiranda@gmail.com> (raw) In-Reply-To: <20210405143138.17016-1-cupertinomiranda@gmail.com> From: Cupertino Miranda <cmiranda@synopsys.com> --- target/arc/extra_mapping.def | 16 + target/arc/helper.c | 11 + target/arc/helper.h | 16 + target/arc/op_helper.c | 110 ++++++- target/arc/semfunc-v2_mapping.def | 321 ++++++++++++++++++++ target/arc/semfunc-v3_mapping.def | 468 ++++++++++++++++++++++++++++++ target/arc/semfunc_mapping.def | 308 +------------------- 7 files changed, 937 insertions(+), 313 deletions(-) create mode 100644 target/arc/semfunc-v2_mapping.def create mode 100644 target/arc/semfunc-v3_mapping.def diff --git a/target/arc/extra_mapping.def b/target/arc/extra_mapping.def index 50517f058e..527a70f304 100644 --- a/target/arc/extra_mapping.def +++ b/target/arc/extra_mapping.def @@ -43,6 +43,7 @@ MAPPING(swi, SWI, 1, 0) CONSTANT(SWI, swi_s, 0, 0) MAPPING(swi_s, SWI, 1, 0) +#ifdef TARGET_ARCV2 SEMANTIC_FUNCTION(VADD2, 3) SEMANTIC_FUNCTION(VADD2H, 3) SEMANTIC_FUNCTION(VADD4H, 3) @@ -61,3 +62,18 @@ MAPPING(vsub2h, VSUB2H, 3, 0, 1, 2) MAPPING(vsub4h, VSUB4H, 3, 0, 1, 2) MAPPING(mpyd, MPYD, 3, 0, 1, 2) MAPPING(mpydu, MPYDU, 3, 0, 1, 2) +#endif + +#ifdef TARGET_ARCV3 +SEMANTIC_FUNCTION(MPYL, 3) +SEMANTIC_FUNCTION(MPYML, 3) +SEMANTIC_FUNCTION(MPYMUL, 3) +SEMANTIC_FUNCTION(MPYMSUL, 3) +SEMANTIC_FUNCTION(ADDHL, 3) + +MAPPING(mpyl, MPYL, 3, 0, 1, 2) +MAPPING(mpyml, MPYML, 3, 0, 1, 2) +MAPPING(mpymul, MPYMUL, 3, 0, 1, 2) +MAPPING(mpymsul, MPYMSUL, 3, 0, 1, 2) +MAPPING(addhl, ADDHL, 3, 0, 1, 2) +#endif diff --git a/target/arc/helper.c b/target/arc/helper.c index e11d21d576..10c46cbee4 100644 --- a/target/arc/helper.c +++ b/target/arc/helper.c @@ -80,12 +80,23 @@ void arc_cpu_do_interrupt(CPUState *cs) case EXCP_MACHINE_CHECK: name = "Machine Check"; break; +#ifdef TARGET_ARCV2 case EXCP_TLB_MISS_I: name = "TLB Miss Instruction"; break; case EXCP_TLB_MISS_D: name = "TLB Miss Data"; break; +#elif TARGET_ARCV3 + case EXCP_IMMU_FAULT: + name = "Instruction MMU Fault"; + break; + case EXCP_DMMU_FAULT: + name = "Data MMU Fault"; + break; +#else +#error +#endif case EXCP_PROTV: name = "Protection Violation"; break; diff --git a/target/arc/helper.h b/target/arc/helper.h index 1929c1682f..2d93fc3a96 100644 --- a/target/arc/helper.h +++ b/target/arc/helper.h @@ -37,3 +37,19 @@ DEF_HELPER_FLAGS_3(overflow_sub_flag, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl) DEF_HELPER_FLAGS_3(mpymu, TCG_CALL_NO_RWG_SE, tl, env, tl, tl) DEF_HELPER_FLAGS_3(mpym, TCG_CALL_NO_RWG_SE, tl, env, tl, tl) DEF_HELPER_FLAGS_3(repl_mask, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl) + +/* ARCV3 helpers */ +#ifdef TARGET_ARCV3 +DEF_HELPER_FLAGS_2(ffs32, TCG_CALL_NO_RWG_SE, tl, env, tl) + +DEF_HELPER_FLAGS_3(carry_add_flag32, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl) +DEF_HELPER_FLAGS_3(carry_sub_flag32, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl) +DEF_HELPER_FLAGS_3(overflow_add_flag32, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl) +DEF_HELPER_FLAGS_3(overflow_sub_flag32, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl) + +DEF_HELPER_FLAGS_2(rotate_left32, TCG_CALL_NO_RWG_SE, i64, i64, i64) +DEF_HELPER_FLAGS_2(rotate_right32, TCG_CALL_NO_RWG_SE, i64, i64, i64) +DEF_HELPER_FLAGS_2(asr_32, TCG_CALL_NO_RWG_SE, i64, i64, i64) + +DEF_HELPER_2(norml, i64, env, i64) +#endif diff --git a/target/arc/op_helper.c b/target/arc/op_helper.c index 1124541993..6d68018334 100644 --- a/target/arc/op_helper.c +++ b/target/arc/op_helper.c @@ -188,7 +188,9 @@ void helper_rtie(CPUARCState *env) (target_ulong) pack_status32(&env->stat)); } +#ifdef TARGET_ARCV2 helper_zol_verify(env, env->pc); +#endif } void helper_flush(CPUARCState *env) @@ -390,17 +392,103 @@ arc_status_regs_set(const struct arc_aux_reg_detail *aux_reg_detail, } } -/* - * uint32_t lf_variable = 0; - * uint32_t helper_get_lf(void) - * { - * return lf_variable; - * } - * void helper_set_lf(uint32_t v) - * { - * lf_variable = v; - * } - */ +#ifdef TARGET_ARCV3 +uint64_t helper_carry_add_flag32(uint64_t dest, uint64_t b, uint64_t c) { + return carry_add_flag(dest, b, c, 32); +} + +target_ulong helper_overflow_add_flag32(target_ulong dest, target_ulong b, target_ulong c) { + return overflow_add_flag(dest, b, c, 32); +} + +target_ulong helper_overflow_sub_flag32(target_ulong dest, target_ulong b, target_ulong c) { + dest = dest & 0xffffffff; + b = b & 0xffffffff; + c = c & 0xffffffff; + return overflow_sub_flag(dest, b, c, 32); +} + +uint64_t helper_carry_sub_flag32(uint64_t dest, uint64_t b, uint64_t c) +{ + uint32_t t1, t2, t3; + + t1 = ~b; + t2 = t1 & c; + t3 = (t1 | c) & dest; + + t2 = t2 | t3; + return (t2 >> 31) & 1; +} + +uint64_t helper_rotate_left32(uint64_t orig, uint64_t n) +{ + uint64_t t; + uint64_t dest = (orig << n) & ((0xffffffff << n) & 0xffffffff); + + t = (orig >> (32 - n)) & ((1 << n) - 1); + dest |= t; + + return dest; +} + +uint64_t helper_rotate_right32(uint64_t orig, uint64_t n) +{ + uint64_t t; + uint64_t dest = (orig >> n) & (0xffffffff >> n); + + t = ((orig & ((1 << n) - 1)) << (32 - n)); + dest |= t; + + return dest; +} + +uint64_t helper_asr_32(uint64_t b, uint64_t c) +{ + uint64_t t; + c = c & 31; + t = b; + for(int i = 0; i < c; i++) { + t >>= 1; + if((b & 0x80000000) != 0) + t |= 0x80000000; + } + //t |= ((1 << (c+1)) - 1) << (32 - c); + + return t; +} + +target_ulong helper_ffs32(CPUARCState *env, uint64_t src) +{ + int i; + if (src == 0) { + return 31; + } + for (i = 0; i <= 31; i++) { + if (((src >> i) & 1) != 0) { + break; + } + } + return i; +} + +target_ulong helper_norml(CPUARCState *env, uint64_t src1) +{ + int i; + int64_t tmp = (int64_t) src1; + if (tmp == 0 || tmp == -1) { + return 0; + } + for (i = 0; i <= 63; i++) { + if ((tmp >> i) == 0) { + break; + } + if ((tmp >> i) == -1) { + break; + } + } + return i; +} +#endif /*-*-indent-tabs-mode:nil;tab-width:4;indent-line-function:'insert-tab'-*-*/ /* vim: set ts=4 sw=4 et: */ diff --git a/target/arc/semfunc-v2_mapping.def b/target/arc/semfunc-v2_mapping.def new file mode 100644 index 0000000000..ab8d9ff123 --- /dev/null +++ b/target/arc/semfunc-v2_mapping.def @@ -0,0 +1,321 @@ +/* + * QEMU ARC SEMANTIC MAPPING. + * + * Copyright (c) 2020 Synopsys, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2 or later, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. + */ + +SEMANTIC_FUNCTION(FLAG, 1) +SEMANTIC_FUNCTION(KFLAG, 1) +SEMANTIC_FUNCTION(ADD, 3) +SEMANTIC_FUNCTION(ADD1, 3) +SEMANTIC_FUNCTION(ADD2, 3) +SEMANTIC_FUNCTION(ADD3, 3) +SEMANTIC_FUNCTION(ADC, 3) +SEMANTIC_FUNCTION(SBC, 3) +SEMANTIC_FUNCTION(NEG, 2) +SEMANTIC_FUNCTION(SUB, 3) +SEMANTIC_FUNCTION(SUB1, 3) +SEMANTIC_FUNCTION(SUB2, 3) +SEMANTIC_FUNCTION(SUB3, 3) +SEMANTIC_FUNCTION(MAX, 3) +SEMANTIC_FUNCTION(MIN, 3) +SEMANTIC_FUNCTION(CMP, 2) +SEMANTIC_FUNCTION(AND, 3) +SEMANTIC_FUNCTION(OR, 3) +SEMANTIC_FUNCTION(XOR, 3) +SEMANTIC_FUNCTION(MOV, 2) +SEMANTIC_FUNCTION(ASL, 3) +SEMANTIC_FUNCTION(ASR, 3) +SEMANTIC_FUNCTION(ASR8, 2) +SEMANTIC_FUNCTION(ASR16, 2) +SEMANTIC_FUNCTION(LSL16, 2) +SEMANTIC_FUNCTION(LSL8, 2) +SEMANTIC_FUNCTION(LSR, 3) +SEMANTIC_FUNCTION(LSR16, 2) +SEMANTIC_FUNCTION(LSR8, 2) +SEMANTIC_FUNCTION(BIC, 3) +SEMANTIC_FUNCTION(BCLR, 3) +SEMANTIC_FUNCTION(BMSK, 3) +SEMANTIC_FUNCTION(BMSKN, 3) +SEMANTIC_FUNCTION(BSET, 3) +SEMANTIC_FUNCTION(BXOR, 3) +SEMANTIC_FUNCTION(ROL, 2) +SEMANTIC_FUNCTION(ROL8, 2) +SEMANTIC_FUNCTION(ROR, 3) +SEMANTIC_FUNCTION(ROR8, 2) +SEMANTIC_FUNCTION(RLC, 2) +SEMANTIC_FUNCTION(RRC, 2) +SEMANTIC_FUNCTION(SEXB, 2) +SEMANTIC_FUNCTION(SEXH, 2) +SEMANTIC_FUNCTION(EXTB, 2) +SEMANTIC_FUNCTION(EXTH, 2) +SEMANTIC_FUNCTION(BTST, 2) +SEMANTIC_FUNCTION(TST, 2) +SEMANTIC_FUNCTION(XBFU, 3) +SEMANTIC_FUNCTION(AEX, 2) +SEMANTIC_FUNCTION(LR, 2) +SEMANTIC_FUNCTION(CLRI, 1) +SEMANTIC_FUNCTION(SETI, 1) +SEMANTIC_FUNCTION(NOP, 0) +SEMANTIC_FUNCTION(PREALLOC, 0) +SEMANTIC_FUNCTION(PREFETCH, 2) +SEMANTIC_FUNCTION(MPY, 3) +SEMANTIC_FUNCTION(MPYMU, 3) +SEMANTIC_FUNCTION(MPYM, 3) +SEMANTIC_FUNCTION(MPYU, 3) +SEMANTIC_FUNCTION(MPYUW, 3) +SEMANTIC_FUNCTION(MPYW, 3) +SEMANTIC_FUNCTION(DIV, 3) +SEMANTIC_FUNCTION(DIVU, 3) +SEMANTIC_FUNCTION(REM, 3) +SEMANTIC_FUNCTION(REMU, 3) +SEMANTIC_FUNCTION(MAC, 3) +SEMANTIC_FUNCTION(MACU, 3) +SEMANTIC_FUNCTION(MACD, 3) +SEMANTIC_FUNCTION(MACDU, 3) +SEMANTIC_FUNCTION(ABS, 2) +SEMANTIC_FUNCTION(SWAP, 2) +SEMANTIC_FUNCTION(SWAPE, 2) +SEMANTIC_FUNCTION(NOT, 2) +SEMANTIC_FUNCTION(BI, 1) +SEMANTIC_FUNCTION(BIH, 1) +SEMANTIC_FUNCTION(B, 1) +SEMANTIC_FUNCTION(B_S, 1) +SEMANTIC_FUNCTION(BBIT0, 3) +SEMANTIC_FUNCTION(BBIT1, 3) +SEMANTIC_FUNCTION(BL, 1) +SEMANTIC_FUNCTION(J, 1) +SEMANTIC_FUNCTION(JL, 1) +SEMANTIC_FUNCTION(SETEQ, 3) +SEMANTIC_FUNCTION(BREQ, 3) +SEMANTIC_FUNCTION(SETNE, 3) +SEMANTIC_FUNCTION(BRNE, 3) +SEMANTIC_FUNCTION(SETLT, 3) +SEMANTIC_FUNCTION(BRLT, 3) +SEMANTIC_FUNCTION(SETGE, 3) +SEMANTIC_FUNCTION(BRGE, 3) +SEMANTIC_FUNCTION(SETLE, 3) +SEMANTIC_FUNCTION(SETGT, 3) +SEMANTIC_FUNCTION(BRLO, 3) +SEMANTIC_FUNCTION(SETLO, 3) +SEMANTIC_FUNCTION(BRHS, 3) +SEMANTIC_FUNCTION(SETHS, 3) +SEMANTIC_FUNCTION(EX, 2) +SEMANTIC_FUNCTION(LLOCK, 2) +SEMANTIC_FUNCTION(LLOCKD, 2) +SEMANTIC_FUNCTION(SCOND, 2) +SEMANTIC_FUNCTION(SCONDD, 2) +SEMANTIC_FUNCTION(DMB, 1) +SEMANTIC_FUNCTION(LD, 3) +SEMANTIC_FUNCTION(LDD, 3) +SEMANTIC_FUNCTION(ST, 3) +SEMANTIC_FUNCTION(STD, 3) +SEMANTIC_FUNCTION(POP, 1) +SEMANTIC_FUNCTION(PUSH, 1) +SEMANTIC_FUNCTION(LP, 1) +SEMANTIC_FUNCTION(NORM, 2) +SEMANTIC_FUNCTION(NORMH, 2) +SEMANTIC_FUNCTION(FLS, 2) +SEMANTIC_FUNCTION(FFS, 2) + + +MAPPING(flag, FLAG, 1, 0) +MAPPING(kflag, KFLAG, 1, 0) +MAPPING(add, ADD, 3, 1, 2, 0) +MAPPING(add_s, ADD, 3, 1, 2, 0) +MAPPING(add1, ADD1, 3, 1, 2, 0) +MAPPING(add1_s, ADD1, 3, 1, 2, 0) +MAPPING(add2, ADD2, 3, 1, 2, 0) +MAPPING(add2_s, ADD2, 3, 1, 2, 0) +MAPPING(add3, ADD3, 3, 1, 2, 0) +MAPPING(add3_s, ADD3, 3, 1, 2, 0) +MAPPING(adc, ADC, 3, 1, 2, 0) +MAPPING(sbc, SBC, 3, 1, 2, 0) +MAPPING(neg, NEG, 2, 1, 0) +MAPPING(neg_s, NEG, 2, 1, 0) +MAPPING(sub, SUB, 3, 1, 2, 0) +MAPPING(sub_s, SUB, 3, 1, 2, 0) +MAPPING(rsub, SUB, 3, 2, 1, 0) +MAPPING(sub1, SUB1, 3, 1, 2, 0) +MAPPING(sub2, SUB2, 3, 1, 2, 0) +MAPPING(sub3, SUB3, 3, 1, 2, 0) +MAPPING(max, MAX, 3, 1, 2, 0) +MAPPING(min, MIN, 3, 1, 2, 0) +MAPPING(cmp, CMP, 2, 0, 1) +MAPPING(cmp_s, CMP, 2, 0, 1) +MAPPING(rcmp, CMP, 2, 1, 0) +MAPPING(and, AND, 3, 1, 2, 0) +MAPPING(and_s, AND, 3, 1, 2, 0) +MAPPING(or, OR, 3, 1, 2, 0) +MAPPING(or_s, OR, 3, 1, 2, 0) +MAPPING(xor, XOR, 3, 1, 2, 0) +MAPPING(xor_s, XOR, 3, 1, 2, 0) +MAPPING(mov, MOV, 2, 1, 0) +MAPPING(mov_s, MOV, 2, 1, 0) +CONSTANT(ASL, asl, 2, 268435457) /* For variable @c */ +MAPPING(asl, ASL, 3, 1, 2, 0) +CONSTANT(ASL, asl_s, 2, 268435457) /* For variable @c */ +MAPPING(asl_s, ASL, 3, 1, 2, 0) +CONSTANT(ASR, asr, 2, 1) /* For variable @c */ +MAPPING(asr, ASR, 3, 1, 2, 0) +CONSTANT(ASR, asr_s, 2, 1) /* For variable @c */ +MAPPING(asr_s, ASR, 3, 1, 2, 0) +MAPPING(asr8, ASR8, 2, 1, 0) +MAPPING(asr16, ASR16, 2, 1, 0) +MAPPING(lsl16, LSL16, 2, 1, 0) +MAPPING(lsl8, LSL8, 2, 1, 0) +CONSTANT(LSR, lsr, 2, 1) /* For variable @c */ +MAPPING(lsr, LSR, 3, 1, 2, 0) +CONSTANT(LSR, lsr_s, 2, 1) /* For variable @c */ +MAPPING(lsr_s, LSR, 3, 1, 2, 0) +MAPPING(lsr16, LSR16, 2, 1, 0) +MAPPING(lsr8, LSR8, 2, 1, 0) +MAPPING(bic, BIC, 3, 1, 2, 0) +MAPPING(bic_s, BIC, 3, 1, 2, 0) +MAPPING(bclr, BCLR, 3, 2, 1, 0) +MAPPING(bclr_s, BCLR, 3, 2, 1, 0) +MAPPING(bmsk, BMSK, 3, 2, 1, 0) +MAPPING(bmsk_s, BMSK, 3, 2, 1, 0) +MAPPING(bmskn, BMSKN, 3, 2, 1, 0) +MAPPING(bset, BSET, 3, 2, 1, 0) +MAPPING(bset_s, BSET, 3, 2, 1, 0) +MAPPING(bxor, BXOR, 3, 2, 1, 0) +MAPPING(rol, ROL, 2, 1, 0) +MAPPING(rol8, ROL8, 2, 1, 0) +CONSTANT(ROR, ror, 2, 1) /* For variable @n */ +MAPPING(ror, ROR, 3, 1, 2, 0) +MAPPING(ror8, ROR8, 2, 1, 0) +MAPPING(rlc, RLC, 2, 1, 0) +MAPPING(rrc, RRC, 2, 1, 0) +MAPPING(sexb, SEXB, 2, 0, 1) +MAPPING(sexb_s, SEXB, 2, 0, 1) +MAPPING(sexh, SEXH, 2, 0, 1) +MAPPING(sexh_s, SEXH, 2, 0, 1) +MAPPING(extb, EXTB, 2, 0, 1) +MAPPING(extb_s, EXTB, 2, 0, 1) +MAPPING(exth, EXTH, 2, 0, 1) +MAPPING(exth_s, EXTH, 2, 0, 1) +MAPPING(btst, BTST, 2, 1, 0) +MAPPING(btst_s, BTST, 2, 1, 0) +MAPPING(tst, TST, 2, 0, 1) +MAPPING(tst_s, TST, 2, 0, 1) +MAPPING(xbfu, XBFU, 3, 2, 1, 0) +MAPPING(aex, AEX, 2, 1, 0) +MAPPING(lr, LR, 2, 0, 1) +MAPPING(clri, CLRI, 1, 0) +MAPPING(seti, SETI, 1, 0) +MAPPING(nop, NOP, 0) +MAPPING(nop_s, NOP, 0) +MAPPING(prealloc, PREALLOC, 0) +CONSTANT(PREFETCH, prefetch, 1, 0) /* For variable @src2 */ +MAPPING(prefetch, PREFETCH, 2, 0, 1) +CONSTANT(PREFETCH, prefetchw, 1, 0) /* For variable @src2 */ +MAPPING(prefetchw, PREFETCH, 2, 0, 1) +MAPPING(mpy, MPY, 3, 1, 2, 0) +MAPPING(mpy_s, MPY, 3, 1, 2, 0) +MAPPING(mpymu, MPYMU, 3, 0, 1, 2) +MAPPING(mpym, MPYM, 3, 0, 1, 2) +MAPPING(mpyu, MPYU, 3, 1, 2, 0) +MAPPING(mpyuw, MPYUW, 3, 0, 1, 2) +MAPPING(mpyuw_s, MPYUW, 3, 0, 1, 2) +MAPPING(mpyw, MPYW, 3, 0, 1, 2) +MAPPING(mpyw_s, MPYW, 3, 0, 1, 2) +MAPPING(div, DIV, 3, 2, 1, 0) +MAPPING(divu, DIVU, 3, 2, 0, 1) +MAPPING(rem, REM, 3, 2, 1, 0) +MAPPING(remu, REMU, 3, 2, 0, 1) +MAPPING(mac, MAC, 3, 1, 2, 0) +MAPPING(macu, MACU, 3, 1, 2, 0) +MAPPING(macd, MACD, 3, 1, 2, 0) +MAPPING(macdu, MACDU, 3, 1, 2, 0) +MAPPING(abs, ABS, 2, 1, 0) +MAPPING(abs_s, ABS, 2, 1, 0) +MAPPING(swap, SWAP, 2, 1, 0) +MAPPING(swape, SWAPE, 2, 1, 0) +MAPPING(not, NOT, 2, 0, 1) +MAPPING(not_s, NOT, 2, 0, 1) +MAPPING(bi, BI, 1, 0) +MAPPING(bih, BIH, 1, 0) +MAPPING(b, B, 1, 0) +MAPPING(beq_s, B_S, 1, 0) +MAPPING(bne_s, B_S, 1, 0) +MAPPING(bgt_s, B_S, 1, 0) +MAPPING(bge_s, B_S, 1, 0) +MAPPING(blt_s, B_S, 1, 0) +MAPPING(ble_s, B_S, 1, 0) +MAPPING(bhi_s, B_S, 1, 0) +MAPPING(bhs_s, B_S, 1, 0) +MAPPING(blo_s, B_S, 1, 0) +MAPPING(bls_s, B_S, 1, 0) +MAPPING(b_s, B_S, 1, 0) +MAPPING(bbit0, BBIT0, 3, 0, 1, 2) +MAPPING(bbit1, BBIT1, 3, 0, 1, 2) +MAPPING(bl, BL, 1, 0) +MAPPING(bl_s, BL, 1, 0) +MAPPING(j, J, 1, 0) +MAPPING(j_s, J, 1, 0) +MAPPING(jeq_s, J, 1, 0) +MAPPING(jne_s, J, 1, 0) +MAPPING(jl, JL, 1, 0) +MAPPING(jl_s, JL, 1, 0) +MAPPING(seteq, SETEQ, 3, 1, 2, 0) +MAPPING(breq, BREQ, 3, 0, 1, 2) +MAPPING(breq_s, BREQ, 3, 0, 1, 2) +MAPPING(setne, SETNE, 3, 1, 2, 0) +MAPPING(brne, BRNE, 3, 0, 1, 2) +MAPPING(brne_s, BRNE, 3, 0, 1, 2) +MAPPING(setlt, SETLT, 3, 1, 2, 0) +MAPPING(brlt, BRLT, 3, 0, 1, 2) +MAPPING(setge, SETGE, 3, 1, 2, 0) +MAPPING(brge, BRGE, 3, 0, 1, 2) +MAPPING(setle, SETLE, 3, 1, 2, 0) +MAPPING(setgt, SETGT, 3, 1, 2, 0) +MAPPING(brlo, BRLO, 3, 0, 1, 2) +MAPPING(setlo, SETLO, 3, 1, 2, 0) +MAPPING(brhs, BRHS, 3, 0, 1, 2) +MAPPING(seths, SETHS, 3, 1, 2, 0) +MAPPING(ex, EX, 2, 0, 1) +MAPPING(llock, LLOCK, 2, 0, 1) +MAPPING(llockd, LLOCKD, 2, 0, 1) +MAPPING(scond, SCOND, 2, 1, 0) +MAPPING(scondd, SCONDD, 2, 1, 0) +MAPPING(dmb, DMB, 1, 0) +CONSTANT(LD, ld, 2, 0) /* For variable @src2 */ +MAPPING(ld, LD, 3, 1, 2, 0) +MAPPING(ld_s, LD, 3, 1, 2, 0) +MAPPING(ldb_s, LD, 3, 1, 2, 0) +MAPPING(ldh_s, LD, 3, 1, 2, 0) +MAPPING(ldw_s, LD, 3, 1, 2, 0) +CONSTANT(LD, ldi, 2, 0) /* For variable @src2 */ +MAPPING(ldi, LD, 3, 1, 2, 0) +CONSTANT(LD, ldi_s, 2, 0) /* For variable @src2 */ +MAPPING(ldi_s, LD, 3, 1, 2, 0) +CONSTANT(LDD, ldd, 2, 0) /* For variable @src2 */ +MAPPING(ldd, LDD, 3, 1, 2, 0) +CONSTANT(ST, st, 2, 0) /* For variable @src2 */ +MAPPING(st, ST, 3, 1, 2, 0) +MAPPING(st_s, ST, 3, 1, 2, 0) +MAPPING(stb_s, ST, 3, 1, 2, 0) +MAPPING(sth_s, ST, 3, 1, 2, 0) +MAPPING(stw_s, ST, 3, 1, 2, 0) +CONSTANT(STD, std, 2, 0) /* For variable @src2 */ +MAPPING(std, STD, 3, 1, 2, 0) +MAPPING(pop_s, POP, 1, 0) +MAPPING(push_s, PUSH, 1, 0) +MAPPING(lp, LP, 1, 0) +MAPPING(norm, NORM, 2, 1, 0) +MAPPING(normh, NORMH, 2, 1, 0) +MAPPING(fls, FLS, 2, 1, 0) +MAPPING(ffs, FFS, 2, 1, 0) diff --git a/target/arc/semfunc-v3_mapping.def b/target/arc/semfunc-v3_mapping.def new file mode 100644 index 0000000000..2ecb55128a --- /dev/null +++ b/target/arc/semfunc-v3_mapping.def @@ -0,0 +1,468 @@ +SEMANTIC_FUNCTION(FLAG, 1) +SEMANTIC_FUNCTION(KFLAG, 1) +SEMANTIC_FUNCTION(ADD, 3) +SEMANTIC_FUNCTION(ADD1, 3) +SEMANTIC_FUNCTION(ADD2, 3) +SEMANTIC_FUNCTION(ADD3, 3) +SEMANTIC_FUNCTION(ADC, 3) +SEMANTIC_FUNCTION(SBC, 3) +SEMANTIC_FUNCTION(NEG, 2) +SEMANTIC_FUNCTION(SUB, 3) +SEMANTIC_FUNCTION(SUB1, 3) +SEMANTIC_FUNCTION(SUB2, 3) +SEMANTIC_FUNCTION(SUB3, 3) +SEMANTIC_FUNCTION(MAX, 3) +SEMANTIC_FUNCTION(MIN, 3) +SEMANTIC_FUNCTION(CMP, 2) +SEMANTIC_FUNCTION(AND, 3) +SEMANTIC_FUNCTION(OR, 3) +SEMANTIC_FUNCTION(XOR, 3) +SEMANTIC_FUNCTION(MOV, 2) +SEMANTIC_FUNCTION(ASL, 3) +SEMANTIC_FUNCTION(ASR, 3) +SEMANTIC_FUNCTION(ASR8, 2) +SEMANTIC_FUNCTION(ASR16, 2) +SEMANTIC_FUNCTION(LSL16, 2) +SEMANTIC_FUNCTION(LSL8, 2) +SEMANTIC_FUNCTION(LSR, 3) +SEMANTIC_FUNCTION(LSR16, 2) +SEMANTIC_FUNCTION(LSR8, 2) +SEMANTIC_FUNCTION(BIC, 3) +SEMANTIC_FUNCTION(BCLR, 3) +SEMANTIC_FUNCTION(BMSK, 3) +SEMANTIC_FUNCTION(BMSKN, 3) +SEMANTIC_FUNCTION(BSET, 3) +SEMANTIC_FUNCTION(BXOR, 3) +SEMANTIC_FUNCTION(ROL, 3) +SEMANTIC_FUNCTION(ROL8, 2) +SEMANTIC_FUNCTION(ROR, 3) +SEMANTIC_FUNCTION(ROR8, 2) +SEMANTIC_FUNCTION(RLC, 2) +SEMANTIC_FUNCTION(RRC, 2) +SEMANTIC_FUNCTION(SEXB, 2) +SEMANTIC_FUNCTION(SEXH, 2) +SEMANTIC_FUNCTION(EXTB, 2) +SEMANTIC_FUNCTION(EXTH, 2) +SEMANTIC_FUNCTION(BTST, 2) +SEMANTIC_FUNCTION(TST, 2) +SEMANTIC_FUNCTION(XBFU, 3) +SEMANTIC_FUNCTION(AEX, 2) +SEMANTIC_FUNCTION(LR, 2) +SEMANTIC_FUNCTION(CLRI, 1) +SEMANTIC_FUNCTION(SETI, 1) +SEMANTIC_FUNCTION(NOP, 0) +SEMANTIC_FUNCTION(PREALLOC, 0) +SEMANTIC_FUNCTION(PREFETCH, 2) +SEMANTIC_FUNCTION(MPY, 3) +SEMANTIC_FUNCTION(MPYMU, 3) +SEMANTIC_FUNCTION(MPYM, 3) +SEMANTIC_FUNCTION(MPYU, 3) +SEMANTIC_FUNCTION(MPYUW, 3) +SEMANTIC_FUNCTION(MPYW, 3) +SEMANTIC_FUNCTION(DIV, 3) +SEMANTIC_FUNCTION(DIVU, 3) +SEMANTIC_FUNCTION(REM, 3) +SEMANTIC_FUNCTION(REMU, 3) +SEMANTIC_FUNCTION(MAC, 3) +SEMANTIC_FUNCTION(MACU, 3) +SEMANTIC_FUNCTION(MACD, 3) +SEMANTIC_FUNCTION(MACDU, 3) +SEMANTIC_FUNCTION(ABS, 2) +SEMANTIC_FUNCTION(SWAP, 2) +SEMANTIC_FUNCTION(SWAPE, 2) +SEMANTIC_FUNCTION(NOT, 2) +SEMANTIC_FUNCTION(BI, 1) +SEMANTIC_FUNCTION(BIH, 1) +SEMANTIC_FUNCTION(B, 1) +SEMANTIC_FUNCTION(B_S, 1) +SEMANTIC_FUNCTION(BBIT0, 3) +SEMANTIC_FUNCTION(BBIT1, 3) +SEMANTIC_FUNCTION(BL, 1) +SEMANTIC_FUNCTION(J, 1) +SEMANTIC_FUNCTION(JL, 1) +SEMANTIC_FUNCTION(SETEQ, 3) +SEMANTIC_FUNCTION(BREQ, 3) +SEMANTIC_FUNCTION(SETNE, 3) +SEMANTIC_FUNCTION(BRNE, 3) +SEMANTIC_FUNCTION(SETLT, 3) +SEMANTIC_FUNCTION(BRLT, 3) +SEMANTIC_FUNCTION(SETGE, 3) +SEMANTIC_FUNCTION(BRGE, 3) +SEMANTIC_FUNCTION(SETLE, 3) +SEMANTIC_FUNCTION(SETGT, 3) +SEMANTIC_FUNCTION(BRLO, 3) +SEMANTIC_FUNCTION(SETLO, 3) +SEMANTIC_FUNCTION(BRHS, 3) +SEMANTIC_FUNCTION(SETHS, 3) +SEMANTIC_FUNCTION(EX, 2) +SEMANTIC_FUNCTION(LLOCK, 2) +SEMANTIC_FUNCTION(LLOCKD, 2) +SEMANTIC_FUNCTION(SCOND, 2) +SEMANTIC_FUNCTION(SCONDD, 2) +SEMANTIC_FUNCTION(DMB, 1) +SEMANTIC_FUNCTION(LD, 3) +SEMANTIC_FUNCTION(LDD, 3) +SEMANTIC_FUNCTION(ST, 3) +SEMANTIC_FUNCTION(STD, 3) +SEMANTIC_FUNCTION(POP, 1) +SEMANTIC_FUNCTION(PUSH, 1) +SEMANTIC_FUNCTION(LP, 1) +SEMANTIC_FUNCTION(NORM, 2) +SEMANTIC_FUNCTION(NORMH, 2) +SEMANTIC_FUNCTION(FLS, 2) +SEMANTIC_FUNCTION(FFS, 2) + + +MAPPING(flag, FLAG, 1, 0) +MAPPING(kflag, KFLAG, 1, 0) +MAPPING(add, ADD, 3, 1, 2, 0) +MAPPING(add_s, ADD, 3, 1, 2, 0) +MAPPING(add1, ADD1, 3, 1, 2, 0) +MAPPING(add1_s, ADD1, 3, 1, 2, 0) +MAPPING(add2, ADD2, 3, 1, 2, 0) +MAPPING(add2_s, ADD2, 3, 1, 2, 0) +MAPPING(add3, ADD3, 3, 1, 2, 0) +MAPPING(add3_s, ADD3, 3, 1, 2, 0) +MAPPING(adc, ADC, 3, 1, 2, 0) +MAPPING(sbc, SBC, 3, 1, 2, 0) +MAPPING(neg, NEG, 2, 1, 0) +MAPPING(neg_s, NEG, 2, 1, 0) +MAPPING(sub, SUB, 3, 1, 2, 0) +MAPPING(sub_s, SUB, 3, 1, 2, 0) +MAPPING(rsub, SUB, 3, 2, 1, 0) +MAPPING(sub1, SUB1, 3, 1, 2, 0) +MAPPING(sub2, SUB2, 3, 1, 2, 0) +MAPPING(sub3, SUB3, 3, 1, 2, 0) +MAPPING(max, MAX, 3, 1, 2, 0) +MAPPING(min, MIN, 3, 1, 2, 0) +MAPPING(cmp, CMP, 2, 0, 1) +MAPPING(cmp_s, CMP, 2, 0, 1) +MAPPING(rcmp, CMP, 2, 1, 0) +MAPPING(and, AND, 3, 0, 1, 2) +MAPPING(and_s, AND, 3, 0, 1, 2) +MAPPING(or, OR, 3, 0, 1, 2) +MAPPING(or_s, OR, 3, 0, 1, 2) +MAPPING(xor, XOR, 3, 0, 1, 2) +MAPPING(xor_s, XOR, 3, 0, 1, 2) +MAPPING(mov, MOV, 2, 0, 1) +MAPPING(mov_s, MOV, 2, 0, 1) +CONSTANT(ASL, asl, 2, 268435457) /* For variable @c */ +MAPPING(asl, ASL, 3, 1, 2, 0) +CONSTANT(ASL, asl_s, 2, 268435457) /* For variable @c */ +MAPPING(asl_s, ASL, 3, 1, 2, 0) +CONSTANT(ASR, asr, 2, 1) /* For variable @c */ +MAPPING(asr, ASR, 3, 1, 2, 0) +CONSTANT(ASR, asr_s, 2, 1) /* For variable @c */ +MAPPING(asr_s, ASR, 3, 1, 2, 0) +MAPPING(asr8, ASR8, 2, 1, 0) +MAPPING(asr16, ASR16, 2, 1, 0) +MAPPING(lsl16, LSL16, 2, 1, 0) +MAPPING(lsl8, LSL8, 2, 1, 0) +CONSTANT(LSR, lsr, 2, 1) /* For variable @c */ +MAPPING(lsr, LSR, 3, 1, 2, 0) +CONSTANT(LSR, lsr_s, 2, 1) /* For variable @c */ +MAPPING(lsr_s, LSR, 3, 1, 2, 0) +MAPPING(lsr16, LSR16, 2, 1, 0) +MAPPING(lsr8, LSR8, 2, 1, 0) +MAPPING(bic, BIC, 3, 0, 1, 2) +MAPPING(bic_s, BIC, 3, 0, 1, 2) +MAPPING(bclr, BCLR, 3, 2, 0, 1) +MAPPING(bclr_s, BCLR, 3, 2, 0, 1) +MAPPING(bmsk, BMSK, 3, 2, 0, 1) +MAPPING(bmsk_s, BMSK, 3, 2, 0, 1) +MAPPING(bmskn, BMSKN, 3, 2, 0, 1) +MAPPING(bset, BSET, 3, 2, 0, 1) +MAPPING(bset_s, BSET, 3, 2, 0, 1) +MAPPING(bxor, BXOR, 3, 2, 0, 1) +CONSTANT(ROL, rol, 2, 1) /* For variable @n */ +MAPPING(rol, ROL, 3, 1, 2, 0) +MAPPING(rol8, ROL8, 2, 1, 0) +CONSTANT(ROR, ror, 2, 1) /* For variable @n */ +MAPPING(ror, ROR, 3, 1, 2, 0) +MAPPING(ror8, ROR8, 2, 1, 0) +MAPPING(rlc, RLC, 2, 1, 0) +MAPPING(rrc, RRC, 2, 1, 0) +MAPPING(sexb, SEXB, 2, 0, 1) +MAPPING(sexb_s, SEXB, 2, 0, 1) +MAPPING(sexh, SEXH, 2, 0, 1) +MAPPING(sexh_s, SEXH, 2, 0, 1) +MAPPING(extb, EXTB, 2, 0, 1) +MAPPING(extb_s, EXTB, 2, 0, 1) +MAPPING(exth, EXTH, 2, 0, 1) +MAPPING(exth_s, EXTH, 2, 0, 1) +MAPPING(btst, BTST, 2, 1, 0) +MAPPING(btst_s, BTST, 2, 1, 0) +MAPPING(tst, TST, 2, 0, 1) +MAPPING(tst_s, TST, 2, 0, 1) +MAPPING(xbfu, XBFU, 3, 2, 1, 0) +MAPPING(aex, AEX, 2, 1, 0) +MAPPING(lr, LR, 2, 0, 1) +MAPPING(clri, CLRI, 1, 0) +MAPPING(seti, SETI, 1, 0) +MAPPING(nop, NOP, 0) +MAPPING(nop_s, NOP, 0) +MAPPING(prealloc, PREALLOC, 0) +MAPPING(prefetch, PREFETCH, 2, 0, 1) +MAPPING(prefetchw, PREFETCH, 2, 0, 1) +MAPPING(mpy, MPY, 3, 1, 2, 0) +MAPPING(mpy_s, MPY, 3, 1, 2, 0) +MAPPING(mpymu, MPYMU, 3, 0, 1, 2) +MAPPING(mpym, MPYM, 3, 0, 1, 2) +MAPPING(mpyu, MPYU, 3, 1, 2, 0) +MAPPING(mpyuw, MPYUW, 3, 0, 1, 2) +MAPPING(mpyuw_s, MPYUW, 3, 0, 1, 2) +MAPPING(mpyw, MPYW, 3, 0, 1, 2) +MAPPING(mpyw_s, MPYW, 3, 0, 1, 2) +MAPPING(div, DIV, 3, 2, 1, 0) +MAPPING(divu, DIVU, 3, 2, 0, 1) +MAPPING(rem, REM, 3, 2, 1, 0) +MAPPING(remu, REMU, 3, 2, 0, 1) +MAPPING(mac, MAC, 3, 1, 2, 0) +MAPPING(macu, MACU, 3, 1, 2, 0) +MAPPING(macd, MACD, 3, 1, 2, 0) +MAPPING(macdu, MACDU, 3, 1, 2, 0) +MAPPING(abs, ABS, 2, 1, 0) +MAPPING(abs_s, ABS, 2, 1, 0) +MAPPING(swap, SWAP, 2, 1, 0) +MAPPING(swape, SWAPE, 2, 1, 0) +MAPPING(not, NOT, 2, 0, 1) +MAPPING(not_s, NOT, 2, 0, 1) +MAPPING(bi, BI, 1, 0) +MAPPING(bih, BIH, 1, 0) +MAPPING(b, B, 1, 0) +MAPPING(beq_s, B_S, 1, 0) +MAPPING(bne_s, B_S, 1, 0) +MAPPING(bgt_s, B_S, 1, 0) +MAPPING(bge_s, B_S, 1, 0) +MAPPING(blt_s, B_S, 1, 0) +MAPPING(ble_s, B_S, 1, 0) +MAPPING(bhi_s, B_S, 1, 0) +MAPPING(bhs_s, B_S, 1, 0) +MAPPING(blo_s, B_S, 1, 0) +MAPPING(bls_s, B_S, 1, 0) +MAPPING(b_s, B_S, 1, 0) +MAPPING(bbit0, BBIT0, 3, 0, 1, 2) +MAPPING(bbit1, BBIT1, 3, 0, 1, 2) +MAPPING(bl, BL, 1, 0) +MAPPING(bl_s, BL, 1, 0) +MAPPING(j, J, 1, 0) +MAPPING(j_s, J, 1, 0) +MAPPING(jeq_s, J, 1, 0) +MAPPING(jne_s, J, 1, 0) +MAPPING(jl, JL, 1, 0) +MAPPING(jl_s, JL, 1, 0) +MAPPING(seteq, SETEQ, 3, 1, 2, 0) +MAPPING(breq, BREQ, 3, 0, 1, 2) +MAPPING(setne, SETNE, 3, 1, 2, 0) +MAPPING(brne, BRNE, 3, 0, 1, 2) +MAPPING(setlt, SETLT, 3, 1, 2, 0) +MAPPING(brlt, BRLT, 3, 0, 1, 2) +MAPPING(setge, SETGE, 3, 1, 2, 0) +MAPPING(brge, BRGE, 3, 0, 1, 2) +MAPPING(setle, SETLE, 3, 1, 2, 0) +MAPPING(setgt, SETGT, 3, 1, 2, 0) +MAPPING(brlo, BRLO, 3, 0, 1, 2) +MAPPING(setlo, SETLO, 3, 1, 2, 0) +MAPPING(brhs, BRHS, 3, 0, 1, 2) +MAPPING(seths, SETHS, 3, 1, 2, 0) +MAPPING(ex, EX, 2, 0, 1) +MAPPING(llock, LLOCK, 2, 0, 1) +MAPPING(scond, SCOND, 2, 1, 0) +MAPPING(dmb, DMB, 1, 0) +CONSTANT(LD, ld, 2, 0) /* For variable @src2 */ +MAPPING(ld, LD, 3, 1, 2, 0) +MAPPING(ld_s, LD, 3, 1, 2, 0) +CONSTANT(LD, ldb, 2, 0) /* For variable @src2 */ +MAPPING(ldb, LD, 3, 1, 2, 0) +MAPPING(ldb_s, LD, 3, 1, 2, 0) +CONSTANT(LD, ldh, 2, 0) /* For variable @src2 */ +MAPPING(ldh, LD, 3, 1, 2, 0) +MAPPING(ldh_s, LD, 3, 1, 2, 0) +CONSTANT(ST, st, 2, 0) /* For variable @src2 */ +MAPPING(st, ST, 3, 1, 2, 0) +MAPPING(st_s, ST, 3, 1, 2, 0) +MAPPING(stb_s, ST, 3, 1, 2, 0) +MAPPING(sth_s, ST, 3, 1, 2, 0) +MAPPING(norm, NORM, 2, 1, 0) +MAPPING(normh, NORMH, 2, 1, 0) +MAPPING(fls, FLS, 2, 1, 0) +MAPPING(ffs, FFS, 2, 1, 0) + +/* Long instruction */ + +SEMANTIC_FUNCTION(ADDL, 3) +SEMANTIC_FUNCTION(ADD1L, 3) +SEMANTIC_FUNCTION(ADD2L, 3) +SEMANTIC_FUNCTION(ADD3L, 3) +SEMANTIC_FUNCTION(ADCL, 3) +SEMANTIC_FUNCTION(SBCL, 3) +SEMANTIC_FUNCTION(SUBL, 3) +SEMANTIC_FUNCTION(SUB1L, 3) +SEMANTIC_FUNCTION(SUB2L, 3) +SEMANTIC_FUNCTION(SUB3L, 3) +SEMANTIC_FUNCTION(MAXL, 3) +SEMANTIC_FUNCTION(MINL, 3) +SEMANTIC_FUNCTION(CMPL, 2) +SEMANTIC_FUNCTION(ANDL, 3) +SEMANTIC_FUNCTION(ORL, 3) +SEMANTIC_FUNCTION(XORL, 3) +SEMANTIC_FUNCTION(MOVL, 2) +SEMANTIC_FUNCTION(MOVHL, 2) +SEMANTIC_FUNCTION(ASLL, 3) +SEMANTIC_FUNCTION(ASRL, 3) +SEMANTIC_FUNCTION(LSRL, 3) +SEMANTIC_FUNCTION(BICL, 3) +SEMANTIC_FUNCTION(BCLRL, 3) +SEMANTIC_FUNCTION(BMSKL, 3) +SEMANTIC_FUNCTION(BMSKNL, 3) +SEMANTIC_FUNCTION(BSETL, 3) +SEMANTIC_FUNCTION(BXORL, 3) +SEMANTIC_FUNCTION(ROLL, 2) +SEMANTIC_FUNCTION(SEXBL, 2) +SEMANTIC_FUNCTION(SEXHL, 2) +SEMANTIC_FUNCTION(BTSTL, 2) +SEMANTIC_FUNCTION(TSTL, 2) +SEMANTIC_FUNCTION(XBFUL, 3) +SEMANTIC_FUNCTION(AEXL, 2) +SEMANTIC_FUNCTION(LRL, 2) +SEMANTIC_FUNCTION(DIVL, 3) +SEMANTIC_FUNCTION(DIVUL, 3) +SEMANTIC_FUNCTION(REML, 3) +SEMANTIC_FUNCTION(REMUL, 3) +SEMANTIC_FUNCTION(ABSL, 2) +SEMANTIC_FUNCTION(SWAPL, 2) +SEMANTIC_FUNCTION(SWAPEL, 2) +SEMANTIC_FUNCTION(NOTL, 2) +SEMANTIC_FUNCTION(SETEQL, 3) +SEMANTIC_FUNCTION(BREQL, 3) +SEMANTIC_FUNCTION(SETNEL, 3) +SEMANTIC_FUNCTION(BRNEL, 3) +SEMANTIC_FUNCTION(SETLTL, 3) +SEMANTIC_FUNCTION(BRLTL, 3) +SEMANTIC_FUNCTION(SETGEL, 3) +SEMANTIC_FUNCTION(BRGEL, 3) +SEMANTIC_FUNCTION(SETLEL, 3) +SEMANTIC_FUNCTION(SETGTL, 3) +SEMANTIC_FUNCTION(BRLOL, 3) +SEMANTIC_FUNCTION(SETLOL, 3) +SEMANTIC_FUNCTION(BRHSL, 3) +SEMANTIC_FUNCTION(SETHSL, 3) +SEMANTIC_FUNCTION(EXL, 2) +SEMANTIC_FUNCTION(LLOCKL, 2) +SEMANTIC_FUNCTION(SCONDL, 2) +SEMANTIC_FUNCTION(LDL, 3) +SEMANTIC_FUNCTION(STL, 3) +SEMANTIC_FUNCTION(STDL, 3) +SEMANTIC_FUNCTION(POPL, 1) +SEMANTIC_FUNCTION(NORML, 2) +SEMANTIC_FUNCTION(FLSL, 2) +SEMANTIC_FUNCTION(FFSL, 2) +SEMANTIC_FUNCTION(DBNZL, 2) +SEMANTIC_FUNCTION(SEXWL, 2) +SEMANTIC_FUNCTION(PUSHL, 1) + +MAPPING(absl, ABSL, 2, 1, 0) +MAPPING(adcl, ADCL, 3, 1, 2, 0) +MAPPING(add1l, ADD1L, 3, 1, 2, 0) +MAPPING(add2l, ADD2L, 3, 1, 2, 0) +MAPPING(add3l, ADD3L, 3, 1, 2, 0) +MAPPING(addl, ADDL, 3, 1, 2, 0) +MAPPING(addl_s, ADDL, 3, 1, 2, 0) +MAPPING(aexl, AEXL, 2, 1, 0) +MAPPING(andl, ANDL, 3, 0, 1, 2) +MAPPING(andl_s, ANDL, 3, 0, 1, 2) +MAPPING(asll, ASLL, 3, 1, 2, 0) +MAPPING(asrl, ASRL, 3, 1, 2, 0) +MAPPING(bclrl, BCLRL, 3, 2, 0, 1) +MAPPING(bicl, BICL, 3, 0, 1, 2) +MAPPING(bmskl, BMSKL, 3, 2, 0, 1) +MAPPING(bmsknl, BMSKNL, 3, 2, 0, 1) + +MAPPING(breql, BREQL, 3, 0, 1, 2) +MAPPING(brnel, BRNEL, 3, 0, 1, 2) +MAPPING(brltl, BRLTL, 3, 0, 1, 2) +MAPPING(brgel, BRGEL, 3, 0, 1, 2) +MAPPING(brlol, BRLOL, 3, 0, 1, 2) +MAPPING(brhsl, BRHSL, 3, 0, 1, 2) +MAPPING(bsetl, BSETL, 3, 2, 0, 1) +MAPPING(btstl, BTSTL, 2, 1, 0) +MAPPING(bxorl, BXORL, 3, 2, 0, 1) +MAPPING(cmpl, CMPL, 2, 0, 1) + +MAPPING(divl, DIVL, 3, 2, 1, 0) +MAPPING(divul, DIVUL, 3, 2, 0, 1) + +MAPPING(exl, EXL, 2, 0, 1) +MAPPING(flsl, FLSL, 2, 1, 0) +MAPPING(ffsl, FFSL, 2, 1, 0) + +CONSTANT(LDL, ldl, 2, 0) /* For variable @src2 */ +MAPPING(ldl, LDL, 3, 1, 2, 0) + +CONSTANT(STL, stl, 2, 0) /* For variable @src2 */ +MAPPING(stl, STL, 3, 1, 2, 0) + +MAPPING(llockl, LLOCKL, 2, 0, 1) + +MAPPING(lrl, LRL, 2, 0, 1) + +CONSTANT(LSRL, lsrl, 2, 1) /* For variable @c */ +MAPPING(lsrl, LSRL, 3, 1, 2, 0) + +MAPPING(maxl, MAXL, 3, 1, 2, 0) +MAPPING(minl, MINL, 3, 1, 2, 0) + +MAPPING(movl, MOVL, 2, 0, 1) +MAPPING(movl_s, MOVL, 2, 0, 1) + +MAPPING(movhl, MOVHL, 2, 0, 1) +MAPPING(movhl_s, MOVHL, 2, 0, 1) + +MAPPING(norml, NORML, 2, 1, 0) +MAPPING(notl, NOTL, 2, 0, 1) +MAPPING(orl, ORL, 3, 0, 1, 2) +MAPPING(orl_s, ORL, 3, 0, 1, 2) +MAPPING(xorl, XORL, 3, 0, 1, 2) +MAPPING(rcmpl, CMPL, 2, 1, 0) +MAPPING(reml, REML, 3, 2, 1, 0) +MAPPING(remul, REMUL, 3, 2, 0, 1) + +MAPPING(roll, ROLL, 2, 1, 0) +MAPPING(rsubl, SUBL, 3, 2, 1, 0) +MAPPING(sbcl, SBCL, 3, 1, 2, 0) +MAPPING(scondl, SCONDL, 2, 1, 0) + +MAPPING(seteql, SETEQL, 3, 1, 2, 0) +MAPPING(setgel, SETGEL, 3, 1, 2, 0) +MAPPING(setgtl, SETGTL, 3, 1, 2, 0) +MAPPING(sethsl, SETHSL, 3, 1, 2, 0) +MAPPING(setlel, SETLEL, 3, 1, 2, 0) +MAPPING(setlol, SETLOL, 3, 1, 2, 0) +MAPPING(setltl, SETLTL, 3, 1, 2, 0) +MAPPING(setnel, SETNEL, 3, 1, 2, 0) + +MAPPING(sexbl, SEXBL, 2, 0, 1) +MAPPING(sexhl, SEXHL, 2, 0, 1) +MAPPING(sexwl, SEXWL, 2, 0, 1) + +CONSTANT(STDL, stdl, 2, 0) /* For variable @src2 */ +MAPPING(stdl, STDL, 3, 1, 2, 0) + +MAPPING(subl, SUBL, 3, 1, 2, 0) +MAPPING(subl_s, SUBL, 3, 1, 2, 0) +MAPPING(sub1l, SUB1L, 3, 1, 2, 0) +MAPPING(sub2l, SUB2L, 3, 1, 2, 0) +MAPPING(sub3l, SUB3L, 3, 1, 2, 0) + +MAPPING(swapl, SWAPL, 2, 1, 0) +MAPPING(swapel, SWAPEL, 2, 1, 0) +MAPPING(tstl, TSTL, 2, 0, 1) + +MAPPING(xbful, XBFUL, 3, 2, 1, 0) + +MAPPING(pushl_s, PUSHL, 1, 0) +MAPPING(pushdl_s, PUSHL, 1, 0) +MAPPING(popl_s, POPL, 1, 0) +MAPPING(popdl_s, POPL, 1, 0) + +MAPPING(dbnz, DBNZL, 2, 0, 1) diff --git a/target/arc/semfunc_mapping.def b/target/arc/semfunc_mapping.def index ab8d9ff123..746339d9e6 100644 --- a/target/arc/semfunc_mapping.def +++ b/target/arc/semfunc_mapping.def @@ -16,306 +16,10 @@ * this program. If not, see <http://www.gnu.org/licenses/>. */ -SEMANTIC_FUNCTION(FLAG, 1) -SEMANTIC_FUNCTION(KFLAG, 1) -SEMANTIC_FUNCTION(ADD, 3) -SEMANTIC_FUNCTION(ADD1, 3) -SEMANTIC_FUNCTION(ADD2, 3) -SEMANTIC_FUNCTION(ADD3, 3) -SEMANTIC_FUNCTION(ADC, 3) -SEMANTIC_FUNCTION(SBC, 3) -SEMANTIC_FUNCTION(NEG, 2) -SEMANTIC_FUNCTION(SUB, 3) -SEMANTIC_FUNCTION(SUB1, 3) -SEMANTIC_FUNCTION(SUB2, 3) -SEMANTIC_FUNCTION(SUB3, 3) -SEMANTIC_FUNCTION(MAX, 3) -SEMANTIC_FUNCTION(MIN, 3) -SEMANTIC_FUNCTION(CMP, 2) -SEMANTIC_FUNCTION(AND, 3) -SEMANTIC_FUNCTION(OR, 3) -SEMANTIC_FUNCTION(XOR, 3) -SEMANTIC_FUNCTION(MOV, 2) -SEMANTIC_FUNCTION(ASL, 3) -SEMANTIC_FUNCTION(ASR, 3) -SEMANTIC_FUNCTION(ASR8, 2) -SEMANTIC_FUNCTION(ASR16, 2) -SEMANTIC_FUNCTION(LSL16, 2) -SEMANTIC_FUNCTION(LSL8, 2) -SEMANTIC_FUNCTION(LSR, 3) -SEMANTIC_FUNCTION(LSR16, 2) -SEMANTIC_FUNCTION(LSR8, 2) -SEMANTIC_FUNCTION(BIC, 3) -SEMANTIC_FUNCTION(BCLR, 3) -SEMANTIC_FUNCTION(BMSK, 3) -SEMANTIC_FUNCTION(BMSKN, 3) -SEMANTIC_FUNCTION(BSET, 3) -SEMANTIC_FUNCTION(BXOR, 3) -SEMANTIC_FUNCTION(ROL, 2) -SEMANTIC_FUNCTION(ROL8, 2) -SEMANTIC_FUNCTION(ROR, 3) -SEMANTIC_FUNCTION(ROR8, 2) -SEMANTIC_FUNCTION(RLC, 2) -SEMANTIC_FUNCTION(RRC, 2) -SEMANTIC_FUNCTION(SEXB, 2) -SEMANTIC_FUNCTION(SEXH, 2) -SEMANTIC_FUNCTION(EXTB, 2) -SEMANTIC_FUNCTION(EXTH, 2) -SEMANTIC_FUNCTION(BTST, 2) -SEMANTIC_FUNCTION(TST, 2) -SEMANTIC_FUNCTION(XBFU, 3) -SEMANTIC_FUNCTION(AEX, 2) -SEMANTIC_FUNCTION(LR, 2) -SEMANTIC_FUNCTION(CLRI, 1) -SEMANTIC_FUNCTION(SETI, 1) -SEMANTIC_FUNCTION(NOP, 0) -SEMANTIC_FUNCTION(PREALLOC, 0) -SEMANTIC_FUNCTION(PREFETCH, 2) -SEMANTIC_FUNCTION(MPY, 3) -SEMANTIC_FUNCTION(MPYMU, 3) -SEMANTIC_FUNCTION(MPYM, 3) -SEMANTIC_FUNCTION(MPYU, 3) -SEMANTIC_FUNCTION(MPYUW, 3) -SEMANTIC_FUNCTION(MPYW, 3) -SEMANTIC_FUNCTION(DIV, 3) -SEMANTIC_FUNCTION(DIVU, 3) -SEMANTIC_FUNCTION(REM, 3) -SEMANTIC_FUNCTION(REMU, 3) -SEMANTIC_FUNCTION(MAC, 3) -SEMANTIC_FUNCTION(MACU, 3) -SEMANTIC_FUNCTION(MACD, 3) -SEMANTIC_FUNCTION(MACDU, 3) -SEMANTIC_FUNCTION(ABS, 2) -SEMANTIC_FUNCTION(SWAP, 2) -SEMANTIC_FUNCTION(SWAPE, 2) -SEMANTIC_FUNCTION(NOT, 2) -SEMANTIC_FUNCTION(BI, 1) -SEMANTIC_FUNCTION(BIH, 1) -SEMANTIC_FUNCTION(B, 1) -SEMANTIC_FUNCTION(B_S, 1) -SEMANTIC_FUNCTION(BBIT0, 3) -SEMANTIC_FUNCTION(BBIT1, 3) -SEMANTIC_FUNCTION(BL, 1) -SEMANTIC_FUNCTION(J, 1) -SEMANTIC_FUNCTION(JL, 1) -SEMANTIC_FUNCTION(SETEQ, 3) -SEMANTIC_FUNCTION(BREQ, 3) -SEMANTIC_FUNCTION(SETNE, 3) -SEMANTIC_FUNCTION(BRNE, 3) -SEMANTIC_FUNCTION(SETLT, 3) -SEMANTIC_FUNCTION(BRLT, 3) -SEMANTIC_FUNCTION(SETGE, 3) -SEMANTIC_FUNCTION(BRGE, 3) -SEMANTIC_FUNCTION(SETLE, 3) -SEMANTIC_FUNCTION(SETGT, 3) -SEMANTIC_FUNCTION(BRLO, 3) -SEMANTIC_FUNCTION(SETLO, 3) -SEMANTIC_FUNCTION(BRHS, 3) -SEMANTIC_FUNCTION(SETHS, 3) -SEMANTIC_FUNCTION(EX, 2) -SEMANTIC_FUNCTION(LLOCK, 2) -SEMANTIC_FUNCTION(LLOCKD, 2) -SEMANTIC_FUNCTION(SCOND, 2) -SEMANTIC_FUNCTION(SCONDD, 2) -SEMANTIC_FUNCTION(DMB, 1) -SEMANTIC_FUNCTION(LD, 3) -SEMANTIC_FUNCTION(LDD, 3) -SEMANTIC_FUNCTION(ST, 3) -SEMANTIC_FUNCTION(STD, 3) -SEMANTIC_FUNCTION(POP, 1) -SEMANTIC_FUNCTION(PUSH, 1) -SEMANTIC_FUNCTION(LP, 1) -SEMANTIC_FUNCTION(NORM, 2) -SEMANTIC_FUNCTION(NORMH, 2) -SEMANTIC_FUNCTION(FLS, 2) -SEMANTIC_FUNCTION(FFS, 2) +#ifdef TARGET_ARCV2 +#include "semfunc-v2_mapping.def" +#endif - -MAPPING(flag, FLAG, 1, 0) -MAPPING(kflag, KFLAG, 1, 0) -MAPPING(add, ADD, 3, 1, 2, 0) -MAPPING(add_s, ADD, 3, 1, 2, 0) -MAPPING(add1, ADD1, 3, 1, 2, 0) -MAPPING(add1_s, ADD1, 3, 1, 2, 0) -MAPPING(add2, ADD2, 3, 1, 2, 0) -MAPPING(add2_s, ADD2, 3, 1, 2, 0) -MAPPING(add3, ADD3, 3, 1, 2, 0) -MAPPING(add3_s, ADD3, 3, 1, 2, 0) -MAPPING(adc, ADC, 3, 1, 2, 0) -MAPPING(sbc, SBC, 3, 1, 2, 0) -MAPPING(neg, NEG, 2, 1, 0) -MAPPING(neg_s, NEG, 2, 1, 0) -MAPPING(sub, SUB, 3, 1, 2, 0) -MAPPING(sub_s, SUB, 3, 1, 2, 0) -MAPPING(rsub, SUB, 3, 2, 1, 0) -MAPPING(sub1, SUB1, 3, 1, 2, 0) -MAPPING(sub2, SUB2, 3, 1, 2, 0) -MAPPING(sub3, SUB3, 3, 1, 2, 0) -MAPPING(max, MAX, 3, 1, 2, 0) -MAPPING(min, MIN, 3, 1, 2, 0) -MAPPING(cmp, CMP, 2, 0, 1) -MAPPING(cmp_s, CMP, 2, 0, 1) -MAPPING(rcmp, CMP, 2, 1, 0) -MAPPING(and, AND, 3, 1, 2, 0) -MAPPING(and_s, AND, 3, 1, 2, 0) -MAPPING(or, OR, 3, 1, 2, 0) -MAPPING(or_s, OR, 3, 1, 2, 0) -MAPPING(xor, XOR, 3, 1, 2, 0) -MAPPING(xor_s, XOR, 3, 1, 2, 0) -MAPPING(mov, MOV, 2, 1, 0) -MAPPING(mov_s, MOV, 2, 1, 0) -CONSTANT(ASL, asl, 2, 268435457) /* For variable @c */ -MAPPING(asl, ASL, 3, 1, 2, 0) -CONSTANT(ASL, asl_s, 2, 268435457) /* For variable @c */ -MAPPING(asl_s, ASL, 3, 1, 2, 0) -CONSTANT(ASR, asr, 2, 1) /* For variable @c */ -MAPPING(asr, ASR, 3, 1, 2, 0) -CONSTANT(ASR, asr_s, 2, 1) /* For variable @c */ -MAPPING(asr_s, ASR, 3, 1, 2, 0) -MAPPING(asr8, ASR8, 2, 1, 0) -MAPPING(asr16, ASR16, 2, 1, 0) -MAPPING(lsl16, LSL16, 2, 1, 0) -MAPPING(lsl8, LSL8, 2, 1, 0) -CONSTANT(LSR, lsr, 2, 1) /* For variable @c */ -MAPPING(lsr, LSR, 3, 1, 2, 0) -CONSTANT(LSR, lsr_s, 2, 1) /* For variable @c */ -MAPPING(lsr_s, LSR, 3, 1, 2, 0) -MAPPING(lsr16, LSR16, 2, 1, 0) -MAPPING(lsr8, LSR8, 2, 1, 0) -MAPPING(bic, BIC, 3, 1, 2, 0) -MAPPING(bic_s, BIC, 3, 1, 2, 0) -MAPPING(bclr, BCLR, 3, 2, 1, 0) -MAPPING(bclr_s, BCLR, 3, 2, 1, 0) -MAPPING(bmsk, BMSK, 3, 2, 1, 0) -MAPPING(bmsk_s, BMSK, 3, 2, 1, 0) -MAPPING(bmskn, BMSKN, 3, 2, 1, 0) -MAPPING(bset, BSET, 3, 2, 1, 0) -MAPPING(bset_s, BSET, 3, 2, 1, 0) -MAPPING(bxor, BXOR, 3, 2, 1, 0) -MAPPING(rol, ROL, 2, 1, 0) -MAPPING(rol8, ROL8, 2, 1, 0) -CONSTANT(ROR, ror, 2, 1) /* For variable @n */ -MAPPING(ror, ROR, 3, 1, 2, 0) -MAPPING(ror8, ROR8, 2, 1, 0) -MAPPING(rlc, RLC, 2, 1, 0) -MAPPING(rrc, RRC, 2, 1, 0) -MAPPING(sexb, SEXB, 2, 0, 1) -MAPPING(sexb_s, SEXB, 2, 0, 1) -MAPPING(sexh, SEXH, 2, 0, 1) -MAPPING(sexh_s, SEXH, 2, 0, 1) -MAPPING(extb, EXTB, 2, 0, 1) -MAPPING(extb_s, EXTB, 2, 0, 1) -MAPPING(exth, EXTH, 2, 0, 1) -MAPPING(exth_s, EXTH, 2, 0, 1) -MAPPING(btst, BTST, 2, 1, 0) -MAPPING(btst_s, BTST, 2, 1, 0) -MAPPING(tst, TST, 2, 0, 1) -MAPPING(tst_s, TST, 2, 0, 1) -MAPPING(xbfu, XBFU, 3, 2, 1, 0) -MAPPING(aex, AEX, 2, 1, 0) -MAPPING(lr, LR, 2, 0, 1) -MAPPING(clri, CLRI, 1, 0) -MAPPING(seti, SETI, 1, 0) -MAPPING(nop, NOP, 0) -MAPPING(nop_s, NOP, 0) -MAPPING(prealloc, PREALLOC, 0) -CONSTANT(PREFETCH, prefetch, 1, 0) /* For variable @src2 */ -MAPPING(prefetch, PREFETCH, 2, 0, 1) -CONSTANT(PREFETCH, prefetchw, 1, 0) /* For variable @src2 */ -MAPPING(prefetchw, PREFETCH, 2, 0, 1) -MAPPING(mpy, MPY, 3, 1, 2, 0) -MAPPING(mpy_s, MPY, 3, 1, 2, 0) -MAPPING(mpymu, MPYMU, 3, 0, 1, 2) -MAPPING(mpym, MPYM, 3, 0, 1, 2) -MAPPING(mpyu, MPYU, 3, 1, 2, 0) -MAPPING(mpyuw, MPYUW, 3, 0, 1, 2) -MAPPING(mpyuw_s, MPYUW, 3, 0, 1, 2) -MAPPING(mpyw, MPYW, 3, 0, 1, 2) -MAPPING(mpyw_s, MPYW, 3, 0, 1, 2) -MAPPING(div, DIV, 3, 2, 1, 0) -MAPPING(divu, DIVU, 3, 2, 0, 1) -MAPPING(rem, REM, 3, 2, 1, 0) -MAPPING(remu, REMU, 3, 2, 0, 1) -MAPPING(mac, MAC, 3, 1, 2, 0) -MAPPING(macu, MACU, 3, 1, 2, 0) -MAPPING(macd, MACD, 3, 1, 2, 0) -MAPPING(macdu, MACDU, 3, 1, 2, 0) -MAPPING(abs, ABS, 2, 1, 0) -MAPPING(abs_s, ABS, 2, 1, 0) -MAPPING(swap, SWAP, 2, 1, 0) -MAPPING(swape, SWAPE, 2, 1, 0) -MAPPING(not, NOT, 2, 0, 1) -MAPPING(not_s, NOT, 2, 0, 1) -MAPPING(bi, BI, 1, 0) -MAPPING(bih, BIH, 1, 0) -MAPPING(b, B, 1, 0) -MAPPING(beq_s, B_S, 1, 0) -MAPPING(bne_s, B_S, 1, 0) -MAPPING(bgt_s, B_S, 1, 0) -MAPPING(bge_s, B_S, 1, 0) -MAPPING(blt_s, B_S, 1, 0) -MAPPING(ble_s, B_S, 1, 0) -MAPPING(bhi_s, B_S, 1, 0) -MAPPING(bhs_s, B_S, 1, 0) -MAPPING(blo_s, B_S, 1, 0) -MAPPING(bls_s, B_S, 1, 0) -MAPPING(b_s, B_S, 1, 0) -MAPPING(bbit0, BBIT0, 3, 0, 1, 2) -MAPPING(bbit1, BBIT1, 3, 0, 1, 2) -MAPPING(bl, BL, 1, 0) -MAPPING(bl_s, BL, 1, 0) -MAPPING(j, J, 1, 0) -MAPPING(j_s, J, 1, 0) -MAPPING(jeq_s, J, 1, 0) -MAPPING(jne_s, J, 1, 0) -MAPPING(jl, JL, 1, 0) -MAPPING(jl_s, JL, 1, 0) -MAPPING(seteq, SETEQ, 3, 1, 2, 0) -MAPPING(breq, BREQ, 3, 0, 1, 2) -MAPPING(breq_s, BREQ, 3, 0, 1, 2) -MAPPING(setne, SETNE, 3, 1, 2, 0) -MAPPING(brne, BRNE, 3, 0, 1, 2) -MAPPING(brne_s, BRNE, 3, 0, 1, 2) -MAPPING(setlt, SETLT, 3, 1, 2, 0) -MAPPING(brlt, BRLT, 3, 0, 1, 2) -MAPPING(setge, SETGE, 3, 1, 2, 0) -MAPPING(brge, BRGE, 3, 0, 1, 2) -MAPPING(setle, SETLE, 3, 1, 2, 0) -MAPPING(setgt, SETGT, 3, 1, 2, 0) -MAPPING(brlo, BRLO, 3, 0, 1, 2) -MAPPING(setlo, SETLO, 3, 1, 2, 0) -MAPPING(brhs, BRHS, 3, 0, 1, 2) -MAPPING(seths, SETHS, 3, 1, 2, 0) -MAPPING(ex, EX, 2, 0, 1) -MAPPING(llock, LLOCK, 2, 0, 1) -MAPPING(llockd, LLOCKD, 2, 0, 1) -MAPPING(scond, SCOND, 2, 1, 0) -MAPPING(scondd, SCONDD, 2, 1, 0) -MAPPING(dmb, DMB, 1, 0) -CONSTANT(LD, ld, 2, 0) /* For variable @src2 */ -MAPPING(ld, LD, 3, 1, 2, 0) -MAPPING(ld_s, LD, 3, 1, 2, 0) -MAPPING(ldb_s, LD, 3, 1, 2, 0) -MAPPING(ldh_s, LD, 3, 1, 2, 0) -MAPPING(ldw_s, LD, 3, 1, 2, 0) -CONSTANT(LD, ldi, 2, 0) /* For variable @src2 */ -MAPPING(ldi, LD, 3, 1, 2, 0) -CONSTANT(LD, ldi_s, 2, 0) /* For variable @src2 */ -MAPPING(ldi_s, LD, 3, 1, 2, 0) -CONSTANT(LDD, ldd, 2, 0) /* For variable @src2 */ -MAPPING(ldd, LDD, 3, 1, 2, 0) -CONSTANT(ST, st, 2, 0) /* For variable @src2 */ -MAPPING(st, ST, 3, 1, 2, 0) -MAPPING(st_s, ST, 3, 1, 2, 0) -MAPPING(stb_s, ST, 3, 1, 2, 0) -MAPPING(sth_s, ST, 3, 1, 2, 0) -MAPPING(stw_s, ST, 3, 1, 2, 0) -CONSTANT(STD, std, 2, 0) /* For variable @src2 */ -MAPPING(std, STD, 3, 1, 2, 0) -MAPPING(pop_s, POP, 1, 0) -MAPPING(push_s, PUSH, 1, 0) -MAPPING(lp, LP, 1, 0) -MAPPING(norm, NORM, 2, 1, 0) -MAPPING(normh, NORMH, 2, 1, 0) -MAPPING(fls, FLS, 2, 1, 0) -MAPPING(ffs, FFS, 2, 1, 0) +#ifdef TARGET_ARCV3 +#include "semfunc-v3_mapping.def" +#endif -- 2.20.1 _______________________________________________ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc
WARNING: multiple messages have this Message-ID (diff)
From: cupertinomiranda@gmail.com To: qemu-devel@nongnu.org Cc: shahab@synopsys.com, linux-snps-arc@lists.infradead.org, claziss@synopsys.com, cmiranda@synopsys.com Subject: [PATCH 20/27] arcv3: TCG, decoder glue code and helper changes Date: Mon, 5 Apr 2021 15:31:31 +0100 [thread overview] Message-ID: <20210405143138.17016-21-cupertinomiranda@gmail.com> (raw) In-Reply-To: <20210405143138.17016-1-cupertinomiranda@gmail.com> From: Cupertino Miranda <cmiranda@synopsys.com> --- target/arc/extra_mapping.def | 16 + target/arc/helper.c | 11 + target/arc/helper.h | 16 + target/arc/op_helper.c | 110 ++++++- target/arc/semfunc-v2_mapping.def | 321 ++++++++++++++++++++ target/arc/semfunc-v3_mapping.def | 468 ++++++++++++++++++++++++++++++ target/arc/semfunc_mapping.def | 308 +------------------- 7 files changed, 937 insertions(+), 313 deletions(-) create mode 100644 target/arc/semfunc-v2_mapping.def create mode 100644 target/arc/semfunc-v3_mapping.def diff --git a/target/arc/extra_mapping.def b/target/arc/extra_mapping.def index 50517f058e..527a70f304 100644 --- a/target/arc/extra_mapping.def +++ b/target/arc/extra_mapping.def @@ -43,6 +43,7 @@ MAPPING(swi, SWI, 1, 0) CONSTANT(SWI, swi_s, 0, 0) MAPPING(swi_s, SWI, 1, 0) +#ifdef TARGET_ARCV2 SEMANTIC_FUNCTION(VADD2, 3) SEMANTIC_FUNCTION(VADD2H, 3) SEMANTIC_FUNCTION(VADD4H, 3) @@ -61,3 +62,18 @@ MAPPING(vsub2h, VSUB2H, 3, 0, 1, 2) MAPPING(vsub4h, VSUB4H, 3, 0, 1, 2) MAPPING(mpyd, MPYD, 3, 0, 1, 2) MAPPING(mpydu, MPYDU, 3, 0, 1, 2) +#endif + +#ifdef TARGET_ARCV3 +SEMANTIC_FUNCTION(MPYL, 3) +SEMANTIC_FUNCTION(MPYML, 3) +SEMANTIC_FUNCTION(MPYMUL, 3) +SEMANTIC_FUNCTION(MPYMSUL, 3) +SEMANTIC_FUNCTION(ADDHL, 3) + +MAPPING(mpyl, MPYL, 3, 0, 1, 2) +MAPPING(mpyml, MPYML, 3, 0, 1, 2) +MAPPING(mpymul, MPYMUL, 3, 0, 1, 2) +MAPPING(mpymsul, MPYMSUL, 3, 0, 1, 2) +MAPPING(addhl, ADDHL, 3, 0, 1, 2) +#endif diff --git a/target/arc/helper.c b/target/arc/helper.c index e11d21d576..10c46cbee4 100644 --- a/target/arc/helper.c +++ b/target/arc/helper.c @@ -80,12 +80,23 @@ void arc_cpu_do_interrupt(CPUState *cs) case EXCP_MACHINE_CHECK: name = "Machine Check"; break; +#ifdef TARGET_ARCV2 case EXCP_TLB_MISS_I: name = "TLB Miss Instruction"; break; case EXCP_TLB_MISS_D: name = "TLB Miss Data"; break; +#elif TARGET_ARCV3 + case EXCP_IMMU_FAULT: + name = "Instruction MMU Fault"; + break; + case EXCP_DMMU_FAULT: + name = "Data MMU Fault"; + break; +#else +#error +#endif case EXCP_PROTV: name = "Protection Violation"; break; diff --git a/target/arc/helper.h b/target/arc/helper.h index 1929c1682f..2d93fc3a96 100644 --- a/target/arc/helper.h +++ b/target/arc/helper.h @@ -37,3 +37,19 @@ DEF_HELPER_FLAGS_3(overflow_sub_flag, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl) DEF_HELPER_FLAGS_3(mpymu, TCG_CALL_NO_RWG_SE, tl, env, tl, tl) DEF_HELPER_FLAGS_3(mpym, TCG_CALL_NO_RWG_SE, tl, env, tl, tl) DEF_HELPER_FLAGS_3(repl_mask, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl) + +/* ARCV3 helpers */ +#ifdef TARGET_ARCV3 +DEF_HELPER_FLAGS_2(ffs32, TCG_CALL_NO_RWG_SE, tl, env, tl) + +DEF_HELPER_FLAGS_3(carry_add_flag32, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl) +DEF_HELPER_FLAGS_3(carry_sub_flag32, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl) +DEF_HELPER_FLAGS_3(overflow_add_flag32, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl) +DEF_HELPER_FLAGS_3(overflow_sub_flag32, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl) + +DEF_HELPER_FLAGS_2(rotate_left32, TCG_CALL_NO_RWG_SE, i64, i64, i64) +DEF_HELPER_FLAGS_2(rotate_right32, TCG_CALL_NO_RWG_SE, i64, i64, i64) +DEF_HELPER_FLAGS_2(asr_32, TCG_CALL_NO_RWG_SE, i64, i64, i64) + +DEF_HELPER_2(norml, i64, env, i64) +#endif diff --git a/target/arc/op_helper.c b/target/arc/op_helper.c index 1124541993..6d68018334 100644 --- a/target/arc/op_helper.c +++ b/target/arc/op_helper.c @@ -188,7 +188,9 @@ void helper_rtie(CPUARCState *env) (target_ulong) pack_status32(&env->stat)); } +#ifdef TARGET_ARCV2 helper_zol_verify(env, env->pc); +#endif } void helper_flush(CPUARCState *env) @@ -390,17 +392,103 @@ arc_status_regs_set(const struct arc_aux_reg_detail *aux_reg_detail, } } -/* - * uint32_t lf_variable = 0; - * uint32_t helper_get_lf(void) - * { - * return lf_variable; - * } - * void helper_set_lf(uint32_t v) - * { - * lf_variable = v; - * } - */ +#ifdef TARGET_ARCV3 +uint64_t helper_carry_add_flag32(uint64_t dest, uint64_t b, uint64_t c) { + return carry_add_flag(dest, b, c, 32); +} + +target_ulong helper_overflow_add_flag32(target_ulong dest, target_ulong b, target_ulong c) { + return overflow_add_flag(dest, b, c, 32); +} + +target_ulong helper_overflow_sub_flag32(target_ulong dest, target_ulong b, target_ulong c) { + dest = dest & 0xffffffff; + b = b & 0xffffffff; + c = c & 0xffffffff; + return overflow_sub_flag(dest, b, c, 32); +} + +uint64_t helper_carry_sub_flag32(uint64_t dest, uint64_t b, uint64_t c) +{ + uint32_t t1, t2, t3; + + t1 = ~b; + t2 = t1 & c; + t3 = (t1 | c) & dest; + + t2 = t2 | t3; + return (t2 >> 31) & 1; +} + +uint64_t helper_rotate_left32(uint64_t orig, uint64_t n) +{ + uint64_t t; + uint64_t dest = (orig << n) & ((0xffffffff << n) & 0xffffffff); + + t = (orig >> (32 - n)) & ((1 << n) - 1); + dest |= t; + + return dest; +} + +uint64_t helper_rotate_right32(uint64_t orig, uint64_t n) +{ + uint64_t t; + uint64_t dest = (orig >> n) & (0xffffffff >> n); + + t = ((orig & ((1 << n) - 1)) << (32 - n)); + dest |= t; + + return dest; +} + +uint64_t helper_asr_32(uint64_t b, uint64_t c) +{ + uint64_t t; + c = c & 31; + t = b; + for(int i = 0; i < c; i++) { + t >>= 1; + if((b & 0x80000000) != 0) + t |= 0x80000000; + } + //t |= ((1 << (c+1)) - 1) << (32 - c); + + return t; +} + +target_ulong helper_ffs32(CPUARCState *env, uint64_t src) +{ + int i; + if (src == 0) { + return 31; + } + for (i = 0; i <= 31; i++) { + if (((src >> i) & 1) != 0) { + break; + } + } + return i; +} + +target_ulong helper_norml(CPUARCState *env, uint64_t src1) +{ + int i; + int64_t tmp = (int64_t) src1; + if (tmp == 0 || tmp == -1) { + return 0; + } + for (i = 0; i <= 63; i++) { + if ((tmp >> i) == 0) { + break; + } + if ((tmp >> i) == -1) { + break; + } + } + return i; +} +#endif /*-*-indent-tabs-mode:nil;tab-width:4;indent-line-function:'insert-tab'-*-*/ /* vim: set ts=4 sw=4 et: */ diff --git a/target/arc/semfunc-v2_mapping.def b/target/arc/semfunc-v2_mapping.def new file mode 100644 index 0000000000..ab8d9ff123 --- /dev/null +++ b/target/arc/semfunc-v2_mapping.def @@ -0,0 +1,321 @@ +/* + * QEMU ARC SEMANTIC MAPPING. + * + * Copyright (c) 2020 Synopsys, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2 or later, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. + */ + +SEMANTIC_FUNCTION(FLAG, 1) +SEMANTIC_FUNCTION(KFLAG, 1) +SEMANTIC_FUNCTION(ADD, 3) +SEMANTIC_FUNCTION(ADD1, 3) +SEMANTIC_FUNCTION(ADD2, 3) +SEMANTIC_FUNCTION(ADD3, 3) +SEMANTIC_FUNCTION(ADC, 3) +SEMANTIC_FUNCTION(SBC, 3) +SEMANTIC_FUNCTION(NEG, 2) +SEMANTIC_FUNCTION(SUB, 3) +SEMANTIC_FUNCTION(SUB1, 3) +SEMANTIC_FUNCTION(SUB2, 3) +SEMANTIC_FUNCTION(SUB3, 3) +SEMANTIC_FUNCTION(MAX, 3) +SEMANTIC_FUNCTION(MIN, 3) +SEMANTIC_FUNCTION(CMP, 2) +SEMANTIC_FUNCTION(AND, 3) +SEMANTIC_FUNCTION(OR, 3) +SEMANTIC_FUNCTION(XOR, 3) +SEMANTIC_FUNCTION(MOV, 2) +SEMANTIC_FUNCTION(ASL, 3) +SEMANTIC_FUNCTION(ASR, 3) +SEMANTIC_FUNCTION(ASR8, 2) +SEMANTIC_FUNCTION(ASR16, 2) +SEMANTIC_FUNCTION(LSL16, 2) +SEMANTIC_FUNCTION(LSL8, 2) +SEMANTIC_FUNCTION(LSR, 3) +SEMANTIC_FUNCTION(LSR16, 2) +SEMANTIC_FUNCTION(LSR8, 2) +SEMANTIC_FUNCTION(BIC, 3) +SEMANTIC_FUNCTION(BCLR, 3) +SEMANTIC_FUNCTION(BMSK, 3) +SEMANTIC_FUNCTION(BMSKN, 3) +SEMANTIC_FUNCTION(BSET, 3) +SEMANTIC_FUNCTION(BXOR, 3) +SEMANTIC_FUNCTION(ROL, 2) +SEMANTIC_FUNCTION(ROL8, 2) +SEMANTIC_FUNCTION(ROR, 3) +SEMANTIC_FUNCTION(ROR8, 2) +SEMANTIC_FUNCTION(RLC, 2) +SEMANTIC_FUNCTION(RRC, 2) +SEMANTIC_FUNCTION(SEXB, 2) +SEMANTIC_FUNCTION(SEXH, 2) +SEMANTIC_FUNCTION(EXTB, 2) +SEMANTIC_FUNCTION(EXTH, 2) +SEMANTIC_FUNCTION(BTST, 2) +SEMANTIC_FUNCTION(TST, 2) +SEMANTIC_FUNCTION(XBFU, 3) +SEMANTIC_FUNCTION(AEX, 2) +SEMANTIC_FUNCTION(LR, 2) +SEMANTIC_FUNCTION(CLRI, 1) +SEMANTIC_FUNCTION(SETI, 1) +SEMANTIC_FUNCTION(NOP, 0) +SEMANTIC_FUNCTION(PREALLOC, 0) +SEMANTIC_FUNCTION(PREFETCH, 2) +SEMANTIC_FUNCTION(MPY, 3) +SEMANTIC_FUNCTION(MPYMU, 3) +SEMANTIC_FUNCTION(MPYM, 3) +SEMANTIC_FUNCTION(MPYU, 3) +SEMANTIC_FUNCTION(MPYUW, 3) +SEMANTIC_FUNCTION(MPYW, 3) +SEMANTIC_FUNCTION(DIV, 3) +SEMANTIC_FUNCTION(DIVU, 3) +SEMANTIC_FUNCTION(REM, 3) +SEMANTIC_FUNCTION(REMU, 3) +SEMANTIC_FUNCTION(MAC, 3) +SEMANTIC_FUNCTION(MACU, 3) +SEMANTIC_FUNCTION(MACD, 3) +SEMANTIC_FUNCTION(MACDU, 3) +SEMANTIC_FUNCTION(ABS, 2) +SEMANTIC_FUNCTION(SWAP, 2) +SEMANTIC_FUNCTION(SWAPE, 2) +SEMANTIC_FUNCTION(NOT, 2) +SEMANTIC_FUNCTION(BI, 1) +SEMANTIC_FUNCTION(BIH, 1) +SEMANTIC_FUNCTION(B, 1) +SEMANTIC_FUNCTION(B_S, 1) +SEMANTIC_FUNCTION(BBIT0, 3) +SEMANTIC_FUNCTION(BBIT1, 3) +SEMANTIC_FUNCTION(BL, 1) +SEMANTIC_FUNCTION(J, 1) +SEMANTIC_FUNCTION(JL, 1) +SEMANTIC_FUNCTION(SETEQ, 3) +SEMANTIC_FUNCTION(BREQ, 3) +SEMANTIC_FUNCTION(SETNE, 3) +SEMANTIC_FUNCTION(BRNE, 3) +SEMANTIC_FUNCTION(SETLT, 3) +SEMANTIC_FUNCTION(BRLT, 3) +SEMANTIC_FUNCTION(SETGE, 3) +SEMANTIC_FUNCTION(BRGE, 3) +SEMANTIC_FUNCTION(SETLE, 3) +SEMANTIC_FUNCTION(SETGT, 3) +SEMANTIC_FUNCTION(BRLO, 3) +SEMANTIC_FUNCTION(SETLO, 3) +SEMANTIC_FUNCTION(BRHS, 3) +SEMANTIC_FUNCTION(SETHS, 3) +SEMANTIC_FUNCTION(EX, 2) +SEMANTIC_FUNCTION(LLOCK, 2) +SEMANTIC_FUNCTION(LLOCKD, 2) +SEMANTIC_FUNCTION(SCOND, 2) +SEMANTIC_FUNCTION(SCONDD, 2) +SEMANTIC_FUNCTION(DMB, 1) +SEMANTIC_FUNCTION(LD, 3) +SEMANTIC_FUNCTION(LDD, 3) +SEMANTIC_FUNCTION(ST, 3) +SEMANTIC_FUNCTION(STD, 3) +SEMANTIC_FUNCTION(POP, 1) +SEMANTIC_FUNCTION(PUSH, 1) +SEMANTIC_FUNCTION(LP, 1) +SEMANTIC_FUNCTION(NORM, 2) +SEMANTIC_FUNCTION(NORMH, 2) +SEMANTIC_FUNCTION(FLS, 2) +SEMANTIC_FUNCTION(FFS, 2) + + +MAPPING(flag, FLAG, 1, 0) +MAPPING(kflag, KFLAG, 1, 0) +MAPPING(add, ADD, 3, 1, 2, 0) +MAPPING(add_s, ADD, 3, 1, 2, 0) +MAPPING(add1, ADD1, 3, 1, 2, 0) +MAPPING(add1_s, ADD1, 3, 1, 2, 0) +MAPPING(add2, ADD2, 3, 1, 2, 0) +MAPPING(add2_s, ADD2, 3, 1, 2, 0) +MAPPING(add3, ADD3, 3, 1, 2, 0) +MAPPING(add3_s, ADD3, 3, 1, 2, 0) +MAPPING(adc, ADC, 3, 1, 2, 0) +MAPPING(sbc, SBC, 3, 1, 2, 0) +MAPPING(neg, NEG, 2, 1, 0) +MAPPING(neg_s, NEG, 2, 1, 0) +MAPPING(sub, SUB, 3, 1, 2, 0) +MAPPING(sub_s, SUB, 3, 1, 2, 0) +MAPPING(rsub, SUB, 3, 2, 1, 0) +MAPPING(sub1, SUB1, 3, 1, 2, 0) +MAPPING(sub2, SUB2, 3, 1, 2, 0) +MAPPING(sub3, SUB3, 3, 1, 2, 0) +MAPPING(max, MAX, 3, 1, 2, 0) +MAPPING(min, MIN, 3, 1, 2, 0) +MAPPING(cmp, CMP, 2, 0, 1) +MAPPING(cmp_s, CMP, 2, 0, 1) +MAPPING(rcmp, CMP, 2, 1, 0) +MAPPING(and, AND, 3, 1, 2, 0) +MAPPING(and_s, AND, 3, 1, 2, 0) +MAPPING(or, OR, 3, 1, 2, 0) +MAPPING(or_s, OR, 3, 1, 2, 0) +MAPPING(xor, XOR, 3, 1, 2, 0) +MAPPING(xor_s, XOR, 3, 1, 2, 0) +MAPPING(mov, MOV, 2, 1, 0) +MAPPING(mov_s, MOV, 2, 1, 0) +CONSTANT(ASL, asl, 2, 268435457) /* For variable @c */ +MAPPING(asl, ASL, 3, 1, 2, 0) +CONSTANT(ASL, asl_s, 2, 268435457) /* For variable @c */ +MAPPING(asl_s, ASL, 3, 1, 2, 0) +CONSTANT(ASR, asr, 2, 1) /* For variable @c */ +MAPPING(asr, ASR, 3, 1, 2, 0) +CONSTANT(ASR, asr_s, 2, 1) /* For variable @c */ +MAPPING(asr_s, ASR, 3, 1, 2, 0) +MAPPING(asr8, ASR8, 2, 1, 0) +MAPPING(asr16, ASR16, 2, 1, 0) +MAPPING(lsl16, LSL16, 2, 1, 0) +MAPPING(lsl8, LSL8, 2, 1, 0) +CONSTANT(LSR, lsr, 2, 1) /* For variable @c */ +MAPPING(lsr, LSR, 3, 1, 2, 0) +CONSTANT(LSR, lsr_s, 2, 1) /* For variable @c */ +MAPPING(lsr_s, LSR, 3, 1, 2, 0) +MAPPING(lsr16, LSR16, 2, 1, 0) +MAPPING(lsr8, LSR8, 2, 1, 0) +MAPPING(bic, BIC, 3, 1, 2, 0) +MAPPING(bic_s, BIC, 3, 1, 2, 0) +MAPPING(bclr, BCLR, 3, 2, 1, 0) +MAPPING(bclr_s, BCLR, 3, 2, 1, 0) +MAPPING(bmsk, BMSK, 3, 2, 1, 0) +MAPPING(bmsk_s, BMSK, 3, 2, 1, 0) +MAPPING(bmskn, BMSKN, 3, 2, 1, 0) +MAPPING(bset, BSET, 3, 2, 1, 0) +MAPPING(bset_s, BSET, 3, 2, 1, 0) +MAPPING(bxor, BXOR, 3, 2, 1, 0) +MAPPING(rol, ROL, 2, 1, 0) +MAPPING(rol8, ROL8, 2, 1, 0) +CONSTANT(ROR, ror, 2, 1) /* For variable @n */ +MAPPING(ror, ROR, 3, 1, 2, 0) +MAPPING(ror8, ROR8, 2, 1, 0) +MAPPING(rlc, RLC, 2, 1, 0) +MAPPING(rrc, RRC, 2, 1, 0) +MAPPING(sexb, SEXB, 2, 0, 1) +MAPPING(sexb_s, SEXB, 2, 0, 1) +MAPPING(sexh, SEXH, 2, 0, 1) +MAPPING(sexh_s, SEXH, 2, 0, 1) +MAPPING(extb, EXTB, 2, 0, 1) +MAPPING(extb_s, EXTB, 2, 0, 1) +MAPPING(exth, EXTH, 2, 0, 1) +MAPPING(exth_s, EXTH, 2, 0, 1) +MAPPING(btst, BTST, 2, 1, 0) +MAPPING(btst_s, BTST, 2, 1, 0) +MAPPING(tst, TST, 2, 0, 1) +MAPPING(tst_s, TST, 2, 0, 1) +MAPPING(xbfu, XBFU, 3, 2, 1, 0) +MAPPING(aex, AEX, 2, 1, 0) +MAPPING(lr, LR, 2, 0, 1) +MAPPING(clri, CLRI, 1, 0) +MAPPING(seti, SETI, 1, 0) +MAPPING(nop, NOP, 0) +MAPPING(nop_s, NOP, 0) +MAPPING(prealloc, PREALLOC, 0) +CONSTANT(PREFETCH, prefetch, 1, 0) /* For variable @src2 */ +MAPPING(prefetch, PREFETCH, 2, 0, 1) +CONSTANT(PREFETCH, prefetchw, 1, 0) /* For variable @src2 */ +MAPPING(prefetchw, PREFETCH, 2, 0, 1) +MAPPING(mpy, MPY, 3, 1, 2, 0) +MAPPING(mpy_s, MPY, 3, 1, 2, 0) +MAPPING(mpymu, MPYMU, 3, 0, 1, 2) +MAPPING(mpym, MPYM, 3, 0, 1, 2) +MAPPING(mpyu, MPYU, 3, 1, 2, 0) +MAPPING(mpyuw, MPYUW, 3, 0, 1, 2) +MAPPING(mpyuw_s, MPYUW, 3, 0, 1, 2) +MAPPING(mpyw, MPYW, 3, 0, 1, 2) +MAPPING(mpyw_s, MPYW, 3, 0, 1, 2) +MAPPING(div, DIV, 3, 2, 1, 0) +MAPPING(divu, DIVU, 3, 2, 0, 1) +MAPPING(rem, REM, 3, 2, 1, 0) +MAPPING(remu, REMU, 3, 2, 0, 1) +MAPPING(mac, MAC, 3, 1, 2, 0) +MAPPING(macu, MACU, 3, 1, 2, 0) +MAPPING(macd, MACD, 3, 1, 2, 0) +MAPPING(macdu, MACDU, 3, 1, 2, 0) +MAPPING(abs, ABS, 2, 1, 0) +MAPPING(abs_s, ABS, 2, 1, 0) +MAPPING(swap, SWAP, 2, 1, 0) +MAPPING(swape, SWAPE, 2, 1, 0) +MAPPING(not, NOT, 2, 0, 1) +MAPPING(not_s, NOT, 2, 0, 1) +MAPPING(bi, BI, 1, 0) +MAPPING(bih, BIH, 1, 0) +MAPPING(b, B, 1, 0) +MAPPING(beq_s, B_S, 1, 0) +MAPPING(bne_s, B_S, 1, 0) +MAPPING(bgt_s, B_S, 1, 0) +MAPPING(bge_s, B_S, 1, 0) +MAPPING(blt_s, B_S, 1, 0) +MAPPING(ble_s, B_S, 1, 0) +MAPPING(bhi_s, B_S, 1, 0) +MAPPING(bhs_s, B_S, 1, 0) +MAPPING(blo_s, B_S, 1, 0) +MAPPING(bls_s, B_S, 1, 0) +MAPPING(b_s, B_S, 1, 0) +MAPPING(bbit0, BBIT0, 3, 0, 1, 2) +MAPPING(bbit1, BBIT1, 3, 0, 1, 2) +MAPPING(bl, BL, 1, 0) +MAPPING(bl_s, BL, 1, 0) +MAPPING(j, J, 1, 0) +MAPPING(j_s, J, 1, 0) +MAPPING(jeq_s, J, 1, 0) +MAPPING(jne_s, J, 1, 0) +MAPPING(jl, JL, 1, 0) +MAPPING(jl_s, JL, 1, 0) +MAPPING(seteq, SETEQ, 3, 1, 2, 0) +MAPPING(breq, BREQ, 3, 0, 1, 2) +MAPPING(breq_s, BREQ, 3, 0, 1, 2) +MAPPING(setne, SETNE, 3, 1, 2, 0) +MAPPING(brne, BRNE, 3, 0, 1, 2) +MAPPING(brne_s, BRNE, 3, 0, 1, 2) +MAPPING(setlt, SETLT, 3, 1, 2, 0) +MAPPING(brlt, BRLT, 3, 0, 1, 2) +MAPPING(setge, SETGE, 3, 1, 2, 0) +MAPPING(brge, BRGE, 3, 0, 1, 2) +MAPPING(setle, SETLE, 3, 1, 2, 0) +MAPPING(setgt, SETGT, 3, 1, 2, 0) +MAPPING(brlo, BRLO, 3, 0, 1, 2) +MAPPING(setlo, SETLO, 3, 1, 2, 0) +MAPPING(brhs, BRHS, 3, 0, 1, 2) +MAPPING(seths, SETHS, 3, 1, 2, 0) +MAPPING(ex, EX, 2, 0, 1) +MAPPING(llock, LLOCK, 2, 0, 1) +MAPPING(llockd, LLOCKD, 2, 0, 1) +MAPPING(scond, SCOND, 2, 1, 0) +MAPPING(scondd, SCONDD, 2, 1, 0) +MAPPING(dmb, DMB, 1, 0) +CONSTANT(LD, ld, 2, 0) /* For variable @src2 */ +MAPPING(ld, LD, 3, 1, 2, 0) +MAPPING(ld_s, LD, 3, 1, 2, 0) +MAPPING(ldb_s, LD, 3, 1, 2, 0) +MAPPING(ldh_s, LD, 3, 1, 2, 0) +MAPPING(ldw_s, LD, 3, 1, 2, 0) +CONSTANT(LD, ldi, 2, 0) /* For variable @src2 */ +MAPPING(ldi, LD, 3, 1, 2, 0) +CONSTANT(LD, ldi_s, 2, 0) /* For variable @src2 */ +MAPPING(ldi_s, LD, 3, 1, 2, 0) +CONSTANT(LDD, ldd, 2, 0) /* For variable @src2 */ +MAPPING(ldd, LDD, 3, 1, 2, 0) +CONSTANT(ST, st, 2, 0) /* For variable @src2 */ +MAPPING(st, ST, 3, 1, 2, 0) +MAPPING(st_s, ST, 3, 1, 2, 0) +MAPPING(stb_s, ST, 3, 1, 2, 0) +MAPPING(sth_s, ST, 3, 1, 2, 0) +MAPPING(stw_s, ST, 3, 1, 2, 0) +CONSTANT(STD, std, 2, 0) /* For variable @src2 */ +MAPPING(std, STD, 3, 1, 2, 0) +MAPPING(pop_s, POP, 1, 0) +MAPPING(push_s, PUSH, 1, 0) +MAPPING(lp, LP, 1, 0) +MAPPING(norm, NORM, 2, 1, 0) +MAPPING(normh, NORMH, 2, 1, 0) +MAPPING(fls, FLS, 2, 1, 0) +MAPPING(ffs, FFS, 2, 1, 0) diff --git a/target/arc/semfunc-v3_mapping.def b/target/arc/semfunc-v3_mapping.def new file mode 100644 index 0000000000..2ecb55128a --- /dev/null +++ b/target/arc/semfunc-v3_mapping.def @@ -0,0 +1,468 @@ +SEMANTIC_FUNCTION(FLAG, 1) +SEMANTIC_FUNCTION(KFLAG, 1) +SEMANTIC_FUNCTION(ADD, 3) +SEMANTIC_FUNCTION(ADD1, 3) +SEMANTIC_FUNCTION(ADD2, 3) +SEMANTIC_FUNCTION(ADD3, 3) +SEMANTIC_FUNCTION(ADC, 3) +SEMANTIC_FUNCTION(SBC, 3) +SEMANTIC_FUNCTION(NEG, 2) +SEMANTIC_FUNCTION(SUB, 3) +SEMANTIC_FUNCTION(SUB1, 3) +SEMANTIC_FUNCTION(SUB2, 3) +SEMANTIC_FUNCTION(SUB3, 3) +SEMANTIC_FUNCTION(MAX, 3) +SEMANTIC_FUNCTION(MIN, 3) +SEMANTIC_FUNCTION(CMP, 2) +SEMANTIC_FUNCTION(AND, 3) +SEMANTIC_FUNCTION(OR, 3) +SEMANTIC_FUNCTION(XOR, 3) +SEMANTIC_FUNCTION(MOV, 2) +SEMANTIC_FUNCTION(ASL, 3) +SEMANTIC_FUNCTION(ASR, 3) +SEMANTIC_FUNCTION(ASR8, 2) +SEMANTIC_FUNCTION(ASR16, 2) +SEMANTIC_FUNCTION(LSL16, 2) +SEMANTIC_FUNCTION(LSL8, 2) +SEMANTIC_FUNCTION(LSR, 3) +SEMANTIC_FUNCTION(LSR16, 2) +SEMANTIC_FUNCTION(LSR8, 2) +SEMANTIC_FUNCTION(BIC, 3) +SEMANTIC_FUNCTION(BCLR, 3) +SEMANTIC_FUNCTION(BMSK, 3) +SEMANTIC_FUNCTION(BMSKN, 3) +SEMANTIC_FUNCTION(BSET, 3) +SEMANTIC_FUNCTION(BXOR, 3) +SEMANTIC_FUNCTION(ROL, 3) +SEMANTIC_FUNCTION(ROL8, 2) +SEMANTIC_FUNCTION(ROR, 3) +SEMANTIC_FUNCTION(ROR8, 2) +SEMANTIC_FUNCTION(RLC, 2) +SEMANTIC_FUNCTION(RRC, 2) +SEMANTIC_FUNCTION(SEXB, 2) +SEMANTIC_FUNCTION(SEXH, 2) +SEMANTIC_FUNCTION(EXTB, 2) +SEMANTIC_FUNCTION(EXTH, 2) +SEMANTIC_FUNCTION(BTST, 2) +SEMANTIC_FUNCTION(TST, 2) +SEMANTIC_FUNCTION(XBFU, 3) +SEMANTIC_FUNCTION(AEX, 2) +SEMANTIC_FUNCTION(LR, 2) +SEMANTIC_FUNCTION(CLRI, 1) +SEMANTIC_FUNCTION(SETI, 1) +SEMANTIC_FUNCTION(NOP, 0) +SEMANTIC_FUNCTION(PREALLOC, 0) +SEMANTIC_FUNCTION(PREFETCH, 2) +SEMANTIC_FUNCTION(MPY, 3) +SEMANTIC_FUNCTION(MPYMU, 3) +SEMANTIC_FUNCTION(MPYM, 3) +SEMANTIC_FUNCTION(MPYU, 3) +SEMANTIC_FUNCTION(MPYUW, 3) +SEMANTIC_FUNCTION(MPYW, 3) +SEMANTIC_FUNCTION(DIV, 3) +SEMANTIC_FUNCTION(DIVU, 3) +SEMANTIC_FUNCTION(REM, 3) +SEMANTIC_FUNCTION(REMU, 3) +SEMANTIC_FUNCTION(MAC, 3) +SEMANTIC_FUNCTION(MACU, 3) +SEMANTIC_FUNCTION(MACD, 3) +SEMANTIC_FUNCTION(MACDU, 3) +SEMANTIC_FUNCTION(ABS, 2) +SEMANTIC_FUNCTION(SWAP, 2) +SEMANTIC_FUNCTION(SWAPE, 2) +SEMANTIC_FUNCTION(NOT, 2) +SEMANTIC_FUNCTION(BI, 1) +SEMANTIC_FUNCTION(BIH, 1) +SEMANTIC_FUNCTION(B, 1) +SEMANTIC_FUNCTION(B_S, 1) +SEMANTIC_FUNCTION(BBIT0, 3) +SEMANTIC_FUNCTION(BBIT1, 3) +SEMANTIC_FUNCTION(BL, 1) +SEMANTIC_FUNCTION(J, 1) +SEMANTIC_FUNCTION(JL, 1) +SEMANTIC_FUNCTION(SETEQ, 3) +SEMANTIC_FUNCTION(BREQ, 3) +SEMANTIC_FUNCTION(SETNE, 3) +SEMANTIC_FUNCTION(BRNE, 3) +SEMANTIC_FUNCTION(SETLT, 3) +SEMANTIC_FUNCTION(BRLT, 3) +SEMANTIC_FUNCTION(SETGE, 3) +SEMANTIC_FUNCTION(BRGE, 3) +SEMANTIC_FUNCTION(SETLE, 3) +SEMANTIC_FUNCTION(SETGT, 3) +SEMANTIC_FUNCTION(BRLO, 3) +SEMANTIC_FUNCTION(SETLO, 3) +SEMANTIC_FUNCTION(BRHS, 3) +SEMANTIC_FUNCTION(SETHS, 3) +SEMANTIC_FUNCTION(EX, 2) +SEMANTIC_FUNCTION(LLOCK, 2) +SEMANTIC_FUNCTION(LLOCKD, 2) +SEMANTIC_FUNCTION(SCOND, 2) +SEMANTIC_FUNCTION(SCONDD, 2) +SEMANTIC_FUNCTION(DMB, 1) +SEMANTIC_FUNCTION(LD, 3) +SEMANTIC_FUNCTION(LDD, 3) +SEMANTIC_FUNCTION(ST, 3) +SEMANTIC_FUNCTION(STD, 3) +SEMANTIC_FUNCTION(POP, 1) +SEMANTIC_FUNCTION(PUSH, 1) +SEMANTIC_FUNCTION(LP, 1) +SEMANTIC_FUNCTION(NORM, 2) +SEMANTIC_FUNCTION(NORMH, 2) +SEMANTIC_FUNCTION(FLS, 2) +SEMANTIC_FUNCTION(FFS, 2) + + +MAPPING(flag, FLAG, 1, 0) +MAPPING(kflag, KFLAG, 1, 0) +MAPPING(add, ADD, 3, 1, 2, 0) +MAPPING(add_s, ADD, 3, 1, 2, 0) +MAPPING(add1, ADD1, 3, 1, 2, 0) +MAPPING(add1_s, ADD1, 3, 1, 2, 0) +MAPPING(add2, ADD2, 3, 1, 2, 0) +MAPPING(add2_s, ADD2, 3, 1, 2, 0) +MAPPING(add3, ADD3, 3, 1, 2, 0) +MAPPING(add3_s, ADD3, 3, 1, 2, 0) +MAPPING(adc, ADC, 3, 1, 2, 0) +MAPPING(sbc, SBC, 3, 1, 2, 0) +MAPPING(neg, NEG, 2, 1, 0) +MAPPING(neg_s, NEG, 2, 1, 0) +MAPPING(sub, SUB, 3, 1, 2, 0) +MAPPING(sub_s, SUB, 3, 1, 2, 0) +MAPPING(rsub, SUB, 3, 2, 1, 0) +MAPPING(sub1, SUB1, 3, 1, 2, 0) +MAPPING(sub2, SUB2, 3, 1, 2, 0) +MAPPING(sub3, SUB3, 3, 1, 2, 0) +MAPPING(max, MAX, 3, 1, 2, 0) +MAPPING(min, MIN, 3, 1, 2, 0) +MAPPING(cmp, CMP, 2, 0, 1) +MAPPING(cmp_s, CMP, 2, 0, 1) +MAPPING(rcmp, CMP, 2, 1, 0) +MAPPING(and, AND, 3, 0, 1, 2) +MAPPING(and_s, AND, 3, 0, 1, 2) +MAPPING(or, OR, 3, 0, 1, 2) +MAPPING(or_s, OR, 3, 0, 1, 2) +MAPPING(xor, XOR, 3, 0, 1, 2) +MAPPING(xor_s, XOR, 3, 0, 1, 2) +MAPPING(mov, MOV, 2, 0, 1) +MAPPING(mov_s, MOV, 2, 0, 1) +CONSTANT(ASL, asl, 2, 268435457) /* For variable @c */ +MAPPING(asl, ASL, 3, 1, 2, 0) +CONSTANT(ASL, asl_s, 2, 268435457) /* For variable @c */ +MAPPING(asl_s, ASL, 3, 1, 2, 0) +CONSTANT(ASR, asr, 2, 1) /* For variable @c */ +MAPPING(asr, ASR, 3, 1, 2, 0) +CONSTANT(ASR, asr_s, 2, 1) /* For variable @c */ +MAPPING(asr_s, ASR, 3, 1, 2, 0) +MAPPING(asr8, ASR8, 2, 1, 0) +MAPPING(asr16, ASR16, 2, 1, 0) +MAPPING(lsl16, LSL16, 2, 1, 0) +MAPPING(lsl8, LSL8, 2, 1, 0) +CONSTANT(LSR, lsr, 2, 1) /* For variable @c */ +MAPPING(lsr, LSR, 3, 1, 2, 0) +CONSTANT(LSR, lsr_s, 2, 1) /* For variable @c */ +MAPPING(lsr_s, LSR, 3, 1, 2, 0) +MAPPING(lsr16, LSR16, 2, 1, 0) +MAPPING(lsr8, LSR8, 2, 1, 0) +MAPPING(bic, BIC, 3, 0, 1, 2) +MAPPING(bic_s, BIC, 3, 0, 1, 2) +MAPPING(bclr, BCLR, 3, 2, 0, 1) +MAPPING(bclr_s, BCLR, 3, 2, 0, 1) +MAPPING(bmsk, BMSK, 3, 2, 0, 1) +MAPPING(bmsk_s, BMSK, 3, 2, 0, 1) +MAPPING(bmskn, BMSKN, 3, 2, 0, 1) +MAPPING(bset, BSET, 3, 2, 0, 1) +MAPPING(bset_s, BSET, 3, 2, 0, 1) +MAPPING(bxor, BXOR, 3, 2, 0, 1) +CONSTANT(ROL, rol, 2, 1) /* For variable @n */ +MAPPING(rol, ROL, 3, 1, 2, 0) +MAPPING(rol8, ROL8, 2, 1, 0) +CONSTANT(ROR, ror, 2, 1) /* For variable @n */ +MAPPING(ror, ROR, 3, 1, 2, 0) +MAPPING(ror8, ROR8, 2, 1, 0) +MAPPING(rlc, RLC, 2, 1, 0) +MAPPING(rrc, RRC, 2, 1, 0) +MAPPING(sexb, SEXB, 2, 0, 1) +MAPPING(sexb_s, SEXB, 2, 0, 1) +MAPPING(sexh, SEXH, 2, 0, 1) +MAPPING(sexh_s, SEXH, 2, 0, 1) +MAPPING(extb, EXTB, 2, 0, 1) +MAPPING(extb_s, EXTB, 2, 0, 1) +MAPPING(exth, EXTH, 2, 0, 1) +MAPPING(exth_s, EXTH, 2, 0, 1) +MAPPING(btst, BTST, 2, 1, 0) +MAPPING(btst_s, BTST, 2, 1, 0) +MAPPING(tst, TST, 2, 0, 1) +MAPPING(tst_s, TST, 2, 0, 1) +MAPPING(xbfu, XBFU, 3, 2, 1, 0) +MAPPING(aex, AEX, 2, 1, 0) +MAPPING(lr, LR, 2, 0, 1) +MAPPING(clri, CLRI, 1, 0) +MAPPING(seti, SETI, 1, 0) +MAPPING(nop, NOP, 0) +MAPPING(nop_s, NOP, 0) +MAPPING(prealloc, PREALLOC, 0) +MAPPING(prefetch, PREFETCH, 2, 0, 1) +MAPPING(prefetchw, PREFETCH, 2, 0, 1) +MAPPING(mpy, MPY, 3, 1, 2, 0) +MAPPING(mpy_s, MPY, 3, 1, 2, 0) +MAPPING(mpymu, MPYMU, 3, 0, 1, 2) +MAPPING(mpym, MPYM, 3, 0, 1, 2) +MAPPING(mpyu, MPYU, 3, 1, 2, 0) +MAPPING(mpyuw, MPYUW, 3, 0, 1, 2) +MAPPING(mpyuw_s, MPYUW, 3, 0, 1, 2) +MAPPING(mpyw, MPYW, 3, 0, 1, 2) +MAPPING(mpyw_s, MPYW, 3, 0, 1, 2) +MAPPING(div, DIV, 3, 2, 1, 0) +MAPPING(divu, DIVU, 3, 2, 0, 1) +MAPPING(rem, REM, 3, 2, 1, 0) +MAPPING(remu, REMU, 3, 2, 0, 1) +MAPPING(mac, MAC, 3, 1, 2, 0) +MAPPING(macu, MACU, 3, 1, 2, 0) +MAPPING(macd, MACD, 3, 1, 2, 0) +MAPPING(macdu, MACDU, 3, 1, 2, 0) +MAPPING(abs, ABS, 2, 1, 0) +MAPPING(abs_s, ABS, 2, 1, 0) +MAPPING(swap, SWAP, 2, 1, 0) +MAPPING(swape, SWAPE, 2, 1, 0) +MAPPING(not, NOT, 2, 0, 1) +MAPPING(not_s, NOT, 2, 0, 1) +MAPPING(bi, BI, 1, 0) +MAPPING(bih, BIH, 1, 0) +MAPPING(b, B, 1, 0) +MAPPING(beq_s, B_S, 1, 0) +MAPPING(bne_s, B_S, 1, 0) +MAPPING(bgt_s, B_S, 1, 0) +MAPPING(bge_s, B_S, 1, 0) +MAPPING(blt_s, B_S, 1, 0) +MAPPING(ble_s, B_S, 1, 0) +MAPPING(bhi_s, B_S, 1, 0) +MAPPING(bhs_s, B_S, 1, 0) +MAPPING(blo_s, B_S, 1, 0) +MAPPING(bls_s, B_S, 1, 0) +MAPPING(b_s, B_S, 1, 0) +MAPPING(bbit0, BBIT0, 3, 0, 1, 2) +MAPPING(bbit1, BBIT1, 3, 0, 1, 2) +MAPPING(bl, BL, 1, 0) +MAPPING(bl_s, BL, 1, 0) +MAPPING(j, J, 1, 0) +MAPPING(j_s, J, 1, 0) +MAPPING(jeq_s, J, 1, 0) +MAPPING(jne_s, J, 1, 0) +MAPPING(jl, JL, 1, 0) +MAPPING(jl_s, JL, 1, 0) +MAPPING(seteq, SETEQ, 3, 1, 2, 0) +MAPPING(breq, BREQ, 3, 0, 1, 2) +MAPPING(setne, SETNE, 3, 1, 2, 0) +MAPPING(brne, BRNE, 3, 0, 1, 2) +MAPPING(setlt, SETLT, 3, 1, 2, 0) +MAPPING(brlt, BRLT, 3, 0, 1, 2) +MAPPING(setge, SETGE, 3, 1, 2, 0) +MAPPING(brge, BRGE, 3, 0, 1, 2) +MAPPING(setle, SETLE, 3, 1, 2, 0) +MAPPING(setgt, SETGT, 3, 1, 2, 0) +MAPPING(brlo, BRLO, 3, 0, 1, 2) +MAPPING(setlo, SETLO, 3, 1, 2, 0) +MAPPING(brhs, BRHS, 3, 0, 1, 2) +MAPPING(seths, SETHS, 3, 1, 2, 0) +MAPPING(ex, EX, 2, 0, 1) +MAPPING(llock, LLOCK, 2, 0, 1) +MAPPING(scond, SCOND, 2, 1, 0) +MAPPING(dmb, DMB, 1, 0) +CONSTANT(LD, ld, 2, 0) /* For variable @src2 */ +MAPPING(ld, LD, 3, 1, 2, 0) +MAPPING(ld_s, LD, 3, 1, 2, 0) +CONSTANT(LD, ldb, 2, 0) /* For variable @src2 */ +MAPPING(ldb, LD, 3, 1, 2, 0) +MAPPING(ldb_s, LD, 3, 1, 2, 0) +CONSTANT(LD, ldh, 2, 0) /* For variable @src2 */ +MAPPING(ldh, LD, 3, 1, 2, 0) +MAPPING(ldh_s, LD, 3, 1, 2, 0) +CONSTANT(ST, st, 2, 0) /* For variable @src2 */ +MAPPING(st, ST, 3, 1, 2, 0) +MAPPING(st_s, ST, 3, 1, 2, 0) +MAPPING(stb_s, ST, 3, 1, 2, 0) +MAPPING(sth_s, ST, 3, 1, 2, 0) +MAPPING(norm, NORM, 2, 1, 0) +MAPPING(normh, NORMH, 2, 1, 0) +MAPPING(fls, FLS, 2, 1, 0) +MAPPING(ffs, FFS, 2, 1, 0) + +/* Long instruction */ + +SEMANTIC_FUNCTION(ADDL, 3) +SEMANTIC_FUNCTION(ADD1L, 3) +SEMANTIC_FUNCTION(ADD2L, 3) +SEMANTIC_FUNCTION(ADD3L, 3) +SEMANTIC_FUNCTION(ADCL, 3) +SEMANTIC_FUNCTION(SBCL, 3) +SEMANTIC_FUNCTION(SUBL, 3) +SEMANTIC_FUNCTION(SUB1L, 3) +SEMANTIC_FUNCTION(SUB2L, 3) +SEMANTIC_FUNCTION(SUB3L, 3) +SEMANTIC_FUNCTION(MAXL, 3) +SEMANTIC_FUNCTION(MINL, 3) +SEMANTIC_FUNCTION(CMPL, 2) +SEMANTIC_FUNCTION(ANDL, 3) +SEMANTIC_FUNCTION(ORL, 3) +SEMANTIC_FUNCTION(XORL, 3) +SEMANTIC_FUNCTION(MOVL, 2) +SEMANTIC_FUNCTION(MOVHL, 2) +SEMANTIC_FUNCTION(ASLL, 3) +SEMANTIC_FUNCTION(ASRL, 3) +SEMANTIC_FUNCTION(LSRL, 3) +SEMANTIC_FUNCTION(BICL, 3) +SEMANTIC_FUNCTION(BCLRL, 3) +SEMANTIC_FUNCTION(BMSKL, 3) +SEMANTIC_FUNCTION(BMSKNL, 3) +SEMANTIC_FUNCTION(BSETL, 3) +SEMANTIC_FUNCTION(BXORL, 3) +SEMANTIC_FUNCTION(ROLL, 2) +SEMANTIC_FUNCTION(SEXBL, 2) +SEMANTIC_FUNCTION(SEXHL, 2) +SEMANTIC_FUNCTION(BTSTL, 2) +SEMANTIC_FUNCTION(TSTL, 2) +SEMANTIC_FUNCTION(XBFUL, 3) +SEMANTIC_FUNCTION(AEXL, 2) +SEMANTIC_FUNCTION(LRL, 2) +SEMANTIC_FUNCTION(DIVL, 3) +SEMANTIC_FUNCTION(DIVUL, 3) +SEMANTIC_FUNCTION(REML, 3) +SEMANTIC_FUNCTION(REMUL, 3) +SEMANTIC_FUNCTION(ABSL, 2) +SEMANTIC_FUNCTION(SWAPL, 2) +SEMANTIC_FUNCTION(SWAPEL, 2) +SEMANTIC_FUNCTION(NOTL, 2) +SEMANTIC_FUNCTION(SETEQL, 3) +SEMANTIC_FUNCTION(BREQL, 3) +SEMANTIC_FUNCTION(SETNEL, 3) +SEMANTIC_FUNCTION(BRNEL, 3) +SEMANTIC_FUNCTION(SETLTL, 3) +SEMANTIC_FUNCTION(BRLTL, 3) +SEMANTIC_FUNCTION(SETGEL, 3) +SEMANTIC_FUNCTION(BRGEL, 3) +SEMANTIC_FUNCTION(SETLEL, 3) +SEMANTIC_FUNCTION(SETGTL, 3) +SEMANTIC_FUNCTION(BRLOL, 3) +SEMANTIC_FUNCTION(SETLOL, 3) +SEMANTIC_FUNCTION(BRHSL, 3) +SEMANTIC_FUNCTION(SETHSL, 3) +SEMANTIC_FUNCTION(EXL, 2) +SEMANTIC_FUNCTION(LLOCKL, 2) +SEMANTIC_FUNCTION(SCONDL, 2) +SEMANTIC_FUNCTION(LDL, 3) +SEMANTIC_FUNCTION(STL, 3) +SEMANTIC_FUNCTION(STDL, 3) +SEMANTIC_FUNCTION(POPL, 1) +SEMANTIC_FUNCTION(NORML, 2) +SEMANTIC_FUNCTION(FLSL, 2) +SEMANTIC_FUNCTION(FFSL, 2) +SEMANTIC_FUNCTION(DBNZL, 2) +SEMANTIC_FUNCTION(SEXWL, 2) +SEMANTIC_FUNCTION(PUSHL, 1) + +MAPPING(absl, ABSL, 2, 1, 0) +MAPPING(adcl, ADCL, 3, 1, 2, 0) +MAPPING(add1l, ADD1L, 3, 1, 2, 0) +MAPPING(add2l, ADD2L, 3, 1, 2, 0) +MAPPING(add3l, ADD3L, 3, 1, 2, 0) +MAPPING(addl, ADDL, 3, 1, 2, 0) +MAPPING(addl_s, ADDL, 3, 1, 2, 0) +MAPPING(aexl, AEXL, 2, 1, 0) +MAPPING(andl, ANDL, 3, 0, 1, 2) +MAPPING(andl_s, ANDL, 3, 0, 1, 2) +MAPPING(asll, ASLL, 3, 1, 2, 0) +MAPPING(asrl, ASRL, 3, 1, 2, 0) +MAPPING(bclrl, BCLRL, 3, 2, 0, 1) +MAPPING(bicl, BICL, 3, 0, 1, 2) +MAPPING(bmskl, BMSKL, 3, 2, 0, 1) +MAPPING(bmsknl, BMSKNL, 3, 2, 0, 1) + +MAPPING(breql, BREQL, 3, 0, 1, 2) +MAPPING(brnel, BRNEL, 3, 0, 1, 2) +MAPPING(brltl, BRLTL, 3, 0, 1, 2) +MAPPING(brgel, BRGEL, 3, 0, 1, 2) +MAPPING(brlol, BRLOL, 3, 0, 1, 2) +MAPPING(brhsl, BRHSL, 3, 0, 1, 2) +MAPPING(bsetl, BSETL, 3, 2, 0, 1) +MAPPING(btstl, BTSTL, 2, 1, 0) +MAPPING(bxorl, BXORL, 3, 2, 0, 1) +MAPPING(cmpl, CMPL, 2, 0, 1) + +MAPPING(divl, DIVL, 3, 2, 1, 0) +MAPPING(divul, DIVUL, 3, 2, 0, 1) + +MAPPING(exl, EXL, 2, 0, 1) +MAPPING(flsl, FLSL, 2, 1, 0) +MAPPING(ffsl, FFSL, 2, 1, 0) + +CONSTANT(LDL, ldl, 2, 0) /* For variable @src2 */ +MAPPING(ldl, LDL, 3, 1, 2, 0) + +CONSTANT(STL, stl, 2, 0) /* For variable @src2 */ +MAPPING(stl, STL, 3, 1, 2, 0) + +MAPPING(llockl, LLOCKL, 2, 0, 1) + +MAPPING(lrl, LRL, 2, 0, 1) + +CONSTANT(LSRL, lsrl, 2, 1) /* For variable @c */ +MAPPING(lsrl, LSRL, 3, 1, 2, 0) + +MAPPING(maxl, MAXL, 3, 1, 2, 0) +MAPPING(minl, MINL, 3, 1, 2, 0) + +MAPPING(movl, MOVL, 2, 0, 1) +MAPPING(movl_s, MOVL, 2, 0, 1) + +MAPPING(movhl, MOVHL, 2, 0, 1) +MAPPING(movhl_s, MOVHL, 2, 0, 1) + +MAPPING(norml, NORML, 2, 1, 0) +MAPPING(notl, NOTL, 2, 0, 1) +MAPPING(orl, ORL, 3, 0, 1, 2) +MAPPING(orl_s, ORL, 3, 0, 1, 2) +MAPPING(xorl, XORL, 3, 0, 1, 2) +MAPPING(rcmpl, CMPL, 2, 1, 0) +MAPPING(reml, REML, 3, 2, 1, 0) +MAPPING(remul, REMUL, 3, 2, 0, 1) + +MAPPING(roll, ROLL, 2, 1, 0) +MAPPING(rsubl, SUBL, 3, 2, 1, 0) +MAPPING(sbcl, SBCL, 3, 1, 2, 0) +MAPPING(scondl, SCONDL, 2, 1, 0) + +MAPPING(seteql, SETEQL, 3, 1, 2, 0) +MAPPING(setgel, SETGEL, 3, 1, 2, 0) +MAPPING(setgtl, SETGTL, 3, 1, 2, 0) +MAPPING(sethsl, SETHSL, 3, 1, 2, 0) +MAPPING(setlel, SETLEL, 3, 1, 2, 0) +MAPPING(setlol, SETLOL, 3, 1, 2, 0) +MAPPING(setltl, SETLTL, 3, 1, 2, 0) +MAPPING(setnel, SETNEL, 3, 1, 2, 0) + +MAPPING(sexbl, SEXBL, 2, 0, 1) +MAPPING(sexhl, SEXHL, 2, 0, 1) +MAPPING(sexwl, SEXWL, 2, 0, 1) + +CONSTANT(STDL, stdl, 2, 0) /* For variable @src2 */ +MAPPING(stdl, STDL, 3, 1, 2, 0) + +MAPPING(subl, SUBL, 3, 1, 2, 0) +MAPPING(subl_s, SUBL, 3, 1, 2, 0) +MAPPING(sub1l, SUB1L, 3, 1, 2, 0) +MAPPING(sub2l, SUB2L, 3, 1, 2, 0) +MAPPING(sub3l, SUB3L, 3, 1, 2, 0) + +MAPPING(swapl, SWAPL, 2, 1, 0) +MAPPING(swapel, SWAPEL, 2, 1, 0) +MAPPING(tstl, TSTL, 2, 0, 1) + +MAPPING(xbful, XBFUL, 3, 2, 1, 0) + +MAPPING(pushl_s, PUSHL, 1, 0) +MAPPING(pushdl_s, PUSHL, 1, 0) +MAPPING(popl_s, POPL, 1, 0) +MAPPING(popdl_s, POPL, 1, 0) + +MAPPING(dbnz, DBNZL, 2, 0, 1) diff --git a/target/arc/semfunc_mapping.def b/target/arc/semfunc_mapping.def index ab8d9ff123..746339d9e6 100644 --- a/target/arc/semfunc_mapping.def +++ b/target/arc/semfunc_mapping.def @@ -16,306 +16,10 @@ * this program. If not, see <http://www.gnu.org/licenses/>. */ -SEMANTIC_FUNCTION(FLAG, 1) -SEMANTIC_FUNCTION(KFLAG, 1) -SEMANTIC_FUNCTION(ADD, 3) -SEMANTIC_FUNCTION(ADD1, 3) -SEMANTIC_FUNCTION(ADD2, 3) -SEMANTIC_FUNCTION(ADD3, 3) -SEMANTIC_FUNCTION(ADC, 3) -SEMANTIC_FUNCTION(SBC, 3) -SEMANTIC_FUNCTION(NEG, 2) -SEMANTIC_FUNCTION(SUB, 3) -SEMANTIC_FUNCTION(SUB1, 3) -SEMANTIC_FUNCTION(SUB2, 3) -SEMANTIC_FUNCTION(SUB3, 3) -SEMANTIC_FUNCTION(MAX, 3) -SEMANTIC_FUNCTION(MIN, 3) -SEMANTIC_FUNCTION(CMP, 2) -SEMANTIC_FUNCTION(AND, 3) -SEMANTIC_FUNCTION(OR, 3) -SEMANTIC_FUNCTION(XOR, 3) -SEMANTIC_FUNCTION(MOV, 2) -SEMANTIC_FUNCTION(ASL, 3) -SEMANTIC_FUNCTION(ASR, 3) -SEMANTIC_FUNCTION(ASR8, 2) -SEMANTIC_FUNCTION(ASR16, 2) -SEMANTIC_FUNCTION(LSL16, 2) -SEMANTIC_FUNCTION(LSL8, 2) -SEMANTIC_FUNCTION(LSR, 3) -SEMANTIC_FUNCTION(LSR16, 2) -SEMANTIC_FUNCTION(LSR8, 2) -SEMANTIC_FUNCTION(BIC, 3) -SEMANTIC_FUNCTION(BCLR, 3) -SEMANTIC_FUNCTION(BMSK, 3) -SEMANTIC_FUNCTION(BMSKN, 3) -SEMANTIC_FUNCTION(BSET, 3) -SEMANTIC_FUNCTION(BXOR, 3) -SEMANTIC_FUNCTION(ROL, 2) -SEMANTIC_FUNCTION(ROL8, 2) -SEMANTIC_FUNCTION(ROR, 3) -SEMANTIC_FUNCTION(ROR8, 2) -SEMANTIC_FUNCTION(RLC, 2) -SEMANTIC_FUNCTION(RRC, 2) -SEMANTIC_FUNCTION(SEXB, 2) -SEMANTIC_FUNCTION(SEXH, 2) -SEMANTIC_FUNCTION(EXTB, 2) -SEMANTIC_FUNCTION(EXTH, 2) -SEMANTIC_FUNCTION(BTST, 2) -SEMANTIC_FUNCTION(TST, 2) -SEMANTIC_FUNCTION(XBFU, 3) -SEMANTIC_FUNCTION(AEX, 2) -SEMANTIC_FUNCTION(LR, 2) -SEMANTIC_FUNCTION(CLRI, 1) -SEMANTIC_FUNCTION(SETI, 1) -SEMANTIC_FUNCTION(NOP, 0) -SEMANTIC_FUNCTION(PREALLOC, 0) -SEMANTIC_FUNCTION(PREFETCH, 2) -SEMANTIC_FUNCTION(MPY, 3) -SEMANTIC_FUNCTION(MPYMU, 3) -SEMANTIC_FUNCTION(MPYM, 3) -SEMANTIC_FUNCTION(MPYU, 3) -SEMANTIC_FUNCTION(MPYUW, 3) -SEMANTIC_FUNCTION(MPYW, 3) -SEMANTIC_FUNCTION(DIV, 3) -SEMANTIC_FUNCTION(DIVU, 3) -SEMANTIC_FUNCTION(REM, 3) -SEMANTIC_FUNCTION(REMU, 3) -SEMANTIC_FUNCTION(MAC, 3) -SEMANTIC_FUNCTION(MACU, 3) -SEMANTIC_FUNCTION(MACD, 3) -SEMANTIC_FUNCTION(MACDU, 3) -SEMANTIC_FUNCTION(ABS, 2) -SEMANTIC_FUNCTION(SWAP, 2) -SEMANTIC_FUNCTION(SWAPE, 2) -SEMANTIC_FUNCTION(NOT, 2) -SEMANTIC_FUNCTION(BI, 1) -SEMANTIC_FUNCTION(BIH, 1) -SEMANTIC_FUNCTION(B, 1) -SEMANTIC_FUNCTION(B_S, 1) -SEMANTIC_FUNCTION(BBIT0, 3) -SEMANTIC_FUNCTION(BBIT1, 3) -SEMANTIC_FUNCTION(BL, 1) -SEMANTIC_FUNCTION(J, 1) -SEMANTIC_FUNCTION(JL, 1) -SEMANTIC_FUNCTION(SETEQ, 3) -SEMANTIC_FUNCTION(BREQ, 3) -SEMANTIC_FUNCTION(SETNE, 3) -SEMANTIC_FUNCTION(BRNE, 3) -SEMANTIC_FUNCTION(SETLT, 3) -SEMANTIC_FUNCTION(BRLT, 3) -SEMANTIC_FUNCTION(SETGE, 3) -SEMANTIC_FUNCTION(BRGE, 3) -SEMANTIC_FUNCTION(SETLE, 3) -SEMANTIC_FUNCTION(SETGT, 3) -SEMANTIC_FUNCTION(BRLO, 3) -SEMANTIC_FUNCTION(SETLO, 3) -SEMANTIC_FUNCTION(BRHS, 3) -SEMANTIC_FUNCTION(SETHS, 3) -SEMANTIC_FUNCTION(EX, 2) -SEMANTIC_FUNCTION(LLOCK, 2) -SEMANTIC_FUNCTION(LLOCKD, 2) -SEMANTIC_FUNCTION(SCOND, 2) -SEMANTIC_FUNCTION(SCONDD, 2) -SEMANTIC_FUNCTION(DMB, 1) -SEMANTIC_FUNCTION(LD, 3) -SEMANTIC_FUNCTION(LDD, 3) -SEMANTIC_FUNCTION(ST, 3) -SEMANTIC_FUNCTION(STD, 3) -SEMANTIC_FUNCTION(POP, 1) -SEMANTIC_FUNCTION(PUSH, 1) -SEMANTIC_FUNCTION(LP, 1) -SEMANTIC_FUNCTION(NORM, 2) -SEMANTIC_FUNCTION(NORMH, 2) -SEMANTIC_FUNCTION(FLS, 2) -SEMANTIC_FUNCTION(FFS, 2) +#ifdef TARGET_ARCV2 +#include "semfunc-v2_mapping.def" +#endif - -MAPPING(flag, FLAG, 1, 0) -MAPPING(kflag, KFLAG, 1, 0) -MAPPING(add, ADD, 3, 1, 2, 0) -MAPPING(add_s, ADD, 3, 1, 2, 0) -MAPPING(add1, ADD1, 3, 1, 2, 0) -MAPPING(add1_s, ADD1, 3, 1, 2, 0) -MAPPING(add2, ADD2, 3, 1, 2, 0) -MAPPING(add2_s, ADD2, 3, 1, 2, 0) -MAPPING(add3, ADD3, 3, 1, 2, 0) -MAPPING(add3_s, ADD3, 3, 1, 2, 0) -MAPPING(adc, ADC, 3, 1, 2, 0) -MAPPING(sbc, SBC, 3, 1, 2, 0) -MAPPING(neg, NEG, 2, 1, 0) -MAPPING(neg_s, NEG, 2, 1, 0) -MAPPING(sub, SUB, 3, 1, 2, 0) -MAPPING(sub_s, SUB, 3, 1, 2, 0) -MAPPING(rsub, SUB, 3, 2, 1, 0) -MAPPING(sub1, SUB1, 3, 1, 2, 0) -MAPPING(sub2, SUB2, 3, 1, 2, 0) -MAPPING(sub3, SUB3, 3, 1, 2, 0) -MAPPING(max, MAX, 3, 1, 2, 0) -MAPPING(min, MIN, 3, 1, 2, 0) -MAPPING(cmp, CMP, 2, 0, 1) -MAPPING(cmp_s, CMP, 2, 0, 1) -MAPPING(rcmp, CMP, 2, 1, 0) -MAPPING(and, AND, 3, 1, 2, 0) -MAPPING(and_s, AND, 3, 1, 2, 0) -MAPPING(or, OR, 3, 1, 2, 0) -MAPPING(or_s, OR, 3, 1, 2, 0) -MAPPING(xor, XOR, 3, 1, 2, 0) -MAPPING(xor_s, XOR, 3, 1, 2, 0) -MAPPING(mov, MOV, 2, 1, 0) -MAPPING(mov_s, MOV, 2, 1, 0) -CONSTANT(ASL, asl, 2, 268435457) /* For variable @c */ -MAPPING(asl, ASL, 3, 1, 2, 0) -CONSTANT(ASL, asl_s, 2, 268435457) /* For variable @c */ -MAPPING(asl_s, ASL, 3, 1, 2, 0) -CONSTANT(ASR, asr, 2, 1) /* For variable @c */ -MAPPING(asr, ASR, 3, 1, 2, 0) -CONSTANT(ASR, asr_s, 2, 1) /* For variable @c */ -MAPPING(asr_s, ASR, 3, 1, 2, 0) -MAPPING(asr8, ASR8, 2, 1, 0) -MAPPING(asr16, ASR16, 2, 1, 0) -MAPPING(lsl16, LSL16, 2, 1, 0) -MAPPING(lsl8, LSL8, 2, 1, 0) -CONSTANT(LSR, lsr, 2, 1) /* For variable @c */ -MAPPING(lsr, LSR, 3, 1, 2, 0) -CONSTANT(LSR, lsr_s, 2, 1) /* For variable @c */ -MAPPING(lsr_s, LSR, 3, 1, 2, 0) -MAPPING(lsr16, LSR16, 2, 1, 0) -MAPPING(lsr8, LSR8, 2, 1, 0) -MAPPING(bic, BIC, 3, 1, 2, 0) -MAPPING(bic_s, BIC, 3, 1, 2, 0) -MAPPING(bclr, BCLR, 3, 2, 1, 0) -MAPPING(bclr_s, BCLR, 3, 2, 1, 0) -MAPPING(bmsk, BMSK, 3, 2, 1, 0) -MAPPING(bmsk_s, BMSK, 3, 2, 1, 0) -MAPPING(bmskn, BMSKN, 3, 2, 1, 0) -MAPPING(bset, BSET, 3, 2, 1, 0) -MAPPING(bset_s, BSET, 3, 2, 1, 0) -MAPPING(bxor, BXOR, 3, 2, 1, 0) -MAPPING(rol, ROL, 2, 1, 0) -MAPPING(rol8, ROL8, 2, 1, 0) -CONSTANT(ROR, ror, 2, 1) /* For variable @n */ -MAPPING(ror, ROR, 3, 1, 2, 0) -MAPPING(ror8, ROR8, 2, 1, 0) -MAPPING(rlc, RLC, 2, 1, 0) -MAPPING(rrc, RRC, 2, 1, 0) -MAPPING(sexb, SEXB, 2, 0, 1) -MAPPING(sexb_s, SEXB, 2, 0, 1) -MAPPING(sexh, SEXH, 2, 0, 1) -MAPPING(sexh_s, SEXH, 2, 0, 1) -MAPPING(extb, EXTB, 2, 0, 1) -MAPPING(extb_s, EXTB, 2, 0, 1) -MAPPING(exth, EXTH, 2, 0, 1) -MAPPING(exth_s, EXTH, 2, 0, 1) -MAPPING(btst, BTST, 2, 1, 0) -MAPPING(btst_s, BTST, 2, 1, 0) -MAPPING(tst, TST, 2, 0, 1) -MAPPING(tst_s, TST, 2, 0, 1) -MAPPING(xbfu, XBFU, 3, 2, 1, 0) -MAPPING(aex, AEX, 2, 1, 0) -MAPPING(lr, LR, 2, 0, 1) -MAPPING(clri, CLRI, 1, 0) -MAPPING(seti, SETI, 1, 0) -MAPPING(nop, NOP, 0) -MAPPING(nop_s, NOP, 0) -MAPPING(prealloc, PREALLOC, 0) -CONSTANT(PREFETCH, prefetch, 1, 0) /* For variable @src2 */ -MAPPING(prefetch, PREFETCH, 2, 0, 1) -CONSTANT(PREFETCH, prefetchw, 1, 0) /* For variable @src2 */ -MAPPING(prefetchw, PREFETCH, 2, 0, 1) -MAPPING(mpy, MPY, 3, 1, 2, 0) -MAPPING(mpy_s, MPY, 3, 1, 2, 0) -MAPPING(mpymu, MPYMU, 3, 0, 1, 2) -MAPPING(mpym, MPYM, 3, 0, 1, 2) -MAPPING(mpyu, MPYU, 3, 1, 2, 0) -MAPPING(mpyuw, MPYUW, 3, 0, 1, 2) -MAPPING(mpyuw_s, MPYUW, 3, 0, 1, 2) -MAPPING(mpyw, MPYW, 3, 0, 1, 2) -MAPPING(mpyw_s, MPYW, 3, 0, 1, 2) -MAPPING(div, DIV, 3, 2, 1, 0) -MAPPING(divu, DIVU, 3, 2, 0, 1) -MAPPING(rem, REM, 3, 2, 1, 0) -MAPPING(remu, REMU, 3, 2, 0, 1) -MAPPING(mac, MAC, 3, 1, 2, 0) -MAPPING(macu, MACU, 3, 1, 2, 0) -MAPPING(macd, MACD, 3, 1, 2, 0) -MAPPING(macdu, MACDU, 3, 1, 2, 0) -MAPPING(abs, ABS, 2, 1, 0) -MAPPING(abs_s, ABS, 2, 1, 0) -MAPPING(swap, SWAP, 2, 1, 0) -MAPPING(swape, SWAPE, 2, 1, 0) -MAPPING(not, NOT, 2, 0, 1) -MAPPING(not_s, NOT, 2, 0, 1) -MAPPING(bi, BI, 1, 0) -MAPPING(bih, BIH, 1, 0) -MAPPING(b, B, 1, 0) -MAPPING(beq_s, B_S, 1, 0) -MAPPING(bne_s, B_S, 1, 0) -MAPPING(bgt_s, B_S, 1, 0) -MAPPING(bge_s, B_S, 1, 0) -MAPPING(blt_s, B_S, 1, 0) -MAPPING(ble_s, B_S, 1, 0) -MAPPING(bhi_s, B_S, 1, 0) -MAPPING(bhs_s, B_S, 1, 0) -MAPPING(blo_s, B_S, 1, 0) -MAPPING(bls_s, B_S, 1, 0) -MAPPING(b_s, B_S, 1, 0) -MAPPING(bbit0, BBIT0, 3, 0, 1, 2) -MAPPING(bbit1, BBIT1, 3, 0, 1, 2) -MAPPING(bl, BL, 1, 0) -MAPPING(bl_s, BL, 1, 0) -MAPPING(j, J, 1, 0) -MAPPING(j_s, J, 1, 0) -MAPPING(jeq_s, J, 1, 0) -MAPPING(jne_s, J, 1, 0) -MAPPING(jl, JL, 1, 0) -MAPPING(jl_s, JL, 1, 0) -MAPPING(seteq, SETEQ, 3, 1, 2, 0) -MAPPING(breq, BREQ, 3, 0, 1, 2) -MAPPING(breq_s, BREQ, 3, 0, 1, 2) -MAPPING(setne, SETNE, 3, 1, 2, 0) -MAPPING(brne, BRNE, 3, 0, 1, 2) -MAPPING(brne_s, BRNE, 3, 0, 1, 2) -MAPPING(setlt, SETLT, 3, 1, 2, 0) -MAPPING(brlt, BRLT, 3, 0, 1, 2) -MAPPING(setge, SETGE, 3, 1, 2, 0) -MAPPING(brge, BRGE, 3, 0, 1, 2) -MAPPING(setle, SETLE, 3, 1, 2, 0) -MAPPING(setgt, SETGT, 3, 1, 2, 0) -MAPPING(brlo, BRLO, 3, 0, 1, 2) -MAPPING(setlo, SETLO, 3, 1, 2, 0) -MAPPING(brhs, BRHS, 3, 0, 1, 2) -MAPPING(seths, SETHS, 3, 1, 2, 0) -MAPPING(ex, EX, 2, 0, 1) -MAPPING(llock, LLOCK, 2, 0, 1) -MAPPING(llockd, LLOCKD, 2, 0, 1) -MAPPING(scond, SCOND, 2, 1, 0) -MAPPING(scondd, SCONDD, 2, 1, 0) -MAPPING(dmb, DMB, 1, 0) -CONSTANT(LD, ld, 2, 0) /* For variable @src2 */ -MAPPING(ld, LD, 3, 1, 2, 0) -MAPPING(ld_s, LD, 3, 1, 2, 0) -MAPPING(ldb_s, LD, 3, 1, 2, 0) -MAPPING(ldh_s, LD, 3, 1, 2, 0) -MAPPING(ldw_s, LD, 3, 1, 2, 0) -CONSTANT(LD, ldi, 2, 0) /* For variable @src2 */ -MAPPING(ldi, LD, 3, 1, 2, 0) -CONSTANT(LD, ldi_s, 2, 0) /* For variable @src2 */ -MAPPING(ldi_s, LD, 3, 1, 2, 0) -CONSTANT(LDD, ldd, 2, 0) /* For variable @src2 */ -MAPPING(ldd, LDD, 3, 1, 2, 0) -CONSTANT(ST, st, 2, 0) /* For variable @src2 */ -MAPPING(st, ST, 3, 1, 2, 0) -MAPPING(st_s, ST, 3, 1, 2, 0) -MAPPING(stb_s, ST, 3, 1, 2, 0) -MAPPING(sth_s, ST, 3, 1, 2, 0) -MAPPING(stw_s, ST, 3, 1, 2, 0) -CONSTANT(STD, std, 2, 0) /* For variable @src2 */ -MAPPING(std, STD, 3, 1, 2, 0) -MAPPING(pop_s, POP, 1, 0) -MAPPING(push_s, PUSH, 1, 0) -MAPPING(lp, LP, 1, 0) -MAPPING(norm, NORM, 2, 1, 0) -MAPPING(normh, NORMH, 2, 1, 0) -MAPPING(fls, FLS, 2, 1, 0) -MAPPING(ffs, FFS, 2, 1, 0) +#ifdef TARGET_ARCV3 +#include "semfunc-v3_mapping.def" +#endif -- 2.20.1
next prev parent reply other threads:[~2021-04-05 14:32 UTC|newest] Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-05 14:31 *** ARC port for review *** cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` [PATCH 01/27] arc: Add initial core cpu files cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-07 0:47 ` Richard Henderson 2021-04-07 0:47 ` Richard Henderson 2021-04-05 14:31 ` [PATCH 02/27] arc: Decoder code cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-07 1:25 ` Richard Henderson 2021-04-07 1:25 ` Richard Henderson 2021-04-05 14:31 ` [PATCH 03/27] arc: Opcode definitions table cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` [PATCH 04/27] arc: TCG and decoder glue code and helpers cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-07 2:37 ` Richard Henderson 2021-04-07 2:37 ` Richard Henderson 2021-04-05 14:31 ` [PATCH 05/27] arc: TCG instruction generator and hand-definitions cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-07 3:52 ` Richard Henderson 2021-04-07 3:52 ` Richard Henderson 2021-04-07 16:47 ` Richard Henderson 2021-04-07 16:47 ` Richard Henderson 2021-04-05 14:31 ` [PATCH 06/27] arc: semfunc.c tcg code generator cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-07 17:14 ` Richard Henderson 2021-04-07 17:14 ` Richard Henderson 2021-04-07 18:33 ` Peter Maydell 2021-04-07 18:33 ` Peter Maydell 2021-04-05 14:31 ` [PATCH 07/27] arc: TCG instruction definitions cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-07 19:38 ` Richard Henderson 2021-04-07 19:38 ` Richard Henderson 2021-04-08 0:20 ` Richard Henderson 2021-04-08 0:20 ` Richard Henderson 2021-04-12 14:27 ` Cupertino Miranda 2021-04-12 14:27 ` Cupertino Miranda 2021-04-05 14:31 ` [PATCH 08/27] arc: Add BCR and AUX registers implementation cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` [PATCH 09/27] arc: Add IRQ and timer subsystem support cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` [PATCH 10/27] arc: Add memory management unit (MMU) support cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` [PATCH 11/27] arc: Add memory protection unit (MPU) support cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` [PATCH 12/27] arc: Add gdbstub and XML for debugging support cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` [PATCH 13/27] arc: Add Synopsys ARC emulation boards cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` [PATCH 14/27] arc: Add support for ARCv2 cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-07 20:30 ` Richard Henderson 2021-04-07 20:30 ` Richard Henderson 2021-04-05 14:31 ` [PATCH 15/27] tests/tcg: ARC: Add TCG instruction definition tests cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-07 20:38 ` Richard Henderson 2021-04-07 20:38 ` Richard Henderson 2021-04-05 14:31 ` [PATCH 16/27] tests/acceptance: ARC: Add linux boot testing cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-07 20:40 ` Richard Henderson 2021-04-07 20:40 ` Richard Henderson 2021-04-05 14:31 ` [PATCH 17/27] arcv3: Core cpu file changes cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` [PATCH 18/27] arcv3: Decoder code cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-07 23:07 ` Richard Henderson 2021-04-07 23:07 ` Richard Henderson 2021-04-05 14:31 ` [PATCH 19/27] arcv3: Opcode definition table cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda [this message] 2021-04-05 14:31 ` [PATCH 20/27] arcv3: TCG, decoder glue code and helper changes cupertinomiranda 2021-04-07 23:36 ` Richard Henderson 2021-04-07 23:36 ` Richard Henderson 2021-04-05 14:31 ` [PATCH 21/27] arcv3: TCG instruction generator changes cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-07 23:43 ` Richard Henderson 2021-04-07 23:43 ` Richard Henderson 2021-04-05 14:31 ` [PATCH 22/27] arcv3: TCG instruction definitions cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-07 23:48 ` Richard Henderson 2021-04-07 23:48 ` Richard Henderson 2021-04-05 14:31 ` [PATCH 23/27] arcv3: BCR and AUX register changes cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` [PATCH 24/27] arcv3: IRQ changes and new MMUv6 WIP cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` [PATCH 25/27] arcv3: gdbstub changes and new XML files cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` [PATCH 26/27] arcv3: board changes cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-05 14:31 ` [PATCH 27/27] arcv3: Add support for ARCv3 cupertinomiranda 2021-04-05 14:31 ` cupertinomiranda 2021-04-06 23:47 ` *** ARC port for review *** Richard Henderson 2021-04-06 23:47 ` Richard Henderson 2021-04-12 14:25 ` Cupertino Miranda 2021-04-12 14:25 ` Cupertino Miranda
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210405143138.17016-21-cupertinomiranda@gmail.com \ --to=cupertinomiranda@gmail.com \ --cc=claziss@synopsys.com \ --cc=cmiranda@synopsys.com \ --cc=linux-snps-arc@lists.infradead.org \ --cc=qemu-devel@nongnu.org \ --cc=shahab@synopsys.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.