brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 80623c7 Raw
157 lines · c
1// RUN: %clang_cc1 -triple loongarch32 -emit-llvm -O2 %s -o - | FileCheck %s2// RUN: %clang_cc1 -triple loongarch64 -emit-llvm -O2 %s -o - | FileCheck %s3 4/// Check GCC register names and alias can be used in register variable definition.5 6// CHECK-LABEL: @test_r07// CHECK-COUNT-2: call void asm sideeffect "", "{$r0}"(i32 undef)8// CHECK-NOT: call void asm sideeffect "", "{$r0}"(i32 undef)9void test_r0() {10    register int a asm ("$r0");11    register int b asm ("r0");12    asm ("" :: "r" (a));13    asm ("" :: "r" (b));14}15 16// CHECK-LABEL: @test_r1217// CHECK-COUNT-2: call void asm sideeffect "", "{$r12}"(i32 undef)18// CHECK-NOT: call void asm sideeffect "", "{$r12}"(i32 undef)19void test_r12() {20    register int a asm ("$r12");21    register int b asm ("r12");22    asm ("" :: "r" (a));23    asm ("" :: "r" (b));24}25 26// CHECK-LABEL: @test_r3127// CHECK-COUNT-2: call void asm sideeffect "", "{$r31}"(i32 undef)28// CHECK-NOT: call void asm sideeffect "", "{$r31}"(i32 undef)29void test_r31() {30    register int a asm ("$r31");31    register int b asm ("r31");32    asm ("" :: "r" (a));33    asm ("" :: "r" (b));34}35 36// CHECK-LABEL: @test_zero37// CHECK-COUNT-2: call void asm sideeffect "", "{$r0}"(i32 undef)38// CHECK-NOT: call void asm sideeffect "", "{$r0}"(i32 undef)39void test_zero() {40    register int a asm ("$zero");41    register int b asm ("zero");42    asm ("" :: "r" (a));43    asm ("" :: "r" (b));44}45 46// CHECK-LABEL: @test_a047// CHECK-COUNT-2: call void asm sideeffect "", "{$r4}"(i32 undef)48// CHECK-NOT: call void asm sideeffect "", "{$r4}"(i32 undef)49void test_a0() {50    register int a asm ("$a0");51    register int b asm ("a0");52    asm ("" :: "r" (a));53    asm ("" :: "r" (b));54}55 56// CHECK-LABEL: @test_t157// CHECK-COUNT-2: call void asm sideeffect "", "{$r13}"(i32 undef)58// CHECK-NOT: call void asm sideeffect "", "{$r13}"(i32 undef)59void test_t1() {60    register int a asm ("$t1");61    register int b asm ("t1");62    asm ("" :: "r" (a));63    asm ("" :: "r" (b));64}65 66// CHECK-LABEL: @test_fp67// CHECK-COUNT-2: call void asm sideeffect "", "{$r22}"(i32 undef)68// CHECK-NOT: call void asm sideeffect "", "{$r22}"(i32 undef)69void test_fp() {70    register int a asm ("$fp");71    register int b asm ("fp");72    asm ("" :: "r" (a));73    asm ("" :: "r" (b));74}75 76// CHECK-LABEL: @test_s277// CHECK-COUNT-2: call void asm sideeffect "", "{$r25}"(i32 undef)78// CHECK-NOT: call void asm sideeffect "", "{$r25}"(i32 undef)79void test_s2() {80    register int a asm ("$s2");81    register int b asm ("s2");82    asm ("" :: "r" (a));83    asm ("" :: "r" (b));84}85 86// CHECK-LABEL: @test_f087// CHECK-COUNT-2: call void asm sideeffect "", "{$f0}"(float undef)88// CHECK-NOT: call void asm sideeffect "", "{$f0}"(float undef)89void test_f0() {90    register float a asm ("$f0");91    register float b asm ("f0");92    asm ("" :: "f" (a));93    asm ("" :: "f" (b));94}95 96// CHECK-LABEL: @test_f1497// CHECK-COUNT-2: call void asm sideeffect "", "{$f14}"(float undef)98// CHECK-NOT: call void asm sideeffect "", "{$f14}"(float undef)99void test_f14() {100    register float a asm ("$f14");101    register float b asm ("f14");102    asm ("" :: "f" (a));103    asm ("" :: "f" (b));104}105 106// CHECK-LABEL: @test_f31107// CHECK-COUNT-2: call void asm sideeffect "", "{$f31}"(float undef)108// CHECK-NOT: call void asm sideeffect "", "{$f31}"(float undef)109void test_f31() {110    register float a asm ("$f31");111    register float b asm ("f31");112    asm ("" :: "f" (a));113    asm ("" :: "f" (b));114}115 116// CHECK-LABEL: @test_fa0117// CHECK-COUNT-2: call void asm sideeffect "", "{$f0}"(float undef)118// CHECK-NOT: call void asm sideeffect "", "{$f0}"(float undef)119void test_fa0() {120    register float a asm ("$fa0");121    register float b asm ("fa0");122    asm ("" :: "f" (a));123    asm ("" :: "f" (b));124}125 126// CHECK-LABEL: @test_ft1127// CHECK-COUNT-2: call void asm sideeffect "", "{$f9}"(float undef)128// CHECK-NOT: call void asm sideeffect "", "{$f9}"(float undef)129void test_ft1() {130    register float a asm ("$ft1");131    register float b asm ("ft1");132    asm ("" :: "f" (a));133    asm ("" :: "f" (b));134}135 136// CHECK-LABEL: @test_fs2137// CHECK-COUNT-2: call void asm sideeffect "", "{$f26}"(float undef)138// CHECK-NOT: call void asm sideeffect "", "{$f26}"(float undef)139void test_fs2() {140    register float a asm ("$fs2");141    register float b asm ("fs2");142    asm ("" :: "f" (a));143    asm ("" :: "f" (b));144}145 146// CHECK-LABEL: @test_fcc147// CHECK-COUNT-2: call void asm sideeffect "", "~{$fcc0}"()148// CHECK-NOT: call void asm sideeffect "", "~{$fcc0}"()149// CHECK-COUNT-2: call void asm sideeffect "", "~{$fcc7}"()150// CHECK-NOT: call void asm sideeffect "", "~{$fcc7}"()151void test_fcc() {152    asm ("" ::: "$fcc0");153    asm ("" ::: "fcc0");154    asm ("" ::: "$fcc7");155    asm ("" ::: "fcc7");156}157