ARMv8/src/a64instruction/a64instruction_DPImmediate.h

43 lines
1.1 KiB
C

#include <stdbool.h>
#include "a64instruction_global.h"
#include "a64instruction_DP.h"
// Denotes the type of data processing operation
typedef enum {
a64inst_DPI_ARITHM,
a64inst_DPI_WIDEMOV
} a64inst_DPIOpType;
// Denotes the type of wide move operations supported by the architecture
typedef enum {
a64inst_MOVN = 0,
a64inst_UNDEFINED = 1,
a64inst_MOVZ = 2,
a64inst_MOVK = 3
} a64inst_wideMovOp;
// Holds data specific to arithmetic immediate data processing instructions
typedef struct {
bool shiftImmediate;
uint16_t immediate;
a64inst_regSpecifier src;
} a64inst_DPImmediate_ArithmData;
// Holds data specific to wide move immediate data processing instructions
typedef struct {
uint8_t shiftScalar;
uint16_t immediate;
} a64inst_DPImmediate_WideMovData;
// Holds data for immediate data processing instructions
typedef struct {
a64inst_regType regType;
a64inst_DPIOpType DPIOpType;
unsigned int processOp;
union {
a64inst_DPImmediate_ArithmData arithmData;
a64inst_DPImmediate_WideMovData wideMovData;
} processOpData;
a64inst_regSpecifier dest;
} a64inst_DPImmediateData;