Lines Matching refs:rd
65 STATIC uint asm_arm_op_mov_reg(uint rd, uint rn) { in asm_arm_op_mov_reg() argument
67 return 0x1a00000 | (rd << 12) | rn; in asm_arm_op_mov_reg()
70 STATIC uint asm_arm_op_mov_imm(uint rd, uint imm) { in asm_arm_op_mov_imm() argument
72 return 0x3a00000 | (rd << 12) | imm; in asm_arm_op_mov_imm()
75 STATIC uint asm_arm_op_mvn_imm(uint rd, uint imm) { in asm_arm_op_mvn_imm() argument
77 return 0x3e00000 | (rd << 12) | imm; in asm_arm_op_mvn_imm()
80 STATIC uint asm_arm_op_add_imm(uint rd, uint rn, uint imm) { in asm_arm_op_add_imm() argument
82 return 0x2800000 | (rn << 16) | (rd << 12) | (imm & 0xFF); in asm_arm_op_add_imm()
85 STATIC uint asm_arm_op_add_reg(uint rd, uint rn, uint rm) { in asm_arm_op_add_reg() argument
87 return 0x0800000 | (rn << 16) | (rd << 12) | rm; in asm_arm_op_add_reg()
90 STATIC uint asm_arm_op_sub_imm(uint rd, uint rn, uint imm) { in asm_arm_op_sub_imm() argument
92 return 0x2400000 | (rn << 16) | (rd << 12) | (imm & 0xFF); in asm_arm_op_sub_imm()
95 STATIC uint asm_arm_op_sub_reg(uint rd, uint rn, uint rm) { in asm_arm_op_sub_reg() argument
97 return 0x0400000 | (rn << 16) | (rd << 12) | rm; in asm_arm_op_sub_reg()
100 STATIC uint asm_arm_op_mul_reg(uint rd, uint rm, uint rs) { in asm_arm_op_mul_reg() argument
102 assert(rd != rm); in asm_arm_op_mul_reg()
103 return 0x0000090 | (rd << 16) | (rs << 8) | rm; in asm_arm_op_mul_reg()
106 STATIC uint asm_arm_op_and_reg(uint rd, uint rn, uint rm) { in asm_arm_op_and_reg() argument
108 return 0x0000000 | (rn << 16) | (rd << 12) | rm; in asm_arm_op_and_reg()
111 STATIC uint asm_arm_op_eor_reg(uint rd, uint rn, uint rm) { in asm_arm_op_eor_reg() argument
113 return 0x0200000 | (rn << 16) | (rd << 12) | rm; in asm_arm_op_eor_reg()
116 STATIC uint asm_arm_op_orr_reg(uint rd, uint rn, uint rm) { in asm_arm_op_orr_reg() argument
118 return 0x1800000 | (rn << 16) | (rd << 12) | rm; in asm_arm_op_orr_reg()
185 size_t asm_arm_mov_reg_i32(asm_arm_t *as, uint rd, int imm) { in asm_arm_mov_reg_i32() argument
187 emit_al(as, 0x59f0000 | (rd << 12)); // ldr rd, [pc] in asm_arm_mov_reg_i32()
194 void asm_arm_mov_reg_i32_optimised(asm_arm_t *as, uint rd, int imm) { in asm_arm_mov_reg_i32_optimised() argument
197 emit_al(as, asm_arm_op_mov_imm(rd, imm)); in asm_arm_mov_reg_i32_optimised()
200 emit_al(as, asm_arm_op_mvn_imm(rd, ~imm)); in asm_arm_mov_reg_i32_optimised()
202 asm_arm_mov_reg_i32(as, rd, imm); in asm_arm_mov_reg_i32_optimised()
206 void asm_arm_mov_local_reg(asm_arm_t *as, int local_num, uint rd) { in asm_arm_mov_local_reg() argument
208 emit_al(as, 0x58d0000 | (rd << 12) | (local_num << 2)); in asm_arm_mov_local_reg()
211 void asm_arm_mov_reg_local(asm_arm_t *as, uint rd, int local_num) { in asm_arm_mov_reg_local() argument
213 emit_al(as, 0x59d0000 | (rd << 12) | (local_num << 2)); in asm_arm_mov_reg_local()
216 void asm_arm_cmp_reg_i8(asm_arm_t *as, uint rd, int imm) { in asm_arm_cmp_reg_i8() argument
218 emit_al(as, 0x3500000 | (rd << 16) | (imm & 0xFF)); in asm_arm_cmp_reg_i8()
221 void asm_arm_cmp_reg_reg(asm_arm_t *as, uint rd, uint rn) { in asm_arm_cmp_reg_reg() argument
223 emit_al(as, 0x1500000 | (rd << 16) | rn); in asm_arm_cmp_reg_reg()
226 void asm_arm_setcc_reg(asm_arm_t *as, uint rd, uint cond) { in asm_arm_setcc_reg() argument
227 emit(as, asm_arm_op_mov_imm(rd, 1) | cond); // movCOND rd, #1 in asm_arm_setcc_reg()
228 emit(as, asm_arm_op_mov_imm(rd, 0) | (cond ^ (1 << 28))); // mov!COND rd, #0 in asm_arm_setcc_reg()
231 void asm_arm_add_reg_reg_reg(asm_arm_t *as, uint rd, uint rn, uint rm) { in asm_arm_add_reg_reg_reg() argument
233 emit_al(as, asm_arm_op_add_reg(rd, rn, rm)); in asm_arm_add_reg_reg_reg()
236 void asm_arm_sub_reg_reg_reg(asm_arm_t *as, uint rd, uint rn, uint rm) { in asm_arm_sub_reg_reg_reg() argument
238 emit_al(as, asm_arm_op_sub_reg(rd, rn, rm)); in asm_arm_sub_reg_reg_reg()
241 void asm_arm_mul_reg_reg_reg(asm_arm_t *as, uint rd, uint rs, uint rm) { in asm_arm_mul_reg_reg_reg() argument
244 emit_al(as, asm_arm_op_mul_reg(rd, rm, rs)); in asm_arm_mul_reg_reg_reg()
247 void asm_arm_and_reg_reg_reg(asm_arm_t *as, uint rd, uint rn, uint rm) { in asm_arm_and_reg_reg_reg() argument
249 emit_al(as, asm_arm_op_and_reg(rd, rn, rm)); in asm_arm_and_reg_reg_reg()
252 void asm_arm_eor_reg_reg_reg(asm_arm_t *as, uint rd, uint rn, uint rm) { in asm_arm_eor_reg_reg_reg() argument
254 emit_al(as, asm_arm_op_eor_reg(rd, rn, rm)); in asm_arm_eor_reg_reg_reg()
257 void asm_arm_orr_reg_reg_reg(asm_arm_t *as, uint rd, uint rn, uint rm) { in asm_arm_orr_reg_reg_reg() argument
259 emit_al(as, asm_arm_op_orr_reg(rd, rn, rm)); in asm_arm_orr_reg_reg_reg()
262 void asm_arm_mov_reg_local_addr(asm_arm_t *as, uint rd, int local_num) { in asm_arm_mov_reg_local_addr() argument
264 emit_al(as, asm_arm_op_add_imm(rd, ASM_ARM_REG_SP, local_num << 2)); in asm_arm_mov_reg_local_addr()
282 void asm_arm_lsl_reg_reg(asm_arm_t *as, uint rd, uint rs) { in asm_arm_lsl_reg_reg() argument
284 emit_al(as, 0x1a00010 | (rd << 12) | (rs << 8) | rd); in asm_arm_lsl_reg_reg()
287 void asm_arm_lsr_reg_reg(asm_arm_t *as, uint rd, uint rs) { in asm_arm_lsr_reg_reg() argument
289 emit_al(as, 0x1a00030 | (rd << 12) | (rs << 8) | rd); in asm_arm_lsr_reg_reg()
292 void asm_arm_asr_reg_reg(asm_arm_t *as, uint rd, uint rs) { in asm_arm_asr_reg_reg() argument
294 emit_al(as, 0x1a00050 | (rd << 12) | (rs << 8) | rd); in asm_arm_asr_reg_reg()
297 void asm_arm_ldr_reg_reg(asm_arm_t *as, uint rd, uint rn, uint byte_offset) { in asm_arm_ldr_reg_reg() argument
299 emit_al(as, 0x5900000 | (rn << 16) | (rd << 12) | byte_offset); in asm_arm_ldr_reg_reg()
302 void asm_arm_ldrh_reg_reg(asm_arm_t *as, uint rd, uint rn) { in asm_arm_ldrh_reg_reg() argument
304 emit_al(as, 0x1d000b0 | (rn << 16) | (rd << 12)); in asm_arm_ldrh_reg_reg()
307 void asm_arm_ldrb_reg_reg(asm_arm_t *as, uint rd, uint rn) { in asm_arm_ldrb_reg_reg() argument
309 emit_al(as, 0x5d00000 | (rn << 16) | (rd << 12)); in asm_arm_ldrb_reg_reg()
312 void asm_arm_str_reg_reg(asm_arm_t *as, uint rd, uint rm, uint byte_offset) { in asm_arm_str_reg_reg() argument
314 emit_al(as, 0x5800000 | (rm << 16) | (rd << 12) | byte_offset); in asm_arm_str_reg_reg()
317 void asm_arm_strh_reg_reg(asm_arm_t *as, uint rd, uint rm) { in asm_arm_strh_reg_reg() argument
319 emit_al(as, 0x1c000b0 | (rm << 16) | (rd << 12)); in asm_arm_strh_reg_reg()
322 void asm_arm_strb_reg_reg(asm_arm_t *as, uint rd, uint rm) { in asm_arm_strb_reg_reg() argument
324 emit_al(as, 0x5c00000 | (rm << 16) | (rd << 12)); in asm_arm_strb_reg_reg()
327 void asm_arm_str_reg_reg_reg(asm_arm_t *as, uint rd, uint rm, uint rn) { in asm_arm_str_reg_reg_reg() argument
329 emit_al(as, 0x7800100 | (rm << 16) | (rd << 12) | rn); in asm_arm_str_reg_reg_reg()
332 void asm_arm_strh_reg_reg_reg(asm_arm_t *as, uint rd, uint rm, uint rn) { in asm_arm_strh_reg_reg_reg() argument
335 emit_al(as, 0x18000b0 | (rm << 16) | (rd << 12) | ASM_ARM_REG_R8); // strh rd, [rm, r8] in asm_arm_strh_reg_reg_reg()
338 void asm_arm_strb_reg_reg_reg(asm_arm_t *as, uint rd, uint rm, uint rn) { in asm_arm_strb_reg_reg_reg() argument
340 emit_al(as, 0x7c00000 | (rm << 16) | (rd << 12) | rn); in asm_arm_strb_reg_reg_reg()