Alien-LibJIT

 view release on metacpan or  search on metacpan

libjit/attic/jit-gen-alpha.h  view on Meta::CPAN

#define ALPHA_OP_AMASK		0x11
#define ALPHA_OP_CMOVLE		0x11
#define ALPHA_OP_CMOVLE		0x11
#define ALPHA_OP_CMOVGT		0x11
#define ALPHA_OP_IMPLVER	0x11
#define ALPHA_OP_MSKBL		0x12
#define ALPHA_OP_EXTBL		0x12
#define ALPHA_OP_INSBL		0x12
#define ALPHA_OP_MSKWL		0x12
#define ALPHA_OP_EXTWL		0x12
#define ALPHA_OP_INSWL		0x12
#define ALPHA_OP_MSKLL		0x12
#define ALPHA_OP_EXTLL		0x12
#define ALPHA_OP_INSLL		0x12
#define ALPHA_OP_ZAP		0x12
#define ALPHA_OP_ZAPNOT		0x12
#define ALPHA_OP_MSKQL		0x12
#define ALPHA_OP_SRL		0x12
#define ALPHA_OP_EXTQA		0x12
#define ALPHA_OP_SLL		0x12
#define ALPHA_OP_INSQL		0x12
#define ALPHA_OP_SRA		0x12
#define ALPHA_OP_MSKWH		0x12
#define ALPHA_OP_INSWH		0x12
#define ALPHA_OP_EXTWH		0x12
#define ALPHA_OP_MSKLH		0x12
#define ALPHA_OP_INSLH		0x12
#define ALPHA_OP_EXTLH		0x12
#define ALPHA_OP_MSKQH		0x12
#define ALPHA_OP_INSQH		0x12
#define ALPHA_OP_EXTQH		0x12
#define ALPHA_OP_MULL		0x13
#define ALPHA_OP_MULQ		0x13
#define ALPHA_OP_UMULH		0x13
#define ALPHA_OP_MULLV		0x13
#define ALPHA_OP_MULLQV		0x13
#define ALPHA_OP_ITOFS		0x14
#define ALPHA_OP_ITOFF		0x14
#define ALPHA_OP_ITOFT		0x14
#define ALPHA_OP_ADDS		0x16
#define ALPHA_OP_SUBS		0x16
#define ALPHA_OP_ADDT		0x16
#define ALPHA_OP_SUBT		0x16
#define ALPHA_OP_MULT		0x16
#define ALPHA_OP_DIVT		0x16
#define ALPHA_OP_CPYS		0x17
#define ALPHA_OP_CPYSN		0x17
#define ALPHA_OP_CPYSE		0x17
#define ALPHA_OP_TRAPB		0x18
#define ALPHA_OP_JMP		0x1a
#define ALPHA_OP_JSR		0x1a
#define ALPHA_OP_RET		0x1a
#define ALPHA_OP_JSRCO		0x1a
#define ALPHA_OP_FTOIT		0x1c
#define ALPHA_OP_FTOIS		0x1c
#define ALPHA_OP_LDF		0x20
#define ALPHA_OP_LDG		0x21
#define ALPHA_OP_LDS		0x22
#define ALPHA_OP_LDT		0x23
#define ALPHA_OP_LDQF		0x23
#define ALPHA_OP_STF		0x24
#define ALPHA_OP_STG		0x25
#define ALPHA_OP_STS		0x26
#define ALPHA_OP_STT		0x27
#define ALPHA_OP_LDL		0x28
#define ALPHA_OP_LDQ		0x29
#define ALPHA_OP_LDL_L		0x2a
#define ALPHA_OP_LDQ_L		0x2b
#define ALPHA_OP_STL		0x2c
#define ALPHA_OP_STQ		0x2d
#define ALPHA_OP_STL_C		0x2e
#define ALPHA_OP_STQ_C		0x2f
#define ALPHA_OP_BR		0x30
#define ALPHA_OP_FBEQ		0x31
#define ALPHA_OP_FBLT		0x32
#define ALPHA_OP_FBLE		0x33
#define ALPHA_OP_BSR		0x34
#define ALPHA_OP_FBNE		0x35
#define ALPHA_OP_FBGE		0x36
#define ALPHA_OP_FBGT		0x37
#define ALPHA_OP_BLBC		0x38
#define ALPHA_OP_BEQ		0x39
#define ALPHA_OP_BLT		0x3a
#define ALPHA_OP_BLE		0x3b
#define ALPHA_OP_BLBS		0x3c
#define ALPHA_OP_BNE		0x3d
#define ALPHA_OP_BGE		0x3e
#define ALPHA_OP_BGT		0x3f

