OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gdb/] [gdb-6.8/] [sim/] [testsuite/] [sim/] [h8300/] [extl.s] - Rev 26

Compare with Previous | Blame | View Log

# Hitachi H8 testcase 'exts.l, extu.l'
# mach(): h8300h h8300s h8sx
# as(h8300):	--defsym sim_cpu=0
# as(h8300h):	--defsym sim_cpu=1
# as(h8300s):	--defsym sim_cpu=2
# as(h8sx):	--defsym sim_cpu=3
# ld(h8300h):	-m h8300helf
# ld(h8300s):	-m h8300self
# ld(h8sx):	-m h8300sxelf	
 
	.include "testutils.inc"
 
	start
 
	.data
	.align 4
pos:	.long	0xffff0001
neg:	.long	0x00008000
 
pos2:	.long	0xffffff01
neg2:	.long	0x00000080
 
	.text
 
exts_l_reg32_p:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l ern32
	mov.w	#1, r0
	exts.l	er0
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  0x00000001 er0	; result of sign extend
	test_gr_a5a5 1		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
 
exts_l_reg32_n:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l ern32
	mov.w	#0xffff, r0
	exts.l	er0
 
	;; Test ccr		H=0 N=1 Z=0 V=0 C=0
	test_neg_set
	test_zero_clear
	test_ovf_clear
	test_carry_clear
 
	test_h_gr32  0xffffffff er0	; result of sign extend
	test_gr_a5a5 1		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
 
extu_l_reg32_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l ern32
	mov.w	#0xffff, r0
	extu.l	er0
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  0x0000ffff er0	; result of zero extend
	test_gr_a5a5 1		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
 
.if (sim_cpu == h8sx)
exts_l_ind_p:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l @ern32
	mov.l	#pos, er1
	exts.l	@er1
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  pos er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
	cmp.l	#0x00000001, @pos
	beq	.Lslindp
	fail
.Lslindp:
	mov.l	#0xffff0001, @pos	; Restore initial value
 
exts_l_ind_n:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l @ern32
	mov.l	#neg, er1
	exts.l	@er1
 
	;; Test ccr		H=0 N=1 Z=0 V=0 C=0
	test_neg_set
	test_zero_clear
	test_ovf_clear
	test_carry_clear
 
	test_h_gr32  neg er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0xffff8000, @neg
	beq     .Lslindn
	fail
.Lslindn:
;;;  Note:	 leave the value as 0xffff8000, so that extu has work to do.
 
extu_l_ind_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l @ern32
	mov.l	#neg, er1
	extu.l	@er1
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00008000, @neg
	beq     .Lulindn
	fail
.Lulindn:
;;;  Note:	 leave the value as 0x00008000, so that extu has work to do.
 
exts_l_postinc_p:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l @ern32+
	mov.l	#pos, er1
	exts.l	@er1+
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  pos+4 er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
	cmp.l	#0x00000001, @pos
	beq	.Lslpostincp
	fail
.Lslpostincp:
	mov.l	#0xffff0001, @pos	; Restore initial value
 
exts_l_postinc_n:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l @ern32+
	mov.l	#neg, er1
	exts.l	@er1+
 
	;; Test ccr		H=0 N=1 Z=0 V=0 C=0
	test_neg_set
	test_zero_clear
	test_ovf_clear
	test_carry_clear
 
	test_h_gr32  neg+4 er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0xffff8000, @neg
	beq     .Lslpostincn
	fail
.Lslpostincn:
;;;  Note:	 leave the value as 0xffff8000, so that extu has work to do.
 
extu_l_postinc_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l @ern32+
	mov.l	#neg, er1
	extu.l	@er1+
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg+4 er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00008000, @neg
	beq     .Lulpostincn
	fail
.Lulpostincn:
;;;  Note:	 leave the value as 0x00008000, so that extu has work to do.
 
exts_l_postdec_p:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l @ern32-
	mov.l	#pos, er1
	exts.l	@er1-
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  pos-4 er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
	cmp.l	#0x00000001, @pos
	beq	.Lslpostdecp
	fail
.Lslpostdecp:
	mov.l	#0xffff0001, @pos	; Restore initial value
 
exts_l_postdec_n:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l @ern32-
	mov.l	#neg, er1
	exts.l	@er1-
 
	;; Test ccr		H=0 N=1 Z=0 V=0 C=0
	test_neg_set
	test_zero_clear
	test_ovf_clear
	test_carry_clear
 
	test_h_gr32  neg-4 er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0xffff8000, @neg
	beq     .Lslpostdecn
	fail
