1 /* { dg-compile } */ 2 /* { dg-options "-O2" } */ 3 4 static inline unsigned long lay_uw(unsigned long addr)5lay_uw(unsigned long addr) 6 { 7 unsigned long result; 8 9 __asm__ ("lay %[result],%a[addr]" 10 : [result] "=d" (result) 11 : [addr] "UW" (addr)); 12 return result; 13 } 14 15 static inline unsigned long la_u(unsigned long addr)16la_u(unsigned long addr) 17 { 18 unsigned long result; 19 20 __asm__ ("la %[result],%a[addr]" 21 : [result] "=d" (result) 22 : [addr] "U" (addr)); 23 return result; 24 } 25 26 static inline unsigned long lay_zqzrzszt(unsigned long addr)27lay_zqzrzszt(unsigned long addr) 28 { 29 unsigned long result; 30 31 __asm__ ("lay %[result],%a[addr]" 32 : [result] "=d" (result) 33 : [addr] "ZQZRZSZT" (addr)); 34 return result; 35 } 36 37 static inline unsigned long la_zqzr(unsigned long addr)38la_zqzr(unsigned long addr) 39 { 40 unsigned long result; 41 42 __asm__ ("la %[result],%a[addr]" 43 : [result] "=d" (result) 44 : [addr] "ZQZR" (addr)); 45 return result; 46 } 47 48 49 extern unsigned long a[15]; 50 main(void)51int main(void) 52 { 53 a[1] = lay_uw(3333); 54 a[2] = lay_uw(4444); 55 a[3] = lay_uw(1000000); 56 a[4] = lay_uw(a[0]); 57 58 a[5] = la_u(2222); 59 a[6] = la_u(5555); 60 a[7] = la_u(a[0]); 61 62 a[8] = lay_zqzrzszt(3333); 63 a[9] = lay_zqzrzszt(4444); 64 a[10] = lay_zqzrzszt(1000000); 65 a[11] = lay_zqzrzszt(a[0]); 66 67 a[12] = la_zqzr(2222); 68 a[13] = la_zqzr(5555); 69 a[14] = la_zqzr(a[0]); 70 } 71