1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 -triple arm64-apple-ios -emit-llvm -o - %s | FileCheck %s 2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// rdar://9167275 4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint t1() 6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines{ 7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines int x; 8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines __asm__("mov %0, 7" : "=r" (x)); 9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return x; 10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hineslong t2() 13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines{ 14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines long x; 15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines __asm__("mov %0, 7" : "=r" (x)); 16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return x; 17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hineslong t3() 20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines{ 21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines long x; 22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines __asm__("mov %w0, 7" : "=r" (x)); 23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return x; 24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// rdar://9281206 27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesvoid t4(long op) { 29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines long x1; 30651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines asm ("mov x0, %1; svc #0;" : "=r"(x1) :"r"(op),"r"(x1) :"x0" ); 31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// rdar://9394290 34651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat t5(float x) { 36651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines __asm__("fadd %0, %0, %0" : "+w" (x)); 37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return x; 38651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// rdar://9865712 41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesvoid t6 (void *f, int g) { 42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: t6 43651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: call void asm "str $1, $0", "=*Q,r" 44651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines asm("str %1, %0" : "=Q"(f) : "r"(g)); 45651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 46