PowerPC64 .branch_lt address
[binutils-gdb.git] / sim / testsuite / h8300 / movmd.s
1 # Hitachi H8 testcase 'movmd'
2 # mach(): h8sx
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 .data
14 byte_src:
15 .byte 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
16 byte_dst:
17 .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
18
19 .align 2
20 word_src:
21 .word 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
22 word_dst:
23 .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
24
25 .align 4
26 long_src:
27 .long 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
28 long_dst:
29 .long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
30
31 start
32 .if (sim_cpu == h8sx)
33 movmd_b:#
34 # Byte block transfer
35 #
36 set_grs_a5a5
37
38 mov #byte_src, er5
39 mov #byte_dst, er6
40 mov #10, r4
41 set_ccr_zero
42 ;; movmd.b
43 movmd.b
44 ;;; .word 0x7b94
45
46 test_cc_clear
47 test_gr_a5a5 0
48 test_gr_a5a5 1
49 test_gr_a5a5 2
50 test_gr_a5a5 3
51 test_h_gr32 0xa5a50000 er4
52 test_h_gr32 byte_src+10 er5
53 test_h_gr32 byte_dst+10 er6
54 test_gr_a5a5 7
55
56 #
57 # Now make sure exactly 10 bytes were transferred.
58 memcmp byte_src byte_dst 10
59 cmp.b #0, @byte_dst+10
60 beq .L0
61 fail
62 .L0:
63
64 movmd_w:#
65 # Word block transfer
66 #
67 set_grs_a5a5
68
69 mov #word_src, er5
70 mov #word_dst, er6
71 mov #10, r4
72 set_ccr_zero
73 ;; movmd.w
74 movmd.w
75 ;;; .word 0x7ba4
76
77 test_cc_clear
78 test_gr_a5a5 0
79 test_gr_a5a5 1
80 test_gr_a5a5 2
81 test_gr_a5a5 3
82 test_h_gr32 0xa5a50000 er4
83 test_h_gr32 word_src+20 er5
84 test_h_gr32 word_dst+20 er6
85 test_gr_a5a5 7
86
87 #
88 # Now make sure exactly 20 bytes were transferred.
89 memcmp word_src word_dst 20
90 cmp.w #0, @word_dst+20
91 beq .L1
92 fail
93 .L1:
94
95 movmd_l:#
96 # Long block transfer
97 #
98 set_grs_a5a5
99
100 mov #long_src, er5
101 mov #long_dst, er6
102 mov #10, r4
103 set_ccr_zero
104 ;; movmd.b
105 movmd.l
106 ;;; .word 0x7bb4
107
108 test_cc_clear
109 test_gr_a5a5 0
110 test_gr_a5a5 1
111 test_gr_a5a5 2
112 test_gr_a5a5 3
113 test_h_gr32 0xa5a50000 er4
114 test_h_gr32 long_src+40 er5
115 test_h_gr32 long_dst+40 er6
116 test_gr_a5a5 7
117
118 #
119 # Now make sure exactly 40 bytes were transferred.
120 memcmp long_src long_dst 40
121 cmp.l #0, @long_dst+40
122 beq .L2
123 fail
124 .L2:
125
126 .endif
127 pass
128
129 exit 0