{ ***************************************************** }
{                                                       }
{  Pascal language binding for the Capstone engine      }
{                                                       }
{  Unit Name: Capstone Api Header                       }
{     Author: Lsuper 2024.05.01                         }
{    Purpose: tricore.h                                 }
{    License: Mozilla Public License 2.0                }
{                                                       }
{  Copyright (c) 1998-2024 Super Studio                 }
{                                                       }
{ ***************************************************** }

unit Capstone.TriCore;

{$I Capstone.inc}

interface

const
  TRICORE_OP_COUNT = 8;

type
  /// Operand type for instruction's operands
  tricore_op_type = Integer;
  Ptricore_op_type = ^tricore_op_type;

const
  /// CS_OP_INVALID (Uninitialized).
  TRICORE_OP_INVALID = 0;
  /// CS_OP_REG (Register operand).
  TRICORE_OP_REG = 1;
  /// CS_OP_IMM (Immediate operand).
  TRICORE_OP_IMM = 2;
  /// CS_OP_MEM (Memory operand).
  TRICORE_OP_MEM_ = $80;

/// TriCore registers
type
  tricore_reg = Integer;
  Ptricore_reg = ^tricore_reg;

const
  TRICORE_REG_INVALID = 0;
  TRICORE_REG_FCX = 1;
  TRICORE_REG_PC = 2;
  TRICORE_REG_PCXI = 3;
  TRICORE_REG_PSW = 4;
  TRICORE_REG_A0 = 5;
  TRICORE_REG_A1 = 6;
  TRICORE_REG_A2 = 7;
  TRICORE_REG_A3 = 8;
  TRICORE_REG_A4 = 9;
  TRICORE_REG_A5 = 10;
  TRICORE_REG_A6 = 11;
  TRICORE_REG_A7 = 12;
  TRICORE_REG_A8 = 13;
  TRICORE_REG_A9 = 14;
  TRICORE_REG_A10 = 15;
  TRICORE_REG_A11 = 16;
  TRICORE_REG_A12 = 17;
  TRICORE_REG_A13 = 18;
  TRICORE_REG_A14 = 19;
  TRICORE_REG_A15 = 20;
  TRICORE_REG_D0 = 21;
  TRICORE_REG_D1 = 22;
  TRICORE_REG_D2 = 23;
  TRICORE_REG_D3 = 24;
  TRICORE_REG_D4 = 25;
  TRICORE_REG_D5 = 26;
  TRICORE_REG_D6 = 27;
  TRICORE_REG_D7 = 28;
  TRICORE_REG_D8 = 29;
  TRICORE_REG_D9 = 30;
  TRICORE_REG_D10 = 31;
  TRICORE_REG_D11 = 32;
  TRICORE_REG_D12 = 33;
  TRICORE_REG_D13 = 34;
  TRICORE_REG_D14 = 35;
  TRICORE_REG_D15 = 36;
  TRICORE_REG_E0 = 37;
  TRICORE_REG_E2 = 38;
  TRICORE_REG_E4 = 39;
  TRICORE_REG_E6 = 40;
  TRICORE_REG_E8 = 41;
  TRICORE_REG_E10 = 42;
  TRICORE_REG_E12 = 43;
  TRICORE_REG_E14 = 44;
  TRICORE_REG_P0 = 45;
  TRICORE_REG_P2 = 46;
  TRICORE_REG_P4 = 47;
  TRICORE_REG_P6 = 48;
  TRICORE_REG_P8 = 49;
  TRICORE_REG_P10 = 50;
  TRICORE_REG_P12 = 51;
  TRICORE_REG_P14 = 52;
  TRICORE_REG_A0_A1 = 53;
  TRICORE_REG_A2_A3 = 54;
  TRICORE_REG_A4_A5 = 55;
  TRICORE_REG_A6_A7 = 56;
  TRICORE_REG_A8_A9 = 57;
  TRICORE_REG_A10_A11 = 58;
  TRICORE_REG_A12_A13 = 59;
  TRICORE_REG_A14_A15 = 60;
  TRICORE_REG_ENDING = 61;

/// TriCore instruction
type
  tricore_insn = Integer;
  Ptricore_insn = ^tricore_insn;

