// -*- mode:c++ -*-

// Copyright (c) 2010-2012, 2014 ARM Limited
// All rights reserved
//
// The license below extends only to copyright in the software and shall
// not be construed as granting a license to any other intellectual
// property including but not limited to intellectual property relating
// to a hardware implementation of the functionality of the software
// licensed hereunder.  You may use the software subject to the license
// terms below provided that you ensure that this notice is replicated
// unmodified and in its entirety in all distributions of the software,
// modified or unmodified, in source code or in binary form.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met: redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer;
// redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution;
// neither the name of the copyright holders nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

let {{

    header_output = ""
    decoder_output = ""
    exec_output = ""

    # B, BL
    for (mnem, link) in (("b", False), ("bl", True)):
        bCode = '''
        NPC = (uint32_t)(PC + imm);
        '''
        br_tgt_code = '''pcs.instNPC((uint32_t)(branchPC.instPC() + imm));'''
        instFlags = ["IsDirectControl"]
        if (link):
            bCode += '''
                if (Thumb)
                    LR = PC | 1;
                else
                    LR = PC - 4;
            '''
            instFlags += ["IsCall"]


        bIop = InstObjParams(mnem, mnem.capitalize(), "BranchImmCond",
                             {"code": bCode, "predicate_test": predicateTest,
                             "brTgtCode" : br_tgt_code}, instFlags)
        header_output += BranchImmCondDeclare.subst(bIop)
        decoder_output += BranchImmCondConstructor.subst(bIop) + \
                       BranchTarget.subst(bIop)
        exec_output += PredOpExecute.subst(bIop)

    # BX, BLX
    blxCode = '''
    %(link)s
    // Switch modes
    %(branch)s
    '''

    blxList = (("blx", True, True),
               ("blx", False, True),
               ("bx", False, False))

    for (mnem, imm, link) in blxList:
        Name = mnem.capitalize()
        isRasPop = 0
        if imm:
            Name += "Imm"
            # Since we're switching ISAs, the target ISA will be the opposite
            # of the current ISA. Thumb is whether the target is ARM.
            newPC = '(uint32_t)(Thumb ? (roundDown(PC, 4) + imm) : (PC + imm))'
            br_tgt_code = '''
            pcs.instNPC((uint32_t)(branchPC.thumb() ? (roundDown(branchPC.instPC(),4) + imm) :
                                (branchPC.instPC() + imm)));
            '''
            base = "BranchImmCond"
            declare = BranchImmCondDeclare
            constructor = BranchImmCondConstructor
            instFlags = ["IsDirectControl"]
        else:
            Name += "Reg"
            newPC = 'Op1'
            br_tgt_code = ''
            base = "BranchRegCond"
            declare = BranchRegCondDeclare
            constructor = BranchRegCondConstructor
            instFlags = ["IsIndirectControl"]
        if link and imm:
            linkStr = '''
                // The immediate version of the blx thumb instruction
                // is 32 bits wide, but "next pc" doesn't reflect that
                // so we don't want to substract 2 from it at this point
                if (Thumb)
                    LR = PC  | 1;
                else
                    LR = PC - 4;
            '''
            instFlags += ["IsCall"]
        elif link:
            linkStr = '''
                if (Thumb)
                    LR = (PC - 2) | 1;
                else
                    LR = PC - 4;
            '''
            instFlags += ["IsCall"]
        else:
            linkStr = ""
            isRasPop = "op1 == INTREG_LR"

        if imm and link: #blx with imm
            branchStr = '''
                NextThumb = !Thumb;
                NPC = %(newPC)s;
            '''
            br_tgt_code = '''pcs.nextThumb(!branchPC.thumb());\n''' + \
                          br_tgt_code
        else:
            branchStr = "IWNPC = %(newPC)s;"
        branchStr = branchStr % { "newPC" : newPC }

        code = blxCode % {"link": linkStr,
                          "newPC": newPC,
                          "branch": branchStr}
        blxIop = InstObjParams(mnem, Name, base,
                               {"code": code, "brTgtCode" : br_tgt_code,
                                "predicate_test": predicateTest,
                                "is_ras_pop" : isRasPop }, instFlags)
        header_output += declare.subst(blxIop)
        decoder_output += constructor.subst(blxIop)
        exec_output += PredOpExecute.subst(blxIop)
        if imm:
            decoder_output += BranchTarget.subst(blxIop)

    bxjcode = '''
    HSTR hstr = Hstr;
    CPSR cpsr = Cpsr;

    if (ArmSystem::haveVirtualization(xc->tcBase()) && hstr.tjdbx &&
        !isSecure(xc->tcBase()) && (cpsr.mode != MODE_HYP)) {
       fault = std::make_shared<HypervisorTrap>(machInst, op1, EC_TRAPPED_BXJ);
    }
    IWNPC = Op1;
    '''

    bxjIop = InstObjParams("bxj", "BxjReg", "BranchRegCond",
                           {"code": bxjcode,
                            "predicate_test": predicateTest,
                            "is_ras_pop": "op1 == INTREG_LR" },
                           ["IsIndirectControl"])
    header_output += BranchRegCondDeclare.subst(bxjIop)
    decoder_output += BranchRegCondConstructor.subst(bxjIop)
    exec_output += PredOpExecute.subst(bxjIop)

    #CBNZ, CBZ. These are always unconditional as far as predicates
    for (mnem, test) in (("cbz", "=="), ("cbnz", "!=")):
        code = 'NPC = (uint32_t)(PC + imm);\n'
        br_tgt_code = '''pcs.instNPC((uint32_t)(branchPC.instPC() + imm));'''
        predTest = "Op1 %(test)s 0" % {"test": test}
        iop = InstObjParams(mnem, mnem.capitalize(), "BranchImmReg",
                            {"code": code, "predicate_test": predTest,
                            "brTgtCode" : br_tgt_code},
                            ["IsDirectControl"])
        header_output += BranchImmRegDeclare.subst(iop)
        decoder_output += BranchImmRegConstructor.subst(iop) + \
                          BranchTarget.subst(iop)
        exec_output += PredOpExecute.subst(iop)

    #TBB, TBH
    for isTbh in (0, 1):
        if isTbh:
            eaCode = '''
            unsigned memAccessFlags = ArmISA::TLB::AllowUnaligned |
                                      ArmISA::TLB::AlignHalfWord;
            EA = Op1 + Op2 * 2
            '''
            accCode = 'NPC = PC + 2 * (Mem_uh);\n'
            mnem = "tbh"
        else:
            eaCode = '''
            unsigned memAccessFlags = ArmISA::TLB::AllowUnaligned |
                                      ArmISA::TLB::AlignByte;
            EA = Op1 + Op2
            '''
            accCode = 'NPC = PC + 2 * (Mem_ub)'
            mnem = "tbb"
        iop = InstObjParams(mnem, mnem.capitalize(), "BranchRegReg",
                            {'ea_code': eaCode,
                             'memacc_code': accCode,
                             'predicate_test': predicateTest},
                             ["IsIndirectControl"])
        header_output += BranchTableDeclare.subst(iop)
        decoder_output += BranchRegRegConstructor.subst(iop)
        exec_output += LoadExecute.subst(iop) + \
                       LoadInitiateAcc.subst(iop) + \
                       LoadCompleteAcc.subst(iop)
}};
