ldst.h 1.1 KB
Newer Older
1 2
#include "../local-include/intr.h"

3 4
static inline make_EHelper(ld) {
  rtl_lm(s, s0, &id_src1->addr, s->width);
5
  check_mem_ex();
6
  rtl_sr(s, id_dest->reg, s0, 0);
P
Parallels 已提交
7

8
  switch (s->width) {
P
Parallels 已提交
9
    case 8: print_asm_template2(ld); break;
Z
Zihao Yu 已提交
10
    case 4: print_asm_template2(lwu); break;
P
Parallels 已提交
11 12 13 14 15 16 17
    case 2: print_asm_template2(lhu); break;
    case 1: print_asm_template2(lbu); break;
    default: assert(0);
  }
}

// load sign value
18 19
static inline make_EHelper(lds) {
  rtl_lm(s, s0, &id_src1->addr, s->width);
20
  check_mem_ex();
21 22
  rtl_sext(s, s0, s0, s->width);
  rtl_sr(s, id_dest->reg, s0, 0);
P
Parallels 已提交
23

24
  switch (s->width) {
Z
Zihao Yu 已提交
25
    case 4: print_asm_template2(lw); break;
P
Parallels 已提交
26 27 28 29 30 31
    case 2: print_asm_template2(lh); break;
    case 1: print_asm_template2(lb); break;
    default: assert(0);
  }
}

32 33
static inline make_EHelper(st) {
  rtl_sm(s, &id_src1->addr, ddest, s->width);
34
  check_mem_ex();
P
Parallels 已提交
35

36
  switch (s->width) {
P
Parallels 已提交
37 38 39 40 41 42 43
    case 8: print_asm_template2(sd); break;
    case 4: print_asm_template2(sw); break;
    case 2: print_asm_template2(sh); break;
    case 1: print_asm_template2(sb); break;
    default: assert(0);
  }
}