ldst.h 1000 字节
Newer Older
1 2 3
static inline make_EHelper(ld) {
  rtl_lm(s, s0, &id_src1->addr, s->width);
  rtl_sr(s, id_dest->reg, s0, 0);
P
Parallels 已提交
4

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

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

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

28 29
static inline make_EHelper(st) {
  rtl_sm(s, &id_src1->addr, ddest, s->width);
P
Parallels 已提交
30

31
  switch (s->width) {
P
Parallels 已提交
32 33 34 35 36 37 38
    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);
  }
}