1 ; RUN: llc < %s -mtriple=armv7-eabi -mcpu=cortex-a8 | FileCheck %s
3 define void @coproc(ptr %i) nounwind {
5 ; CHECK: mrc p7, #1, r{{[0-9]+}}, c1, c1, #4
6 %0 = tail call i32 @llvm.arm.mrc(i32 7, i32 1, i32 1, i32 1, i32 4) nounwind
7 ; CHECK: mcr p7, #1, r{{[0-9]+}}, c1, c1, #4
8 tail call void @llvm.arm.mcr(i32 7, i32 1, i32 %0, i32 1, i32 1, i32 4) nounwind
9 ; CHECK: mrc2 p7, #1, r{{[0-9]+}}, c1, c1, #4
10 %1 = tail call i32 @llvm.arm.mrc2(i32 7, i32 1, i32 1, i32 1, i32 4) nounwind
11 ; CHECK: mcr2 p7, #1, r{{[0-9]+}}, c1, c1, #4
12 tail call void @llvm.arm.mcr2(i32 7, i32 1, i32 %1, i32 1, i32 1, i32 4) nounwind
13 ; CHECK: mcrr p7, #1, r{{[0-9]+}}, r{{[0-9]+}}, c1
14 tail call void @llvm.arm.mcrr(i32 7, i32 1, i32 %0, i32 %1, i32 1) nounwind
15 ; CHECK: mcrr2 p7, #1, r{{[0-9]+}}, r{{[0-9]+}}, c1
16 tail call void @llvm.arm.mcrr2(i32 7, i32 1, i32 %0, i32 %1, i32 1) nounwind
17 ; CHECK: cdp p7, #3, c1, c1, c1, #5
18 tail call void @llvm.arm.cdp(i32 7, i32 3, i32 1, i32 1, i32 1, i32 5) nounwind
19 ; CHECK: cdp2 p7, #3, c1, c1, c1, #5
20 tail call void @llvm.arm.cdp2(i32 7, i32 3, i32 1, i32 1, i32 1, i32 5) nounwind
21 ; CHECK: ldc p7, c3, [r{{[0-9]+}}]
22 tail call void @llvm.arm.ldc(i32 7, i32 3, ptr %i) nounwind
23 ; CHECK: ldcl p7, c3, [r{{[0-9]+}}]
24 tail call void @llvm.arm.ldcl(i32 7, i32 3, ptr %i) nounwind
25 ; CHECK: ldc2 p7, c3, [r{{[0-9]+}}]
26 tail call void @llvm.arm.ldc2(i32 7, i32 3, ptr %i) nounwind
27 ; CHECK: ldc2l p7, c3, [r{{[0-9]+}}]
28 tail call void @llvm.arm.ldc2l(i32 7, i32 3, ptr %i) nounwind
29 ; CHECK: stc p7, c3, [r{{[0-9]+}}]
30 tail call void @llvm.arm.stc(i32 7, i32 3, ptr %i) nounwind
31 ; CHECK: stcl p7, c3, [r{{[0-9]+}}]
32 tail call void @llvm.arm.stcl(i32 7, i32 3, ptr %i) nounwind
33 ; CHECK: stc2 p7, c3, [r{{[0-9]+}}]
34 tail call void @llvm.arm.stc2(i32 7, i32 3, ptr %i) nounwind
35 ; CHECK: stc2l p7, c3, [r{{[0-9]+}}]
36 tail call void @llvm.arm.stc2l(i32 7, i32 3, ptr %i) nounwind
37 ; CHECK: mrrc p1, #2, r{{[0-9]+}}, r{{[0-9]+}}, c3
38 %2 = tail call { i32, i32 } @llvm.arm.mrrc(i32 1, i32 2, i32 3) nounwind
39 ; CHECK: mrrc2 p1, #2, r{{[0-9]+}}, r{{[0-9]+}}, c3
40 %3 = tail call { i32, i32 } @llvm.arm.mrrc2(i32 1, i32 2, i32 3) nounwind
44 declare void @llvm.arm.ldc(i32, i32, ptr) nounwind
46 declare void @llvm.arm.ldcl(i32, i32, ptr) nounwind
48 declare void @llvm.arm.ldc2(i32, i32, ptr) nounwind
50 declare void @llvm.arm.ldc2l(i32, i32, ptr) nounwind
52 declare void @llvm.arm.stc(i32, i32, ptr) nounwind
54 declare void @llvm.arm.stcl(i32, i32, ptr) nounwind
56 declare void @llvm.arm.stc2(i32, i32, ptr) nounwind
58 declare void @llvm.arm.stc2l(i32, i32, ptr) nounwind
60 declare void @llvm.arm.cdp2(i32, i32, i32, i32, i32, i32) nounwind
62 declare void @llvm.arm.cdp(i32, i32, i32, i32, i32, i32) nounwind
64 declare void @llvm.arm.mcrr2(i32, i32, i32, i32, i32) nounwind
66 declare void @llvm.arm.mcrr(i32, i32, i32, i32, i32) nounwind
68 declare void @llvm.arm.mcr2(i32, i32, i32, i32, i32, i32) nounwind
70 declare i32 @llvm.arm.mrc2(i32, i32, i32, i32, i32) nounwind
72 declare void @llvm.arm.mcr(i32, i32, i32, i32, i32, i32) nounwind
74 declare i32 @llvm.arm.mrc(i32, i32, i32, i32, i32) nounwind
76 declare { i32, i32 } @llvm.arm.mrrc(i32, i32, i32) nounwind
78 declare { i32, i32 } @llvm.arm.mrrc2(i32, i32, i32) nounwind