Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -224,3 +224,4 @@ add_subdirectory(ELF) add_subdirectory(MinGW) add_subdirectory(wasm) + Index: ELF/Arch/Hexagon.cpp =================================================================== --- /dev/null +++ ELF/Arch/Hexagon.cpp @@ -0,0 +1,297 @@ +//===- Hexagon.cpp ------------------------------------------------------------===// +// +// The LLVM Linker +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "InputFiles.h" +#include "Symbols.h" +#include "Target.h" +#include "HexagonDepDefines.h" +#include "HexagonDepMask.h" +#include "HexagonRelocationInfo.h" +#include "lld/Common/ErrorHandler.h" +#include "llvm/BinaryFormat/ELF.h" +#include "llvm/Object/ELF.h" +#include "llvm/Support/Endian.h" + +using namespace llvm; +using namespace llvm::object; +using namespace llvm::support::endian; +using namespace llvm::ELF; +using namespace lld; +using namespace lld::elf; +using namespace llvm::Hexagon; + + +namespace { +class HexagonReloc final : public TargetInfo { +public: + uint32_t calcEFlags() const override; + RelExpr getRelExpr(RelType Type, const Symbol &S, + const uint8_t *Loc) const override; + void relocateOne(uint8_t *Loc, RelType Type, uint64_t Val) const override; +}; +} // namespace + +// ------------------- +// ------------------- +// Helper function to find the BitMask from the traversing the Encoding file +// created from ISet. +static uint32_t findBitMaskHelper(uint32_t Insn, HexagonInstruction *Encodings, + int32_t NumInsns) { + for (int32_t I = 0; I < NumInsns; I++) { + if (((Insn & 0xc000) == 0) && !(Encodings[I].isDuplex)) + continue; + + if (((Insn & 0xc000) != 0) && (Encodings[I].isDuplex)) + continue; + + if (((Encodings[I].insnMask) & Insn) == Encodings[I].insnCmpMask) { + return Encodings[I].insnBitMask; + } + } + llvm_unreachable("Cannot find encoding for Instruction!"); +} + +// Find the BitMask by calling the Helper function. In future this function may +// take the architecture and traverse different encodings per architecture. +static uint32_t findMask(uint32_t I) { + return findBitMaskHelper((uint32_t)I, InstructionEncodings, + sizeof(InstructionEncodings) / + sizeof(HexagonInstruction)); +} + +// Scatters the Value pData over the Mask. +static uint32_t applyMask(uint32_t Mask, uint32_t Data) { + uint32_t Result = 0; + size_t Off = 0; + + for (size_t Bit = 0; Bit != sizeof(uint32_t) * 8; ++Bit) { + const bool ValBit = (Data >> Off) & 1; + const bool MaskBit = (Mask >> Bit) & 1; + if (MaskBit) { + Result |= (ValBit << Bit); + ++Off; + } + } + return Result; +} + +// The Relocation helper function that computes the Instruction bits with the +// relocation applied. +template +static uint32_t doRelocHelper(uint32_t RelocType, uint32_t Instruction, + T Value) { + // If the relocation needs the value to be shifted, then lets shift. + T ValueAfterShift = Value >> Relocs[RelocType].Shift; + // Truncate the value to the effective bits specified by the relocation. + uint32_t EffectiveValue = + ValueAfterShift & + (~0U >> (32 - Relocs[RelocType].EffectiveBits)); + // Get the BitMask. + uint32_t BitMask = Relocs[RelocType].BitMask; + if (BitMask == 0) + BitMask = findMask(Instruction); + Instruction &= ~BitMask; + EffectiveValue = applyMask(BitMask, EffectiveValue); + return EffectiveValue | Instruction; +} + + +// This function finds the Mask for the Instruction and applies the Mask. +uint32_t doReloc(uint32_t RelocType, uint32_t Instruction, uint32_t Value) { + if (Relocs[RelocType].IsSigned) + return doRelocHelper(RelocType, Instruction, Value); + else + return doRelocHelper(RelocType, Instruction, Value); +} + +/* Verify the Range specified by the ABI */ +bool verifyRange(uint32_t RelocType, uint32_t Value) { + if (Relocs[RelocType].IsSigned) { + int32_t Result = Value; + int32_t Range = 1LL << (Relocs[RelocType].EffectiveBits - 1); + if (Result > (Range - 1) || Result < -Range) + return false; + return true; + } + uint32_t Result = Value; + uint32_t Range = 1LL << Relocs[RelocType].EffectiveBits; + if (Result > Range - 1) + return false; + return true; +} + +/* Helper function to Verify alignment */ +bool verifyAlignment(uint32_t RelocType, uint32_t Value) { + return Value % Relocs[RelocType].Alignment == 0; +} + +/* Check if the result will be Truncated */ +bool isTruncated(uint32_t RelocType, uint32_t Value) { + if (Relocs[RelocType].IsSigned) + return false; + return Value & (~0U >> (32 - Relocs[RelocType].EffectiveBits)); +} + +// ------------------- +// ------------------- + +// Support V60 only at the moment. +uint32_t HexagonReloc::calcEFlags() const { + assert(!ObjectFiles.empty()); + return 0x60; +} + + +RelExpr HexagonReloc::getRelExpr(RelType Type, const Symbol &S, + const uint8_t *Loc) const { + switch (Type) { + case R_HEX_B22_PCREL: + case R_HEX_B15_PCREL: + case R_HEX_B7_PCREL: + case R_HEX_B13_PCREL: + case R_HEX_B9_PCREL: + case R_HEX_B32_PCREL_X: + case R_HEX_B22_PCREL_X: + case R_HEX_B15_PCREL_X: + case R_HEX_B13_PCREL_X: + case R_HEX_B9_PCREL_X: + case R_HEX_B7_PCREL_X: + case R_HEX_32_PCREL: + case R_HEX_PLT_B22_PCREL: + case R_HEX_GD_PLT_B22_PCREL: + case R_HEX_6_PCREL_X: + case R_HEX_LD_PLT_B22_PCREL: + case R_HEX_GD_PLT_B22_PCREL_X: + case R_HEX_GD_PLT_B32_PCREL_X: + case R_HEX_LD_PLT_B22_PCREL_X: + case R_HEX_LD_PLT_B32_PCREL_X: + return R_PC; + default: + return R_ABS; + } +} + +void HexagonReloc::relocateOne(uint8_t *Loc, RelType Type, uint64_t Val) const { + uint32_t INSN, VAL = 0; + switch (Type) { + case R_HEX_NONE: + case R_HEX_B22_PCREL: + case R_HEX_B15_PCREL: + case R_HEX_B7_PCREL: + case R_HEX_LO16: + case R_HEX_HI16: + case R_HEX_32: + case R_HEX_16: + case R_HEX_8: + case R_HEX_GPREL16_0: + case R_HEX_GPREL16_1: + case R_HEX_GPREL16_2: + case R_HEX_GPREL16_3: + case R_HEX_HL16: + case R_HEX_B13_PCREL: + case R_HEX_B9_PCREL: + case R_HEX_B32_PCREL_X: + case R_HEX_32_6_X: + case R_HEX_B22_PCREL_X: + case R_HEX_B15_PCREL_X: + case R_HEX_B13_PCREL_X: + case R_HEX_B9_PCREL_X: + case R_HEX_B7_PCREL_X: + case R_HEX_16_X: + case R_HEX_12_X: + case R_HEX_11_X: + case R_HEX_10_X: + case R_HEX_9_X: + case R_HEX_8_X: + case R_HEX_7_X: + case R_HEX_6_X: + case R_HEX_32_PCREL: + case R_HEX_COPY: + case R_HEX_GLOB_DAT: + case R_HEX_JMP_SLOT: + case R_HEX_RELATIVE: + case R_HEX_PLT_B22_PCREL: + case R_HEX_GOTREL_LO16: + case R_HEX_GOTREL_HI16: + case R_HEX_GOTREL_32: + case R_HEX_GOT_LO16: + case R_HEX_GOT_HI16: + case R_HEX_GOT_32: + case R_HEX_GOT_16: + case R_HEX_DTPMOD_32: + case R_HEX_DTPREL_LO16: + case R_HEX_DTPREL_HI16: + case R_HEX_DTPREL_32: + case R_HEX_DTPREL_16: + case R_HEX_GD_PLT_B22_PCREL: + case R_HEX_GD_GOT_LO16: + case R_HEX_GD_GOT_HI16: + case R_HEX_GD_GOT_32: + case R_HEX_GD_GOT_16: + case R_HEX_IE_LO16: + case R_HEX_IE_HI16: + case R_HEX_IE_32: + case R_HEX_IE_GOT_LO16: + case R_HEX_IE_GOT_HI16: + case R_HEX_IE_GOT_32: + case R_HEX_IE_GOT_16: + case R_HEX_TPREL_LO16: + case R_HEX_TPREL_HI16: + case R_HEX_TPREL_32: + case R_HEX_TPREL_16: + case R_HEX_6_PCREL_X: + case R_HEX_GOTREL_32_6_X: + case R_HEX_GOTREL_16_X: + case R_HEX_GOTREL_11_X: + case R_HEX_GOT_32_6_X: + case R_HEX_GOT_16_X: + case R_HEX_GOT_11_X: + case R_HEX_DTPREL_32_6_X: + case R_HEX_DTPREL_16_X: + case R_HEX_DTPREL_11_X: + case R_HEX_GD_GOT_32_6_X: + case R_HEX_GD_GOT_16_X: + case R_HEX_GD_GOT_11_X: + case R_HEX_IE_32_6_X: + case R_HEX_IE_16_X: + case R_HEX_IE_GOT_32_6_X: + case R_HEX_IE_GOT_16_X: + case R_HEX_IE_GOT_11_X: + case R_HEX_TPREL_32_6_X: + case R_HEX_TPREL_16_X: + case R_HEX_TPREL_11_X: + case R_HEX_LD_PLT_B22_PCREL: + case R_HEX_LD_GOT_LO16: + case R_HEX_LD_GOT_HI16: + case R_HEX_LD_GOT_32: + case R_HEX_LD_GOT_16: + case R_HEX_LD_GOT_32_6_X: + case R_HEX_LD_GOT_16_X: + case R_HEX_LD_GOT_11_X: + case R_HEX_23_REG: + case R_HEX_GD_PLT_B22_PCREL_X: + case R_HEX_GD_PLT_B32_PCREL_X: + case R_HEX_LD_PLT_B22_PCREL_X: + case R_HEX_LD_PLT_B32_PCREL_X: + case R_HEX_27_REG: + INSN = read32le(Loc); + VAL = static_cast(Val); + INSN = doReloc(Type, INSN, VAL); + write32le(Loc, INSN); + break; + + default: + error(getErrorLocation(Loc) + "unrecognized reloc " + toString(Type)); + } +} + +TargetInfo *elf::getHexagonTargetInfo() { + static HexagonReloc Target; + return &Target; +} Index: ELF/CMakeLists.txt =================================================================== --- ELF/CMakeLists.txt +++ ELF/CMakeLists.txt @@ -12,6 +12,7 @@ Arch/AMDGPU.cpp Arch/ARM.cpp Arch/AVR.cpp + Arch/Hexagon.cpp Arch/Mips.cpp Arch/MipsArchTree.cpp Arch/PPC.cpp Index: ELF/HexagonDepDefines.h =================================================================== --- /dev/null +++ ELF/HexagonDepDefines.h @@ -0,0 +1,40 @@ +//===- HexagonDepDefines.h - Relocation Application Helper-----------------===// +// +// The LLVM Linker +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +// +//===----------------------------------------------------------------------===// +#ifndef HEXAGON_DEP_DEFINES_H +#define HEXAGON_DEP_DEFINES_H + +#include + +typedef struct { + uint32_t insnMask; + uint32_t insnCmpMask; + uint32_t insnBitMask; + bool isDuplex; +} HexagonInstruction; + +/* The structure mirrors the information for relocations specified in the + * Hexagon ABI Document. Any changes or additions should be reflected in the ABI + * document, this structure is shared between the Linker and LLVM. The exact + * copy of the structure is defined in HexagonRelocationFunctions.h */ +typedef struct RelocationDescription { + const char *Name; + const uint32_t Type; + const uint32_t EffectiveBits; + const uint32_t BitMask; + const uint32_t Alignment; + const uint32_t Shift; + const bool VerifyRange; + const bool VerifyAlignment; + const bool IsSigned; +} HexagonRelocationInfo; + + +#endif + Index: ELF/HexagonDepMask.h =================================================================== --- /dev/null +++ ELF/HexagonDepMask.h @@ -0,0 +1,2672 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Linker +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// Automatically generated file, do not edit! +//===----------------------------------------------------------------------===// + + +HexagonInstruction InstructionEncodings[] = { +{ /*Tag:A2_addi*/ + /*Rd32=add(Rs32,#s16)*/ + 0xf0000000, + 0xb0000000, + 0x0fe03fe0, + 0 }, +{ /*Tag:A2_andir*/ + /*Rd32=and(Rs32,#s10)*/ + 0xffc00000, + 0x76000000, + 0x00203fe0, + 0 }, +{ /*Tag:A2_combineii*/ + /*Rdd32=combine(#s8,#S8)*/ + 0xff800000, + 0x7c000000, + 0x00001fe0, + 0 }, +{ /*Tag:A2_orir*/ + /*Rd32=or(Rs32,#s10)*/ + 0xffc00000, + 0x76800000, + 0x00203fe0, + 0 }, +{ /*Tag:A2_paddif*/ + /*if (!Pu4) Rd32=add(Rs32,#s8)*/ + 0xff802000, + 0x74800000, + 0x00001fe0, + 0 }, +{ /*Tag:A2_paddifnew*/ + /*if (!Pu4.new) Rd32=add(Rs32,#s8)*/ + 0xff802000, + 0x74802000, + 0x00001fe0, + 0 }, +{ /*Tag:A2_paddit*/ + /*if (Pu4) Rd32=add(Rs32,#s8)*/ + 0xff802000, + 0x74000000, + 0x00001fe0, + 0 }, +{ /*Tag:A2_padditnew*/ + /*if (Pu4.new) Rd32=add(Rs32,#s8)*/ + 0xff802000, + 0x74002000, + 0x00001fe0, + 0 }, +{ /*Tag:A2_subri*/ + /*Rd32=sub(#s10,Rs32)*/ + 0xffc00000, + 0x76400000, + 0x00203fe0, + 0 }, +{ /*Tag:A2_tfrsi*/ + /*Rd32=#s16*/ + 0xff000000, + 0x78000000, + 0x00df3fe0, + 0 }, +{ /*Tag:A4_cmpbgtui*/ + /*Pd4=cmpb.gtu(Rs32,#u7)*/ + 0xff601018, + 0xdd400000, + 0x00000fe0, + 0 }, +{ /*Tag:A4_cmpheqi*/ + /*Pd4=cmph.eq(Rs32,#s8)*/ + 0xff600018, + 0xdd000008, + 0x00001fe0, + 0 }, +{ /*Tag:A4_cmphgti*/ + /*Pd4=cmph.gt(Rs32,#s8)*/ + 0xff600018, + 0xdd200008, + 0x00001fe0, + 0 }, +{ /*Tag:A4_cmphgtui*/ + /*Pd4=cmph.gtu(Rs32,#u7)*/ + 0xff601018, + 0xdd400008, + 0x00000fe0, + 0 }, +{ /*Tag:A4_combineii*/ + /*Rdd32=combine(#s8,#U6)*/ + 0xff800000, + 0x7c800000, + 0x001f2000, + 0 }, +{ /*Tag:A4_combineir*/ + /*Rdd32=combine(#s8,Rs32)*/ + 0xff602000, + 0x73202000, + 0x00001fe0, + 0 }, +{ /*Tag:A4_combineri*/ + /*Rdd32=combine(Rs32,#s8)*/ + 0xff602000, + 0x73002000, + 0x00001fe0, + 0 }, +{ /*Tag:A4_rcmpeqi*/ + /*Rd32=cmp.eq(Rs32,#s8)*/ + 0xff602000, + 0x73402000, + 0x00001fe0, + 0 }, +{ /*Tag:A4_rcmpneqi*/ + /*Rd32=!cmp.eq(Rs32,#s8)*/ + 0xff602000, + 0x73602000, + 0x00001fe0, + 0 }, +{ /*Tag:C2_cmoveif*/ + /*if (!Pu4) Rd32=#s12*/ + 0xff902000, + 0x7e800000, + 0x000f1fe0, + 0 }, +{ /*Tag:C2_cmoveit*/ + /*if (Pu4) Rd32=#s12*/ + 0xff902000, + 0x7e000000, + 0x000f1fe0, + 0 }, +{ /*Tag:C2_cmovenewif*/ + /*if (!Pu4.new) Rd32=#s12*/ + 0xff902000, + 0x7e802000, + 0x000f1fe0, + 0 }, +{ /*Tag:C2_cmovenewit*/ + /*if (Pu4.new) Rd32=#s12*/ + 0xff902000, + 0x7e002000, + 0x000f1fe0, + 0 }, +{ /*Tag:C2_cmpeqi*/ + /*Pd4=cmp.eq(Rs32,#s10)*/ + 0xffc0001c, + 0x75000000, + 0x00203fe0, + 0 }, +{ /*Tag:C2_cmpgti*/ + /*Pd4=cmp.gt(Rs32,#s10)*/ + 0xffc0001c, + 0x75400000, + 0x00203fe0, + 0 }, +{ /*Tag:C2_cmpgtui*/ + /*Pd4=cmp.gtu(Rs32,#u9)*/ + 0xffe0001c, + 0x75800000, + 0x00003fe0, + 0 }, +{ /*Tag:C2_muxii*/ + /*Rd32=mux(Pu4,#s8,#S8)*/ + 0xfe000000, + 0x7a000000, + 0x00001fe0, + 0 }, +{ /*Tag:C2_muxir*/ + /*Rd32=mux(Pu4,Rs32,#s8)*/ + 0xff802000, + 0x73000000, + 0x00001fe0, + 0 }, +{ /*Tag:C2_muxri*/ + /*Rd32=mux(Pu4,#s8,Rs32)*/ + 0xff802000, + 0x73800000, + 0x00001fe0, + 0 }, +{ /*Tag:C4_addipc*/ + /*Rd32=add(pc,#u6)*/ + 0xffff0000, + 0x6a490000, + 0x00001f80, + 0 }, +{ /*Tag:C4_cmpltei*/ + /*Pd4=!cmp.gt(Rs32,#s10)*/ + 0xffc0001c, + 0x75400010, + 0x00203fe0, + 0 }, +{ /*Tag:C4_cmplteui*/ + /*Pd4=!cmp.gtu(Rs32,#u9)*/ + 0xffe0001c, + 0x75800010, + 0x00003fe0, + 0 }, +{ /*Tag:C4_cmpneqi*/ + /*Pd4=!cmp.eq(Rs32,#s10)*/ + 0xffc0001c, + 0x75000010, + 0x00203fe0, + 0 }, +{ /*Tag:J2_call*/ + /*call #r22:2*/ + 0xfe000001, + 0x5a000000, + 0x01ff3ffe, + 0 }, +{ /*Tag:J2_callf*/ + /*if (!Pu4) call #r15:2*/ + 0xff200800, + 0x5d200000, + 0x00df20fe, + 0 }, +{ /*Tag:J2_callt*/ + /*if (Pu4) call #r15:2*/ + 0xff200800, + 0x5d000000, + 0x00df20fe, + 0 }, +{ /*Tag:J2_jump*/ + /*jump #r22:2*/ + 0xfe000000, + 0x58000000, + 0x01ff3ffe, + 0 }, +{ /*Tag:J2_jumpf*/ + /*if (!Pu4) jump:nt #r15:2*/ + 0xff201800, + 0x5c200000, + 0x00df20fe, + 0 }, +{ /*Tag:J2_jumpfnew*/ + /*if (!Pu4.new) jump:nt #r15:2*/ + 0xff201800, + 0x5c200800, + 0x00df20fe, + 0 }, +{ /*Tag:J2_jumpfnewpt*/ + /*if (!Pu4.new) jump:t #r15:2*/ + 0xff201800, + 0x5c201800, + 0x00df20fe, + 0 }, +{ /*Tag:J2_jumpfpt*/ + /*if (!Pu4) jump:t #r15:2*/ + 0xff201800, + 0x5c201000, + 0x00df20fe, + 0 }, +{ /*Tag:J2_jumpt*/ + /*if (Pu4) jump:nt #r15:2*/ + 0xff201800, + 0x5c000000, + 0x00df20fe, + 0 }, +{ /*Tag:J2_jumptnew*/ + /*if (Pu4.new) jump:nt #r15:2*/ + 0xff201800, + 0x5c000800, + 0x00df20fe, + 0 }, +{ /*Tag:J2_jumptnewpt*/ + /*if (Pu4.new) jump:t #r15:2*/ + 0xff201800, + 0x5c001800, + 0x00df20fe, + 0 }, +{ /*Tag:J2_jumptpt*/ + /*if (Pu4) jump:t #r15:2*/ + 0xff201800, + 0x5c001000, + 0x00df20fe, + 0 }, +{ /*Tag:J2_loop0i*/ + /*loop0(#r7:2,#U10)*/ + 0xffe00000, + 0x69000000, + 0x00001f18, + 0 }, +{ /*Tag:J2_loop0r*/ + /*loop0(#r7:2,Rs32)*/ + 0xffe00000, + 0x60000000, + 0x00001f18, + 0 }, +{ /*Tag:J2_loop1i*/ + /*loop1(#r7:2,#U10)*/ + 0xffe00000, + 0x69200000, + 0x00001f18, + 0 }, +{ /*Tag:J2_loop1r*/ + /*loop1(#r7:2,Rs32)*/ + 0xffe00000, + 0x60200000, + 0x00001f18, + 0 }, +{ /*Tag:J2_ploop1si*/ + /*p3=sp1loop0(#r7:2,#U10)*/ + 0xffe00000, + 0x69a00000, + 0x00001f18, + 0 }, +{ /*Tag:J2_ploop1sr*/ + /*p3=sp1loop0(#r7:2,Rs32)*/ + 0xffe00000, + 0x60a00000, + 0x00001f18, + 0 }, +{ /*Tag:J2_ploop2si*/ + /*p3=sp2loop0(#r7:2,#U10)*/ + 0xffe00000, + 0x69c00000, + 0x00001f18, + 0 }, +{ /*Tag:J2_ploop2sr*/ + /*p3=sp2loop0(#r7:2,Rs32)*/ + 0xffe00000, + 0x60c00000, + 0x00001f18, + 0 }, +{ /*Tag:J2_ploop3si*/ + /*p3=sp3loop0(#r7:2,#U10)*/ + 0xffe00000, + 0x69e00000, + 0x00001f18, + 0 }, +{ /*Tag:J2_ploop3sr*/ + /*p3=sp3loop0(#r7:2,Rs32)*/ + 0xffe00000, + 0x60e00000, + 0x00001f18, + 0 }, +{ /*Tag:J4_cmpeq_f_jumpnv_nt*/ + /*if (!cmp.eq(Ns8.new,Rt32)) jump:nt #r9:2*/ + 0xffc02000, + 0x20400000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeq_f_jumpnv_t*/ + /*if (!cmp.eq(Ns8.new,Rt32)) jump:t #r9:2*/ + 0xffc02000, + 0x20402000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeq_fp0_jump_nt*/ + /*p0=cmp.eq(Rs16,Rt16); if (!p0.new) jump:nt #r9:2*/ + 0xffc03000, + 0x14400000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeq_fp0_jump_t*/ + /*p0=cmp.eq(Rs16,Rt16); if (!p0.new) jump:t #r9:2*/ + 0xffc03000, + 0x14402000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeq_fp1_jump_nt*/ + /*p1=cmp.eq(Rs16,Rt16); if (!p1.new) jump:nt #r9:2*/ + 0xffc03000, + 0x14401000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeq_fp1_jump_t*/ + /*p1=cmp.eq(Rs16,Rt16); if (!p1.new) jump:t #r9:2*/ + 0xffc03000, + 0x14403000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeq_t_jumpnv_nt*/ + /*if (cmp.eq(Ns8.new,Rt32)) jump:nt #r9:2*/ + 0xffc02000, + 0x20000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeq_t_jumpnv_t*/ + /*if (cmp.eq(Ns8.new,Rt32)) jump:t #r9:2*/ + 0xffc02000, + 0x20002000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeq_tp0_jump_nt*/ + /*p0=cmp.eq(Rs16,Rt16); if (p0.new) jump:nt #r9:2*/ + 0xffc03000, + 0x14000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeq_tp0_jump_t*/ + /*p0=cmp.eq(Rs16,Rt16); if (p0.new) jump:t #r9:2*/ + 0xffc03000, + 0x14002000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeq_tp1_jump_nt*/ + /*p1=cmp.eq(Rs16,Rt16); if (p1.new) jump:nt #r9:2*/ + 0xffc03000, + 0x14001000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeq_tp1_jump_t*/ + /*p1=cmp.eq(Rs16,Rt16); if (p1.new) jump:t #r9:2*/ + 0xffc03000, + 0x14003000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqi_f_jumpnv_nt*/ + /*if (!cmp.eq(Ns8.new,#U5)) jump:nt #r9:2*/ + 0xffc02000, + 0x24400000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqi_f_jumpnv_t*/ + /*if (!cmp.eq(Ns8.new,#U5)) jump:t #r9:2*/ + 0xffc02000, + 0x24402000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqi_fp0_jump_nt*/ + /*p0=cmp.eq(Rs16,#U5); if (!p0.new) jump:nt #r9:2*/ + 0xffc02000, + 0x10400000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqi_fp0_jump_t*/ + /*p0=cmp.eq(Rs16,#U5); if (!p0.new) jump:t #r9:2*/ + 0xffc02000, + 0x10402000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqi_fp1_jump_nt*/ + /*p1=cmp.eq(Rs16,#U5); if (!p1.new) jump:nt #r9:2*/ + 0xffc02000, + 0x12400000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqi_fp1_jump_t*/ + /*p1=cmp.eq(Rs16,#U5); if (!p1.new) jump:t #r9:2*/ + 0xffc02000, + 0x12402000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqi_t_jumpnv_nt*/ + /*if (cmp.eq(Ns8.new,#U5)) jump:nt #r9:2*/ + 0xffc02000, + 0x24000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqi_t_jumpnv_t*/ + /*if (cmp.eq(Ns8.new,#U5)) jump:t #r9:2*/ + 0xffc02000, + 0x24002000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqi_tp0_jump_nt*/ + /*p0=cmp.eq(Rs16,#U5); if (p0.new) jump:nt #r9:2*/ + 0xffc02000, + 0x10000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqi_tp0_jump_t*/ + /*p0=cmp.eq(Rs16,#U5); if (p0.new) jump:t #r9:2*/ + 0xffc02000, + 0x10002000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqi_tp1_jump_nt*/ + /*p1=cmp.eq(Rs16,#U5); if (p1.new) jump:nt #r9:2*/ + 0xffc02000, + 0x12000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqi_tp1_jump_t*/ + /*p1=cmp.eq(Rs16,#U5); if (p1.new) jump:t #r9:2*/ + 0xffc02000, + 0x12002000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqn1_f_jumpnv_nt*/ + /*if (!cmp.eq(Ns8.new,#-1)) jump:nt #r9:2*/ + 0xffc02000, + 0x26400000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqn1_f_jumpnv_t*/ + /*if (!cmp.eq(Ns8.new,#-1)) jump:t #r9:2*/ + 0xffc02000, + 0x26402000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqn1_fp0_jump_nt*/ + /*p0=cmp.eq(Rs16,#-1); if (!p0.new) jump:nt #r9:2*/ + 0xffc02300, + 0x11c00000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqn1_fp0_jump_t*/ + /*p0=cmp.eq(Rs16,#-1); if (!p0.new) jump:t #r9:2*/ + 0xffc02300, + 0x11c02000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqn1_fp1_jump_nt*/ + /*p1=cmp.eq(Rs16,#-1); if (!p1.new) jump:nt #r9:2*/ + 0xffc02300, + 0x13c00000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqn1_fp1_jump_t*/ + /*p1=cmp.eq(Rs16,#-1); if (!p1.new) jump:t #r9:2*/ + 0xffc02300, + 0x13c02000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqn1_t_jumpnv_nt*/ + /*if (cmp.eq(Ns8.new,#-1)) jump:nt #r9:2*/ + 0xffc02000, + 0x26000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqn1_t_jumpnv_t*/ + /*if (cmp.eq(Ns8.new,#-1)) jump:t #r9:2*/ + 0xffc02000, + 0x26002000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqn1_tp0_jump_nt*/ + /*p0=cmp.eq(Rs16,#-1); if (p0.new) jump:nt #r9:2*/ + 0xffc02300, + 0x11800000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqn1_tp0_jump_t*/ + /*p0=cmp.eq(Rs16,#-1); if (p0.new) jump:t #r9:2*/ + 0xffc02300, + 0x11802000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqn1_tp1_jump_nt*/ + /*p1=cmp.eq(Rs16,#-1); if (p1.new) jump:nt #r9:2*/ + 0xffc02300, + 0x13800000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpeqn1_tp1_jump_t*/ + /*p1=cmp.eq(Rs16,#-1); if (p1.new) jump:t #r9:2*/ + 0xffc02300, + 0x13802000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgt_f_jumpnv_nt*/ + /*if (!cmp.gt(Ns8.new,Rt32)) jump:nt #r9:2*/ + 0xffc02000, + 0x20c00000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgt_f_jumpnv_t*/ + /*if (!cmp.gt(Ns8.new,Rt32)) jump:t #r9:2*/ + 0xffc02000, + 0x20c02000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgt_fp0_jump_nt*/ + /*p0=cmp.gt(Rs16,Rt16); if (!p0.new) jump:nt #r9:2*/ + 0xffc03000, + 0x14c00000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgt_fp0_jump_t*/ + /*p0=cmp.gt(Rs16,Rt16); if (!p0.new) jump:t #r9:2*/ + 0xffc03000, + 0x14c02000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgt_fp1_jump_nt*/ + /*p1=cmp.gt(Rs16,Rt16); if (!p1.new) jump:nt #r9:2*/ + 0xffc03000, + 0x14c01000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgt_fp1_jump_t*/ + /*p1=cmp.gt(Rs16,Rt16); if (!p1.new) jump:t #r9:2*/ + 0xffc03000, + 0x14c03000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgt_t_jumpnv_nt*/ + /*if (cmp.gt(Ns8.new,Rt32)) jump:nt #r9:2*/ + 0xffc02000, + 0x20800000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgt_t_jumpnv_t*/ + /*if (cmp.gt(Ns8.new,Rt32)) jump:t #r9:2*/ + 0xffc02000, + 0x20802000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgt_tp0_jump_nt*/ + /*p0=cmp.gt(Rs16,Rt16); if (p0.new) jump:nt #r9:2*/ + 0xffc03000, + 0x14800000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgt_tp0_jump_t*/ + /*p0=cmp.gt(Rs16,Rt16); if (p0.new) jump:t #r9:2*/ + 0xffc03000, + 0x14802000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgt_tp1_jump_nt*/ + /*p1=cmp.gt(Rs16,Rt16); if (p1.new) jump:nt #r9:2*/ + 0xffc03000, + 0x14801000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgt_tp1_jump_t*/ + /*p1=cmp.gt(Rs16,Rt16); if (p1.new) jump:t #r9:2*/ + 0xffc03000, + 0x14803000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgti_f_jumpnv_nt*/ + /*if (!cmp.gt(Ns8.new,#U5)) jump:nt #r9:2*/ + 0xffc02000, + 0x24c00000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgti_f_jumpnv_t*/ + /*if (!cmp.gt(Ns8.new,#U5)) jump:t #r9:2*/ + 0xffc02000, + 0x24c02000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgti_fp0_jump_nt*/ + /*p0=cmp.gt(Rs16,#U5); if (!p0.new) jump:nt #r9:2*/ + 0xffc02000, + 0x10c00000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgti_fp0_jump_t*/ + /*p0=cmp.gt(Rs16,#U5); if (!p0.new) jump:t #r9:2*/ + 0xffc02000, + 0x10c02000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgti_fp1_jump_nt*/ + /*p1=cmp.gt(Rs16,#U5); if (!p1.new) jump:nt #r9:2*/ + 0xffc02000, + 0x12c00000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgti_fp1_jump_t*/ + /*p1=cmp.gt(Rs16,#U5); if (!p1.new) jump:t #r9:2*/ + 0xffc02000, + 0x12c02000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgti_t_jumpnv_nt*/ + /*if (cmp.gt(Ns8.new,#U5)) jump:nt #r9:2*/ + 0xffc02000, + 0x24800000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgti_t_jumpnv_t*/ + /*if (cmp.gt(Ns8.new,#U5)) jump:t #r9:2*/ + 0xffc02000, + 0x24802000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgti_tp0_jump_nt*/ + /*p0=cmp.gt(Rs16,#U5); if (p0.new) jump:nt #r9:2*/ + 0xffc02000, + 0x10800000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgti_tp0_jump_t*/ + /*p0=cmp.gt(Rs16,#U5); if (p0.new) jump:t #r9:2*/ + 0xffc02000, + 0x10802000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgti_tp1_jump_nt*/ + /*p1=cmp.gt(Rs16,#U5); if (p1.new) jump:nt #r9:2*/ + 0xffc02000, + 0x12800000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgti_tp1_jump_t*/ + /*p1=cmp.gt(Rs16,#U5); if (p1.new) jump:t #r9:2*/ + 0xffc02000, + 0x12802000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtn1_f_jumpnv_nt*/ + /*if (!cmp.gt(Ns8.new,#-1)) jump:nt #r9:2*/ + 0xffc02000, + 0x26c00000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtn1_f_jumpnv_t*/ + /*if (!cmp.gt(Ns8.new,#-1)) jump:t #r9:2*/ + 0xffc02000, + 0x26c02000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtn1_fp0_jump_nt*/ + /*p0=cmp.gt(Rs16,#-1); if (!p0.new) jump:nt #r9:2*/ + 0xffc02300, + 0x11c00100, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtn1_fp0_jump_t*/ + /*p0=cmp.gt(Rs16,#-1); if (!p0.new) jump:t #r9:2*/ + 0xffc02300, + 0x11c02100, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtn1_fp1_jump_nt*/ + /*p1=cmp.gt(Rs16,#-1); if (!p1.new) jump:nt #r9:2*/ + 0xffc02300, + 0x13c00100, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtn1_fp1_jump_t*/ + /*p1=cmp.gt(Rs16,#-1); if (!p1.new) jump:t #r9:2*/ + 0xffc02300, + 0x13c02100, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtn1_t_jumpnv_nt*/ + /*if (cmp.gt(Ns8.new,#-1)) jump:nt #r9:2*/ + 0xffc02000, + 0x26800000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtn1_t_jumpnv_t*/ + /*if (cmp.gt(Ns8.new,#-1)) jump:t #r9:2*/ + 0xffc02000, + 0x26802000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtn1_tp0_jump_nt*/ + /*p0=cmp.gt(Rs16,#-1); if (p0.new) jump:nt #r9:2*/ + 0xffc02300, + 0x11800100, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtn1_tp0_jump_t*/ + /*p0=cmp.gt(Rs16,#-1); if (p0.new) jump:t #r9:2*/ + 0xffc02300, + 0x11802100, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtn1_tp1_jump_nt*/ + /*p1=cmp.gt(Rs16,#-1); if (p1.new) jump:nt #r9:2*/ + 0xffc02300, + 0x13800100, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtn1_tp1_jump_t*/ + /*p1=cmp.gt(Rs16,#-1); if (p1.new) jump:t #r9:2*/ + 0xffc02300, + 0x13802100, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtu_f_jumpnv_nt*/ + /*if (!cmp.gtu(Ns8.new,Rt32)) jump:nt #r9:2*/ + 0xffc02000, + 0x21400000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtu_f_jumpnv_t*/ + /*if (!cmp.gtu(Ns8.new,Rt32)) jump:t #r9:2*/ + 0xffc02000, + 0x21402000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtu_fp0_jump_nt*/ + /*p0=cmp.gtu(Rs16,Rt16); if (!p0.new) jump:nt #r9:2*/ + 0xffc03000, + 0x15400000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtu_fp0_jump_t*/ + /*p0=cmp.gtu(Rs16,Rt16); if (!p0.new) jump:t #r9:2*/ + 0xffc03000, + 0x15402000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtu_fp1_jump_nt*/ + /*p1=cmp.gtu(Rs16,Rt16); if (!p1.new) jump:nt #r9:2*/ + 0xffc03000, + 0x15401000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtu_fp1_jump_t*/ + /*p1=cmp.gtu(Rs16,Rt16); if (!p1.new) jump:t #r9:2*/ + 0xffc03000, + 0x15403000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtu_t_jumpnv_nt*/ + /*if (cmp.gtu(Ns8.new,Rt32)) jump:nt #r9:2*/ + 0xffc02000, + 0x21000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtu_t_jumpnv_t*/ + /*if (cmp.gtu(Ns8.new,Rt32)) jump:t #r9:2*/ + 0xffc02000, + 0x21002000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtu_tp0_jump_nt*/ + /*p0=cmp.gtu(Rs16,Rt16); if (p0.new) jump:nt #r9:2*/ + 0xffc03000, + 0x15000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtu_tp0_jump_t*/ + /*p0=cmp.gtu(Rs16,Rt16); if (p0.new) jump:t #r9:2*/ + 0xffc03000, + 0x15002000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtu_tp1_jump_nt*/ + /*p1=cmp.gtu(Rs16,Rt16); if (p1.new) jump:nt #r9:2*/ + 0xffc03000, + 0x15001000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtu_tp1_jump_t*/ + /*p1=cmp.gtu(Rs16,Rt16); if (p1.new) jump:t #r9:2*/ + 0xffc03000, + 0x15003000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtui_f_jumpnv_nt*/ + /*if (!cmp.gtu(Ns8.new,#U5)) jump:nt #r9:2*/ + 0xffc02000, + 0x25400000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtui_f_jumpnv_t*/ + /*if (!cmp.gtu(Ns8.new,#U5)) jump:t #r9:2*/ + 0xffc02000, + 0x25402000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtui_fp0_jump_nt*/ + /*p0=cmp.gtu(Rs16,#U5); if (!p0.new) jump:nt #r9:2*/ + 0xffc02000, + 0x11400000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtui_fp0_jump_t*/ + /*p0=cmp.gtu(Rs16,#U5); if (!p0.new) jump:t #r9:2*/ + 0xffc02000, + 0x11402000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtui_fp1_jump_nt*/ + /*p1=cmp.gtu(Rs16,#U5); if (!p1.new) jump:nt #r9:2*/ + 0xffc02000, + 0x13400000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtui_fp1_jump_t*/ + /*p1=cmp.gtu(Rs16,#U5); if (!p1.new) jump:t #r9:2*/ + 0xffc02000, + 0x13402000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtui_t_jumpnv_nt*/ + /*if (cmp.gtu(Ns8.new,#U5)) jump:nt #r9:2*/ + 0xffc02000, + 0x25000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtui_t_jumpnv_t*/ + /*if (cmp.gtu(Ns8.new,#U5)) jump:t #r9:2*/ + 0xffc02000, + 0x25002000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtui_tp0_jump_nt*/ + /*p0=cmp.gtu(Rs16,#U5); if (p0.new) jump:nt #r9:2*/ + 0xffc02000, + 0x11000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtui_tp0_jump_t*/ + /*p0=cmp.gtu(Rs16,#U5); if (p0.new) jump:t #r9:2*/ + 0xffc02000, + 0x11002000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtui_tp1_jump_nt*/ + /*p1=cmp.gtu(Rs16,#U5); if (p1.new) jump:nt #r9:2*/ + 0xffc02000, + 0x13000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpgtui_tp1_jump_t*/ + /*p1=cmp.gtu(Rs16,#U5); if (p1.new) jump:t #r9:2*/ + 0xffc02000, + 0x13002000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmplt_f_jumpnv_nt*/ + /*if (!cmp.gt(Rt32,Ns8.new)) jump:nt #r9:2*/ + 0xffc02000, + 0x21c00000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmplt_f_jumpnv_t*/ + /*if (!cmp.gt(Rt32,Ns8.new)) jump:t #r9:2*/ + 0xffc02000, + 0x21c02000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmplt_t_jumpnv_nt*/ + /*if (cmp.gt(Rt32,Ns8.new)) jump:nt #r9:2*/ + 0xffc02000, + 0x21800000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmplt_t_jumpnv_t*/ + /*if (cmp.gt(Rt32,Ns8.new)) jump:t #r9:2*/ + 0xffc02000, + 0x21802000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpltu_f_jumpnv_nt*/ + /*if (!cmp.gtu(Rt32,Ns8.new)) jump:nt #r9:2*/ + 0xffc02000, + 0x22400000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpltu_f_jumpnv_t*/ + /*if (!cmp.gtu(Rt32,Ns8.new)) jump:t #r9:2*/ + 0xffc02000, + 0x22402000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpltu_t_jumpnv_nt*/ + /*if (cmp.gtu(Rt32,Ns8.new)) jump:nt #r9:2*/ + 0xffc02000, + 0x22000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_cmpltu_t_jumpnv_t*/ + /*if (cmp.gtu(Rt32,Ns8.new)) jump:t #r9:2*/ + 0xffc02000, + 0x22002000, + 0x003000fe, + 0 }, +{ /*Tag:J4_jumpseti*/ + /*Rd16=#U6 ; jump #r9:2*/ + 0xff000000, + 0x16000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_jumpsetr*/ + /*Rd16=Rs16 ; jump #r9:2*/ + 0xff000000, + 0x17000000, + 0x003000fe, + 0 }, +{ /*Tag:J4_tstbit0_f_jumpnv_nt*/ + /*if (!tstbit(Ns8.new,#0)) jump:nt #r9:2*/ + 0xffc02000, + 0x25c00000, + 0x003000fe, + 0 }, +{ /*Tag:J4_tstbit0_f_jumpnv_t*/ + /*if (!tstbit(Ns8.new,#0)) jump:t #r9:2*/ + 0xffc02000, + 0x25c02000, + 0x003000fe, + 0 }, +{ /*Tag:J4_tstbit0_fp0_jump_nt*/ + /*p0=tstbit(Rs16,#0); if (!p0.new) jump:nt #r9:2*/ + 0xffc02300, + 0x11c00300, + 0x003000fe, + 0 }, +{ /*Tag:J4_tstbit0_fp0_jump_t*/ + /*p0=tstbit(Rs16,#0); if (!p0.new) jump:t #r9:2*/ + 0xffc02300, + 0x11c02300, + 0x003000fe, + 0 }, +{ /*Tag:J4_tstbit0_fp1_jump_nt*/ + /*p1=tstbit(Rs16,#0); if (!p1.new) jump:nt #r9:2*/ + 0xffc02300, + 0x13c00300, + 0x003000fe, + 0 }, +{ /*Tag:J4_tstbit0_fp1_jump_t*/ + /*p1=tstbit(Rs16,#0); if (!p1.new) jump:t #r9:2*/ + 0xffc02300, + 0x13c02300, + 0x003000fe, + 0 }, +{ /*Tag:J4_tstbit0_t_jumpnv_nt*/ + /*if (tstbit(Ns8.new,#0)) jump:nt #r9:2*/ + 0xffc02000, + 0x25800000, + 0x003000fe, + 0 }, +{ /*Tag:J4_tstbit0_t_jumpnv_t*/ + /*if (tstbit(Ns8.new,#0)) jump:t #r9:2*/ + 0xffc02000, + 0x25802000, + 0x003000fe, + 0 }, +{ /*Tag:J4_tstbit0_tp0_jump_nt*/ + /*p0=tstbit(Rs16,#0); if (p0.new) jump:nt #r9:2*/ + 0xffc02300, + 0x11800300, + 0x003000fe, + 0 }, +{ /*Tag:J4_tstbit0_tp0_jump_t*/ + /*p0=tstbit(Rs16,#0); if (p0.new) jump:t #r9:2*/ + 0xffc02300, + 0x11802300, + 0x003000fe, + 0 }, +{ /*Tag:J4_tstbit0_tp1_jump_nt*/ + /*p1=tstbit(Rs16,#0); if (p1.new) jump:nt #r9:2*/ + 0xffc02300, + 0x13800300, + 0x003000fe, + 0 }, +{ /*Tag:J4_tstbit0_tp1_jump_t*/ + /*p1=tstbit(Rs16,#0); if (p1.new) jump:t #r9:2*/ + 0xffc02300, + 0x13802300, + 0x003000fe, + 0 }, +{ /*Tag:L2_loadalignb_io*/ + /*Ryy32=memb_fifo(Rs32+#s11:0)*/ + 0xf9e00000, + 0x90800000, + 0x06003fe0, + 0 }, +{ /*Tag:L2_loadalignh_io*/ + /*Ryy32=memh_fifo(Rs32+#s11:1)*/ + 0xf9e00000, + 0x90400000, + 0x06003fe0, + 0 }, +{ /*Tag:L2_loadbsw2_io*/ + /*Rd32=membh(Rs32+#s11:1)*/ + 0xf9e00000, + 0x90200000, + 0x06003fe0, + 0 }, +{ /*Tag:L2_loadbsw4_io*/ + /*Rdd32=membh(Rs32+#s11:2)*/ + 0xf9e00000, + 0x90e00000, + 0x06003fe0, + 0 }, +{ /*Tag:L2_loadbzw2_io*/ + /*Rd32=memubh(Rs32+#s11:1)*/ + 0xf9e00000, + 0x90600000, + 0x06003fe0, + 0 }, +{ /*Tag:L2_loadbzw4_io*/ + /*Rdd32=memubh(Rs32+#s11:2)*/ + 0xf9e00000, + 0x90a00000, + 0x06003fe0, + 0 }, +{ /*Tag:L2_loadrb_io*/ + /*Rd32=memb(Rs32+#s11:0)*/ + 0xf9e00000, + 0x91000000, + 0x06003fe0, + 0 }, +{ /*Tag:L2_loadrbgp*/ + /*Rd32=memb(gp+#u16:0)*/ + 0xf9e00000, + 0x49000000, + 0x061f3fe0, + 0 }, +{ /*Tag:L2_loadrd_io*/ + /*Rdd32=memd(Rs32+#s11:3)*/ + 0xf9e00000, + 0x91c00000, + 0x06003fe0, + 0 }, +{ /*Tag:L2_loadrdgp*/ + /*Rdd32=memd(gp+#u16:3)*/ + 0xf9e00000, + 0x49c00000, + 0x061f3fe0, + 0 }, +{ /*Tag:L2_loadrh_io*/ + /*Rd32=memh(Rs32+#s11:1)*/ + 0xf9e00000, + 0x91400000, + 0x06003fe0, + 0 }, +{ /*Tag:L2_loadrhgp*/ + /*Rd32=memh(gp+#u16:1)*/ + 0xf9e00000, + 0x49400000, + 0x061f3fe0, + 0 }, +{ /*Tag:L2_loadri_io*/ + /*Rd32=memw(Rs32+#s11:2)*/ + 0xf9e00000, + 0x91800000, + 0x06003fe0, + 0 }, +{ /*Tag:L2_loadrigp*/ + /*Rd32=memw(gp+#u16:2)*/ + 0xf9e00000, + 0x49800000, + 0x061f3fe0, + 0 }, +{ /*Tag:L2_loadrub_io*/ + /*Rd32=memub(Rs32+#s11:0)*/ + 0xf9e00000, + 0x91200000, + 0x06003fe0, + 0 }, +{ /*Tag:L2_loadrubgp*/ + /*Rd32=memub(gp+#u16:0)*/ + 0xf9e00000, + 0x49200000, + 0x061f3fe0, + 0 }, +{ /*Tag:L2_loadruh_io*/ + /*Rd32=memuh(Rs32+#s11:1)*/ + 0xf9e00000, + 0x91600000, + 0x06003fe0, + 0 }, +{ /*Tag:L2_loadruhgp*/ + /*Rd32=memuh(gp+#u16:1)*/ + 0xf9e00000, + 0x49600000, + 0x061f3fe0, + 0 }, +{ /*Tag:L2_ploadrbf_io*/ + /*if (!Pt4) Rd32=memb(Rs32+#u6:0)*/ + 0xffe02000, + 0x45000000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrbfnew_io*/ + /*if (!Pt4.new) Rd32=memb(Rs32+#u6:0)*/ + 0xffe02000, + 0x47000000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrbt_io*/ + /*if (Pt4) Rd32=memb(Rs32+#u6:0)*/ + 0xffe02000, + 0x41000000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrbtnew_io*/ + /*if (Pt4.new) Rd32=memb(Rs32+#u6:0)*/ + 0xffe02000, + 0x43000000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrdf_io*/ + /*if (!Pt4) Rdd32=memd(Rs32+#u6:3)*/ + 0xffe02000, + 0x45c00000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrdfnew_io*/ + /*if (!Pt4.new) Rdd32=memd(Rs32+#u6:3)*/ + 0xffe02000, + 0x47c00000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrdt_io*/ + /*if (Pt4) Rdd32=memd(Rs32+#u6:3)*/ + 0xffe02000, + 0x41c00000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrdtnew_io*/ + /*if (Pt4.new) Rdd32=memd(Rs32+#u6:3)*/ + 0xffe02000, + 0x43c00000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrhf_io*/ + /*if (!Pt4) Rd32=memh(Rs32+#u6:1)*/ + 0xffe02000, + 0x45400000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrhfnew_io*/ + /*if (!Pt4.new) Rd32=memh(Rs32+#u6:1)*/ + 0xffe02000, + 0x47400000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrht_io*/ + /*if (Pt4) Rd32=memh(Rs32+#u6:1)*/ + 0xffe02000, + 0x41400000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrhtnew_io*/ + /*if (Pt4.new) Rd32=memh(Rs32+#u6:1)*/ + 0xffe02000, + 0x43400000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrif_io*/ + /*if (!Pt4) Rd32=memw(Rs32+#u6:2)*/ + 0xffe02000, + 0x45800000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrifnew_io*/ + /*if (!Pt4.new) Rd32=memw(Rs32+#u6:2)*/ + 0xffe02000, + 0x47800000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrit_io*/ + /*if (Pt4) Rd32=memw(Rs32+#u6:2)*/ + 0xffe02000, + 0x41800000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadritnew_io*/ + /*if (Pt4.new) Rd32=memw(Rs32+#u6:2)*/ + 0xffe02000, + 0x43800000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrubf_io*/ + /*if (!Pt4) Rd32=memub(Rs32+#u6:0)*/ + 0xffe02000, + 0x45200000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrubfnew_io*/ + /*if (!Pt4.new) Rd32=memub(Rs32+#u6:0)*/ + 0xffe02000, + 0x47200000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrubt_io*/ + /*if (Pt4) Rd32=memub(Rs32+#u6:0)*/ + 0xffe02000, + 0x41200000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadrubtnew_io*/ + /*if (Pt4.new) Rd32=memub(Rs32+#u6:0)*/ + 0xffe02000, + 0x43200000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadruhf_io*/ + /*if (!Pt4) Rd32=memuh(Rs32+#u6:1)*/ + 0xffe02000, + 0x45600000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadruhfnew_io*/ + /*if (!Pt4.new) Rd32=memuh(Rs32+#u6:1)*/ + 0xffe02000, + 0x47600000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadruht_io*/ + /*if (Pt4) Rd32=memuh(Rs32+#u6:1)*/ + 0xffe02000, + 0x41600000, + 0x000007e0, + 0 }, +{ /*Tag:L2_ploadruhtnew_io*/ + /*if (Pt4.new) Rd32=memuh(Rs32+#u6:1)*/ + 0xffe02000, + 0x43600000, + 0x000007e0, + 0 }, +{ /*Tag:L4_add_memopb_io*/ + /*memb(Rs32+#u6:0)+=Rt32*/ + 0xff602060, + 0x3e000000, + 0x00001f80, + 0 }, +{ /*Tag:L4_add_memoph_io*/ + /*memh(Rs32+#u6:1)+=Rt32*/ + 0xff602060, + 0x3e200000, + 0x00001f80, + 0 }, +{ /*Tag:L4_add_memopw_io*/ + /*memw(Rs32+#u6:2)+=Rt32*/ + 0xff602060, + 0x3e400000, + 0x00001f80, + 0 }, +{ /*Tag:L4_and_memopb_io*/ + /*memb(Rs32+#u6:0)&=Rt32*/ + 0xff602060, + 0x3e000040, + 0x00001f80, + 0 }, +{ /*Tag:L4_and_memoph_io*/ + /*memh(Rs32+#u6:1)&=Rt32*/ + 0xff602060, + 0x3e200040, + 0x00001f80, + 0 }, +{ /*Tag:L4_and_memopw_io*/ + /*memw(Rs32+#u6:2)&=Rt32*/ + 0xff602060, + 0x3e400040, + 0x00001f80, + 0 }, +{ /*Tag:L4_iadd_memopb_io*/ + /*memb(Rs32+#u6:0)+=#U5*/ + 0xff602060, + 0x3f000000, + 0x00001f80, + 0 }, +{ /*Tag:L4_iadd_memoph_io*/ + /*memh(Rs32+#u6:1)+=#U5*/ + 0xff602060, + 0x3f200000, + 0x00001f80, + 0 }, +{ /*Tag:L4_iadd_memopw_io*/ + /*memw(Rs32+#u6:2)+=#U5*/ + 0xff602060, + 0x3f400000, + 0x00001f80, + 0 }, +{ /*Tag:L4_iand_memopb_io*/ + /*memb(Rs32+#u6:0)=clrbit(#U5)*/ + 0xff602060, + 0x3f000040, + 0x00001f80, + 0 }, +{ /*Tag:L4_iand_memoph_io*/ + /*memh(Rs32+#u6:1)=clrbit(#U5)*/ + 0xff602060, + 0x3f200040, + 0x00001f80, + 0 }, +{ /*Tag:L4_iand_memopw_io*/ + /*memw(Rs32+#u6:2)=clrbit(#U5)*/ + 0xff602060, + 0x3f400040, + 0x00001f80, + 0 }, +{ /*Tag:L4_ior_memopb_io*/ + /*memb(Rs32+#u6:0)=setbit(#U5)*/ + 0xff602060, + 0x3f000060, + 0x00001f80, + 0 }, +{ /*Tag:L4_ior_memoph_io*/ + /*memh(Rs32+#u6:1)=setbit(#U5)*/ + 0xff602060, + 0x3f200060, + 0x00001f80, + 0 }, +{ /*Tag:L4_ior_memopw_io*/ + /*memw(Rs32+#u6:2)=setbit(#U5)*/ + 0xff602060, + 0x3f400060, + 0x00001f80, + 0 }, +{ /*Tag:L4_isub_memopb_io*/ + /*memb(Rs32+#u6:0)-=#U5*/ + 0xff602060, + 0x3f000020, + 0x00001f80, + 0 }, +{ /*Tag:L4_isub_memoph_io*/ + /*memh(Rs32+#u6:1)-=#U5*/ + 0xff602060, + 0x3f200020, + 0x00001f80, + 0 }, +{ /*Tag:L4_isub_memopw_io*/ + /*memw(Rs32+#u6:2)-=#U5*/ + 0xff602060, + 0x3f400020, + 0x00001f80, + 0 }, +{ /*Tag:L4_loadalignb_ap*/ + /*Ryy32=memb_fifo(Re32=#U6)*/ + 0xffe03000, + 0x9a801000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadalignb_ur*/ + /*Ryy32=memb_fifo(Rt32<<#u2+#U6)*/ + 0xffe01000, + 0x9c801000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadalignh_ap*/ + /*Ryy32=memh_fifo(Re32=#U6)*/ + 0xffe03000, + 0x9a401000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadalignh_ur*/ + /*Ryy32=memh_fifo(Rt32<<#u2+#U6)*/ + 0xffe01000, + 0x9c401000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadbsw2_ap*/ + /*Rd32=membh(Re32=#U6)*/ + 0xffe03000, + 0x9a201000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadbsw2_ur*/ + /*Rd32=membh(Rt32<<#u2+#U6)*/ + 0xffe01000, + 0x9c201000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadbsw4_ap*/ + /*Rdd32=membh(Re32=#U6)*/ + 0xffe03000, + 0x9ae01000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadbsw4_ur*/ + /*Rdd32=membh(Rt32<<#u2+#U6)*/ + 0xffe01000, + 0x9ce01000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadbzw2_ap*/ + /*Rd32=memubh(Re32=#U6)*/ + 0xffe03000, + 0x9a601000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadbzw2_ur*/ + /*Rd32=memubh(Rt32<<#u2+#U6)*/ + 0xffe01000, + 0x9c601000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadbzw4_ap*/ + /*Rdd32=memubh(Re32=#U6)*/ + 0xffe03000, + 0x9aa01000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadbzw4_ur*/ + /*Rdd32=memubh(Rt32<<#u2+#U6)*/ + 0xffe01000, + 0x9ca01000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadrb_ap*/ + /*Rd32=memb(Re32=#U6)*/ + 0xffe03000, + 0x9b001000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadrb_ur*/ + /*Rd32=memb(Rt32<<#u2+#U6)*/ + 0xffe01000, + 0x9d001000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadrd_ap*/ + /*Rdd32=memd(Re32=#U6)*/ + 0xffe03000, + 0x9bc01000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadrd_ur*/ + /*Rdd32=memd(Rt32<<#u2+#U6)*/ + 0xffe01000, + 0x9dc01000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadrh_ap*/ + /*Rd32=memh(Re32=#U6)*/ + 0xffe03000, + 0x9b401000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadrh_ur*/ + /*Rd32=memh(Rt32<<#u2+#U6)*/ + 0xffe01000, + 0x9d401000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadri_ap*/ + /*Rd32=memw(Re32=#U6)*/ + 0xffe03000, + 0x9b801000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadri_ur*/ + /*Rd32=memw(Rt32<<#u2+#U6)*/ + 0xffe01000, + 0x9d801000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadrub_ap*/ + /*Rd32=memub(Re32=#U6)*/ + 0xffe03000, + 0x9b201000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadrub_ur*/ + /*Rd32=memub(Rt32<<#u2+#U6)*/ + 0xffe01000, + 0x9d201000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadruh_ap*/ + /*Rd32=memuh(Re32=#U6)*/ + 0xffe03000, + 0x9b601000, + 0x00000f60, + 0 }, +{ /*Tag:L4_loadruh_ur*/ + /*Rd32=memuh(Rt32<<#u2+#U6)*/ + 0xffe01000, + 0x9d601000, + 0x00000f60, + 0 }, +{ /*Tag:L4_or_memopb_io*/ + /*memb(Rs32+#u6:0)|=Rt32*/ + 0xff602060, + 0x3e000060, + 0x00001f80, + 0 }, +{ /*Tag:L4_or_memoph_io*/ + /*memh(Rs32+#u6:1)|=Rt32*/ + 0xff602060, + 0x3e200060, + 0x00001f80, + 0 }, +{ /*Tag:L4_or_memopw_io*/ + /*memw(Rs32+#u6:2)|=Rt32*/ + 0xff602060, + 0x3e400060, + 0x00001f80, + 0 }, +{ /*Tag:L4_ploadrbf_abs*/ + /*if (!Pt4) Rd32=memb(#u6)*/ + 0xffe03880, + 0x9f002880, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrbfnew_abs*/ + /*if (!Pt4.new) Rd32=memb(#u6)*/ + 0xffe03880, + 0x9f003880, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrbt_abs*/ + /*if (Pt4) Rd32=memb(#u6)*/ + 0xffe03880, + 0x9f002080, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrbtnew_abs*/ + /*if (Pt4.new) Rd32=memb(#u6)*/ + 0xffe03880, + 0x9f003080, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrdf_abs*/ + /*if (!Pt4) Rdd32=memd(#u6)*/ + 0xffe03880, + 0x9fc02880, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrdfnew_abs*/ + /*if (!Pt4.new) Rdd32=memd(#u6)*/ + 0xffe03880, + 0x9fc03880, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrdt_abs*/ + /*if (Pt4) Rdd32=memd(#u6)*/ + 0xffe03880, + 0x9fc02080, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrdtnew_abs*/ + /*if (Pt4.new) Rdd32=memd(#u6)*/ + 0xffe03880, + 0x9fc03080, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrhf_abs*/ + /*if (!Pt4) Rd32=memh(#u6)*/ + 0xffe03880, + 0x9f402880, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrhfnew_abs*/ + /*if (!Pt4.new) Rd32=memh(#u6)*/ + 0xffe03880, + 0x9f403880, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrht_abs*/ + /*if (Pt4) Rd32=memh(#u6)*/ + 0xffe03880, + 0x9f402080, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrhtnew_abs*/ + /*if (Pt4.new) Rd32=memh(#u6)*/ + 0xffe03880, + 0x9f403080, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrif_abs*/ + /*if (!Pt4) Rd32=memw(#u6)*/ + 0xffe03880, + 0x9f802880, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrifnew_abs*/ + /*if (!Pt4.new) Rd32=memw(#u6)*/ + 0xffe03880, + 0x9f803880, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrit_abs*/ + /*if (Pt4) Rd32=memw(#u6)*/ + 0xffe03880, + 0x9f802080, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadritnew_abs*/ + /*if (Pt4.new) Rd32=memw(#u6)*/ + 0xffe03880, + 0x9f803080, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrubf_abs*/ + /*if (!Pt4) Rd32=memub(#u6)*/ + 0xffe03880, + 0x9f202880, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrubfnew_abs*/ + /*if (!Pt4.new) Rd32=memub(#u6)*/ + 0xffe03880, + 0x9f203880, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrubt_abs*/ + /*if (Pt4) Rd32=memub(#u6)*/ + 0xffe03880, + 0x9f202080, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadrubtnew_abs*/ + /*if (Pt4.new) Rd32=memub(#u6)*/ + 0xffe03880, + 0x9f203080, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadruhf_abs*/ + /*if (!Pt4) Rd32=memuh(#u6)*/ + 0xffe03880, + 0x9f602880, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadruhfnew_abs*/ + /*if (!Pt4.new) Rd32=memuh(#u6)*/ + 0xffe03880, + 0x9f603880, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadruht_abs*/ + /*if (Pt4) Rd32=memuh(#u6)*/ + 0xffe03880, + 0x9f602080, + 0x001f0100, + 0 }, +{ /*Tag:L4_ploadruhtnew_abs*/ + /*if (Pt4.new) Rd32=memuh(#u6)*/ + 0xffe03880, + 0x9f603080, + 0x001f0100, + 0 }, +{ /*Tag:L4_sub_memopb_io*/ + /*memb(Rs32+#u6:0)-=Rt32*/ + 0xff602060, + 0x3e000020, + 0x00001f80, + 0 }, +{ /*Tag:L4_sub_memoph_io*/ + /*memh(Rs32+#u6:1)-=Rt32*/ + 0xff602060, + 0x3e200020, + 0x00001f80, + 0 }, +{ /*Tag:L4_sub_memopw_io*/ + /*memw(Rs32+#u6:2)-=Rt32*/ + 0xff602060, + 0x3e400020, + 0x00001f80, + 0 }, +{ /*Tag:M2_accii*/ + /*Rx32+=add(Rs32,#s8)*/ + 0xff802000, + 0xe2000000, + 0x00001fe0, + 0 }, +{ /*Tag:M2_macsin*/ + /*Rx32-=mpyi(Rs32,#u8)*/ + 0xff802000, + 0xe1800000, + 0x00001fe0, + 0 }, +{ /*Tag:M2_macsip*/ + /*Rx32+=mpyi(Rs32,#u8)*/ + 0xff802000, + 0xe1000000, + 0x00001fe0, + 0 }, +{ /*Tag:M2_mpysip*/ + /*Rd32=+mpyi(Rs32,#u8)*/ + 0xff802000, + 0xe0000000, + 0x00001fe0, + 0 }, +{ /*Tag:M2_naccii*/ + /*Rx32-=add(Rs32,#s8)*/ + 0xff802000, + 0xe2800000, + 0x00001fe0, + 0 }, +{ /*Tag:M4_mpyri_addi*/ + /*Rd32=add(#u6,mpyi(Rs32,#U6))*/ + 0xff000000, + 0xd8000000, + 0x006020e0, + 0 }, +{ /*Tag:M4_mpyri_addr*/ + /*Rd32=add(Ru32,mpyi(Rs32,#u6))*/ + 0xff800000, + 0xdf800000, + 0x006020e0, + 0 }, +{ /*Tag:M4_mpyrr_addi*/ + /*Rd32=add(#u6,mpyi(Rs32,Rt32))*/ + 0xff800000, + 0xd7000000, + 0x006020e0, + 0 }, +{ /*Tag:PS_loadrbabs*/ + /*Rd32=memb(#u16:0)*/ + 0xf9e00000, + 0x49000000, + 0x061f3fe0, + 0 }, +{ /*Tag:PS_loadrdabs*/ + /*Rdd32=memd(#u16:3)*/ + 0xf9e00000, + 0x49c00000, + 0x061f3fe0, + 0 }, +{ /*Tag:PS_loadrhabs*/ + /*Rd32=memh(#u16:1)*/ + 0xf9e00000, + 0x49400000, + 0x061f3fe0, + 0 }, +{ /*Tag:PS_loadriabs*/ + /*Rd32=memw(#u16:2)*/ + 0xf9e00000, + 0x49800000, + 0x061f3fe0, + 0 }, +{ /*Tag:PS_loadrubabs*/ + /*Rd32=memub(#u16:0)*/ + 0xf9e00000, + 0x49200000, + 0x061f3fe0, + 0 }, +{ /*Tag:PS_loadruhabs*/ + /*Rd32=memuh(#u16:1)*/ + 0xf9e00000, + 0x49600000, + 0x061f3fe0, + 0 }, +{ /*Tag:PS_storerbabs*/ + /*memb(#u16:0)=Rt32*/ + 0xf9e00000, + 0x48000000, + 0x061f20ff, + 0 }, +{ /*Tag:PS_storerbnewabs*/ + /*memb(#u16:0)=Nt8.new*/ + 0xf9e01800, + 0x48a00000, + 0x061f20ff, + 0 }, +{ /*Tag:PS_storerdabs*/ + /*memd(#u16:3)=Rtt32*/ + 0xf9e00000, + 0x48c00000, + 0x061f20ff, + 0 }, +{ /*Tag:PS_storerfabs*/ + /*memh(#u16:1)=Rt32.h*/ + 0xf9e00000, + 0x48600000, + 0x061f20ff, + 0 }, +{ /*Tag:PS_storerhabs*/ + /*memh(#u16:1)=Rt32*/ + 0xf9e00000, + 0x48400000, + 0x061f20ff, + 0 }, +{ /*Tag:PS_storerhnewabs*/ + /*memh(#u16:1)=Nt8.new*/ + 0xf9e01800, + 0x48a00800, + 0x061f20ff, + 0 }, +{ /*Tag:PS_storeriabs*/ + /*memw(#u16:2)=Rt32*/ + 0xf9e00000, + 0x48800000, + 0x061f20ff, + 0 }, +{ /*Tag:PS_storerinewabs*/ + /*memw(#u16:2)=Nt8.new*/ + 0xf9e01800, + 0x48a01000, + 0x061f20ff, + 0 }, +{ /*Tag:S2_pstorerbf_io*/ + /*if (!Pv4) memb(Rs32+#u6:0)=Rt32*/ + 0xffe00004, + 0x44000000, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerbnewf_io*/ + /*if (!Pv4) memb(Rs32+#u6:0)=Nt8.new*/ + 0xffe01804, + 0x44a00000, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerbnewt_io*/ + /*if (Pv4) memb(Rs32+#u6:0)=Nt8.new*/ + 0xffe01804, + 0x40a00000, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerbt_io*/ + /*if (Pv4) memb(Rs32+#u6:0)=Rt32*/ + 0xffe00004, + 0x40000000, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerdf_io*/ + /*if (!Pv4) memd(Rs32+#u6:3)=Rtt32*/ + 0xffe00004, + 0x44c00000, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerdt_io*/ + /*if (Pv4) memd(Rs32+#u6:3)=Rtt32*/ + 0xffe00004, + 0x40c00000, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerff_io*/ + /*if (!Pv4) memh(Rs32+#u6:1)=Rt32.h*/ + 0xffe00004, + 0x44600000, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerft_io*/ + /*if (Pv4) memh(Rs32+#u6:1)=Rt32.h*/ + 0xffe00004, + 0x40600000, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerhf_io*/ + /*if (!Pv4) memh(Rs32+#u6:1)=Rt32*/ + 0xffe00004, + 0x44400000, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerhnewf_io*/ + /*if (!Pv4) memh(Rs32+#u6:1)=Nt8.new*/ + 0xffe01804, + 0x44a00800, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerhnewt_io*/ + /*if (Pv4) memh(Rs32+#u6:1)=Nt8.new*/ + 0xffe01804, + 0x40a00800, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerht_io*/ + /*if (Pv4) memh(Rs32+#u6:1)=Rt32*/ + 0xffe00004, + 0x40400000, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerif_io*/ + /*if (!Pv4) memw(Rs32+#u6:2)=Rt32*/ + 0xffe00004, + 0x44800000, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerinewf_io*/ + /*if (!Pv4) memw(Rs32+#u6:2)=Nt8.new*/ + 0xffe01804, + 0x44a01000, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerinewt_io*/ + /*if (Pv4) memw(Rs32+#u6:2)=Nt8.new*/ + 0xffe01804, + 0x40a01000, + 0x000020f8, + 0 }, +{ /*Tag:S2_pstorerit_io*/ + /*if (Pv4) memw(Rs32+#u6:2)=Rt32*/ + 0xffe00004, + 0x40800000, + 0x000020f8, + 0 }, +{ /*Tag:S2_storerb_io*/ + /*memb(Rs32+#s11:0)=Rt32*/ + 0xf9e00000, + 0xa1000000, + 0x060020ff, + 0 }, +{ /*Tag:S2_storerbgp*/ + /*memb(gp+#u16:0)=Rt32*/ + 0xf9e00000, + 0x48000000, + 0x061f20ff, + 0 }, +{ /*Tag:S2_storerbnew_io*/ + /*memb(Rs32+#s11:0)=Nt8.new*/ + 0xf9e01800, + 0xa1a00000, + 0x060020ff, + 0 }, +{ /*Tag:S2_storerbnewgp*/ + /*memb(gp+#u16:0)=Nt8.new*/ + 0xf9e01800, + 0x48a00000, + 0x061f20ff, + 0 }, +{ /*Tag:S2_storerd_io*/ + /*memd(Rs32+#s11:3)=Rtt32*/ + 0xf9e00000, + 0xa1c00000, + 0x060020ff, + 0 }, +{ /*Tag:S2_storerdgp*/ + /*memd(gp+#u16:3)=Rtt32*/ + 0xf9e00000, + 0x48c00000, + 0x061f20ff, + 0 }, +{ /*Tag:S2_storerf_io*/ + /*memh(Rs32+#s11:1)=Rt32.h*/ + 0xf9e00000, + 0xa1600000, + 0x060020ff, + 0 }, +{ /*Tag:S2_storerfgp*/ + /*memh(gp+#u16:1)=Rt32.h*/ + 0xf9e00000, + 0x48600000, + 0x061f20ff, + 0 }, +{ /*Tag:S2_storerh_io*/ + /*memh(Rs32+#s11:1)=Rt32*/ + 0xf9e00000, + 0xa1400000, + 0x060020ff, + 0 }, +{ /*Tag:S2_storerhgp*/ + /*memh(gp+#u16:1)=Rt32*/ + 0xf9e00000, + 0x48400000, + 0x061f20ff, + 0 }, +{ /*Tag:S2_storerhnew_io*/ + /*memh(Rs32+#s11:1)=Nt8.new*/ + 0xf9e01800, + 0xa1a00800, + 0x060020ff, + 0 }, +{ /*Tag:S2_storerhnewgp*/ + /*memh(gp+#u16:1)=Nt8.new*/ + 0xf9e01800, + 0x48a00800, + 0x061f20ff, + 0 }, +{ /*Tag:S2_storeri_io*/ + /*memw(Rs32+#s11:2)=Rt32*/ + 0xf9e00000, + 0xa1800000, + 0x060020ff, + 0 }, +{ /*Tag:S2_storerigp*/ + /*memw(gp+#u16:2)=Rt32*/ + 0xf9e00000, + 0x48800000, + 0x061f20ff, + 0 }, +{ /*Tag:S2_storerinew_io*/ + /*memw(Rs32+#s11:2)=Nt8.new*/ + 0xf9e01800, + 0xa1a01000, + 0x060020ff, + 0 }, +{ /*Tag:S2_storerinewgp*/ + /*memw(gp+#u16:2)=Nt8.new*/ + 0xf9e01800, + 0x48a01000, + 0x061f20ff, + 0 }, +{ /*Tag:S4_addaddi*/ + /*Rd32=add(Rs32,add(Ru32,#s6))*/ + 0xff800000, + 0xdb000000, + 0x006020e0, + 0 }, +{ /*Tag:S4_addi_asl_ri*/ + /*Rx32=add(#u8,asl(Rx32,#U5))*/ + 0xff000016, + 0xde000004, + 0x00e020e8, + 0 }, +{ /*Tag:S4_addi_lsr_ri*/ + /*Rx32=add(#u8,lsr(Rx32,#U5))*/ + 0xff000016, + 0xde000014, + 0x00e020e8, + 0 }, +{ /*Tag:S4_andi_asl_ri*/ + /*Rx32=and(#u8,asl(Rx32,#U5))*/ + 0xff000016, + 0xde000000, + 0x00e020e8, + 0 }, +{ /*Tag:S4_andi_lsr_ri*/ + /*Rx32=and(#u8,lsr(Rx32,#U5))*/ + 0xff000016, + 0xde000010, + 0x00e020e8, + 0 }, +{ /*Tag:S4_or_andi*/ + /*Rx32|=and(Rs32,#s10)*/ + 0xffc00000, + 0xda000000, + 0x00203fe0, + 0 }, +{ /*Tag:S4_or_andix*/ + /*Rx32=or(Ru32,and(Rx32,#s10))*/ + 0xffc00000, + 0xda400000, + 0x00203fe0, + 0 }, +{ /*Tag:S4_or_ori*/ + /*Rx32|=or(Rs32,#s10)*/ + 0xffc00000, + 0xda800000, + 0x00203fe0, + 0 }, +{ /*Tag:S4_ori_asl_ri*/ + /*Rx32=or(#u8,asl(Rx32,#U5))*/ + 0xff000016, + 0xde000002, + 0x00e020e8, + 0 }, +{ /*Tag:S4_ori_lsr_ri*/ + /*Rx32=or(#u8,lsr(Rx32,#U5))*/ + 0xff000016, + 0xde000012, + 0x00e020e8, + 0 }, +{ /*Tag:S4_pstorerbf_abs*/ + /*if (!Pv4) memb(#u6)=Rt32*/ + 0xffe02084, + 0xaf000084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerbfnew_abs*/ + /*if (!Pv4.new) memb(#u6)=Rt32*/ + 0xffe02084, + 0xaf002084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerbfnew_io*/ + /*if (!Pv4.new) memb(Rs32+#u6:0)=Rt32*/ + 0xffe00004, + 0x46000000, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerbnewf_abs*/ + /*if (!Pv4) memb(#u6)=Nt8.new*/ + 0xffe03884, + 0xafa00084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerbnewfnew_abs*/ + /*if (!Pv4.new) memb(#u6)=Nt8.new*/ + 0xffe03884, + 0xafa02084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerbnewfnew_io*/ + /*if (!Pv4.new) memb(Rs32+#u6:0)=Nt8.new*/ + 0xffe01804, + 0x46a00000, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerbnewt_abs*/ + /*if (Pv4) memb(#u6)=Nt8.new*/ + 0xffe03884, + 0xafa00080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerbnewtnew_abs*/ + /*if (Pv4.new) memb(#u6)=Nt8.new*/ + 0xffe03884, + 0xafa02080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerbnewtnew_io*/ + /*if (Pv4.new) memb(Rs32+#u6:0)=Nt8.new*/ + 0xffe01804, + 0x42a00000, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerbt_abs*/ + /*if (Pv4) memb(#u6)=Rt32*/ + 0xffe02084, + 0xaf000080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerbtnew_abs*/ + /*if (Pv4.new) memb(#u6)=Rt32*/ + 0xffe02084, + 0xaf002080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerbtnew_io*/ + /*if (Pv4.new) memb(Rs32+#u6:0)=Rt32*/ + 0xffe00004, + 0x42000000, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerdf_abs*/ + /*if (!Pv4) memd(#u6)=Rtt32*/ + 0xffe02084, + 0xafc00084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerdfnew_abs*/ + /*if (!Pv4.new) memd(#u6)=Rtt32*/ + 0xffe02084, + 0xafc02084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerdfnew_io*/ + /*if (!Pv4.new) memd(Rs32+#u6:3)=Rtt32*/ + 0xffe00004, + 0x46c00000, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerdt_abs*/ + /*if (Pv4) memd(#u6)=Rtt32*/ + 0xffe02084, + 0xafc00080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerdtnew_abs*/ + /*if (Pv4.new) memd(#u6)=Rtt32*/ + 0xffe02084, + 0xafc02080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerdtnew_io*/ + /*if (Pv4.new) memd(Rs32+#u6:3)=Rtt32*/ + 0xffe00004, + 0x42c00000, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerff_abs*/ + /*if (!Pv4) memh(#u6)=Rt32.h*/ + 0xffe02084, + 0xaf600084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerffnew_abs*/ + /*if (!Pv4.new) memh(#u6)=Rt32.h*/ + 0xffe02084, + 0xaf602084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerffnew_io*/ + /*if (!Pv4.new) memh(Rs32+#u6:1)=Rt32.h*/ + 0xffe00004, + 0x46600000, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerft_abs*/ + /*if (Pv4) memh(#u6)=Rt32.h*/ + 0xffe02084, + 0xaf600080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerftnew_abs*/ + /*if (Pv4.new) memh(#u6)=Rt32.h*/ + 0xffe02084, + 0xaf602080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerftnew_io*/ + /*if (Pv4.new) memh(Rs32+#u6:1)=Rt32.h*/ + 0xffe00004, + 0x42600000, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerhf_abs*/ + /*if (!Pv4) memh(#u6)=Rt32*/ + 0xffe02084, + 0xaf400084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerhfnew_abs*/ + /*if (!Pv4.new) memh(#u6)=Rt32*/ + 0xffe02084, + 0xaf402084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerhfnew_io*/ + /*if (!Pv4.new) memh(Rs32+#u6:1)=Rt32*/ + 0xffe00004, + 0x46400000, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerhnewf_abs*/ + /*if (!Pv4) memh(#u6)=Nt8.new*/ + 0xffe03884, + 0xafa00884, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerhnewfnew_abs*/ + /*if (!Pv4.new) memh(#u6)=Nt8.new*/ + 0xffe03884, + 0xafa02884, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerhnewfnew_io*/ + /*if (!Pv4.new) memh(Rs32+#u6:1)=Nt8.new*/ + 0xffe01804, + 0x46a00800, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerhnewt_abs*/ + /*if (Pv4) memh(#u6)=Nt8.new*/ + 0xffe03884, + 0xafa00880, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerhnewtnew_abs*/ + /*if (Pv4.new) memh(#u6)=Nt8.new*/ + 0xffe03884, + 0xafa02880, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerhnewtnew_io*/ + /*if (Pv4.new) memh(Rs32+#u6:1)=Nt8.new*/ + 0xffe01804, + 0x42a00800, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerht_abs*/ + /*if (Pv4) memh(#u6)=Rt32*/ + 0xffe02084, + 0xaf400080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerhtnew_abs*/ + /*if (Pv4.new) memh(#u6)=Rt32*/ + 0xffe02084, + 0xaf402080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerhtnew_io*/ + /*if (Pv4.new) memh(Rs32+#u6:1)=Rt32*/ + 0xffe00004, + 0x42400000, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerif_abs*/ + /*if (!Pv4) memw(#u6)=Rt32*/ + 0xffe02084, + 0xaf800084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerifnew_abs*/ + /*if (!Pv4.new) memw(#u6)=Rt32*/ + 0xffe02084, + 0xaf802084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerifnew_io*/ + /*if (!Pv4.new) memw(Rs32+#u6:2)=Rt32*/ + 0xffe00004, + 0x46800000, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerinewf_abs*/ + /*if (!Pv4) memw(#u6)=Nt8.new*/ + 0xffe03884, + 0xafa01084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerinewfnew_abs*/ + /*if (!Pv4.new) memw(#u6)=Nt8.new*/ + 0xffe03884, + 0xafa03084, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerinewfnew_io*/ + /*if (!Pv4.new) memw(Rs32+#u6:2)=Nt8.new*/ + 0xffe01804, + 0x46a01000, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerinewt_abs*/ + /*if (Pv4) memw(#u6)=Nt8.new*/ + 0xffe03884, + 0xafa01080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerinewtnew_abs*/ + /*if (Pv4.new) memw(#u6)=Nt8.new*/ + 0xffe03884, + 0xafa03080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstorerinewtnew_io*/ + /*if (Pv4.new) memw(Rs32+#u6:2)=Nt8.new*/ + 0xffe01804, + 0x42a01000, + 0x000020f8, + 0 }, +{ /*Tag:S4_pstorerit_abs*/ + /*if (Pv4) memw(#u6)=Rt32*/ + 0xffe02084, + 0xaf800080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstoreritnew_abs*/ + /*if (Pv4.new) memw(#u6)=Rt32*/ + 0xffe02084, + 0xaf802080, + 0x00030078, + 0 }, +{ /*Tag:S4_pstoreritnew_io*/ + /*if (Pv4.new) memw(Rs32+#u6:2)=Rt32*/ + 0xffe00004, + 0x42800000, + 0x000020f8, + 0 }, +{ /*Tag:S4_storeirb_io*/ + /*memb(Rs32+#u6:0)=#S8*/ + 0xfe600000, + 0x3c000000, + 0x0000207f, + 0 }, +{ /*Tag:S4_storeirbf_io*/ + /*if (!Pv4) memb(Rs32+#u6:0)=#S6*/ + 0xffe00000, + 0x38800000, + 0x0000201f, + 0 }, +{ /*Tag:S4_storeirbfnew_io*/ + /*if (!Pv4.new) memb(Rs32+#u6:0)=#S6*/ + 0xffe00000, + 0x39800000, + 0x0000201f, + 0 }, +{ /*Tag:S4_storeirbt_io*/ + /*if (Pv4) memb(Rs32+#u6:0)=#S6*/ + 0xffe00000, + 0x38000000, + 0x0000201f, + 0 }, +{ /*Tag:S4_storeirbtnew_io*/ + /*if (Pv4.new) memb(Rs32+#u6:0)=#S6*/ + 0xffe00000, + 0x39000000, + 0x0000201f, + 0 }, +{ /*Tag:S4_storeirh_io*/ + /*memh(Rs32+#u6:1)=#S8*/ + 0xfe600000, + 0x3c200000, + 0x0000207f, + 0 }, +{ /*Tag:S4_storeirhf_io*/ + /*if (!Pv4) memh(Rs32+#u6:1)=#S6*/ + 0xffe00000, + 0x38a00000, + 0x0000201f, + 0 }, +{ /*Tag:S4_storeirhfnew_io*/ + /*if (!Pv4.new) memh(Rs32+#u6:1)=#S6*/ + 0xffe00000, + 0x39a00000, + 0x0000201f, + 0 }, +{ /*Tag:S4_storeirht_io*/ + /*if (Pv4) memh(Rs32+#u6:1)=#S6*/ + 0xffe00000, + 0x38200000, + 0x0000201f, + 0 }, +{ /*Tag:S4_storeirhtnew_io*/ + /*if (Pv4.new) memh(Rs32+#u6:1)=#S6*/ + 0xffe00000, + 0x39200000, + 0x0000201f, + 0 }, +{ /*Tag:S4_storeiri_io*/ + /*memw(Rs32+#u6:2)=#S8*/ + 0xfe600000, + 0x3c400000, + 0x0000207f, + 0 }, +{ /*Tag:S4_storeirif_io*/ + /*if (!Pv4) memw(Rs32+#u6:2)=#S6*/ + 0xffe00000, + 0x38c00000, + 0x0000201f, + 0 }, +{ /*Tag:S4_storeirifnew_io*/ + /*if (!Pv4.new) memw(Rs32+#u6:2)=#S6*/ + 0xffe00000, + 0x39c00000, + 0x0000201f, + 0 }, +{ /*Tag:S4_storeirit_io*/ + /*if (Pv4) memw(Rs32+#u6:2)=#S6*/ + 0xffe00000, + 0x38400000, + 0x0000201f, + 0 }, +{ /*Tag:S4_storeiritnew_io*/ + /*if (Pv4.new) memw(Rs32+#u6:2)=#S6*/ + 0xffe00000, + 0x39400000, + 0x0000201f, + 0 }, +{ /*Tag:S4_storerb_ap*/ + /*memb(Re32=#U6)=Rt32*/ + 0xffe02080, + 0xab000080, + 0x0000003f, + 0 }, +{ /*Tag:S4_storerb_ur*/ + /*memb(Ru32<<#u2+#U6)=Rt32*/ + 0xffe00080, + 0xad000080, + 0x0000003f, + 0 }, +{ /*Tag:S4_storerbnew_ap*/ + /*memb(Re32=#U6)=Nt8.new*/ + 0xffe03880, + 0xaba00080, + 0x0000003f, + 0 }, +{ /*Tag:S4_storerbnew_ur*/ + /*memb(Ru32<<#u2+#U6)=Nt8.new*/ + 0xffe01880, + 0xada00080, + 0x0000003f, + 0 }, +{ /*Tag:S4_storerd_ap*/ + /*memd(Re32=#U6)=Rtt32*/ + 0xffe02080, + 0xabc00080, + 0x0000003f, + 0 }, +{ /*Tag:S4_storerd_ur*/ + /*memd(Ru32<<#u2+#U6)=Rtt32*/ + 0xffe00080, + 0xadc00080, + 0x0000003f, + 0 }, +{ /*Tag:S4_storerf_ap*/ + /*memh(Re32=#U6)=Rt32.h*/ + 0xffe02080, + 0xab600080, + 0x0000003f, + 0 }, +{ /*Tag:S4_storerf_ur*/ + /*memh(Ru32<<#u2+#U6)=Rt32.h*/ + 0xffe00080, + 0xad600080, + 0x0000003f, + 0 }, +{ /*Tag:S4_storerh_ap*/ + /*memh(Re32=#U6)=Rt32*/ + 0xffe02080, + 0xab400080, + 0x0000003f, + 0 }, +{ /*Tag:S4_storerh_ur*/ + /*memh(Ru32<<#u2+#U6)=Rt32*/ + 0xffe00080, + 0xad400080, + 0x0000003f, + 0 }, +{ /*Tag:S4_storerhnew_ap*/ + /*memh(Re32=#U6)=Nt8.new*/ + 0xffe03880, + 0xaba00880, + 0x0000003f, + 0 }, +{ /*Tag:S4_storerhnew_ur*/ + /*memh(Ru32<<#u2+#U6)=Nt8.new*/ + 0xffe01880, + 0xada00880, + 0x0000003f, + 0 }, +{ /*Tag:S4_storeri_ap*/ + /*memw(Re32=#U6)=Rt32*/ + 0xffe02080, + 0xab800080, + 0x0000003f, + 0 }, +{ /*Tag:S4_storeri_ur*/ + /*memw(Ru32<<#u2+#U6)=Rt32*/ + 0xffe00080, + 0xad800080, + 0x0000003f, + 0 }, +{ /*Tag:S4_storerinew_ap*/ + /*memw(Re32=#U6)=Nt8.new*/ + 0xffe03880, + 0xaba01080, + 0x0000003f, + 0 }, +{ /*Tag:S4_storerinew_ur*/ + /*memw(Ru32<<#u2+#U6)=Nt8.new*/ + 0xffe01880, + 0xada01080, + 0x0000003f, + 0 }, +{ /*Tag:S4_subaddi*/ + /*Rd32=add(Rs32,sub(#s6,Ru32))*/ + 0xff800000, + 0xdb800000, + 0x006020e0, + 0 }, +{ /*Tag:S4_subi_asl_ri*/ + /*Rx32=sub(#u8,asl(Rx32,#U5))*/ + 0xff000016, + 0xde000006, + 0x00e020e8, + 0 }, +{ /*Tag:S4_subi_lsr_ri*/ + /*Rx32=sub(#u8,lsr(Rx32,#U5))*/ + 0xff000016, + 0xde000016, + 0x00e020e8, + 0 }, +{ /*Tag:SA1_addi*/ + /*Rx16=add(Rx16,#s7)*/ + 0xf8002000, + 0x20002000, + 0x07f00000, + 1 }, +{ /*Tag:SA1_addi*/ + /*Rx16=add(Rx16,#s7)*/ + 0xf8002000, + 0x40000000, + 0x07f00000, + 1 }, +{ /*Tag:SA1_addi*/ + /*Rx16=add(Rx16,#s7)*/ + 0xf8002000, + 0x40002000, + 0x07f00000, + 1 }, +{ /*Tag:SA1_addi*/ + /*Rx16=add(Rx16,#s7)*/ + 0xf8002000, + 0x60000000, + 0x07f00000, + 1 }, +{ /*Tag:SA1_addi*/ + /*Rx16=add(Rx16,#s7)*/ + 0xf8002000, + 0x60002000, + 0x07f00000, + 1 }, +{ /*Tag:SA1_seti*/ + /*Rd16=#u6*/ + 0xfc002000, + 0x28002000, + 0x03f00000, + 1 }, +{ /*Tag:SA1_seti*/ + /*Rd16=#u6*/ + 0xfc002000, + 0x48000000, + 0x03f00000, + 1 }, +{ /*Tag:SA1_seti*/ + /*Rd16=#u6*/ + 0xfc002000, + 0x48002000, + 0x03f00000, + 1 }, +{ /*Tag:SA1_seti*/ + /*Rd16=#u6*/ + 0xfc002000, + 0x68000000, + 0x03f00000, + 1 }, +{ /*Tag:SA1_seti*/ + /*Rd16=#u6*/ + 0xfc002000, + 0x68002000, + 0x03f00000, + 1 } +}; Index: ELF/HexagonRelocationInfo.h =================================================================== --- /dev/null +++ ELF/HexagonRelocationInfo.h @@ -0,0 +1,1120 @@ +//===- HexagonRelocationInfo.h - Relocation Application Helper-------------===// +// +// The LLVM Linker +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +#ifndef HEXAGON_RELOCATION_INFO_H +#define HEXAGON_RELOCATION_INFO_H + +#include "llvm/BinaryFormat/ELF.h" + +namespace llvm { +namespace Hexagon { +HexagonRelocationInfo Relocs[] = { + { + /*.Name = */ "R_HEX_NONE", + /*.Type = */ llvm::ELF::R_HEX_NONE, + /*.EffectiveBits = */ 0, + /*.BitMask = */ 0, + /*.Alignment = */ 0, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_B22_PCREL", + /*.Type = */ llvm::ELF::R_HEX_B22_PCREL, + /*.EffectiveBits = */ 22, + /*.BitMask = */ 0x01ff3ffe, + /*.Alignment = */ 4, + /*.Shift = */ 2, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_B15_PCREL", + /*.Type = */ llvm::ELF::R_HEX_B15_PCREL, + /*.EffectiveBits = */ 15, + /*.BitMask = */ 0x00df20fe, + /*.Alignment = */ 4, + /*.Shift = */ 2, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_B7_PCREL", + /*.Type = */ llvm::ELF::R_HEX_B7_PCREL, + /*.EffectiveBits = */ 7, + /*.BitMask = */ 0x00001f18, + /*.Alignment = */ 4, + /*.Shift = */ 2, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_LO16", + /*.Type = */ llvm::ELF::R_HEX_LO16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_HI16", + /*.Type = */ llvm::ELF::R_HEX_HI16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 16, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_32", + /*.Type = */ llvm::ELF::R_HEX_32, + /*.EffectiveBits = */ 32, + /*.BitMask = */ 0xffffffff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_16", + /*.Type = */ llvm::ELF::R_HEX_16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x0000ffff, + /*.Alignment = */ 2, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_8", + /*.Type = */ llvm::ELF::R_HEX_8, + /*.EffectiveBits = */ 8, + /*.BitMask = */ 0x000000ff, + /*.Alignment = */ 1, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_GPREL16_0", + /*.Type = */ llvm::ELF::R_HEX_GPREL16_0, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0, + /*.Alignment = */ 1, + /*.Shift = */ 0, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_GPREL16_1", + /*.Type = */ llvm::ELF::R_HEX_GPREL16_1, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0, + /*.Alignment = */ 2, + /*.Shift = */ 1, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_GPREL16_2", + /*.Type = */ llvm::ELF::R_HEX_GPREL16_2, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 2, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_GPREL16_3", + /*.Type = */ llvm::ELF::R_HEX_GPREL16_3, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0, + /*.Alignment = */ 8, + /*.Shift = */ 3, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_HL16", + /*.Type = */ llvm::ELF::R_HEX_HL16, + /*.EffectiveBits = */ 0, + /*.BitMask = */ 0, + /*.Alignment = */ 0, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_B13_PCREL", + /*.Type = */ llvm::ELF::R_HEX_B13_PCREL, + /*.EffectiveBits = */ 13, + /*.BitMask = */ 0x00202ffe, + /*.Alignment = */ 4, + /*.Shift = */ 2, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_B9_PCREL", + /*.Type = */ llvm::ELF::R_HEX_B9_PCREL, + /*.EffectiveBits = */ 9, + /*.BitMask = */ 0x003000fe, + /*.Alignment = */ 4, + /*.Shift = */ 2, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_B32_PCREL_X", + /*.Type = */ llvm::ELF::R_HEX_B32_PCREL_X, + /*.EffectiveBits = */ 26, + /*.BitMask = */ 0x0fff3fff, + /*.Alignment = */ 4, + /*.Shift = */ 6, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_32_6_X", + /*.Type = */ llvm::ELF::R_HEX_32_6_X, + /*.EffectiveBits = */ 26, + /*.BitMask = */ 0x0fff3fff, + /*.Alignment = */ 4, + /*.Shift = */ 6, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_B22_PCREL_X", + /*.Type = */ llvm::ELF::R_HEX_B22_PCREL_X, + /*.EffectiveBits = */ 22, + /*.BitMask = */ 0x01ff3ffe, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_B15_PCREL_X", + /*.Type = */ llvm::ELF::R_HEX_B15_PCREL_X, + /*.EffectiveBits = */ 15, + /*.BitMask = */ 0x00df20fe, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_B13_PCREL_X", + /*.Type = */ llvm::ELF::R_HEX_B13_PCREL_X, + /*.EffectiveBits = */ 13, + /*.BitMask = */ 0x00202ffe, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_B9_PCREL_X", + /*.Type = */ llvm::ELF::R_HEX_B9_PCREL_X, + /*.EffectiveBits = */ 9, + /*.BitMask = */ 0x003000fe, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_B7_PCREL_X", + /*.Type = */ llvm::ELF::R_HEX_B7_PCREL_X, + /*.EffectiveBits = */ 7, + /*.BitMask = */ 0x00001f18, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_16_X", + /*.Type = */ llvm::ELF::R_HEX_16_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_12_X", + /*.Type = */ llvm::ELF::R_HEX_12_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0x7e0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_11_X", + /*.Type = */ llvm::ELF::R_HEX_11_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_10_X", + /*.Type = */ llvm::ELF::R_HEX_10_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_9_X", + /*.Type = */ llvm::ELF::R_HEX_9_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_8_X", + /*.Type = */ llvm::ELF::R_HEX_8_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_7_X", + /*.Type = */ llvm::ELF::R_HEX_7_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_6_X", + /*.Type = */ llvm::ELF::R_HEX_6_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_32_PCREL", + /*.Type = */ llvm::ELF::R_HEX_32_PCREL, + /*.EffectiveBits = */ 32, + /*.BitMask = */ 0xffffffff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_COPY", + /*.Type = */ llvm::ELF::R_HEX_COPY, + /*.EffectiveBits = */ 0, + /*.BitMask = */ 0, + /*.Alignment = */ 0, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_GLOB_DAT", + /*.Type = */ llvm::ELF::R_HEX_GLOB_DAT, + /*.EffectiveBits = */ 0, + /*.BitMask = */ 0, + /*.Alignment = */ 0, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_JMP_SLOT", + /*.Type = */ llvm::ELF::R_HEX_JMP_SLOT, + /*.EffectiveBits = */ 0, + /*.BitMask = */ 0, + /*.Alignment = */ 0, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_RELATIVE", + /*.Type = */ llvm::ELF::R_HEX_RELATIVE, + /*.EffectiveBits = */ 0, + /*.BitMask = */ 0, + /*.Alignment = */ 0, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_PLT_B22_PCREL", + /*.Type = */ llvm::ELF::R_HEX_PLT_B22_PCREL, + /*.EffectiveBits = */ 22, + /*.BitMask = */ 0x01ff3ffe, + /*.Alignment = */ 4, + /*.Shift = */ 2, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GOTREL_LO16", + /*.Type = */ llvm::ELF::R_HEX_GOTREL_LO16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GOTREL_HI16", + /*.Type = */ llvm::ELF::R_HEX_GOTREL_HI16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 16, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GOTREL_32", + /*.Type = */ llvm::ELF::R_HEX_GOTREL_32, + /*.EffectiveBits = */ 32, + /*.BitMask = */ 0xffffffff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GOT_LO16", + /*.Type = */ llvm::ELF::R_HEX_GOT_LO16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GOT_HI16", + /*.Type = */ llvm::ELF::R_HEX_GOT_HI16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 16, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GOT_32", + /*.Type = */ llvm::ELF::R_HEX_GOT_32, + /*.EffectiveBits = */ 32, + /*.BitMask = */ 0xffffffff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GOT_16", + /*.Type = */ llvm::ELF::R_HEX_GOT_16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_DTPMOD_32", + /*.Type = */ llvm::ELF::R_HEX_DTPMOD_32, + /*.EffectiveBits = */ 0, + /*.BitMask = */ 0, + /*.Alignment = */ 0, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_DTPREL_LO16", + /*.Type = */ llvm::ELF::R_HEX_DTPREL_LO16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_DTPREL_HI16", + /*.Type = */ llvm::ELF::R_HEX_DTPREL_HI16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 16, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_DTPREL_32", + /*.Type = */ llvm::ELF::R_HEX_DTPREL_32, + /*.EffectiveBits = */ 32, + /*.BitMask = */ 0xffffffff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_DTPREL_16", + /*.Type = */ llvm::ELF::R_HEX_DTPREL_16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GD_PLT_B22_PCREL", + /*.Type = */ llvm::ELF::R_HEX_GD_PLT_B22_PCREL, + /*.EffectiveBits = */ 22, + /*.BitMask = */ 0x01ff3ffe, + /*.Alignment = */ 4, + /*.Shift = */ 2, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GD_GOT_LO16", + /*.Type = */ llvm::ELF::R_HEX_GD_GOT_LO16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GD_GOT_HI16", + /*.Type = */ llvm::ELF::R_HEX_GD_GOT_HI16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 16, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GD_GOT_32", + /*.Type = */ llvm::ELF::R_HEX_GD_GOT_32, + /*.EffectiveBits = */ 32, + /*.BitMask = */ 0xffffffff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GD_GOT_16", + /*.Type = */ llvm::ELF::R_HEX_GD_GOT_16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_IE_LO16", + /*.Type = */ llvm::ELF::R_HEX_IE_LO16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_IE_HI16", + /*.Type = */ llvm::ELF::R_HEX_IE_HI16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 16, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_IE_32", + /*.Type = */ llvm::ELF::R_HEX_IE_32, + /*.EffectiveBits = */ 32, + /*.BitMask = */ 0xffffffff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_IE_GOT_LO16", + /*.Type = */ llvm::ELF::R_HEX_IE_GOT_LO16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_IE_GOT_HI16", + /*.Type = */ llvm::ELF::R_HEX_IE_GOT_HI16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 16, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_IE_GOT_32", + /*.Type = */ llvm::ELF::R_HEX_IE_GOT_32, + /*.EffectiveBits = */ 32, + /*.BitMask = */ 0xffffffff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_IE_GOT_16", + /*.Type = */ llvm::ELF::R_HEX_IE_GOT_16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_TPREL_LO16", + /*.Type = */ llvm::ELF::R_HEX_TPREL_LO16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_TPREL_HI16", + /*.Type = */ llvm::ELF::R_HEX_TPREL_HI16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 16, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_TPREL_32", + /*.Type = */ llvm::ELF::R_HEX_TPREL_32, + /*.EffectiveBits = */ 32, + /*.BitMask = */ 0xffffffff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_TPREL_16", + /*.Type = */ llvm::ELF::R_HEX_TPREL_16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_6_PCREL_X", + /*.Type = */ llvm::ELF::R_HEX_6_PCREL_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_GOTREL_32_6_X", + /*.Type = */ llvm::ELF::R_HEX_GOTREL_32_6_X, + /*.EffectiveBits = */ 26, + /*.BitMask = */ 0x0fff3fff, + /*.Alignment = */ 4, + /*.Shift = */ 6, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GOTREL_16_X", + /*.Type = */ llvm::ELF::R_HEX_GOTREL_16_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_GOTREL_11_X", + /*.Type = */ llvm::ELF::R_HEX_GOTREL_11_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_GOT_32_6_X", + /*.Type = */ llvm::ELF::R_HEX_GOT_32_6_X, + /*.EffectiveBits = */ 26, + /*.BitMask = */ 0x0fff3fff, + /*.Alignment = */ 4, + /*.Shift = */ 6, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GOT_16_X", + /*.Type = */ llvm::ELF::R_HEX_GOT_16_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GOT_11_X", + /*.Type = */ llvm::ELF::R_HEX_GOT_11_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_DTPREL_32_6_X", + /*.Type = */ llvm::ELF::R_HEX_DTPREL_32_6_X, + /*.EffectiveBits = */ 26, + /*.BitMask = */ 0x0fff3fff, + /*.Alignment = */ 4, + /*.Shift = */ 6, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_DTPREL_16_X", + /*.Type = */ llvm::ELF::R_HEX_DTPREL_16_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_DTPREL_11_X", + /*.Type = */ llvm::ELF::R_HEX_DTPREL_11_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_GD_GOT_32_6_X", + /*.Type = */ llvm::ELF::R_HEX_GD_GOT_32_6_X, + /*.EffectiveBits = */ 26, + /*.BitMask = */ 0x0fff3fff, + /*.Alignment = */ 4, + /*.Shift = */ 6, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GD_GOT_16_X", + /*.Type = */ llvm::ELF::R_HEX_GD_GOT_16_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_GD_GOT_11_X", + /*.Type = */ llvm::ELF::R_HEX_GD_GOT_11_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_IE_32_6_X", + /*.Type = */ llvm::ELF::R_HEX_IE_32_6_X, + /*.EffectiveBits = */ 26, + /*.BitMask = */ 0x0fff3fff, + /*.Alignment = */ 4, + /*.Shift = */ 6, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_IE_16_X", + /*.Type = */ llvm::ELF::R_HEX_IE_16_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_IE_GOT_32_6_X", + /*.Type = */ llvm::ELF::R_HEX_IE_GOT_32_6_X, + /*.EffectiveBits = */ 26, + /*.BitMask = */ 0x0fff3fff, + /*.Alignment = */ 4, + /*.Shift = */ 6, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_IE_GOT_16_X", + /*.Type = */ llvm::ELF::R_HEX_IE_GOT_16_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_IE_GOT_11_X", + /*.Type = */ llvm::ELF::R_HEX_IE_GOT_11_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_TPREL_32_6_X", + /*.Type = */ llvm::ELF::R_HEX_TPREL_32_6_X, + /*.EffectiveBits = */ 26, + /*.BitMask = */ 0x0fff3fff, + /*.Alignment = */ 4, + /*.Shift = */ 6, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_TPREL_16_X", + /*.Type = */ llvm::ELF::R_HEX_TPREL_16_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_TPREL_11_X", + /*.Type = */ llvm::ELF::R_HEX_TPREL_11_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_LD_PLT_B22_PCREL", + /*.Type = */ llvm::ELF::R_HEX_LD_PLT_B22_PCREL, + /*.EffectiveBits = */ 22, + /*.BitMask = */ 0x01ff3ffe, + /*.Alignment = */ 4, + /*.Shift = */ 2, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_LD_GOT_LO16", + /*.Type = */ llvm::ELF::R_HEX_LD_GOT_LO16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_LD_GOT_HI16", + /*.Type = */ llvm::ELF::R_HEX_LD_GOT_HI16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0x00c03fff, + /*.Alignment = */ 4, + /*.Shift = */ 16, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_LD_GOT_32", + /*.Type = */ llvm::ELF::R_HEX_LD_GOT_32, + /*.EffectiveBits = */ 32, + /*.BitMask = */ 0xffffffff, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_LD_GOT_16", + /*.Type = */ llvm::ELF::R_HEX_LD_GOT_16, + /*.EffectiveBits = */ 16, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ true, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_LD_GOT_32_6_X", + /*.Type = */ llvm::ELF::R_HEX_LD_GOT_32_6_X, + /*.EffectiveBits = */ 26, + /*.BitMask = */ 0x0fff3fff, + /*.Alignment = */ 4, + /*.Shift = */ 6, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_LD_GOT_16_X", + /*.Type = */ llvm::ELF::R_HEX_LD_GOT_16_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_LD_GOT_11_X", + /*.Type = */ llvm::ELF::R_HEX_LD_GOT_11_X, + /*.EffectiveBits = */ 6, + /*.BitMask = */ 0, + /*.Alignment = */ 4, + /*.Shift = */ 0, + /*.VerifyRange = */ false, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_23_REG", + /*.Type = */ llvm::ELF::R_HEX_23_REG, + /*.EffectiveBits = */ 21, + /*.BitMask = */ 0x0fff3fe0, + /*.Alignment = */ 4, + /*.Shift = */ 2, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }, + { + /*.Name = */ "R_HEX_GD_PLT_B22_PCREL_X", + /*.Type = */llvm::ELF::R_HEX_GD_PLT_B22_PCREL_X, + /*.EffectiveBits = */22, + /*.BitMask = */0x01ff3ffe, + /*.Alignment = */4, + /*.Shift = */0, + /*.VerifyRange = */false, + /*.VerifyAlignment = */false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_GD_PLT_B32_PCREL_X", + /*.Type = */llvm::ELF::R_HEX_GD_PLT_B32_PCREL_X, + /*.EffectiveBits = */26, + /*.BitMask = */0x0fff3fff, + /*.Alignment = */4, + /*.Shift = */6, + /*.VerifyRange = */false, + /*.VerifyAlignment = */false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_LD_PLT_B22_PCREL_X", + /*.Type = */llvm::ELF::R_HEX_LD_PLT_B22_PCREL_X, + /*.EffectiveBits = */22, + /*.BitMask = */0x01ff3ffe, + /*.Alignment = */4, + /*.Shift = */0, + /*.VerifyRange = */false, + /*.VerifyAlignment = */false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_LD_PLT_B32_PCREL_X", + /*.Type = */llvm::ELF::R_HEX_LD_PLT_B32_PCREL_X, + /*.EffectiveBits = */26, + /*.BitMask = */0x0fff3fff, + /*.Alignment = */4, + /*.Shift = */6, + /*.VerifyRange = */false, + /*.VerifyAlignment = */false, + /*.Signed = */ true, + }, + { + /*.Name = */ "R_HEX_27_REG", + /*.Type = */ llvm::ELF::R_HEX_27_REG, + /*.EffectiveBits = */ 25, + /*.BitMask = */ 0x0fff3fef, + /*.Alignment = */ 4, + /*.Shift = */ 2, + /*.VerifyRange = */ true, + /*.VerifyAlignment = */ false, + /*.Signed = */ false, + }}; + +} +} +#endif Index: ELF/Target.h =================================================================== --- ELF/Target.h +++ ELF/Target.h @@ -134,6 +134,7 @@ TargetInfo *getAMDGPUTargetInfo(); TargetInfo *getARMTargetInfo(); TargetInfo *getAVRTargetInfo(); +TargetInfo *getHexagonTargetInfo(); TargetInfo *getPPC64TargetInfo(); TargetInfo *getPPCTargetInfo(); TargetInfo *getSPARCV9TargetInfo(); Index: ELF/Target.cpp =================================================================== --- ELF/Target.cpp +++ ELF/Target.cpp @@ -60,6 +60,8 @@ return getARMTargetInfo(); case EM_AVR: return getAVRTargetInfo(); + case EM_HEXAGON: + return getHexagonTargetInfo(); case EM_MIPS: switch (Config->EKind) { case ELF32LEKind: Index: test/ELF/Inputs/hexagon.s =================================================================== --- /dev/null +++ test/ELF/Inputs/hexagon.s @@ -0,0 +1,7 @@ + +.global _start +_start: + nop +.global foo +foo: + jumpr lr Index: test/ELF/hexagon.s =================================================================== --- /dev/null +++ test/ELF/hexagon.s @@ -0,0 +1,90 @@ +# REQUIRES: hexagon +# RUN: llvm-mc -filetype=obj -triple=hexagon-unknown-elf %s -o %t +# RUN: llvm-mc -filetype=obj -triple=hexagon-unknown-elf %S/Inputs/hexagon.s -o %t2 +# RUN: ld.lld %t2 %t -o %t3 +# RUN: llvm-objdump -d %t3 | FileCheck %s + +# R_HEX_B22_PCREL +call #_start +# CHECK: call 0x11000 + +# R_HEX_B32_PCREL_X +# R_HEX_B22_PCREL_X +call ##_start +# CHECK: immext +# CHECK-NEXT: call 0x11000 + +# R_HEX_B15_PCREL +if (p0) call #_start +# CHECK: if (p0) call 0x11000 + +# R_HEX_B32_PCREL_X +# R_HEX_B15_PCREL_X +if (p0) call ##_start +# CHECK: immext +# CHECK-NEXT: if (p0) call 0x11000 + +# R_HEX_B13_PCREL +{ if (r0 != #0) jump:nt _start } +# CHECK: { if (r0!=#0) jump:nt 0x11000 } + +# R_HEX_B32_PCREL_X +# R_HEX_B9_PCREL_X +{r0 = #1; jump _start} +# CHECK: immext +# CHECK-NEXT: r0 = #1 ; jump 0x11000 + +# R_HEX_B7_PCREL +{ loop1 (#_start, #0) } +# CHECK: { loop1(0x11000,#0) } + +# R_HEX_B32_PCREL_X +# R_HEX_B7_PCREL_X +{ loop1 (##_start, #0) } +# CHECK: immext +# CHECK-NEXT: loop1(0x11000,#0) } + +# R_HEX_32_6_X +# R_HEX_16_X +r0 = #_start +# CHECK: immext +# CHECK-NEXT: r0 = ## + +# R_HEX_LO16 +# R_HEX_HI16 +r0.l = #_start +r0.h = #_start +# CHECK: r0.l = +# CHECK: r0.h = + +# R_HEX_32_6_X +# R_HEX_12_X +if (p0) r0 = ##_start +# CHECK: immext +# CHECK-NEXT: if (p0) r0 = + +# R_HEX_8_X +R3:2=combine(##_start,#5) +# CHECK: immext +# CHECK-NEXT: r3:2 = combine(##69632,#5) } + +# R_HEX_6_X +memh(r11=##_start)=r24.h +# CHECK: immext +# CHECK-NEXT: memh(r11=##69632) = r24.h } + +# R_HEX_GPREL16_0 +# R_HEX_GPREL16_1 +# R_HEX_GPREL16_2 +# R_HEX_GPREL16_3 +r0 = memb(#_start) +r0 = memh(#_start) +r0 = memw(#_start) +r1:0 = memd(#_start) +# CHECK: r0 = memb(gp +# CHECK: r0 = memh(gp +# CHECK: r0 = memw(gp +# CHECK: r1:0 = memd(gp + + + Index: test/lit.cfg.py =================================================================== --- test/lit.cfg.py +++ test/lit.cfg.py @@ -64,6 +64,7 @@ 'AMDGPU': 'amdgpu', 'ARM': 'arm', 'AVR': 'avr', + 'Hexagon': 'hexagon', 'Mips': 'mips', 'PowerPC': 'ppc', 'Sparc': 'sparc',