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