]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/MC/ARM/arm-ldrd.s
Vendor import of llvm trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / test / MC / ARM / arm-ldrd.s
1 // RUN: not llvm-mc -triple arm-eabi -mattr=+v5te %s -o /dev/null 2>&1 | FileCheck %s
2 //
3 // rdar://14479793
4
5 ldrd r1, r2, [pc, #0]
6 ldrd r1, r2, [r3, #4]
7 ldrd r1, r2, [r3], #4
8 ldrd r1, r2, [r3, #4]!
9 ldrd r1, r2, [r3, -r4]!
10 ldrd r1, r2, [r3, r4]
11 ldrd r1, r2, [r3], r4
12 // CHECK: error: Rt must be even-numbered
13 // CHECK: error: Rt must be even-numbered
14 // CHECK: error: Rt must be even-numbered
15 // CHECK: error: Rt must be even-numbered
16 // CHECK: error: Rt must be even-numbered
17 // CHECK: error: Rt must be even-numbered
18 // CHECK: error: Rt must be even-numbered
19
20 ldrd r0, r3, [pc, #0]
21 ldrd r0, r3, [r4, #4]
22 ldrd r0, r3, [r4], #4
23 ldrd r0, r3, [r4, #4]!
24 ldrd r0, r3, [r4, -r5]!
25 ldrd r0, r3, [r4, r5]
26 ldrd r0, r3, [r4], r5
27 // CHECK: error: destination operands must be sequential
28 // CHECK: error: destination operands must be sequential
29 // CHECK: error: destination operands must be sequential
30 // CHECK: error: destination operands must be sequential
31 // CHECK: error: destination operands must be sequential
32 // CHECK: error: destination operands must be sequential
33 // CHECK: error: destination operands must be sequential
34
35 ldrd lr, pc, [pc, #0]
36 ldrd lr, pc, [r3, #4]
37 ldrd lr, pc, [r3], #4
38 ldrd lr, pc, [r3, #4]!
39 ldrd lr, pc, [r3, -r4]!
40 ldrd lr, pc, [r3, r4]
41 ldrd lr, pc, [r3], r4
42 // CHECK: error: Rt can't be R14
43 // CHECK: error: Rt can't be R14
44 // CHECK: error: Rt can't be R14
45 // CHECK: error: Rt can't be R14
46 // CHECK: error: Rt can't be R14
47 // CHECK: error: Rt can't be R14
48 // CHECK: error: Rt can't be R14
49
50 ldrd r0, r1, [r0], #4
51 ldrd r0, r1, [r1], #4
52 ldrd r0, r1, [r0, #4]!
53 ldrd r0, r1, [r1, #4]!
54 // CHECK: error: base register needs to be different from destination registers
55 // CHECK: error: base register needs to be different from destination registers
56 // CHECK: error: base register needs to be different from destination registers
57 // CHECK: error: base register needs to be different from destination registers