25 lines
901 B
Plaintext
25 lines
901 B
Plaintext
|
// 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}}
|
||
|
);
|
||
|
}
|