1.include "t-macros.i"
2
3.section        .rodata
4
5        .text
6        .globl  main
7        .type   main,@function
8main:
9    mvfc        r0, PSW             ||  ldi.s       r14, #0
10    ldi.l       r2, 0x100               ; MOD_E
11    ldi.l       r3, 0x108               ; MOD_S
12
13test_mod_dec_ld:
14    mvtc        r2, MOD_E           ||  bseti       r0, #7
15    mvtc        r3, MOD_S
16    mvtc        r0, PSW                 ; modulo mode enable
17    mv          r1,r3                           ; r1=0x108
18    ld          r4, @r1-        ||      nop     ; r1=0x106
19    ld          r4, @r1-        ||      nop     ; r1=0x104
20    ld          r4, @r1-        ||      nop     ; r1=0x102
21    ld          r4, @r1-        ||      nop     ; r1=0x100
22    ld          r4, @r1-        ||      nop     ; r1=0x108
23    ld          r4, @r1-        ||      nop     ; r1=0x106
24
25    cmpeqi      r1,#0x106
26    brf0f       _ERR            ;  branch to error
27
28test_mod_inc_ld:
29    mvtc        r2, MOD_S
30    mvtc        r3, MOD_E
31    mv          r1,r2                           ; r1=0x100
32    ld          r4, @r1+        ||      nop     ; r1=0x102
33    ld          r4, @r1+        ||      nop     ; r1=0x104
34    ld          r4, @r1+        ||      nop     ; r1=0x106
35    ld          r4, @r1+        ||      nop     ; r1=0x108
36    ld          r4, @r1+        ||      nop     ; r1=0x100
37    ld          r4, @r1+        ||      nop     ; r1=0x102
38
39    cmpeqi      r1,#0x102
40    brf0f       _ERR
41
42test_mod_dec_ld2w:
43    mvtc        r2, MOD_E
44    mvtc        r3, MOD_S
45    mv          r1,r3                           ; r1=0x108
46    ld2W        r4, @r1-        ||      nop     ; r1=0x104
47    ld2W        r4, @r1-        ||      nop     ; r1=0x100
48    ld2W        r4, @r1-        ||      nop     ; r1=0x108
49    ld2W        r4, @r1-        ||      nop     ; r1=0x104
50
51    cmpeqi      r1,#0x104
52    brf0f       _ERR            ; <= branch to error
53
54test_mod_inc_ld2w:
55    mvtc        r2, MOD_S
56    mvtc        r3, MOD_E           ||  BCLRI       r0, #7
57    mv          r1,r2                           ; r1=0x100
58    ld2W        r4, @r1+        ||      nop     ; r1=0x104
59    ld2W        r4, @r1+        ||      nop     ; r1=0x108
60    ld2W        r4, @r1+        ||      nop     ; r1=0x100
61    ld2W        r4, @r1+        ||      nop     ; r1=0x104
62
63    cmpeqi      r1,#0x104
64    brf0f       _ERR
65
66test_mod_dec_ld_dis:
67    mvtc        r0, PSW                 ; modulo mode disable
68    mvtc        r2, MOD_E
69    mvtc        r3, MOD_S
70    mv          r1,r3                           ; r1=0x108
71    ld          r4, @r1-        ||      nop     ; r1=0x106
72    ld          r4, @r1-        ||      nop     ; r1=0x104
73    ld          r4, @r1-        ||      nop     ; r1=0x102
74    ld          r4, @r1-        ||      nop     ; r1=0x100
75    ld          r4, @r1-        ||      nop     ; r1=0xFE
76    ld          r4, @r1-        ||      nop     ; r1=0xFC
77
78    cmpeqi      r1,#0xFC
79    brf0f       _ERR
80
81test_mod_inc_ld_dis:
82    mvtc        r2, MOD_S
83    mvtc        r3, MOD_E
84    mv          r1,r2                           ; r1=0x100
85    ld          r4, @r1+        ||      nop     ; r1=0x102
86    ld          r4, @r1+        ||      nop     ; r1=0x104
87    ld          r4, @r1+        ||      nop     ; r1=0x106
88    ld          r4, @r1+        ||      nop     ; r1=0x108
89    ld          r4, @r1+        ||      nop     ; r1=0x10A
90    ld          r4, @r1+        ||      nop     ; r1=0x10C
91
92    cmpeqi      r1,#0x10C
93    brf0f       _ERR
94
95test_mod_dec_ld2w_dis:
96    mvtc        r2, MOD_E
97    mvtc        r3, MOD_S
98    mv          r1,r3                           ; r1=0x108
99    ld2W        r4, @r1-        ||      nop     ; r1=0x104
100    ld2W        r4, @r1-        ||      nop     ; r1=0x100
101    ld2W        r4, @r1-        ||      nop     ; r1=0xFC
102    ld2W        r4, @r1-        ||      nop     ; r1=0xF8
103
104    cmpeqi      r1,#0xF8
105    brf0f       _ERR
106
107 test_mod_inc_ld2w_dis:
108    mvtc        r2, MOD_S
109    mvtc        r3, MOD_E
110    mv          r1,r2                           ; r1=0x100
111    ld2W        r4, @r1+        ||      nop     ; r1=0x104
112    ld2W        r4, @r1+        ||      nop     ; r1=0x108
113    ld2W        r4, @r1+        ||      nop     ; r1=0x10C
114    ld2W        r4, @r1+        ||      nop     ; r1=0x110
115
116    cmpeqi      r1,#0x110
117    brf0f       _ERR
118
119_OK:
120	exit0
121
122_ERR:
123	exit47
124
125
126
127