Home | History | Annotate | Line # | Download | only in h8300
div.s revision 1.1
      1 # Hitachi H8 testcase 'divs', 'divu', 'divxs', 'divxu'
      2 # mach(): all
      3 # as(h8300):	--defsym sim_cpu=0
      4 # as(h8300h):	--defsym sim_cpu=1
      5 # as(h8300s):	--defsym sim_cpu=2
      6 # as(h8sx):	--defsym sim_cpu=3
      7 # ld(h8300h):	-m h8300helf
      8 # ld(h8300s):	-m h8300self
      9 # ld(h8sx):	-m h8300sxelf
     10 
     11 	.include "testutils.inc"
     12 
     13 	start
     14 
     15 .if (sim_cpu == h8sx)
     16 divs_w_reg_reg:
     17 	set_grs_a5a5
     18 
     19 	;; divs.w rs, rd
     20 	mov.w	#32, r1
     21 	mov.w	#-2, r2
     22 	set_ccr_zero
     23 	divs.w	r2, r1
     24 
     25 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
     26 	test_neg_set
     27 	test_carry_clear
     28 	test_zero_clear
     29 	test_ovf_clear
     30 
     31 	test_gr_a5a5	0
     32 	test_h_gr16	0xfff0	r1
     33 	test_h_gr32	0xa5a5fffe	er2
     34 	test_gr_a5a5	3
     35 	test_gr_a5a5	4
     36 	test_gr_a5a5	5
     37 	test_gr_a5a5	6
     38 	test_gr_a5a5	7
     39 
     40 divs_w_imm4_reg:
     41 	set_grs_a5a5
     42 
     43 	;; divs.w xx:4, rd
     44 	mov.w	#-32, r1
     45 	set_ccr_zero
     46 	divs.w	#2:4, r1
     47 
     48 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
     49 	test_neg_set
     50 	test_carry_clear
     51 	test_zero_clear
     52 	test_ovf_clear
     53 
     54 	test_gr_a5a5	0
     55 	test_h_gr16	-16	r1
     56 	test_gr_a5a5	2
     57 	test_gr_a5a5	3
     58 	test_gr_a5a5	4
     59 	test_gr_a5a5	5
     60 	test_gr_a5a5	6
     61 	test_gr_a5a5	7
     62 
     63 divs_l_reg_reg:
     64 	set_grs_a5a5
     65 
     66 	;; divs.l ers, erd
     67 	mov.l	#320000, er1
     68 	mov.l	#-2, er2
     69 	set_ccr_zero
     70 	divs.l	er2, er1
     71 
     72 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
     73 	test_neg_set
     74 	test_carry_clear
     75 	test_zero_clear
     76 	test_ovf_clear
     77 
     78 	test_gr_a5a5	0
     79 	test_h_gr32	-160000	er1
     80 	test_h_gr32	-2	er2
     81 	test_gr_a5a5	3
     82 	test_gr_a5a5	4
     83 	test_gr_a5a5	5
     84 	test_gr_a5a5	6
     85 	test_gr_a5a5	7
     86 
     87 divs_l_imm4_reg:
     88 	set_grs_a5a5
     89 
     90 	;; divs.l xx:4, rd
     91 	mov.l	#-320000, er1
     92 	set_ccr_zero
     93 	divs.l	#2:4, er1
     94 
     95 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
     96 	test_neg_set
     97 	test_carry_clear
     98 	test_zero_clear
     99 	test_ovf_clear
    100 
    101 	test_gr_a5a5	0
    102 	test_h_gr32	-160000	er1
    103 	test_gr_a5a5	2
    104 	test_gr_a5a5	3
    105 	test_gr_a5a5	4
    106 	test_gr_a5a5	5
    107 	test_gr_a5a5	6
    108 	test_gr_a5a5	7
    109 
    110 divu_w_reg_reg:
    111 	set_grs_a5a5
    112 
    113 	;; divu.w rs, rd
    114 	mov.w	#32, r1
    115 	mov.w	#2, r2
    116 	set_ccr_zero
    117 	divu.w	r2, r1
    118 
    119 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
    120 	test_cc_clear
    121 
    122 	test_gr_a5a5	0
    123 	test_h_gr16	16	r1
    124 	test_h_gr32	0xa5a50002	er2
    125 	test_gr_a5a5	3
    126 	test_gr_a5a5	4
    127 	test_gr_a5a5	5
    128 	test_gr_a5a5	6
    129 	test_gr_a5a5	7
    130 
    131 divu_w_imm4_reg:
    132 	set_grs_a5a5
    133 
    134 	;; divu.w xx:4, rd
    135 	mov.w	#32, r1
    136 	set_ccr_zero
    137 	divu.w	#2:4, r1
    138 
    139 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
    140 	test_cc_clear
    141 
    142 	test_gr_a5a5	0
    143 	test_h_gr16	16	r1
    144 	test_gr_a5a5	2
    145 	test_gr_a5a5	3
    146 	test_gr_a5a5	4
    147 	test_gr_a5a5	5
    148 	test_gr_a5a5	6
    149 	test_gr_a5a5	7
    150 
    151 divu_l_reg_reg:
    152 	set_grs_a5a5
    153 
    154 	;; divu.l ers, erd
    155 	mov.l	#320000, er1
    156 	mov.l	#2, er2
    157 	set_ccr_zero
    158 	divu.l	er2, er1
    159 
    160 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
    161 	test_cc_clear
    162 
    163 	test_gr_a5a5	0
    164 	test_h_gr32	160000	er1
    165 	test_h_gr32	2	er2
    166 	test_gr_a5a5	3
    167 	test_gr_a5a5	4
    168 	test_gr_a5a5	5
    169 	test_gr_a5a5	6
    170 	test_gr_a5a5	7
    171 
    172 divu_l_imm4_reg:
    173 	set_grs_a5a5
    174 
    175 	;; divu.l xx:4, rd
    176 	mov.l	#320000, er1
    177 	set_ccr_zero
    178 	divu.l	#2:4, er1
    179 
    180 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
    181 	test_cc_clear
    182 
    183 	test_gr_a5a5	0
    184 	test_h_gr32	160000	er1
    185 	test_gr_a5a5	2
    186 	test_gr_a5a5	3
    187 	test_gr_a5a5	4
    188 	test_gr_a5a5	5
    189 	test_gr_a5a5	6
    190 	test_gr_a5a5	7
    191 
    192 .endif
    193 
    194 .if (sim_cpu)			; not equal to zero ie. not h8
    195 divxs_b_reg_reg:
    196 	set_grs_a5a5
    197 
    198 	;; divxs.b rs, rd
    199 	mov.w	#32, r1
    200 	mov.b	#-2, r2l
    201 	set_ccr_zero
    202 	divxs.b	r2l, r1
    203 
    204 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    205 	test_neg_set
    206 	test_carry_clear
    207 	test_zero_clear
    208 	test_ovf_clear
    209 
    210 	test_gr_a5a5	0
    211 	test_h_gr16	0x00f0	r1
    212 	test_h_gr32	0xa5a5a5fe	er2
    213 	test_gr_a5a5	3
    214 	test_gr_a5a5	4
    215 	test_gr_a5a5	5
    216 	test_gr_a5a5	6
    217 	test_gr_a5a5	7
    218 
    219 .if (sim_cpu == h8sx)
    220 divxs_b_imm4_reg:
    221 	set_grs_a5a5
    222 
    223 	;; divxs.b xx:4, rd
    224 	mov.w	#-32, r1
    225 	set_ccr_zero
    226 	divxs.b	#2:4, r1
    227 
    228 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    229 	test_neg_set
    230 	test_carry_clear
    231 	test_zero_clear
    232 	test_ovf_clear
    233 
    234 	test_gr_a5a5	0
    235 	test_h_gr16	0x00f0	r1
    236 	test_gr_a5a5	2
    237 	test_gr_a5a5	3
    238 	test_gr_a5a5	4
    239 	test_gr_a5a5	5
    240 	test_gr_a5a5	6
    241 	test_gr_a5a5	7
    242 .endif				; h8sx
    243 
    244 divxs_w_reg_reg:
    245 	set_grs_a5a5
    246 
    247 	;; divxs.w ers, erd
    248 	mov.l	#0x1000,  er1
    249 	mov.w	#-0x1000, r2
    250 	set_ccr_zero
    251 	divxs.w	r2, er1
    252 
    253 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    254 	test_neg_set
    255 	test_carry_clear
    256 	test_zero_clear
    257 	test_ovf_clear
    258 
    259 	test_gr_a5a5	0
    260 	test_h_gr32	0x0000ffff	er1
    261 	test_h_gr32	0xa5a5f000	er2
    262 	test_gr_a5a5	3
    263 	test_gr_a5a5	4
    264 	test_gr_a5a5	5
    265 	test_gr_a5a5	6
    266 	test_gr_a5a5	7
    267 
    268 .if (sim_cpu == h8sx)
    269 divxs_w_imm4_reg:
    270 	set_grs_a5a5
    271 
    272 	;; divxs.w xx:4, rd
    273 	mov.l	#-4, er1
    274 	set_ccr_zero
    275 	divxs.w	#2:4, er1
    276 
    277 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    278 	test_neg_set
    279 	test_carry_clear
    280 	test_zero_clear
    281 	test_ovf_clear
    282 
    283 	test_gr_a5a5	0
    284 	test_h_gr32	0x0000fffe	er1
    285 	test_gr_a5a5	2
    286 	test_gr_a5a5	3
    287 	test_gr_a5a5	4
    288 	test_gr_a5a5	5
    289 	test_gr_a5a5	6
    290 	test_gr_a5a5	7
    291 .endif				; h8sx
    292 .endif				; not h8
    293 
    294 divxu_b_reg_reg:
    295 	set_grs_a5a5
    296 
    297 	;; divxu.b rs, rd
    298 	mov.w	#32, r1
    299 	mov.b	#2, r2l
    300 	set_ccr_zero
    301 	divxu.b	r2l, r1
    302 
    303 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
    304 	test_cc_clear
    305 
    306 	test_gr_a5a5	0
    307 	test_h_gr16	0x0010	r1
    308 	test_h_gr16	0xa502  r2
    309 .if (sim_cpu)
    310 	test_h_gr32	0xa5a5a502	er2
    311 .endif
    312 	test_gr_a5a5	3
    313 	test_gr_a5a5	4
    314 	test_gr_a5a5	5
    315 	test_gr_a5a5	6
    316 	test_gr_a5a5	7
    317 
    318 .if (sim_cpu)			; not h8
    319 .if (sim_cpu == h8sx)
    320 divxu_b_imm4_reg:
    321 	set_grs_a5a5
    322 
    323 	;; divxu.b xx:4, rd
    324 	mov.w	#32, r1
    325 	set_ccr_zero
    326 	divxu.b	#2:4, r1
    327 
    328 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
    329 	test_cc_clear
    330 
    331 	test_gr_a5a5	0
    332 	test_h_gr16	0x0010	r1
    333 	test_gr_a5a5	2
    334 	test_gr_a5a5	3
    335 	test_gr_a5a5	4
    336 	test_gr_a5a5	5
    337 	test_gr_a5a5	6
    338 	test_gr_a5a5	7
    339 .endif				; h8sx
    340 
    341 divxu_w_reg_reg:
    342 	set_grs_a5a5
    343 
    344 	;; divxu.w ers, erd
    345 	mov.l	#0x1000, er1
    346 	mov.w	#0x1000, r2
    347 	set_ccr_zero
    348 	divxu.w	r2, er1
    349 
    350 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
    351 	test_cc_clear
    352 
    353 	test_gr_a5a5	0
    354 	test_h_gr32	0x00000001	er1
    355 	test_h_gr32	0xa5a51000	er2
    356 	test_gr_a5a5	3
    357 	test_gr_a5a5	4
    358 	test_gr_a5a5	5
    359 	test_gr_a5a5	6
    360 	test_gr_a5a5	7
    361 
    362 .if (sim_cpu == h8sx)
    363 divxu_w_imm4_reg:
    364 	set_grs_a5a5
    365 
    366 	;; divxu.w xx:4, rd
    367 	mov.l	#0xffff, er1
    368 	set_ccr_zero
    369 	divxu.w	#2:4, er1
    370 
    371 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
    372 	test_cc_clear
    373 
    374 	test_gr_a5a5	0
    375 	test_h_gr32	0x00017fff	er1
    376 	test_gr_a5a5	2
    377 	test_gr_a5a5	3
    378 	test_gr_a5a5	4
    379 	test_gr_a5a5	5
    380 	test_gr_a5a5	6
    381 	test_gr_a5a5	7
    382 .endif				; h8sx
    383 .endif				; not h8
    384 
    385 	pass
    386 
    387 	exit 0
    388