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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [gdb/] [testsuite/] [gdb.arch/] [thumb2-it.S] - Blame information for rev 227

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 227 jeremybenn
/* Thumb-2 IT blocks test program.
2
 
3
   Copyright 2010 Free Software Foundation, Inc.
4
 
5
   This file is part of GDB.
6
 
7
   This program is free software; you can redistribute it and/or modify
8
   it under the terms of the GNU General Public License as published by
9
   the Free Software Foundation; either version 3 of the License, or
10
   (at your option) any later version.
11
 
12
   This program is distributed in the hope that it will be useful,
13
   but WITHOUT ANY WARRANTY; without even the implied warranty of
14
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
   GNU General Public License for more details.
16
 
17
   You should have received a copy of the GNU General Public License
18
   along with this program.  If not, see .  */
19
 
20
        .syntax unified
21
        .text
22
        .p2align 2
23
        .code 16
24
 
25
#ifndef __thumb2__
26
 
27
        .type main,%function
28
        .thumb_func
29
        .globl main
30
main:
31
        mov     r0, #0
32
        bx      lr      @ No Thumb-2
33
 
34
#else
35
 
36
        .type main,%function
37
        .thumb_func
38
        .globl main
39
main:
40
        mov     r0, #0
41
        bx      lr      @ Thumb-2 OK
42
 
43
        @ One conditional instruction, executed.
44
        .type it_1,%function
45
        .thumb_func
46
it_1:
47
        mov     r0, #0  @ Setup
48
        cmp     r0, #0  @ Setup
49
        it      eq      @ IT instruction, Expected == 1
50
        addeq   r0, #1  @ Reached
51
        bx      lr      @ Done
52
 
53
        @ One conditional instruction, skipped.
54
        .type it_2,%function
55
        .thumb_func
56
it_2:
57
        mov     r0, #0  @ Setup
58
        cmp     r0, #0  @ Setup
59
        it      ne      @ IT instruction, Expected == 0
60
        addne   r0, #1  @ Not reached
61
        bx      lr      @ Done, Check $r0 == 0
62
 
63
        @ Block of four, alternating, starting with executed.
64
        .type it_3,%function
65
        .thumb_func
66
it_3:
67
        mov     r0, #0  @ Setup
68
        cmp     r0, #0  @ Setup
69
        itete   ge      @ IT instruction, Expected == 2
70
        addge   r0, #1  @ Reached
71
        addlt   r0, #2  @ Not reached
72
        addge   r0, #4  @ Reached
73
        addlt   r0, #8  @ Not reached
74
        bx      lr      @ Done, Check $r0 == 5
75
 
76
        @ Block of four, changing flags.
77
        .type it_4,%function
78
        .thumb_func
79
it_4:
80
        mov     r0, #0  @ Setup
81
        cmp     r0, #0  @ Setup
82
        itttt   ge      @ IT instruction, Expected == 2
83
        addge   r0, #1  @ Reached
84
        cmpge   r0, #10 @ Reached
85
        addge   r0, #4  @ Not reached
86
        addge   r0, #8  @ Not reached
87
        bx      lr      @ Done, Check $r0 == 1
88
 
89
        @ Block of two, ending with taken branch.
90
        .type it_5,%function
91
        .thumb_func
92
it_5:
93
        mov     r0, #0  @ Setup
94
        cmp     r0, #0  @ Setup
95
        itt     ge      @ IT instruction, Expected == 2
96
        addge   r0, #1  @ Reached
97
        bge     .L5     @ Reached
98
        add     r0, #2  @ Never reached
99
.L5:    bx      lr      @ Done, Check $r0 == 1
100
 
101
        @ Block of two, ending with untaken branch.
102
        .type it_6,%function
103
        .thumb_func
104
it_6:
105
        mov     r0, #0  @ Setup
106
        cmp     r0, #0  @ Setup
107
        ite     ge      @ IT instruction, Expected == 2
108
        addge   r0, #1  @ Reached
109
        blt     .L6     @ Not reached
110
        add     r0, #2  @ Reached
111
.L6:    bx      lr      @ Done, Check $r0 == 3
112
 
113
        @ Block of four, taken, of different sizes
114
        .type it_7,%function
115
        .thumb_func
116
it_7:
117
        mov     r0, #0  @ Setup
118
        cmp     r0, #0  @ Setup
119
        itttt   ge      @ IT instruction, Expected == 4
120
        addge.n r0, #1  @ Reached
121
        addge.w r0, #2  @ Reached
122
        addge.n r0, #4  @ Reached
123
        addge.w r0, #8  @ Reached
124
        bx      lr      @ Done, Check $r0 == 15
125
 
126
        @ Block of four, only first executed.
127
        .type it_3,%function
128
        .thumb_func
129
it_8:
130
        mov     r0, #0  @ Setup
131
        cmp     r0, #0  @ Setup
132
        iteee   ge      @ IT instruction, Expected == 1
133
        addge   r0, #1  @ Reached
134
        addlt   r0, #2  @ Not reached
135
        addlt   r0, #4  @ Not reached
136
        addlt   r0, #8  @ Not reached
137
        bx      lr      @ Done, Check $r0 == 1
138
 
139
        .type it_breakpoints,%function
140
        .thumb_func
141
it_breakpoints:
142
        mov     r0, #0
143
        cmp     r0, #0
144
        it      eq      @ Location 1 @ Break 1
145
        moveq   r0, #0
146
 
147
        it      eq      @ Location 2
148
        moveq   r0, #0  @ Break 2
149
 
150
        it      ne      @ Location 3
151
        movne   r0, #0  @ Break 3
152
 
153
        @ An IT block of maximum size.
154
        itttt   eq      @ Location 4
155
        moveq.w r0, #0
156
        moveq.w r0, #0
157
        moveq.w r0, #0
158
        moveq.w r0, #0  @ Break 4
159
 
160
        @ Just outside an IT block.
161
        it      eq
162
        moveq   r0, #0
163
        mov     r0, #0  @ Location 5 @ Break 5
164
 
165
        @ After something that looks like an IT block, but
166
        @ is the second half of an instruction.
167
        .p2align 6
168
        cmp     r0, r0
169
        b       1f
170
        b.w     .+0xe14 @ 0xf000 0xbf08 -> second half is IT EQ
171
1:      mov     r0, #0  @ Location 6 @ Break 6
172
 
173
        @ After something that looks like an IT block, but
174
        @ is data.
175
        .p2align 6
176
        b       1f
177
        .short  0xbf08
178
1:      mov     r0, #0  @ Location 7 @ Break 7
179
 
180
        bx      lr
181
 
182
#endif /* __thumb2__ */

powered by: WebSVN 2.1.0

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