OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [gnu-src/] [binutils-2.20.1/] [gas/] [testsuite/] [gas/] [score/] [branch_32.s] - Blame information for rev 205

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 205 julius
/*
2
 * tests for branch instruction relaxation
3
 *
4
 * Author: libin
5
 */
6
 
7
.include "relaxation_macro.h"
8
 
9
.macro _b_op_pattern insn insn1
10
.balign 2
11
 
12
/*
13
 * for local label 1, assembler should NOT alter instructions before .skip;
14
 * but it SHOULD alter instructions afte it.
15
 */
16
1:
17
  insn_16    "\insn! 1b"
18
  tran_16_32 "\insn! 1b", "\insn 1b"
19
  insn_16    "\insn1 1b"
20
.skip 512
21
  insn_16    "\insn! 1b"
22
  tran_16_32 "\insn! 1b", "\insn 1b"
23
  insn_16    "\insn1 1b"
24
 
25
/*
26
 * for local label 2, assembler SHOULD alter instructions before .skip;
27
 * but it should NOT alter instructions after it.
28
 */
29
  insn_16    "\insn! 2f"
30
  tran_16_32 "\insn! 2f", "\insn 2f"
31
  insn_16    "\insn1 2f"
32
.skip 511
33
  insn_16    "\insn! 2f"
34
  tran_16_32 "\insn! 2f", "\insn 2f"
35
  insn_16    "\insn1 2f"
36
2:
37
  nop!
38
 
39
/* tests for boundary */
40
3:
41
.skip 512
42
  insn_16 "\insn! 3b"
43
  insn_16 "\insn! 3b"
44
 
45
  insn_16 "\insn! 4f"
46
  insn_16 "\insn! 4f"
47
.skip 511
48
4:
49
  nop!
50
.endm
51
 
52
.macro _br_op_pattern insn
53
.balign 2
54
  insn_32 "\insn r0"
55
  insn_32 "\insn r15"
56
 
57
  tran_16_32 "\insn! r0", "\insn r0"
58
 
59
  /* shouldn't alter */
60
  insn_32 "\insn r16"
61
  insn_32 "\insn r31"
62
.endm
63
 
64
.macro _bcmp_op_pattern1 insn
65
.balign 2
66
 
67
/* as will give "Using temp register(r1)" warning if you using r1 */
68
 
69
/*
70
 * for local label 1, assembler should NOT alter instructions before .skip;
71
 * but it SHOULD alter instructions afte it.
72
 */
73
1:
74
  insn_32 "\insn r0,  r15, 1b"
75
  insn_32 "\insn r15, r16, 1b"
76
  insn_32 "\insn r15, r31, 1b"
77
  insn_32 "\insn r16, r31, 1b"
78
.skip 512
79
  insn_32 "\insn r0,  r15, 1b"
80
  insn_32 "\insn r15, r16, 1b"
81
  insn_32 "\insn r15, r31, 1b"
82
  insn_32 "\insn r16, r31, 1b"
83
 
84
/*
85
 * for local label 2, assembler SHOULD alter instructions before .skip;
86
 * but it should NOT alter instructions after it.
87
 */
88
  insn_32 "\insn r0,  r15, 2f"
89
  insn_32 "\insn r15, r16, 2f"
90
  insn_32 "\insn r15, r31, 2f"
91
  insn_32 "\insn r16, r31, 2f"
92
.skip 511
93
  insn_32 "\insn r0,  r15, 2f"
94
  insn_32 "\insn r15, r16, 2f"
95
  insn_32 "\insn r15, r31, 2f"
96
  insn_32 "\insn r16, r31, 2f"
97
2:
98
  nop!
99
 
100
/* tests for boundary */
101
3:
102
.skip 512
103
  insn_32 "\insn r0,  r15, 3b"
104
  insn_32 "\insn r16, r15, 3b"
105
 
106
  insn_32 "\insn r0,  r15, 4f"
107
  insn_32 "\insn r16, r15, 4f"
108
.skip 511
109
4:
110
.endm
111
 
112
.macro _bcmp_op_pattern2 insn
113
.balign 2
114
 
115
/* as will give "Using temp register(r1)" warning if you using r1 */
116
 
117
/*
118
 * for local label 1, assembler should NOT alter instructions before .skip;
119
 * but it SHOULD alter instructions afte it.
120
 */
121
1:
122
  insn_32 "\insn r0,  1b"
123
  insn_32 "\insn r15, 1b"
124
  insn_32 "\insn r16, 1b"
125
  insn_32 "\insn r31, 1b"
126
.skip 512
127
  insn_32 "\insn r0,  1b"
128
  insn_32 "\insn r15, 1b"
129
  insn_32 "\insn r16, 1b"
130
  insn_32 "\insn r31, 1b"
131
 
132
/*
133
 * for local label 2, assembler SHOULD alter instructions before .skip;
134
 * but it should NOT alter instructions after it.
135
 */
136
  insn_32 "\insn r0,  2f"
137
  insn_32 "\insn r15, 2f"
138
  insn_32 "\insn r16, 2f"
139
  insn_32 "\insn r31, 2f"
140
.skip 511
141
  insn_32 "\insn r0,  2f"
142
  insn_32 "\insn r15, 2f"
143
  insn_32 "\insn r16, 2f"
144
  insn_32 "\insn r31, 2f"
145
2:
146
  nop!
147
 
148
/* tests for boundary */
149
3:
150
.skip 512
151
  insn_32 "\insn r0,  3b"
152
  insn_32 "\insn r16, 3b"
153
 
154
  insn_32 "\insn r0,  4f"
155
  insn_32 "\insn r16, 4f"
156
.skip 511
157
4:
158
.endm
159
 
160
.text
161
/* b Disp19 <-> b! Disp9 */
162
_b_op_pattern "bgtu", "bgtul"
163
_b_op_pattern "bleu", "bleul"
164
_b_op_pattern "beq",  "beql"
165
_b_op_pattern "bne",  "bnel"
166
_b_op_pattern "bgt",  "bgtl"
167
_b_op_pattern "ble",  "blel"
168
_b_op_pattern "bcnz", "bcnzl"
169
_b_op_pattern "b",    "bl"
170
 
171
/* br rD <-> br! rD */
172
_br_op_pattern "br"
173
_br_op_pattern "brl"
174
 
175
/* bcmpeq/bcmpne rA,rB,Disp9 -> cmp/cmp! rA, rB; beq/bne Disp19 */
176
_bcmp_op_pattern1 "bcmpeq"
177
_bcmp_op_pattern1 "bcmpne"
178
 
179
/* bcmpeqz/bcmpnez rA,Disp9 -> cmpi! rA, 0; beq/bne Disp19 */
180
_bcmp_op_pattern2 "bcmpeqz"
181
_bcmp_op_pattern2 "bcmpnez"

powered by: WebSVN 2.1.0

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