1 | // Verify that we do check for constraints in device-side inline |
2 | // assembly. Passing an illegal input/output constraint and look |
3 | // for corresponding error |
4 | // RUN: %clang_cc1 -triple nvptx-unknown-cuda -fsyntax-only -fcuda-is-device -verify %s |
5 | |
6 | __attribute__((device)) void df() { |
7 | short h; |
8 | int a; |
9 | // asm with PTX constraints. Some of them are PTX-specific. |
10 | __asm__("output constraints" |
11 | : "=h"(h), // .u16 reg, OK |
12 | "=a"(a) // expected-error {{invalid output constraint '=a' in asm}} |
13 | : // None |
14 | ); |
15 | __asm__("input constraints" |
16 | : // None |
17 | : "f"(0.0), // .f32 reg, OK |
18 | "d"(0.0), // .f64 reg, OK |
19 | "h"(0), // .u16 reg, OK |
20 | "r"(0), // .u32 reg, OK |
21 | "l"(0), // .u64 reg, OK |
22 | "a"(0) // expected-error {{invalid input constraint 'a' in asm}} |
23 | ); |
24 | } |
25 | |