.Lslpostdecn:
;;;  Note:	 leave the value as 0xffff8000, so that extu has work to do.
 
extu_l_postdec_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l @ern32-
	mov.l	#neg, er1
	extu.l	@er1-
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg-4 er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00008000, @neg
	beq     .Lulpostdecn
	fail
.Lulpostdecn:
;;;  Note:	 leave the value as 0x00008000, so that extu has work to do.
 
exts_l_preinc_p:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l @+ern32
	mov.l	#pos-4, er1
	exts.l	@+er1
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  pos er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
	cmp.l	#0x00000001, @pos
	beq	.Lslpreincp
	fail
.Lslpreincp:
	mov.l	#0xffff0001, @pos	; Restore initial value
 
exts_l_preinc_n:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l @+ern32
	mov.l	#neg-4, er1
	exts.l	@+er1
 
	;; Test ccr		H=0 N=1 Z=0 V=0 C=0
	test_neg_set
	test_zero_clear
	test_ovf_clear
	test_carry_clear
 
	test_h_gr32  neg er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0xffff8000, @neg
	beq     .Lslpreincn
	fail
.Lslpreincn:
;;;  Note:	 leave the value as 0xffff8000, so that extu has work to do.
 
extu_l_preinc_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l @+ern32
	mov.l	#neg-4, er1
	extu.l	@+er1
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00008000, @neg
	beq     .Lulpreincn
	fail
.Lulpreincn:
;;;  Note:	 leave the value as 0x00008000, so that extu has work to do.
 
exts_l_predec_p:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l @-ern32
	mov.l	#pos+4, er1
	exts.l	@-er1
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  pos er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
	cmp.l	#0x00000001, @pos
	beq	.Lslpredecp
	fail
.Lslpredecp:
	mov.l	#0xffff0001, @pos	; Restore initial value
 
exts_l_predec_n:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l @-ern32
	mov.l	#neg+4, er1
	exts.l	@-er1
 
	;; Test ccr		H=0 N=1 Z=0 V=0 C=0
	test_neg_set
	test_zero_clear
	test_ovf_clear
	test_carry_clear
 
	test_h_gr32  neg er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0xffff8000, @neg
	beq     .Lslpredecn
	fail
.Lslpredecn:
;;;  Note:	 leave the value as 0xffff8000, so that extu has work to do.
 
extu_l_predec_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l @-ern32
	mov.l	#neg+4, er1
	extu.l	@-er1
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00008000, @neg
	beq     .Lulpredecn
	fail
.Lulpredecn:
;;;  Note:	 leave the value as 0x00008000, so that extu has work to do.
 
extu_l_disp2_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l @(dd:2, ern32)
	mov.l	#neg-8, er1
	extu.l	@(8:2, er1)
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg-8 er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00008000, @neg
	beq     .Luldisp2n
	fail
.Luldisp2n:
;;;  Note:	 leave the value as 0x00008000, so that extu has work to do.
 
extu_l_disp16_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l @(dd:16, ern32)
	mov.l	#neg-44, er1
	extu.l	@(44:16, er1)
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg-44 er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00008000, @neg
	beq     .Luldisp16n
	fail
.Luldisp16n:
;;;  Note:	 leave the value as 0x00008000, so that extu has work to do.
 
extu_l_disp32_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l @(dd:32, ern32)
	mov.l	#neg+444, er1
	extu.l	@(-444:32, er1)
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg+444 er1	; er1 still contains target address
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00008000, @neg
	beq     .Luldisp32n
	fail
.Luldisp32n:
;;;  Note:	 leave the value as 0x00008000, so that extu has work to do.
 
extu_l_abs16_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l @aa:16
	extu.l	@neg:16
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 1
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00008000, @neg
	beq     .Lulabs16n
	fail
.Lulabs16n:
;;;  Note:	 leave the value as 0x00008000, so that extu has work to do.
 
extu_l_abs32_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l @aa:32
	extu.l	@neg:32
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 1
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00008000, @neg
	beq     .Lulabs32n
	fail
.Lulabs32n:
;;;  Note:	 leave the value as 0x00008000, so that extu has work to do.
 
 
 
	#
	# exts #2, nn
	#
 
exts_l_reg32_2_p:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l #2, ern32
	mov.b	#1, r0l
	exts.l	#2, er0
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  0x00000001 er0	; result of sign extend
	test_gr_a5a5 1		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
 
