1 // RUN: %clang_cc1 -triple m68k -emit-llvm -O2 %s -o - | FileCheck %s
2
3 /// Check GCC register names and alias can be used in register variable definition.
4
5 // CHECK-LABEL: @test_d0
6 // CHECK: call void asm sideeffect "", "{d0}"(i32 undef)
test_d0()7 void test_d0() {
8 register int a asm ("d0");
9 asm ("" :: "r" (a));
10 }
11
12 // CHECK-LABEL: @test_d1
13 // CHECK: call void asm sideeffect "", "{d1}"(i32 undef)
test_d1()14 void test_d1() {
15 register int a asm ("d1");
16 asm ("" :: "r" (a));
17 }
18
19 // CHECK-LABEL: @test_d2
20 // CHECK: call void asm sideeffect "", "{d2}"(i32 undef)
test_d2()21 void test_d2() {
22 register int a asm ("d2");
23 asm ("" :: "r" (a));
24 }
25
26 // CHECK-LABEL: @test_d3
27 // CHECK: call void asm sideeffect "", "{d3}"(i32 undef)
test_d3()28 void test_d3() {
29 register int a asm ("d3");
30 asm ("" :: "r" (a));
31 }
32
33 // CHECK-LABEL: @test_d4
34 // CHECK: call void asm sideeffect "", "{d4}"(i32 undef)
test_d4()35 void test_d4() {
36 register int a asm ("d4");
37 asm ("" :: "r" (a));
38 }
39
40 // CHECK-LABEL: @test_d5
41 // CHECK: call void asm sideeffect "", "{d5}"(i32 undef)
test_d5()42 void test_d5() {
43 register int a asm ("d5");
44 asm ("" :: "r" (a));
45 }
46
47 // CHECK-LABEL: @test_d6
48 // CHECK: call void asm sideeffect "", "{d6}"(i32 undef)
test_d6()49 void test_d6() {
50 register int a asm ("d6");
51 asm ("" :: "r" (a));
52 }
53
54 // CHECK-LABEL: @test_d7
55 // CHECK: call void asm sideeffect "", "{d7}"(i32 undef)
test_d7()56 void test_d7() {
57 register int a asm ("d7");
58 asm ("" :: "r" (a));
59 }
60
61 // CHECK-LABEL: @test_a0
62 // CHECK: call void asm sideeffect "", "{a0}"(i32 undef)
test_a0()63 void test_a0() {
64 register int a asm ("a0");
65 asm ("" :: "r" (a));
66 }
67
68 // CHECK-LABEL: @test_a1
69 // CHECK: call void asm sideeffect "", "{a1}"(i32 undef)
test_a1()70 void test_a1() {
71 register int a asm ("a1");
72 asm ("" :: "r" (a));
73 }
74
75 // CHECK-LABEL: @test_a2
76 // CHECK: call void asm sideeffect "", "{a2}"(i32 undef)
test_a2()77 void test_a2() {
78 register int a asm ("a2");
79 asm ("" :: "r" (a));
80 }
81
82 // CHECK-LABEL: @test_a3
83 // CHECK: call void asm sideeffect "", "{a3}"(i32 undef)
test_a3()84 void test_a3() {
85 register int a asm ("a3");
86 asm ("" :: "r" (a));
87 }
88
89 // CHECK-LABEL: @test_a4
90 // CHECK: call void asm sideeffect "", "{a4}"(i32 undef)
test_a4()91 void test_a4() {
92 register int a asm ("a4");
93 asm ("" :: "r" (a));
94 }
95
96 // CHECK-LABEL: @test_a5
97 // CHECK: call void asm sideeffect "", "{a5}"(i32 undef)
test_a5()98 void test_a5() {
99 register int a asm ("a5");
100 register int b asm ("bp");
101 asm ("" :: "r" (a));
102 asm ("" :: "r" (b));
103 }
104
105 // CHECK-LABEL: @test_a6
106 // CHECK: call void asm sideeffect "", "{a6}"(i32 undef)
test_a6()107 void test_a6() {
108 register int a asm ("a6");
109 register int b asm ("fp");
110 asm ("" :: "r" (a));
111 asm ("" :: "r" (b));
112 }
113
114 // CHECK-LABEL: @test_sp
115 // CHECK: call void asm sideeffect "", "{sp}"(i32 undef)
test_sp()116 void test_sp() {
117 register int a asm ("sp");
118 register int b asm ("usp");
119 register int c asm ("ssp");
120 register int d asm ("isp");
121 register int e asm ("a7");
122 asm ("" :: "r" (a));
123 asm ("" :: "r" (b));
124 asm ("" :: "r" (c));
125 asm ("" :: "r" (d));
126 asm ("" :: "r" (e));
127 }
128
129 // CHECK-LABEL: @test_pc
130 // CHECK: call void asm sideeffect "", "{pc}"(i32 undef)
test_pc()131 void test_pc() {
132 register int a asm ("pc");
133 asm ("" :: "r" (a));
134 }
135