/*
 * Define functions
 */

/* register operations -- use with ALPHA_OP_* == 0x10 */
#define ALPHA_FUNC_ADDL		0x00
#define ALPHA_FUNC_S4ADDL	0x02
#define ALPHA_FUNC_SUBL		0x09
#define ALPHA_FUNC_S4SUBL	0x0b
#define ALPHA_FUNC_CMPBGE	0x0f
#define ALPHA_FUNC_S8ADDL	0x12
#define ALPHA_FUNC_S8SUBL	0x1b
#define ALPHA_FUNC_CMPULT	0x1d
#define ALPHA_FUNC_ADDQ		0x20
#define ALPHA_FUNC_S4ADDQ	0x22
#define ALPHA_FUNC_SUBQ		0x29
#define ALPHA_FUNC_S4SUBQ	0x2b
#define ALPHA_FUNC_CMPEQ	0x2d
#define ALPHA_FUNC_S9ADDQ	0x32
#define ALPHA_FUNC_S9SUBQ	0x3b
#define ALPHA_FUNC_CMPULE	0x3d
#define ALPHA_FUNC_ADDLV	0x40
#define ALPHA_FUNC_SUBLV	0x49
#define ALPHA_FUNC_CMPLT	0x4d
#define ALPHA_FUNC_ADDQV	0x60
#define ALPHA_FUNC_SUBQV	0x69
#define ALPHA_FUNC_CMPLE	0x6d

/* bitwise operations -- use with ALPHA_OP_* == 0x11 */
#define ALPHA_FUNC_AND		0x00
#define ALPHA_FUNC_BIC		0x08
#define ALPHA_FUNC_CMOVLBS	0x14
#define ALPHA_FUNC_CMOVLBC	0x16
#define ALPHA_FUNC_NOOP		0x20
#define ALPHA_FUNC_CLR		0x20
#define ALPHA_FUNC_MOV		0x20
#define ALPHA_FUNC_OR		0x20
#define ALPHA_FUNC_CMOVEQ	0x24
#define ALPHA_FUNC_CMOVNE	0x2C
#define ALPHA_FUNC_NOT		0x28
#define ALPHA_FUNC_ORNOT	0x28
#define ALPHA_FUNC_XOR		0x40
#define ALPHA_FUNC_CMOVLT	0x44
#define ALPHA_FUNC_COMVGE	0x46
#define ALPHA_FUNC_EQV		0x48
#define ALPHA_FUNC_AMASK	0x61
#define ALPHA_FUNC_CMOVLE	0x64
#define ALPHA_FUNC_CMOVGT	0x66
#define ALPHA_FUNC_IMPLVER	0x6c
#define ALPHA_FUNC_CMOVGT	0x66

/* byte manipulation operations -- use with ALPHA_OP_* == 0x12 */
#define ALPHA_FUNC_MSKBL	0x02
#define ALPHA_FUNC_EXTBL	0x06
#define ALPHA_FUNC_INSBL	0x0b
#define ALPHA_FUNC_MSKWL	0x12
#define ALPHA_FUNC_EXTWL	0x16
#define ALPHA_FUNC_INSWL	0x1b
#define ALPHA_FUNC_MSKLL	0x22
#define ALPHA_FUNC_EXTLL	0x26
#define ALPHA_FUNC_INSLL	0x2b
#define ALPHA_FUNC_ZAP		0x30
#define ALPHA_FUNC_ZAPNOT	0x31
#define ALPHA_FUNC_MSKQL	0x32
#define ALPHA_FUNC_SRL		0x34
#define ALPHA_FUNC_EXTQL	0x36
#define ALPHA_FUNC_SLL		0x39
#define ALPHA_FUNC_INSQL	0x3b
#define ALPHA_FUNC_SRA		0x3c
#define ALPHA_FUNC_MSKWH	0x52
#define ALPHA_FUNC_INSWH	0x57
#define ALPHA_FUNC_EXTWH	0x5a
#define ALPHA_FUNC_MSKLH	0x62
#define ALPHA_FUNC_INSLH	0x67
#define ALPHA_FUNC_EXTLH	0x6a
#define ALPHA_FUNC_MSKQH	0x72
#define ALPHA_FUNC_INSQH	0x77
#define ALPHA_FUNC_EXTQH	0x7a

