1 // RUN: %clang_cc1 -ffreestanding -fsyntax-only -verify -triple aarch64 %s 2 3 void string_literal(unsigned v) { 4 __builtin_arm_wsr(0, v); // expected-error {{expression is not a string literal}} 5 } 6 7 void wsr_1(unsigned v) { 8 __builtin_arm_wsr("sysreg", v); 9 } 10 11 void wsrp_1(void *v) { 12 __builtin_arm_wsrp("sysreg", v); 13 } 14 15 void wsr64_1(unsigned long v) { 16 __builtin_arm_wsr64("sysreg", v); //expected-error {{invalid special register for builtin}} 17 } 18 19 unsigned rsr_1() { 20 return __builtin_arm_rsr("sysreg"); 21 } 22 23 void *rsrp_1() { 24 return __builtin_arm_rsrp("sysreg"); 25 } 26 27 unsigned long rsr64_1() { 28 return __builtin_arm_rsr64("sysreg"); //expected-error {{invalid special register for builtin}} 29 } 30 31 void wsr_2(unsigned v) { 32 __builtin_arm_wsr("0:1:2:3:4", v); 33 } 34 35 void wsrp_2(void *v) { 36 __builtin_arm_wsrp("0:1:2:3:4", v); 37 } 38 39 void wsr64_2(unsigned long v) { 40 __builtin_arm_wsr64("0:1:2:3:4", v); 41 } 42 43 unsigned rsr_2() { 44 return __builtin_arm_rsr("0:1:2:3:4"); 45 } 46 47 void *rsrp_2() { 48 return __builtin_arm_rsrp("0:1:2:3:4"); 49 } 50 51 unsigned long rsr64_2() { 52 return __builtin_arm_rsr64("0:1:2:3:4"); 53 } 54 55 void wsr_3(unsigned v) { 56 __builtin_arm_wsr("0:1:2", v); //expected-error {{invalid special register for builtin}} 57 } 58 59 void wsrp_3(void *v) { 60 __builtin_arm_wsrp("0:1:2", v); //expected-error {{invalid special register for builtin}} 61 } 62 63 void wsr64_3(unsigned long v) { 64 __builtin_arm_wsr64("0:1:2", v); //expected-error {{invalid special register for builtin}} 65 } 66 67 unsigned rsr_3() { 68 return __builtin_arm_rsr("0:1:2"); //expected-error {{invalid special register for builtin}} 69 } 70 71 void *rsrp_3() { 72 return __builtin_arm_rsrp("0:1:2"); //expected-error {{invalid special register for builtin}} 73 } 74 75 unsigned long rsr64_3() { 76 return __builtin_arm_rsr64("0:1:2"); //expected-error {{invalid special register for builtin}} 77 } 78