~ubuntu-branches/ubuntu/utopic/binutils-arm64-cross/utopic

« back to all changes in this revision

Viewing changes to binutils-2.23.52.20130611/gas/testsuite/gas/aarch64/ldst-reg-reg-offset.s

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-06-20 17:38:09 UTC
  • Revision ID: package-import@ubuntu.com-20130620173809-app8lzgvymy5fg6c
Tags: 0.7
Build-depend on binutils-source (>= 2.23.52.20130620-1~).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* ldst-reg-reg-offset.s Test file for AArch64 load-store reg. (reg.offset)
 
2
   instructions.
 
3
 
 
4
   Copyright 2011, 2012 Free Software Foundation, Inc.
 
5
   Contributed by ARM Ltd.
 
6
 
 
7
   This file is part of GAS.
 
8
 
 
9
   GAS is free software; you can redistribute it and/or modify
 
10
   it under the terms of the GNU General Public License as published by
 
11
   the Free Software Foundation; either version 3 of the license, or
 
12
   (at your option) any later version.
 
13
 
 
14
   GAS is distributed in the hope that it will be useful,
 
15
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
17
   GNU General Public License for more details.
 
18
 
 
19
   You should have received a copy of the GNU General Public License
 
20
   along with this program; see the file COPYING3. If not,
 
21
   see <http://www.gnu.org/licenses/>.  */
 
22
 
 
23
/* Only instructions loading from/storing to FP/SIMD register are
 
24
   tested here.  */
 
25
 
 
26
        .macro  op3_32 op, reg, ext, imm
 
27
        .ifc \imm, -1
 
28
        \op     \reg\()7, [sp, w7, \ext]
 
29
        .else
 
30
        \op     \reg\()7, [sp, w7, \ext #\imm]
 
31
        .endif
 
32
        .endm
 
33
 
 
34
        .macro  op3_64 op, reg, ext, imm
 
35
        .ifc \imm, -1
 
36
        \op     \reg\()7, [sp, x7, \ext]
 
37
        .else
 
38
        \op     \reg\()7, [sp, x7, \ext #\imm]
 
39
        .endif
 
40
        .endm
 
41
 
 
42
        .macro  op3 op, reg, ext, imm=-1
 
43
        .ifc \ext, uxtw
 
44
        op3_32  \op, \reg, \ext, \imm
 
45
        .endif
 
46
        .ifc \ext, sxtw 
 
47
        op3_32  \op, \reg, \ext, \imm
 
48
        .endif
 
49
        .ifc \ext, lsl 
 
50
                .ifnc \imm, -1
 
51
                // shift <amount> is mandatory when 'lsl' is used
 
52
                op3_64  \op, \reg, \ext, \imm
 
53
                .else
 
54
                // absent shift; lsl by default
 
55
                \op     \reg\()7, [sp, x7]
 
56
                .endif
 
57
        .endif
 
58
        .ifc \ext, sxtx
 
59
        op3_64  \op, \reg, \ext, \imm
 
60
        .endif
 
61
        .endm
 
62
 
 
63
        .macro shift op, ext
 
64
        op3     \op, b, \ext
 
65
        op3     \op, b, \ext, 0
 
66
        op3     \op, h, \ext, 0
 
67
        op3     \op, h, \ext, 1
 
68
        op3     \op, s, \ext, 0
 
69
        op3     \op, s, \ext, 2
 
70
        op3     \op, d, \ext, 0
 
71
        op3     \op, d, \ext, 3
 
72
        op3     \op, q, \ext, 0
 
73
        op3     \op, q, \ext, 4 
 
74
        .endm
 
75
 
 
76
        .macro extend op
 
77
        .irp ext, uxtw, lsl, sxtw, sxtx
 
78
        shift   \op, \ext
 
79
        .endr
 
80
        .endm
 
81
 
 
82
        .macro ld_or_st op
 
83
        extend  \op
 
84
        .endm
 
85
 
 
86
func:
 
87
        ld_or_st        str
 
88
        ld_or_st        ldr