1 // RUN: %clang_cc1 -triple riscv32 -fsyntax-only -verify %s
2 // RUN: %clang_cc1 -triple riscv64 -fsyntax-only -verify %s
5 static const int BelowMin
= -2049;
6 static const int AboveMax
= 2048;
7 asm volatile ("" :: "I"(BelowMin
)); // expected-error{{value '-2049' out of range for constraint 'I'}}
8 asm volatile ("" :: "I"(AboveMax
)); // expected-error{{value '2048' out of range for constraint 'I'}}
12 static const int BelowMin
= -1;
13 static const int AboveMax
= 1;
14 asm volatile ("" :: "J"(BelowMin
)); // expected-error{{value '-1' out of range for constraint 'J'}}
15 asm volatile ("" :: "J"(AboveMax
)); // expected-error{{value '1' out of range for constraint 'J'}}
19 static const int BelowMin
= -1;
20 static const int AboveMax
= 32;
21 asm volatile ("" :: "K"(BelowMin
)); // expected-error{{value '-1' out of range for constraint 'K'}}
22 asm volatile ("" :: "K"(AboveMax
)); // expected-error{{value '32' out of range for constraint 'K'}}
25 void test_clobber_conflict(void) {
26 register long x10
asm("x10");
27 asm volatile("" :: "r"(x10
) : "x10"); // expected-error {{conflicts with asm clobber list}}
28 asm volatile("" :: "r"(x10
) : "a0"); // expected-error {{conflicts with asm clobber list}}
29 asm volatile("" : "=r"(x10
) :: "x10"); // expected-error {{conflicts with asm clobber list}}
30 asm volatile("" : "=r"(x10
) :: "a0"); // expected-error {{conflicts with asm clobber list}}