#define MONO_ARCH_EMULATE_LCONV_TO_R8_UN 1
#define MONO_ARCH_EMULATE_FREM 1
#define MONO_ARCH_EMULATE_DIV 1
-#define MONO_ARCH_ENABLE_EMIT_STATE_OPT 1
#define MONO_ARCH_NEED_DIV_CHECK 1
/*
* instructions are combined
*/
-#define MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK(cfg,op,sr1,sr2,targetbb) \
- do { \
- MonoInst *inst; \
- MonoInst *target_label; \
- target_label = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoInst)); \
- target_label->opcode = OP_LABEL; \
- target_label->next = (targetbb)->code; \
- target_label->inst_c0 = (targetbb)->native_offset; \
- (targetbb)->code = target_label; \
- inst = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoInst)); \
- g_assert (op >= CEE_BEQ && op <= CEE_BLT_UN); \
- inst->opcode = OP_HPPA_BEQ + (op - CEE_BEQ); \
- (inst)->sreg1 = sr1; \
- (inst)->sreg2 = sr2; \
- inst->inst_i0 = target_label; \
- inst->flags = MONO_INST_BRLABEL; \
- mono_bblock_add_inst ((cfg)->cbb, inst); \
- } while (0)
-
-#define MONO_EMIT_NEW_COMPARE_IMM_BRANCH_BLOCK(cfg, cmp_op, sreg1, imm, block) \
- do { \
- guint32 cmp_reg; \
- if (!(imm)) { \
- cmp_reg = hppa_r0; \
- } \
- else { \
- cmp_reg = hppa_r1; \
- MONO_EMIT_NEW_ICONST (cfg, cmp_reg, (imm)); \
- } \
- MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK(cfg, cmp_op, sreg1, cmp_reg, block); \
- } while (0)
-
-#define MONO_EMIT_NEW_COMPARE_BRANCH_LABEL(cfg, cmp_op, sr1, sr2, label) \
- do { \
- MonoInst *inst; \
- g_assert (cmp_op >= CEE_BEQ && cmp_op <= CEE_BLT_UN); \
- inst = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoInst)); \
- inst->opcode = OP_HPPA_BEQ + (cmp_op) - CEE_BEQ; \
- inst->sreg1 = sr1; \
- inst->sreg2 = sr2; \
- inst->inst_i0 = label; \
- inst->flags = MONO_INST_BRLABEL; \
- mono_bblock_add_inst ((cfg)->cbb, inst); \
- } while (0)
-
-#define MONO_EMIT_NEW_COMPARE_IMM_BRANCH_LABEL(cfg, cmp_op, sreg1, imm, label) \
- do { \
- guint32 cmp_reg; \
- if (!(imm)) { \
- cmp_reg = hppa_r0; \
- } \
- else { \
- cmp_reg = hppa_r1; \
- MONO_EMIT_NEW_ICONST (cfg, cmp_reg, (imm)); \
- } \
- MONO_EMIT_NEW_COMPARE_BRANCH_LABEL(cfg, cmp_op, sreg1, cmp_reg, label); \
- } while (0)
-
-#define MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK_CHAINED(cfg,op,sr1,sr2,targetbb) \
- MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK(cfg,op,sr1,sr2,targetbb)
-#define MONO_EMIT_NEW_COMPARE_IMM_BRANCH_BLOCK_CHAINED(cfg, cmp_op, sreg1, imm, block) \
- MONO_EMIT_NEW_COMPARE_IMM_BRANCH_BLOCK(cfg, cmp_op, sreg1, imm, block)
-#define MONO_EMIT_NEW_COMPARE_BRANCH_LABEL_CHAINED(cfg, cmp_op, sr1, sr2, label) \
- MONO_EMIT_NEW_COMPARE_BRANCH_LABEL(cfg, cmp_op, sr1, sr2, label)
-#define MONO_EMIT_NEW_COMPARE_IMM_BRANCH_LABEL_CHAINED(cfg, cmp_op, sreg1, imm, label) \
- MONO_EMIT_NEW_COMPARE_IMM_BRANCH_LABEL(cfg, cmp_op, sreg1, imm, label)
-
#define MONO_EMIT_NEW_HPPA_COND_EXC(cfg,cond,sr1,sr2,name) do { \
MonoInst *inst; \
inst = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoInst)); \