1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
//Defenition file of Instruction handler routines for
//the V810 processor
#ifndef V810_INST_H_
#define V810_INST_H_
#include "vb_types.h"
#define sign_32(num) (((num) & 0x80000000) ? (INT64)((num)|0xFFFFFFFF00000000LL) : (num))
#define sign_26(num) (((num) & 0x02000000) ? (WORD)((num)|0xFC000000) : (num))
#define sign_16(num) (((num) & 0x8000) ? (WORD)((num)|0xFFFF0000) : (num))
#define sign_14(num) (((num) & 0x2000) ? (WORD)((num)|0xFFFFC000) : (num))
#define sign_12(num) (((num) & 0x0800) ? (WORD)((num)|0xFFFFF000) : (num))
#define sign_9(num) (((num) & 0x0100) ? (WORD)((num)|0xFFFFFE00) : (num))
#define sign_8(num) (((num) & 0x0080) ? (WORD)((num)|0xFFFFFF00) : (num))
#define sign_5(num) (((num) & 0x0010) ? (WORD)((num)|0xFFFFFFE0) : (num))
extern void ins_err (int arg1, int arg2); //Special handler?
//Bitstring SubOpcodes
extern void ins_sch0bsu (int arg1, int arg2);
extern void ins_sch0bsd (int arg1, int arg2);
extern void ins_sch1bsu (int arg1, int arg2);
extern void ins_sch1bsd (int arg1, int arg2);
extern void ins_orbsu (int arg1, int arg2);
extern void ins_andbsu (int arg1, int arg2);
extern void ins_xorbsu (int arg1, int arg2);
extern void ins_movbsu (int arg1, int arg2);
extern void ins_ornbsu (int arg1, int arg2);
extern void ins_andnbsu (int arg1, int arg2);
extern void ins_xornbsu (int arg1, int arg2);
extern void ins_notbsu (int arg1, int arg2);
//FPU SubOpcodes
extern float ins_cmpf_s (float reg1, float reg2);
extern float ins_cvt_ws (int reg1, float reg2);
extern int ins_cvt_sw (float reg1, int reg2);
extern float ins_addf_s (float reg1, float reg2);
extern float ins_subf_s (float reg1, float reg2);
extern float ins_mulf_s (float reg1, float reg2);
extern float ins_divf_s (float reg1, float reg2);
extern int ins_trnc_sw (float reg1, int reg2);
extern void ins_xb (int arg1, int arg2); //Undocumented opcode XB (non-FPU)
extern void ins_xh (int arg1, int arg2); //Undocumented opcode XH (non-FPU)
extern void ins_rev (int arg1, int arg2); //Undocumented opcode REV (non-FPU)
extern void ins_mpyhw (int arg1, int arg2); //Undocumented opcode MPYHW (non-FPU)
#endif
|