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