exts_l_reg32_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l #2, ern32
	mov.b	#0xff, r0l
	exts.l	#2, er0
 
	;; Test ccr		H=0 N=1 Z=0 V=0 C=0
	test_neg_set
	test_ovf_clear
	test_zero_clear
	test_carry_clear
 
	test_h_gr32  0xffffffff er0	; result of sign extend
	test_gr_a5a5 1		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
 
extu_l_reg32_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l #2, ern32
	mov.b	#0xff, r0l
	extu.l	#2, er0
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  0x000000ff er0	; result of zero extend
	test_gr_a5a5 1		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
 
exts_l_ind_2_p:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l #2, @ern32
	mov.l	#pos2, er1
	exts.l	#2, @er1
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  pos2 er1	; result of sign extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
	cmp.l	#0x00000001, @pos2
	beq	.Lslindp2
	fail
.Lslindp2:
	mov.l	#0xffffff01, @pos2	; Restore initial value
 
exts_l_ind_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l #2, @ern32
	mov.l	#neg2, er1
	exts.l	#2, @er1
 
	;; Test ccr		H=0 N=1 Z=0 V=0 C=0
	test_neg_set
	test_ovf_clear
	test_zero_clear
	test_carry_clear
 
	test_h_gr32  neg2 er1	; result of sign extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0xffffff80, @neg2
	beq     .Lslindn2
	fail
.Lslindn2:
;;;  Note:	 leave the value as 0xffffff80, so that extu has work to do.
 
extu_l_ind_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l #2, @ern32
	mov.l	#neg2, er1
	extu.l	#2, @er1
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg2 er1	; result of zero extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00000080, @neg2
	beq     .Lulindn2
	fail
.Lulindn2:
;;;  Note:	 leave the value as 0x00000080, like it started out.
 
exts_l_postinc_2_p:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l #2, @ern32+
	mov.l	#pos2, er1
	exts.l	#2, @er1+
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  pos2+4 er1	; result of sign extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
	cmp.l	#0x00000001, @pos2
	beq	.Lslpostincp2
	fail
.Lslpostincp2:
	mov.l	#0xffffff01, @pos2	; Restore initial value
 
exts_l_postinc_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l #2, @ern32+
	mov.l	#neg2, er1
	exts.l	#2, @er1+
 
	;; Test ccr		H=0 N=1 Z=0 V=0 C=0
	test_neg_set
	test_ovf_clear
	test_zero_clear
	test_carry_clear
 
	test_h_gr32  neg2+4 er1	; result of sign extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0xffffff80, @neg2
	beq     .Lslpostincn2
	fail
.Lslpostincn2:
;;;  Note:	 leave the value as 0xffffff80, so that extu has work to do.
 
extu_l_postinc_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l #2, @ern32+
	mov.l	#neg2, er1
	extu.l	#2, @er1+
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg2+4 er1	; result of zero extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00000080, @neg2
	beq     .Lulpostincn2
	fail
.Lulpostincn2:
;;;  Note:	 leave the value as 0x00000080, like it started out.
 
exts_l_postdec_2_p:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l #2, @ern32-
	mov.l	#pos2, er1
	exts.l	#2, @er1-
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  pos2-4 er1	; result of sign extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
	cmp.l	#0x00000001, @pos2
	beq	.Lslpostdecp2
	fail
.Lslpostdecp2:
	mov.l	#0xffffff01, @pos2	; Restore initial value
 
exts_l_postdec_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l #2, @ern32-
	mov.l	#neg2, er1
	exts.l	#2, @er1-
 
	;; Test ccr		H=0 N=1 Z=0 V=0 C=0
	test_neg_set
	test_ovf_clear
	test_zero_clear
	test_carry_clear
 
	test_h_gr32  neg2-4 er1	; result of sign extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0xffffff80, @neg2
	beq     .Lslpostdecn2
	fail
.Lslpostdecn2:
;;;  Note:	 leave the value as 0xffffff80, so that extu has work to do.
 
extu_l_postdec_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l #2, @ern32-
	mov.l	#neg2, er1
	extu.l	#2, @er1-
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg2-4 er1	; result of zero extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00000080, @neg2
	beq     .Lulpostdecn2
	fail
.Lulpostdecn2:
;;;  Note:	 leave the value as 0x00000080, like it started out.
 