const
  TRICORE_INS_INVALID = 0;
  TRICORE_INS_XOR_T = 1;
  TRICORE_INS_ABSDIFS_B = 2;
  TRICORE_INS_ABSDIFS_H = 3;
  TRICORE_INS_ABSDIFS = 4;
  TRICORE_INS_ABSDIF_B = 5;
  TRICORE_INS_ABSDIF_H = 6;
  TRICORE_INS_ABSDIF = 7;
  TRICORE_INS_ABSS_B = 8;
  TRICORE_INS_ABSS_H = 9;
  TRICORE_INS_ABSS = 10;
  TRICORE_INS_ABS_B = 11;
  TRICORE_INS_ABS_H = 12;
  TRICORE_INS_ABS = 13;
  TRICORE_INS_ADDC = 14;
  TRICORE_INS_ADDIH_A = 15;
  TRICORE_INS_ADDIH = 16;
  TRICORE_INS_ADDI = 17;
  TRICORE_INS_ADDSC_AT = 18;
  TRICORE_INS_ADDSC_A = 19;
  TRICORE_INS_ADDS_BU = 20;
  TRICORE_INS_ADDS_B = 21;
  TRICORE_INS_ADDS_H = 22;
  TRICORE_INS_ADDS_HU = 23;
  TRICORE_INS_ADDS_U = 24;
  TRICORE_INS_ADDS = 25;
  TRICORE_INS_ADDX = 26;
  TRICORE_INS_ADD_A = 27;
  TRICORE_INS_ADD_B = 28;
  TRICORE_INS_ADD_F = 29;
  TRICORE_INS_ADD_H = 30;
  TRICORE_INS_ADD = 31;
  TRICORE_INS_ANDN_T = 32;
  TRICORE_INS_ANDN = 33;
  TRICORE_INS_AND_ANDN_T = 34;
  TRICORE_INS_AND_AND_T = 35;
  TRICORE_INS_AND_EQ = 36;
  TRICORE_INS_AND_GE_U = 37;
  TRICORE_INS_AND_GE = 38;
  TRICORE_INS_AND_LT_U = 39;
  TRICORE_INS_AND_LT = 40;
  TRICORE_INS_AND_NE = 41;
  TRICORE_INS_AND_NOR_T = 42;
  TRICORE_INS_AND_OR_T = 43;
  TRICORE_INS_AND_T = 44;
  TRICORE_INS_AND = 45;
  TRICORE_INS_BISR = 46;
  TRICORE_INS_BMERGE = 47;
  TRICORE_INS_BSPLIT = 48;
  TRICORE_INS_CACHEA_I = 49;
  TRICORE_INS_CACHEA_WI = 50;
  TRICORE_INS_CACHEA_W = 51;
  TRICORE_INS_CACHEI_I = 52;
  TRICORE_INS_CACHEI_WI = 53;
  TRICORE_INS_CACHEI_W = 54;
  TRICORE_INS_CADDN_A = 55;
  TRICORE_INS_CADDN = 56;
  TRICORE_INS_CADD_A = 57;
  TRICORE_INS_CADD = 58;
  TRICORE_INS_CALLA = 59;
  TRICORE_INS_CALLI = 60;
  TRICORE_INS_CALL = 61;
  TRICORE_INS_CLO_B = 62;
  TRICORE_INS_CLO_H = 63;
  TRICORE_INS_CLO = 64;
  TRICORE_INS_CLS_B = 65;
  TRICORE_INS_CLS_H = 66;
  TRICORE_INS_CLS = 67;
  TRICORE_INS_CLZ_B = 68;
  TRICORE_INS_CLZ_H = 69;
  TRICORE_INS_CLZ = 70;
  TRICORE_INS_CMOVN = 71;
  TRICORE_INS_CMOV = 72;
  TRICORE_INS_CMPSWAP_W = 73;
  TRICORE_INS_CMP_F = 74;
  TRICORE_INS_CRC32B_W = 75;
  TRICORE_INS_CRC32L_W = 76;
  TRICORE_INS_CRC32_B = 77;
  TRICORE_INS_CRCN = 78;
  TRICORE_INS_CSUBN_A = 79;
  TRICORE_INS_CSUBN = 80;
  TRICORE_INS_CSUB_A = 81;
  TRICORE_INS_CSUB = 82;
  TRICORE_INS_DEBUG = 83;
  TRICORE_INS_DEXTR = 84;
  TRICORE_INS_DIFSC_A = 85;
  TRICORE_INS_DISABLE = 86;
  TRICORE_INS_DIV_F = 87;
  TRICORE_INS_DIV_U = 88;
  TRICORE_INS_DIV = 89;
  TRICORE_INS_DSYNC = 90;
  TRICORE_INS_DVADJ = 91;
  TRICORE_INS_DVINIT_BU = 92;
  TRICORE_INS_DVINIT_B = 93;
  TRICORE_INS_DVINIT_HU = 94;
  TRICORE_INS_DVINIT_H = 95;
  TRICORE_INS_DVINIT_U = 96;
  TRICORE_INS_DVINIT = 97;
  TRICORE_INS_DVSTEP_U = 98;
  TRICORE_INS_DVSTEP = 99;
  TRICORE_INS_ENABLE = 100;
  TRICORE_INS_EQANY_B = 101;
  TRICORE_INS_EQANY_H = 102;
  TRICORE_INS_EQZ_A = 103;
  TRICORE_INS_EQ_A = 104;
  TRICORE_INS_EQ_B = 105;
  TRICORE_INS_EQ_H = 106;
  TRICORE_INS_EQ_W = 107;
  TRICORE_INS_EQ = 108;
  TRICORE_INS_EXTR_U = 109;
  TRICORE_INS_EXTR = 110;
  TRICORE_INS_FCALLA = 111;
  TRICORE_INS_FCALLI = 112;
  TRICORE_INS_FCALL = 113;
  TRICORE_INS_FRET = 114;
  TRICORE_INS_FTOHP = 115;
  TRICORE_INS_FTOIZ = 116;
  TRICORE_INS_FTOI = 117;
  TRICORE_INS_FTOQ31Z = 118;
  TRICORE_INS_FTOQ31 = 119;
  TRICORE_INS_FTOUZ = 120;
  TRICORE_INS_FTOU = 121;
  TRICORE_INS_GE_A = 122;
  TRICORE_INS_GE_U = 123;
  TRICORE_INS_GE = 124;
  TRICORE_INS_HPTOF = 125;
  TRICORE_INS_IMASK = 126;
  TRICORE_INS_INSERT = 127;
  TRICORE_INS_INSN_T = 128;
  TRICORE_INS_INS_T = 129;
  TRICORE_INS_ISYNC = 130;
  TRICORE_INS_ITOF = 131;
  TRICORE_INS_IXMAX_U = 132;
  TRICORE_INS_IXMAX = 133;
  TRICORE_INS_IXMIN_U = 134;
  TRICORE_INS_IXMIN = 135;
  TRICORE_INS_JA = 136;
  TRICORE_INS_JEQ_A = 137;
  TRICORE_INS_JEQ = 138;
  TRICORE_INS_JGEZ = 139;
  TRICORE_INS_JGE_U = 140;
  TRICORE_INS_JGE = 141;
  TRICORE_INS_JGTZ = 142;
  TRICORE_INS_JI = 143;
  TRICORE_INS_JLA = 144;
  TRICORE_INS_JLEZ = 145;
  TRICORE_INS_JLI = 146;
  TRICORE_INS_JLTZ = 147;
  TRICORE_INS_JLT_U = 148;
  TRICORE_INS_JLT = 149;
  TRICORE_INS_JL = 150;
  TRICORE_INS_JNED = 151;
  TRICORE_INS_JNEI = 152;
  TRICORE_INS_JNE_A = 153;
  TRICORE_INS_JNE = 154;
  TRICORE_INS_JNZ_A = 155;
  TRICORE_INS_JNZ_T = 156;
  TRICORE_INS_JNZ = 157;
  TRICORE_INS_JZ_A = 158;
  TRICORE_INS_JZ_T = 159;
  TRICORE_INS_JZ = 160;
  TRICORE_INS_J = 161;
  TRICORE_INS_LDLCX = 162;
  TRICORE_INS_LDMST = 163;
  TRICORE_INS_LDUCX = 164;
  TRICORE_INS_LD_A = 165;
  TRICORE_INS_LD_BU = 166;
  TRICORE_INS_LD_B = 167;
  TRICORE_INS_LD_DA = 168;
  TRICORE_INS_LD_D = 169;
  TRICORE_INS_LD_HU = 170;
  TRICORE_INS_LD_H = 171;
  TRICORE_INS_LD_Q = 172;
  TRICORE_INS_LD_W = 173;
  TRICORE_INS_LEA = 174;
  TRICORE_INS_LHA = 175;
  TRICORE_INS_LOOPU = 176;
  TRICORE_INS_LOOP = 177;
  TRICORE_INS_LT_A = 178;
  TRICORE_INS_LT_B = 179;
  TRICORE_INS_LT_BU = 180;
  TRICORE_INS_LT_H = 181;
  TRICORE_INS_LT_HU = 182;
  TRICORE_INS_LT_U = 183;
  TRICORE_INS_LT_W = 184;
  TRICORE_INS_LT_WU = 185;
  TRICORE_INS_LT = 186;
  TRICORE_INS_MADDMS_H = 187;
  TRICORE_INS_MADDMS_U = 188;
  TRICORE_INS_MADDMS = 189;
  TRICORE_INS_MADDM_H = 190;
  TRICORE_INS_MADDM_Q = 191;
  TRICORE_INS_MADDM_U = 192;
  TRICORE_INS_MADDM = 193;
  TRICORE_INS_MADDRS_H = 194;
  TRICORE_INS_MADDRS_Q = 195;
  TRICORE_INS_MADDR_H = 196;
  TRICORE_INS_MADDR_Q = 197;
  TRICORE_INS_MADDSUMS_H = 198;
  TRICORE_INS_MADDSUM_H = 199;
  TRICORE_INS_MADDSURS_H = 200;
  TRICORE_INS_MADDSUR_H = 201;
  TRICORE_INS_MADDSUS_H = 202;
  TRICORE_INS_MADDSU_H = 203;
  TRICORE_INS_MADDS_H = 204;
  TRICORE_INS_MADDS_Q = 205;
  TRICORE_INS_MADDS_U = 206;
  TRICORE_INS_MADDS = 207;
  TRICORE_INS_MADD_F = 208;
  TRICORE_INS_MADD_H = 209;
  TRICORE_INS_MADD_Q = 210;
  TRICORE_INS_MADD_U = 211;
  TRICORE_INS_MADD = 212;
  TRICORE_INS_MAX_B = 213;
  TRICORE_INS_MAX_BU = 214;
  TRICORE_INS_MAX_H = 215;
  TRICORE_INS_MAX_HU = 216;
  TRICORE_INS_MAX_U = 217;
  TRICORE_INS_MAX = 218;
  TRICORE_INS_MFCR = 219;
  TRICORE_INS_MIN_B = 220;
  TRICORE_INS_MIN_BU = 221;
  TRICORE_INS_MIN_H = 222;
  TRICORE_INS_MIN_HU = 223;
  TRICORE_INS_MIN_U = 224;
  TRICORE_INS_MIN = 225;
  TRICORE_INS_MOVH_A = 226;
  TRICORE_INS_MOVH = 227;
  TRICORE_INS_MOVZ_A = 228;
  TRICORE_INS_MOV_AA = 229;
  TRICORE_INS_MOV_A = 230;
  TRICORE_INS_MOV_D = 231;
  TRICORE_INS_MOV_U = 232;
  TRICORE_INS_MOV = 233;
  TRICORE_INS_MSUBADMS_H = 234;
  TRICORE_INS_MSUBADM_H = 235;
  TRICORE_INS_MSUBADRS_H = 236;
  TRICORE_INS_MSUBADR_H = 237;
  TRICORE_INS_MSUBADS_H = 238;
  TRICORE_INS_MSUBAD_H = 239;
  TRICORE_INS_MSUBMS_H = 240;
  TRICORE_INS_MSUBMS_U = 241;
  TRICORE_INS_MSUBMS = 242;
  TRICORE_INS_MSUBM_H = 243;
  TRICORE_INS_MSUBM_Q = 244;
  TRICORE_INS_MSUBM_U = 245;
  TRICORE_INS_MSUBM = 246;
  TRICORE_INS_MSUBRS_H = 247;
  TRICORE_INS_MSUBRS_Q = 248;
  TRICORE_INS_MSUBR_H = 249;
  TRICORE_INS_MSUBR_Q = 250;
  TRICORE_INS_MSUBS_H = 251;
  TRICORE_INS_MSUBS_Q = 252;
  TRICORE_INS_MSUBS_U = 253;
  TRICORE_INS_MSUBS = 254;
  TRICORE_INS_MSUB_F = 255;
  TRICORE_INS_MSUB_H = 256;
  TRICORE_INS_MSUB_Q = 257;
  TRICORE_INS_MSUB_U = 258;
  TRICORE_INS_MSUB = 259;
  TRICORE_INS_MTCR = 260;
  TRICORE_INS_MULMS_H = 261;
  TRICORE_INS_MULM_H = 262;
  TRICORE_INS_MULM_U = 263;
  TRICORE_INS_MULM = 264;
  TRICORE_INS_MULR_H = 265;
  TRICORE_INS_MULR_Q = 266;
  TRICORE_INS_MULS_U = 267;
  TRICORE_INS_MULS = 268;
  TRICORE_INS_MUL_F = 269;
  TRICORE_INS_MUL_H = 270;
  TRICORE_INS_MUL_Q = 271;
  TRICORE_INS_MUL_U = 272;
  TRICORE_INS_MUL = 273;
  TRICORE_INS_NAND_T = 274;
  TRICORE_INS_NAND = 275;
  TRICORE_INS_NEZ_A = 276;
  TRICORE_INS_NE_A = 277;
  TRICORE_INS_NE = 278;
  TRICORE_INS_NOP = 279;
  TRICORE_INS_NOR_T = 280;
  TRICORE_INS_NOR = 281;
  TRICORE_INS_NOT = 282;
  TRICORE_INS_ORN_T = 283;
  TRICORE_INS_ORN = 284;
  TRICORE_INS_OR_ANDN_T = 285;
  TRICORE_INS_OR_AND_T = 286;
  TRICORE_INS_OR_EQ = 287;
  TRICORE_INS_OR_GE_U = 288;
  TRICORE_INS_OR_GE = 289;
  TRICORE_INS_OR_LT_U = 290;
  TRICORE_INS_OR_LT = 291;
  TRICORE_INS_OR_NE = 292;
  TRICORE_INS_OR_NOR_T = 293;
  TRICORE_INS_OR_OR_T = 294;
  TRICORE_INS_OR_T = 295;
  TRICORE_INS_OR = 296;
  TRICORE_INS_PACK = 297;
  TRICORE_INS_PARITY = 298;
  TRICORE_INS_POPCNT_W = 299;
  TRICORE_INS_Q31TOF = 300;
  TRICORE_INS_QSEED_F = 301;
  TRICORE_INS_RESTORE = 302;
  TRICORE_INS_RET = 303;
  TRICORE_INS_RFE = 304;
  TRICORE_INS_RFM = 305;
  TRICORE_INS_RSLCX = 306;
  TRICORE_INS_RSTV = 307;
  TRICORE_INS_RSUBS_U = 308;
  TRICORE_INS_RSUBS = 309;
  TRICORE_INS_RSUB = 310;
  TRICORE_INS_SAT_BU = 311;
  TRICORE_INS_SAT_B = 312;
  TRICORE_INS_SAT_HU = 313;
  TRICORE_INS_SAT_H = 314;
  TRICORE_INS_SELN_A = 315;
  TRICORE_INS_SELN = 316;
  TRICORE_INS_SEL_A = 317;
  TRICORE_INS_SEL = 318;
  TRICORE_INS_SHAS = 319;
  TRICORE_INS_SHA_B = 320;
  TRICORE_INS_SHA_H = 321;
  TRICORE_INS_SHA = 322;
  TRICORE_INS_SHUFFLE = 323;
  TRICORE_INS_SH_ANDN_T = 324;
  TRICORE_INS_SH_AND_T = 325;
  TRICORE_INS_SH_B = 326;
  TRICORE_INS_SH_EQ = 327;
  TRICORE_INS_SH_GE_U = 328;
  TRICORE_INS_SH_GE = 329;
  TRICORE_INS_SH_H = 330;
  TRICORE_INS_SH_LT_U = 331;
  TRICORE_INS_SH_LT = 332;
  TRICORE_INS_SH_NAND_T = 333;
  TRICORE_INS_SH_NE = 334;
  TRICORE_INS_SH_NOR_T = 335;
  TRICORE_INS_SH_ORN_T = 336;
  TRICORE_INS_SH_OR_T = 337;
  TRICORE_INS_SH_XNOR_T = 338;
  TRICORE_INS_SH_XOR_T = 339;
  TRICORE_INS_SH = 340;
  TRICORE_INS_STLCX = 341;
  TRICORE_INS_STUCX = 342;
  TRICORE_INS_ST_A = 343;
  TRICORE_INS_ST_B = 344;
  TRICORE_INS_ST_DA = 345;
  TRICORE_INS_ST_D = 346;
  TRICORE_INS_ST_H = 347;
  TRICORE_INS_ST_Q = 348;
  TRICORE_INS_ST_T = 349;
  TRICORE_INS_ST_W = 350;
  TRICORE_INS_SUBC = 351;
  TRICORE_INS_SUBSC_A = 352;
  TRICORE_INS_SUBS_BU = 353;
  TRICORE_INS_SUBS_B = 354;
  TRICORE_INS_SUBS_HU = 355;
  TRICORE_INS_SUBS_H = 356;
  TRICORE_INS_SUBS_U = 357;
  TRICORE_INS_SUBS = 358;
  TRICORE_INS_SUBX = 359;
  TRICORE_INS_SUB_A = 360;
  TRICORE_INS_SUB_B = 361;
  TRICORE_INS_SUB_F = 362;
  TRICORE_INS_SUB_H = 363;
  TRICORE_INS_SUB = 364;
  TRICORE_INS_SVLCX = 365;
  TRICORE_INS_SWAPMSK_W = 366;
  TRICORE_INS_SWAP_A = 367;
  TRICORE_INS_SWAP_W = 368;
  TRICORE_INS_SYSCALL = 369;
  TRICORE_INS_TLBDEMAP = 370;
  TRICORE_INS_TLBFLUSH_A = 371;
  TRICORE_INS_TLBFLUSH_B = 372;
  TRICORE_INS_TLBMAP = 373;
  TRICORE_INS_TLBPROBE_A = 374;
  TRICORE_INS_TLBPROBE_I = 375;
  TRICORE_INS_TRAPSV = 376;
  TRICORE_INS_TRAPV = 377;
  TRICORE_INS_UNPACK = 378;
  TRICORE_INS_UPDFL = 379;
  TRICORE_INS_UTOF = 380;
  TRICORE_INS_WAIT = 381;
  TRICORE_INS_XNOR_T = 382;
  TRICORE_INS_XNOR = 383;
  TRICORE_INS_XOR_EQ = 384;
  TRICORE_INS_XOR_GE_U = 385;
  TRICORE_INS_XOR_GE = 386;
  TRICORE_INS_XOR_LT_U = 387;
  TRICORE_INS_XOR_LT = 388;
  TRICORE_INS_XOR_NE = 389;
  TRICORE_INS_XOR = 390;
  TRICORE_INS_ENDING = 391;

