1*2987c579SJim Grosbach // REQUIRES: arm-registered-target
26bcf2d81SChris Lattner // RUN: %clang_cc1 -triple armv6-unknown-unknown -emit-llvm -o - %s | FileCheck %s
36bcf2d81SChris Lattner
test0(void)46bcf2d81SChris Lattner void test0(void) {
56bcf2d81SChris Lattner asm volatile("mov r0, r0" :: );
66bcf2d81SChris Lattner }
test1(void)76bcf2d81SChris Lattner void test1(void) {
86bcf2d81SChris Lattner asm volatile("mov r0, r0" :::
96bcf2d81SChris Lattner "cc", "memory" );
106bcf2d81SChris Lattner }
test2(void)116bcf2d81SChris Lattner void test2(void) {
126bcf2d81SChris Lattner asm volatile("mov r0, r0" :::
136bcf2d81SChris Lattner "r0", "r1", "r2", "r3");
146bcf2d81SChris Lattner asm volatile("mov r0, r0" :::
156bcf2d81SChris Lattner "r4", "r5", "r6", "r8");
166bcf2d81SChris Lattner }
test3(void)176bcf2d81SChris Lattner void test3(void) {
186bcf2d81SChris Lattner asm volatile("mov r0, r0" :::
196bcf2d81SChris Lattner "a1", "a2", "a3", "a4");
206bcf2d81SChris Lattner asm volatile("mov r0, r0" :::
216bcf2d81SChris Lattner "v1", "v2", "v3", "v5");
226bcf2d81SChris Lattner }
236bcf2d81SChris Lattner
246bcf2d81SChris Lattner
256bcf2d81SChris Lattner // {} should not be treated as asm variants.
test4(float * a,float * b)266bcf2d81SChris Lattner void test4(float *a, float *b) {
276bcf2d81SChris Lattner // CHECK: @test4
286bcf2d81SChris Lattner // CHECK: call void asm sideeffect "vld1.32 {d8[],d9[]},
296bcf2d81SChris Lattner __asm__ volatile (
306bcf2d81SChris Lattner "vld1.32 {d8[],d9[]}, [%1,:32] \n\t"
316bcf2d81SChris Lattner "vst1.32 {q4}, [%0,:128] \n\t"
326bcf2d81SChris Lattner :: "r"(a), "r"(b));
336bcf2d81SChris Lattner }
34256e1f3aSDaniel Dunbar
35256e1f3aSDaniel Dunbar // {sp, lr, pc} are the canonical names for {r13, r14, r15}.
36256e1f3aSDaniel Dunbar //
37256e1f3aSDaniel Dunbar // CHECK: @test5
38256e1f3aSDaniel Dunbar // CHECK: call void asm sideeffect "", "~{sp},~{lr},~{pc},~{sp},~{lr},~{pc}"()
test5()39256e1f3aSDaniel Dunbar void test5() {
40256e1f3aSDaniel Dunbar __asm__("" : : : "r13", "r14", "r15", "sp", "lr", "pc");
41256e1f3aSDaniel Dunbar }
429034aa36SDaniel Dunbar
439034aa36SDaniel Dunbar // CHECK: @test6
449034aa36SDaniel Dunbar // CHECK: call void asm sideeffect "", "
459034aa36SDaniel Dunbar // CHECK: ~{s0},~{s1},~{s2},~{s3},~{s4},~{s5},~{s6},~{s7},
469034aa36SDaniel Dunbar // CHECK: ~{s8},~{s9},~{s10},~{s11},~{s12},~{s13},~{s14},~{s15},
479034aa36SDaniel Dunbar // CHECK: ~{s16},~{s17},~{s18},~{s19},~{s20},~{s21},~{s22},~{s23},
489034aa36SDaniel Dunbar // CHECK: ~{s24},~{s25},~{s26},~{s27},~{s28},~{s29},~{s30},~{s31}"()
test6()499034aa36SDaniel Dunbar void test6() {
509034aa36SDaniel Dunbar __asm__("" : : :
519034aa36SDaniel Dunbar "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
529034aa36SDaniel Dunbar "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15",
539034aa36SDaniel Dunbar "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23",
549034aa36SDaniel Dunbar "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31");
559034aa36SDaniel Dunbar }
56