| // 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}} |
| ); |
| } |