Clang Project

clang_source_code/test/SemaCUDA/asm-constraints-device.cu
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