|
@@ -13,10 +13,10 @@
|
|
|
/* VMLA */
|
|
/* VMLA */
|
|
|
/* cond 1110 0D00 Vn-- Vd-- 101X N0M0 Vm-- */
|
|
/* cond 1110 0D00 Vn-- Vd-- 101X N0M0 Vm-- */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vmla_inst {
|
|
|
|
|
|
|
+struct vmla_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vmla_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmla)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmla)(unsigned int inst, int index)
|
|
@@ -63,10 +63,10 @@ VMLA_INST:
|
|
|
/* VNMLS */
|
|
/* VNMLS */
|
|
|
/* cond 1110 0D00 Vn-- Vd-- 101X N1M0 Vm-- */
|
|
/* cond 1110 0D00 Vn-- Vd-- 101X N1M0 Vm-- */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vmls_inst {
|
|
|
|
|
|
|
+struct vmls_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vmls_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmls)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmls)(unsigned int inst, int index)
|
|
@@ -113,10 +113,10 @@ VMLS_INST:
|
|
|
/* VNMLA */
|
|
/* VNMLA */
|
|
|
/* cond 1110 0D01 Vn-- Vd-- 101X N1M0 Vm-- */
|
|
/* cond 1110 0D01 Vn-- Vd-- 101X N1M0 Vm-- */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vnmla_inst {
|
|
|
|
|
|
|
+struct vnmla_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vnmla_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vnmla)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vnmla)(unsigned int inst, int index)
|
|
@@ -164,10 +164,10 @@ VNMLA_INST:
|
|
|
/* cond 1110 0D01 Vn-- Vd-- 101X N0M0 Vm-- */
|
|
/* cond 1110 0D01 Vn-- Vd-- 101X N0M0 Vm-- */
|
|
|
|
|
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vnmls_inst {
|
|
|
|
|
|
|
+struct vnmls_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vnmls_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vnmls)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vnmls)(unsigned int inst, int index)
|
|
@@ -214,10 +214,10 @@ VNMLS_INST:
|
|
|
/* VNMUL */
|
|
/* VNMUL */
|
|
|
/* cond 1110 0D10 Vn-- Vd-- 101X N0M0 Vm-- */
|
|
/* cond 1110 0D10 Vn-- Vd-- 101X N0M0 Vm-- */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vnmul_inst {
|
|
|
|
|
|
|
+struct vnmul_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vnmul_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vnmul)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vnmul)(unsigned int inst, int index)
|
|
@@ -264,10 +264,10 @@ VNMUL_INST:
|
|
|
/* VMUL */
|
|
/* VMUL */
|
|
|
/* cond 1110 0D10 Vn-- Vd-- 101X N0M0 Vm-- */
|
|
/* cond 1110 0D10 Vn-- Vd-- 101X N0M0 Vm-- */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vmul_inst {
|
|
|
|
|
|
|
+struct vmul_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vmul_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmul)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmul)(unsigned int inst, int index)
|
|
@@ -314,10 +314,10 @@ VMUL_INST:
|
|
|
/* VADD */
|
|
/* VADD */
|
|
|
/* cond 1110 0D11 Vn-- Vd-- 101X N0M0 Vm-- */
|
|
/* cond 1110 0D11 Vn-- Vd-- 101X N0M0 Vm-- */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vadd_inst {
|
|
|
|
|
|
|
+struct vadd_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vadd_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vadd)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vadd)(unsigned int inst, int index)
|
|
@@ -364,10 +364,10 @@ VADD_INST:
|
|
|
/* VSUB */
|
|
/* VSUB */
|
|
|
/* cond 1110 0D11 Vn-- Vd-- 101X N1M0 Vm-- */
|
|
/* cond 1110 0D11 Vn-- Vd-- 101X N1M0 Vm-- */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vsub_inst {
|
|
|
|
|
|
|
+struct vsub_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vsub_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vsub)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vsub)(unsigned int inst, int index)
|
|
@@ -414,10 +414,10 @@ VSUB_INST:
|
|
|
/* VDIV */
|
|
/* VDIV */
|
|
|
/* cond 1110 1D00 Vn-- Vd-- 101X N0M0 Vm-- */
|
|
/* cond 1110 1D00 Vn-- Vd-- 101X N0M0 Vm-- */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vdiv_inst {
|
|
|
|
|
|
|
+struct vdiv_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vdiv_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vdiv)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vdiv)(unsigned int inst, int index)
|
|
@@ -465,11 +465,11 @@ VDIV_INST:
|
|
|
/* cond 1110 1D11 im4H Vd-- 101X 0000 im4L */
|
|
/* cond 1110 1D11 im4H Vd-- 101X 0000 im4L */
|
|
|
/* cond 1110 opc1 CRn- CRd- copr op20 CRm- CDP */
|
|
/* cond 1110 opc1 CRn- CRd- copr op20 CRm- CDP */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vmovi_inst {
|
|
|
|
|
|
|
+struct vmovi_inst {
|
|
|
unsigned int single;
|
|
unsigned int single;
|
|
|
unsigned int d;
|
|
unsigned int d;
|
|
|
unsigned int imm;
|
|
unsigned int imm;
|
|
|
-} vmovi_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovi)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovi)(unsigned int inst, int index)
|
|
@@ -514,11 +514,11 @@ VMOVI_INST:
|
|
|
/* cond 1110 1D11 0000 Vd-- 101X 01M0 Vm-- */
|
|
/* cond 1110 1D11 0000 Vd-- 101X 01M0 Vm-- */
|
|
|
/* cond 1110 opc1 CRn- CRd- copr op20 CRm- CDP */
|
|
/* cond 1110 opc1 CRn- CRd- copr op20 CRm- CDP */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vmovr_inst {
|
|
|
|
|
|
|
+struct vmovr_inst {
|
|
|
unsigned int single;
|
|
unsigned int single;
|
|
|
unsigned int d;
|
|
unsigned int d;
|
|
|
unsigned int m;
|
|
unsigned int m;
|
|
|
-} vmovr_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovr)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovr)(unsigned int inst, int index)
|
|
@@ -609,10 +609,10 @@ VABS_INST:
|
|
|
/* cond 1110 1D11 0001 Vd-- 101X 11M0 Vm-- */
|
|
/* cond 1110 1D11 0001 Vd-- 101X 11M0 Vm-- */
|
|
|
|
|
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vneg_inst {
|
|
|
|
|
|
|
+struct vneg_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vneg_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vneg)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vneg)(unsigned int inst, int index)
|
|
@@ -659,10 +659,10 @@ VNEG_INST:
|
|
|
/* VSQRT */
|
|
/* VSQRT */
|
|
|
/* cond 1110 1D11 0001 Vd-- 101X 11M0 Vm-- */
|
|
/* cond 1110 1D11 0001 Vd-- 101X 11M0 Vm-- */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vsqrt_inst {
|
|
|
|
|
|
|
+struct vsqrt_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vsqrt_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vsqrt)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vsqrt)(unsigned int inst, int index)
|
|
@@ -709,10 +709,10 @@ VSQRT_INST:
|
|
|
/* VCMP VCMPE */
|
|
/* VCMP VCMPE */
|
|
|
/* cond 1110 1D11 0100 Vd-- 101X E1M0 Vm-- Encoding 1 */
|
|
/* cond 1110 1D11 0100 Vd-- 101X E1M0 Vm-- Encoding 1 */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vcmp_inst {
|
|
|
|
|
|
|
+struct vcmp_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vcmp_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vcmp)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vcmp)(unsigned int inst, int index)
|
|
@@ -759,10 +759,10 @@ VCMP_INST:
|
|
|
/* VCMP VCMPE */
|
|
/* VCMP VCMPE */
|
|
|
/* cond 1110 1D11 0100 Vd-- 101X E1M0 Vm-- Encoding 2 */
|
|
/* cond 1110 1D11 0100 Vd-- 101X E1M0 Vm-- Encoding 2 */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vcmp2_inst {
|
|
|
|
|
|
|
+struct vcmp2_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vcmp2_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vcmp2)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vcmp2)(unsigned int inst, int index)
|
|
@@ -809,10 +809,10 @@ VCMP2_INST:
|
|
|
/* VCVTBDS between double and single */
|
|
/* VCVTBDS between double and single */
|
|
|
/* cond 1110 1D11 0111 Vd-- 101X 11M0 Vm-- */
|
|
/* cond 1110 1D11 0111 Vd-- 101X 11M0 Vm-- */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vcvtbds_inst {
|
|
|
|
|
|
|
+struct vcvtbds_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vcvtbds_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vcvtbds)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vcvtbds)(unsigned int inst, int index)
|
|
@@ -859,10 +859,10 @@ VCVTBDS_INST:
|
|
|
/* VCVTBFF between floating point and fixed point */
|
|
/* VCVTBFF between floating point and fixed point */
|
|
|
/* cond 1110 1D11 1op2 Vd-- 101X X1M0 Vm-- */
|
|
/* cond 1110 1D11 1op2 Vd-- 101X X1M0 Vm-- */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vcvtbff_inst {
|
|
|
|
|
|
|
+struct vcvtbff_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vcvtbff_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vcvtbff)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vcvtbff)(unsigned int inst, int index)
|
|
@@ -911,10 +911,10 @@ VCVTBFF_INST:
|
|
|
/* VCVTBFI between floating point and integer */
|
|
/* VCVTBFI between floating point and integer */
|
|
|
/* cond 1110 1D11 1op2 Vd-- 101X X1M0 Vm-- */
|
|
/* cond 1110 1D11 1op2 Vd-- 101X X1M0 Vm-- */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vcvtbfi_inst {
|
|
|
|
|
|
|
+struct vcvtbfi_inst {
|
|
|
unsigned int instr;
|
|
unsigned int instr;
|
|
|
unsigned int dp_operation;
|
|
unsigned int dp_operation;
|
|
|
-} vcvtbfi_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vcvtbfi)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vcvtbfi)(unsigned int inst, int index)
|
|
@@ -967,11 +967,11 @@ VCVTBFI_INST:
|
|
|
/* cond 1110 000o Vn-- Rt-- 1010 N001 0000 */
|
|
/* cond 1110 000o Vn-- Rt-- 1010 N001 0000 */
|
|
|
/* cond 1110 op11 CRn- Rt-- copr op21 CRm- MRC */
|
|
/* cond 1110 op11 CRn- Rt-- copr op21 CRm- MRC */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vmovbrs_inst {
|
|
|
|
|
|
|
+struct vmovbrs_inst {
|
|
|
unsigned int to_arm;
|
|
unsigned int to_arm;
|
|
|
unsigned int t;
|
|
unsigned int t;
|
|
|
unsigned int n;
|
|
unsigned int n;
|
|
|
-} vmovbrs_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbrs)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbrs)(unsigned int inst, int index)
|
|
@@ -1013,10 +1013,10 @@ VMOVBRS_INST:
|
|
|
/* cond 1110 1110 reg- Rt-- 1010 0001 0000 */
|
|
/* cond 1110 1110 reg- Rt-- 1010 0001 0000 */
|
|
|
/* cond 1110 op10 CRn- Rt-- copr op21 CRm- MCR */
|
|
/* cond 1110 op10 CRn- Rt-- copr op21 CRm- MCR */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vmsr_inst {
|
|
|
|
|
|
|
+struct vmsr_inst {
|
|
|
unsigned int reg;
|
|
unsigned int reg;
|
|
|
unsigned int Rd;
|
|
unsigned int Rd;
|
|
|
-} vmsr_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmsr)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmsr)(unsigned int inst, int index)
|
|
@@ -1040,7 +1040,7 @@ VMSR_INST:
|
|
|
{
|
|
{
|
|
|
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
|
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
|
|
/* FIXME: special case for access to FPSID and FPEXC, VFP must be disabled ,
|
|
/* FIXME: special case for access to FPSID and FPEXC, VFP must be disabled ,
|
|
|
- and in privilegied mode */
|
|
|
|
|
|
|
+ and in privileged mode */
|
|
|
/* Exceptions must be checked, according to v7 ref manual */
|
|
/* Exceptions must be checked, according to v7 ref manual */
|
|
|
CHECK_VFP_ENABLED;
|
|
CHECK_VFP_ENABLED;
|
|
|
|
|
|
|
@@ -1060,12 +1060,12 @@ VMSR_INST:
|
|
|
/* cond 1110 0XX0 Vd-- Rt-- 1011 DXX1 0000 */
|
|
/* cond 1110 0XX0 Vd-- Rt-- 1011 DXX1 0000 */
|
|
|
/* cond 1110 op10 CRn- Rt-- copr op21 CRm- MCR */
|
|
/* cond 1110 op10 CRn- Rt-- copr op21 CRm- MCR */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vmovbrc_inst {
|
|
|
|
|
|
|
+struct vmovbrc_inst {
|
|
|
unsigned int esize;
|
|
unsigned int esize;
|
|
|
unsigned int index;
|
|
unsigned int index;
|
|
|
unsigned int d;
|
|
unsigned int d;
|
|
|
unsigned int t;
|
|
unsigned int t;
|
|
|
-} vmovbrc_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbrc)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbrc)(unsigned int inst, int index)
|
|
@@ -1109,10 +1109,10 @@ VMOVBRC_INST:
|
|
|
/* cond 1110 1111 CRn- Rt-- 1010 0001 0000 */
|
|
/* cond 1110 1111 CRn- Rt-- 1010 0001 0000 */
|
|
|
/* cond 1110 op11 CRn- Rt-- copr op21 CRm- MRC */
|
|
/* cond 1110 op11 CRn- Rt-- copr op21 CRm- MRC */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vmrs_inst {
|
|
|
|
|
|
|
+struct vmrs_inst {
|
|
|
unsigned int reg;
|
|
unsigned int reg;
|
|
|
unsigned int Rt;
|
|
unsigned int Rt;
|
|
|
-} vmrs_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmrs)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmrs)(unsigned int inst, int index)
|
|
@@ -1136,7 +1136,7 @@ VMRS_INST:
|
|
|
{
|
|
{
|
|
|
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
|
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
|
|
/* FIXME: special case for access to FPSID and FPEXC, VFP must be disabled,
|
|
/* FIXME: special case for access to FPSID and FPEXC, VFP must be disabled,
|
|
|
- and in privilegied mode */
|
|
|
|
|
|
|
+ and in privileged mode */
|
|
|
/* Exceptions must be checked, according to v7 ref manual */
|
|
/* Exceptions must be checked, according to v7 ref manual */
|
|
|
CHECK_VFP_ENABLED;
|
|
CHECK_VFP_ENABLED;
|
|
|
|
|
|
|
@@ -1191,12 +1191,12 @@ VMRS_INST:
|
|
|
/* cond 1110 XXX1 Vd-- Rt-- 1011 NXX1 0000 */
|
|
/* cond 1110 XXX1 Vd-- Rt-- 1011 NXX1 0000 */
|
|
|
/* cond 1110 op11 CRn- Rt-- copr op21 CRm- MCR */
|
|
/* cond 1110 op11 CRn- Rt-- copr op21 CRm- MCR */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vmovbcr_inst {
|
|
|
|
|
|
|
+struct vmovbcr_inst {
|
|
|
unsigned int esize;
|
|
unsigned int esize;
|
|
|
unsigned int index;
|
|
unsigned int index;
|
|
|
unsigned int d;
|
|
unsigned int d;
|
|
|
unsigned int t;
|
|
unsigned int t;
|
|
|
-} vmovbcr_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbcr)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbcr)(unsigned int inst, int index)
|
|
@@ -1245,12 +1245,12 @@ VMOVBCR_INST:
|
|
|
/* cond 1100 010X Rt2- Rt-- 1010 00X1 Vm-- */
|
|
/* cond 1100 010X Rt2- Rt-- 1010 00X1 Vm-- */
|
|
|
/* cond 1100 0101 Rt2- Rt-- copr opc1 CRm- MRRC */
|
|
/* cond 1100 0101 Rt2- Rt-- copr opc1 CRm- MRRC */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vmovbrrss_inst {
|
|
|
|
|
|
|
+struct vmovbrrss_inst {
|
|
|
unsigned int to_arm;
|
|
unsigned int to_arm;
|
|
|
unsigned int t;
|
|
unsigned int t;
|
|
|
unsigned int t2;
|
|
unsigned int t2;
|
|
|
unsigned int m;
|
|
unsigned int m;
|
|
|
-} vmovbrrss_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbrrss)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbrrss)(unsigned int inst, int index)
|
|
@@ -1294,12 +1294,12 @@ VMOVBRRSS_INST:
|
|
|
/* cond 1100 010X Rt2- Rt-- 1011 00X1 Vm-- */
|
|
/* cond 1100 010X Rt2- Rt-- 1011 00X1 Vm-- */
|
|
|
/* cond 1100 0101 Rt2- Rt-- copr opc1 CRm- MRRC */
|
|
/* cond 1100 0101 Rt2- Rt-- copr opc1 CRm- MRRC */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vmovbrrd_inst {
|
|
|
|
|
|
|
+struct vmovbrrd_inst {
|
|
|
unsigned int to_arm;
|
|
unsigned int to_arm;
|
|
|
unsigned int t;
|
|
unsigned int t;
|
|
|
unsigned int t2;
|
|
unsigned int t2;
|
|
|
unsigned int m;
|
|
unsigned int m;
|
|
|
-} vmovbrrd_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbrrd)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbrrd)(unsigned int inst, int index)
|
|
@@ -1347,13 +1347,13 @@ VMOVBRRD_INST:
|
|
|
/* VSTR */
|
|
/* VSTR */
|
|
|
/* cond 1101 UD00 Rn-- Vd-- 101X imm8 imm8 */
|
|
/* cond 1101 UD00 Rn-- Vd-- 101X imm8 imm8 */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vstr_inst {
|
|
|
|
|
|
|
+struct vstr_inst {
|
|
|
unsigned int single;
|
|
unsigned int single;
|
|
|
unsigned int n;
|
|
unsigned int n;
|
|
|
unsigned int d;
|
|
unsigned int d;
|
|
|
unsigned int imm32;
|
|
unsigned int imm32;
|
|
|
unsigned int add;
|
|
unsigned int add;
|
|
|
-} vstr_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vstr)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vstr)(unsigned int inst, int index)
|
|
@@ -1415,12 +1415,12 @@ VSTR_INST:
|
|
|
/* VPUSH */
|
|
/* VPUSH */
|
|
|
/* cond 1101 0D10 1101 Vd-- 101X imm8 imm8 */
|
|
/* cond 1101 0D10 1101 Vd-- 101X imm8 imm8 */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vpush_inst {
|
|
|
|
|
|
|
+struct vpush_inst {
|
|
|
unsigned int single;
|
|
unsigned int single;
|
|
|
unsigned int d;
|
|
unsigned int d;
|
|
|
unsigned int imm32;
|
|
unsigned int imm32;
|
|
|
unsigned int regs;
|
|
unsigned int regs;
|
|
|
-} vpush_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vpush)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vpush)(unsigned int inst, int index)
|
|
@@ -1488,7 +1488,7 @@ VPUSH_INST:
|
|
|
/* VSTM */
|
|
/* VSTM */
|
|
|
/* cond 110P UDW0 Rn-- Vd-- 101X imm8 imm8 */
|
|
/* cond 110P UDW0 Rn-- Vd-- 101X imm8 imm8 */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vstm_inst {
|
|
|
|
|
|
|
+struct vstm_inst {
|
|
|
unsigned int single;
|
|
unsigned int single;
|
|
|
unsigned int add;
|
|
unsigned int add;
|
|
|
unsigned int wback;
|
|
unsigned int wback;
|
|
@@ -1496,7 +1496,7 @@ typedef struct _vstm_inst {
|
|
|
unsigned int n;
|
|
unsigned int n;
|
|
|
unsigned int imm32;
|
|
unsigned int imm32;
|
|
|
unsigned int regs;
|
|
unsigned int regs;
|
|
|
-} vstm_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vstm)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vstm)(unsigned int inst, int index)
|
|
@@ -1570,12 +1570,12 @@ VSTM_INST: /* encoding 1 */
|
|
|
/* VPOP */
|
|
/* VPOP */
|
|
|
/* cond 1100 1D11 1101 Vd-- 101X imm8 imm8 */
|
|
/* cond 1100 1D11 1101 Vd-- 101X imm8 imm8 */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vpop_inst {
|
|
|
|
|
|
|
+struct vpop_inst {
|
|
|
unsigned int single;
|
|
unsigned int single;
|
|
|
unsigned int d;
|
|
unsigned int d;
|
|
|
unsigned int imm32;
|
|
unsigned int imm32;
|
|
|
unsigned int regs;
|
|
unsigned int regs;
|
|
|
-} vpop_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vpop)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vpop)(unsigned int inst, int index)
|
|
@@ -1643,13 +1643,13 @@ VPOP_INST:
|
|
|
/* VLDR */
|
|
/* VLDR */
|
|
|
/* cond 1101 UD01 Rn-- Vd-- 101X imm8 imm8 */
|
|
/* cond 1101 UD01 Rn-- Vd-- 101X imm8 imm8 */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vldr_inst {
|
|
|
|
|
|
|
+struct vldr_inst {
|
|
|
unsigned int single;
|
|
unsigned int single;
|
|
|
unsigned int n;
|
|
unsigned int n;
|
|
|
unsigned int d;
|
|
unsigned int d;
|
|
|
unsigned int imm32;
|
|
unsigned int imm32;
|
|
|
unsigned int add;
|
|
unsigned int add;
|
|
|
-} vldr_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vldr)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vldr)(unsigned int inst, int index)
|
|
@@ -1711,7 +1711,7 @@ VLDR_INST:
|
|
|
/* VLDM */
|
|
/* VLDM */
|
|
|
/* cond 110P UDW1 Rn-- Vd-- 101X imm8 imm8 */
|
|
/* cond 110P UDW1 Rn-- Vd-- 101X imm8 imm8 */
|
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
#ifdef VFP_INTERPRETER_STRUCT
|
|
|
-typedef struct _vldm_inst {
|
|
|
|
|
|
|
+struct vldm_inst {
|
|
|
unsigned int single;
|
|
unsigned int single;
|
|
|
unsigned int add;
|
|
unsigned int add;
|
|
|
unsigned int wback;
|
|
unsigned int wback;
|
|
@@ -1719,7 +1719,7 @@ typedef struct _vldm_inst {
|
|
|
unsigned int n;
|
|
unsigned int n;
|
|
|
unsigned int imm32;
|
|
unsigned int imm32;
|
|
|
unsigned int regs;
|
|
unsigned int regs;
|
|
|
-} vldm_inst;
|
|
|
|
|
|
|
+};
|
|
|
#endif
|
|
#endif
|
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
#ifdef VFP_INTERPRETER_TRANS
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vldm)(unsigned int inst, int index)
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(vldm)(unsigned int inst, int index)
|