1adebeb8bdc4ae7a841ee65d45d406dcba6e74e25Justin Holewinski// RUN: %clang_cc1 -triple nvptx-unknown-unknown -O3 -S -o - %s -emit-llvm | FileCheck %s
2adebeb8bdc4ae7a841ee65d45d406dcba6e74e25Justin Holewinski// RUN: %clang_cc1 -triple nvptx64-unknown-unknown -O3 -S -o - %s -emit-llvm | FileCheck %s
30ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski
40ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinskivoid constraints() {
50ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  char           c;
60ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  unsigned char  uc;
70ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  short          s;
80ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  unsigned short us;
90ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  int            i;
100ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  unsigned int   ui;
1187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  long long      ll;
1287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  unsigned long long ull;
130ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  float          f;
140ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  double         d;
150ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski
16adebeb8bdc4ae7a841ee65d45d406dcba6e74e25Justin Holewinski  // CHECK: i8 asm sideeffect "mov.b8 $0, $1;", "=c,c"
170ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  asm volatile ("mov.b8 %0, %1;" : "=c"(c) : "c"(c));
18adebeb8bdc4ae7a841ee65d45d406dcba6e74e25Justin Holewinski  // CHECK: i8 asm sideeffect "mov.b8 $0, $1;", "=c,c"
190ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  asm volatile ("mov.b8 %0, %1;" : "=c"(uc) : "c"(uc));
200ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski
21adebeb8bdc4ae7a841ee65d45d406dcba6e74e25Justin Holewinski  // CHECK: i16 asm sideeffect "mov.b16 $0, $1;", "=h,h"
220ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  asm volatile ("mov.b16 %0, %1;" : "=h"(s) : "h"(s));
23adebeb8bdc4ae7a841ee65d45d406dcba6e74e25Justin Holewinski  // CHECK: i16 asm sideeffect "mov.b16 $0, $1;", "=h,h"
240ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  asm volatile ("mov.b16 %0, %1;" : "=h"(us) : "h"(us));
250ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski
26adebeb8bdc4ae7a841ee65d45d406dcba6e74e25Justin Holewinski  // CHECK: i32 asm sideeffect "mov.b32 $0, $1;", "=r,r"
270ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  asm volatile ("mov.b32 %0, %1;" : "=r"(i) : "r"(i));
28adebeb8bdc4ae7a841ee65d45d406dcba6e74e25Justin Holewinski  // CHECK: i32 asm sideeffect "mov.b32 $0, $1;", "=r,r"
290ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  asm volatile ("mov.b32 %0, %1;" : "=r"(ui) : "r"(ui));
300ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski
31adebeb8bdc4ae7a841ee65d45d406dcba6e74e25Justin Holewinski  // CHECK: i64 asm sideeffect "mov.b64 $0, $1;", "=l,l"
3287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  asm volatile ("mov.b64 %0, %1;" : "=l"(ll) : "l"(ll));
33adebeb8bdc4ae7a841ee65d45d406dcba6e74e25Justin Holewinski  // CHECK: i64 asm sideeffect "mov.b64 $0, $1;", "=l,l"
3487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  asm volatile ("mov.b64 %0, %1;" : "=l"(ull) : "l"(ull));
350ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski
36adebeb8bdc4ae7a841ee65d45d406dcba6e74e25Justin Holewinski  // CHECK: float asm sideeffect "mov.b32 $0, $1;", "=f,f"
370ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  asm volatile ("mov.b32 %0, %1;" : "=f"(f) : "f"(f));
38adebeb8bdc4ae7a841ee65d45d406dcba6e74e25Justin Holewinski  // CHECK: double asm sideeffect "mov.b64 $0, $1;", "=d,d"
390ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski  asm volatile ("mov.b64 %0, %1;" : "=d"(d) : "d"(d));
400ac428eb8ae01995d70a8704862aafaea7c16c53Justin Holewinski}
41