/// Group of TriCore instructions
type
  tricore_insn_group = Integer;
  Ptricore_insn_group = ^tricore_insn_group;

const
  /// = CS_GRP_INVALID
  TRICORE_GRP_INVALID = 0;
  /// = CS_GRP_CALL
  TRICORE_GRP_CALL = 1;
  /// = CS_GRP_JUMP
  TRICORE_GRP_JUMP = 2;
  /// mark the end of the list of groups
  TRICORE_GRP_ENDING = 3;

type
  tricore_feature_t = Integer;
  Ptricore_feature_t = ^tricore_feature_t;

const
  TRICORE_FEATURE_INVALID = 0;
  TRICORE_FEATURE_HasV110 = 128;
  TRICORE_FEATURE_HasV120_UP = 129;
  TRICORE_FEATURE_HasV130_UP = 130;
  TRICORE_FEATURE_HasV161 = 131;
  TRICORE_FEATURE_HasV160_UP = 132;
  TRICORE_FEATURE_HasV131_UP = 133;
  TRICORE_FEATURE_HasV161_UP = 134;
  TRICORE_FEATURE_HasV162 = 135;
  TRICORE_FEATURE_HasV162_UP = 136;
  /// mark the end of the list of features
  TRICORE_FEATURE_ENDING = 137;

