/* Load/store ops. */ #define MEM_LD_OP(name,suffix) \ OP(glue(glue(ld,name),MEMSUFFIX)) \ { \ uint32_t addr = get_op(PARAM2); \ set_op(PARAM1, glue(glue(ld,suffix),MEMSUFFIX)(addr)); \ FORCE_RET(); \ } MEM_LD_OP(8u32,ub) MEM_LD_OP(8s32,sb) MEM_LD_OP(16u32,uw) MEM_LD_OP(16s32,sw) MEM_LD_OP(32,l) #undef MEM_LD_OP #define MEM_ST_OP(name,suffix) \ OP(glue(glue(st,name),MEMSUFFIX)) \ { \ uint32_t addr = get_op(PARAM1); \ glue(glue(st,suffix),MEMSUFFIX)(addr, get_op(PARAM2)); \ FORCE_RET(); \ } MEM_ST_OP(8,b) MEM_ST_OP(16,w) MEM_ST_OP(32,l) #undef MEM_ST_OP OP(glue(ldf64,MEMSUFFIX)) { uint32_t addr = get_op(PARAM2); set_opf64(PARAM1, glue(ldfq,MEMSUFFIX)(addr)); FORCE_RET(); } OP(glue(stf64,MEMSUFFIX)) { uint32_t addr = get_op(PARAM1); glue(stfq,MEMSUFFIX)(addr, get_opf64(PARAM2)); FORCE_RET(); } #undef MEMSUFFIX