exts_l_preinc_2_p:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l #2, @+ern32
	mov.l	#pos2-4, er1
	exts.l	#2, @+er1
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  pos2 er1	; result of sign extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
	cmp.l	#0x00000001, @pos2
	beq	.Lslpreincp2
	fail
.Lslpreincp2:
	mov.l	#0xffffff01, @pos2	; Restore initial value
 
exts_l_preinc_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l #2, @+ern32
	mov.l	#neg2-4, er1
	exts.l	#2, @+er1
 
	;; Test ccr		H=0 N=1 Z=0 V=0 C=0
	test_neg_set
	test_ovf_clear
	test_zero_clear
	test_carry_clear
 
	test_h_gr32  neg2 er1	; result of sign extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0xffffff80, @neg2
	beq     .Lslpreincn2
	fail
.Lslpreincn2:
;;;  Note:	 leave the value as 0xffffff80, so that extu has work to do.
 
extu_l_preinc_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l #2, @+ern32
	mov.l	#neg2-4, er1
	extu.l	#2, @+er1
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg2 er1	; result of zero extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00000080, @neg2
	beq     .Lulpreincn2
	fail
.Lulpreincn2:
;;;  Note:	 leave the value as 0x00000080, like it started out.
 
exts_l_predec_2_p:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l #2, @-ern32
	mov.l	#pos2+4, er1
	exts.l	#2, @-er1
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  pos2 er1	; result of sign extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
	cmp.l	#0x00000001, @pos2
	beq	.Lslpredecp2
	fail
.Lslpredecp2:
	mov.l	#0xffffff01, @pos2	; Restore initial value
 
exts_l_predec_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; exts.l #2, @-ern32
	mov.l	#neg2+4, er1
	exts.l	#2, @-er1
 
	;; Test ccr		H=0 N=1 Z=0 V=0 C=0
	test_neg_set
	test_ovf_clear
	test_zero_clear
	test_carry_clear
 
	test_h_gr32  neg2 er1	; result of sign extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0xffffff80, @neg2
	beq     .Lslpredecn2
	fail
.Lslpredecn2:
;;;  Note:	 leave the value as 0xffffff80, so that extu has work to do.
 
extu_l_predec_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l #2, @-ern32
	mov.l	#neg2+4, er1
	extu.l	#2, @-er1
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg2 er1	; result of zero extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00000080, @neg2
	beq     .Lulpredecn2
	fail
.Lulpredecn2:
;;;  Note:	 leave the value as 0x00000080, like it started out.
 
extu_l_disp2_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l #2, @(dd:2, ern32)
	mov.l	#neg2-8, er1
	extu.l	#2, @(8:2, er1)
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg2-8 er1	; result of zero extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00000080, @neg2
	beq     .Luldisp2n2
	fail
.Luldisp2n2:
;;;  Note:	 leave the value as 0x00000080, like it started out.
 
extu_l_disp16_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l #2, @(dd:16, ern32)
	mov.l	#neg2-44, er1
	extu.l	#2, @(44:16, er1)
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg2-44 er1	; result of zero extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00000080, @neg2
	beq     .Luldisp16n2
	fail
.Luldisp16n2:
;;;  Note:	 leave the value as 0x00000080, like it started out.
 
extu_l_disp32_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l #2, @(dd:32, ern32)
	mov.l	#neg2+444, er1
	extu.l	#2, @(-444:32, er1)
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_h_gr32  neg2+444 er1	; result of zero extend
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00000080, @neg2
	beq     .Luldisp32n2
	fail
.Luldisp32n2:
;;;  Note:	 leave the value as 0x00000080, like it started out.
 
extu_l_abs16_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l #2, @aa:16
	extu.l	#2, @neg2:16
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 1
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00000080, @neg2
	beq     .Lulabs16n2
	fail
.Lulabs16n2:
;;;  Note:	 leave the value as 0x00000080, like it started out.
 
extu_l_abs32_2_n:
	set_grs_a5a5
	set_ccr_zero
	;; extu.l #2, @aa:32
	extu.l	#2, @neg2:32
 
	;; Test ccr		H=0 N=0 Z=0 V=0 C=0
	test_cc_clear
 
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 1
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_gr_a5a5 7
        cmp.l   #0x00000080, @neg2
	beq     .Lulabs32n2
	fail
.Lulabs32n2:
;;;  Note:	 leave the value as 0x00000080, like it started out.
 
.endif
 
	pass
 
	exit 0
 
 
 
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.