type
  // Forward declarations
  Ptricore_op_mem = ^tricore_op_mem;
  Pcs_tricore_op = ^cs_tricore_op;
  Pcs_tricore = ^cs_tricore;

  /// Instruction's operand referring to memory
  /// This is associated with TRICORE_OP_MEM operand type above
  tricore_op_mem = record
    /// base register
    base: UInt8;
    /// displacement/offset value
    disp: Int32;
  end;

  cs_tricore_op_detail = record
    case Integer of
      0: (/// register value for REG operand
    reg: Cardinal);
      1: (/// immediate value for IMM operand
    imm: Int32);
      2: (/// base/disp value for MEM operand
    mem: tricore_op_mem);
  end;

  /// Instruction operand
  cs_tricore_op = record
    /// operand type
    type_: tricore_op_type;
    /// union op detail
    detail: cs_tricore_op_detail;
    /// How is this operand accessed? (READ, WRITE or READ|WRITE)
    access: UInt8;
  end;

  /// Instruction structure
  cs_tricore = record
    /// number of operands of this instruction.
    op_count: UInt8;
    /// operands for this instruction.
    operands: array[0..7] of cs_tricore_op;
    /// whether the flags register is updated.
    update_flags: Boolean;
  end;

  tricore_feature = tricore_feature_t;

implementation

end.