/* multiplication operations -- use with ALPHA_OP_* == 0x13 */
#define ALPHA_FUNC_MULL		0x00
#define ALPHA_FUNC_MULQ		0x20
#define ALPHA_FUNC_UMULH	0x30
#define ALPHA_FUNC_MULLV	0x40
#define ALPHA_FUNC_MULQV	0x60

/* integer to floating point operations -- use with ALPHA_OP_* == 0x14 */
#define ALPHA_FUNC_ITOFS	0x4
#define ALPHA_FUNC_ITOFF	0x14
#define ALPHA_FUNC_ITOFT	0x24

/* floating point arithmetic operations -- use with ALPHA_OP_* == 0x16 */
#define ALPHA_FUNC_ADDS		0x80
#define ALPHA_FUNC_SUBS		0x81
#define ALPHA_FUNC_ADDT		0xA0
#define ALPHA_FUNC_SUBT		0xA1
#define ALPHA_FUNC_MULT		0xA2
#define ALPHA_FUNC_DIVT		0xA3

/* floating point sign copy operations -- use with ALPHA_OP_* == 0x17 */
#define ALPHA_FUNC_CPYS		0x20
#define ALPHA_FUNC_CPYSN	0x21
#define ALPHA_FUNC_CPYSE	0x22

/* trap barrier -- use with ALPHA_OP_* == 0x18 */
#define ALPHA_FUNC_TRAPB	0x0

/* branching operations -- use with ALPHA_OP_* == 0x1a */
#define ALPHA_FUNC_JMP		0x0
#define ALPHA_FUNC_JSR		0x1
#define ALPHA_FUNC_RET		0x2
#define ALPHA_FUNC_JSRCO	0x3

/* floating point to integer operations -- use with ALPHA_OP_* == 0x1c */
#define ALPHA_FUNC_FTOIT	0x70
#define ALPHA_FUNC_FTOIS	0x78

/* encode registers */
#define alpha_encode_reg_a(reg) \
	((reg & ALPHA_REG_MASK) << ALPHA_REGA_SHIFT)

#define alpha_encode_reg_b(reg) \
	((reg & ALPHA_REG_MASK) << ALPHA_REGB_SHIFT)

#define alpha_encode_reg_c(reg) \
	((reg & ALPHA_REG_MASK) << ALPHA_REGC_SHIFT)

/* encode literals */
#define alpha_encode_lit(lit) \
	((lit & ALPHA_LIT_MASK) << ALPHA_LIT_SHIFT)

/* encode opcodes */
#define alpha_encode_op(op) \
	((op & ALPHA_OP_MASK) << ALPHA_OP_SHIFT)

/* encode function codes */
#define alpha_encode_func(func) \
	((func & ALPHA_FUNC_MASK) << ALPHA_FUNC_SHIFT)

#define alpha_encode_fp_func(func) \
	((func & ALPHA_FP_FUNC_MASK) << ALPHA_FUNC_SHIFT)

#define alpha_encode_func_mem_branch(func,hint) \
	(((func & ALPHA_FUNC_MEM_BRANCH_MASK) << ALPHA_FUNC_MEM_BRANCH_SHIFT) | \
		(hint & ALPHA_HINT_MASK))

/*
 * instruction encoding
 */



( run in 0.516 second using v1.01-cache-2.11-cpan-df04353d9ac )