// Verify that we do check for constraints in device-side inline
// assembly. Passing an illegal input/output constraint and look
// for corresponding error
// RUN: %clang_cc1 -triple nvptx-unknown-cuda -fsyntax-only -fcuda-is-device -verify %s
__attribute__((device)) void df() {
short h;
int a;
// asm with PTX constraints. Some of them are PTX-specific.
__asm__("output constraints"
: "=h"(h), // .u16 reg, OK
"=a"(a) // expected-error {{invalid output constraint '=a' in asm}}
: // None
);
__asm__("input constraints"
: // None
: "f"(0.0), // .f32 reg, OK
"d"(0.0), // .f64 reg, OK
"h"(0), // .u16 reg, OK
"r"(0), // .u32 reg, OK
"l"(0), // .u64 reg, OK
"a"(0) // expected-error {{invalid input constraint 'a' in asm}}
);
}