asm.c revision 02af974dca0f855dc36d8a8c26bb87f373310815
110ca96ae9aed6906c3302403ef1a146a8d4c6b74Chris Lattner// RUN: clang -emit-llvm %s -o %t -arch=i386 && 210ca96ae9aed6906c3302403ef1a146a8d4c6b74Chris Lattnervoid t1(int len) { 39f2505b934745b18d580ade4dac7b8b16952a30cAnders Carlsson __asm__ volatile("" : "=&r"(len), "+&r"(len)); 42763b3af0a527c3a63cb058b90c22db0b7bcf558Anders Carlsson} 59f2505b934745b18d580ade4dac7b8b16952a30cAnders Carlsson 610ca96ae9aed6906c3302403ef1a146a8d4c6b74Chris Lattnervoid t2(unsigned long long t) { 79f2505b934745b18d580ade4dac7b8b16952a30cAnders Carlsson __asm__ volatile("" : "+m"(t)); 89f2505b934745b18d580ade4dac7b8b16952a30cAnders Carlsson} 99f2505b934745b18d580ade4dac7b8b16952a30cAnders Carlsson 1010ca96ae9aed6906c3302403ef1a146a8d4c6b74Chris Lattnervoid t3(unsigned char *src, unsigned long long temp) { 119f2505b934745b18d580ade4dac7b8b16952a30cAnders Carlsson __asm__ volatile("" : "+m"(temp), "+r"(src)); 129f2505b934745b18d580ade4dac7b8b16952a30cAnders Carlsson} 139f2505b934745b18d580ade4dac7b8b16952a30cAnders Carlsson 1410ca96ae9aed6906c3302403ef1a146a8d4c6b74Chris Lattnervoid t4() { 15ebaae2a3103b443d50444d335ab5ab0ff7680da2Anders Carlsson unsigned long long a; 16ebaae2a3103b443d50444d335ab5ab0ff7680da2Anders Carlsson struct reg { unsigned long long a, b; } b; 17ebaae2a3103b443d50444d335ab5ab0ff7680da2Anders Carlsson 18ebaae2a3103b443d50444d335ab5ab0ff7680da2Anders Carlsson __asm__ volatile ("":: "m"(a), "m"(b)); 19ebaae2a3103b443d50444d335ab5ab0ff7680da2Anders Carlsson} 209f2505b934745b18d580ade4dac7b8b16952a30cAnders Carlsson 2103eb543cf7ebee463b33b5802b83ac92c21770cfAnders Carlsson// PR3417 2210ca96ae9aed6906c3302403ef1a146a8d4c6b74Chris Lattnervoid t5(int i) { 2303eb543cf7ebee463b33b5802b83ac92c21770cfAnders Carlsson asm("nop" : "=r"(i) : "0"(t5)); 2403eb543cf7ebee463b33b5802b83ac92c21770cfAnders Carlsson} 256032979a5d091e5607c7c467400449727d9beb5aAnders Carlsson 266032979a5d091e5607c7c467400449727d9beb5aAnders Carlsson// PR3641 2710ca96ae9aed6906c3302403ef1a146a8d4c6b74Chris Lattnervoid t6(void) { 286032979a5d091e5607c7c467400449727d9beb5aAnders Carlsson __asm__ volatile("" : : "i" (t6)); 296032979a5d091e5607c7c467400449727d9beb5aAnders Carlsson} 3010ca96ae9aed6906c3302403ef1a146a8d4c6b74Chris Lattner 3110ca96ae9aed6906c3302403ef1a146a8d4c6b74Chris Lattner// RUN: grep "T7 NAMED: \$2" %t 3210ca96ae9aed6906c3302403ef1a146a8d4c6b74Chris Lattnervoid t7(int a) { 3310ca96ae9aed6906c3302403ef1a146a8d4c6b74Chris Lattner __asm__ volatile("T7 NAMED: %[input]" : "+r"(a): [input] "i" (4)); 3402af974dca0f855dc36d8a8c26bb87f373310815Chris Lattner} 3502af974dca0f855dc36d8a8c26bb87f373310815Chris Lattner 3602af974dca0f855dc36d8a8c26bb87f373310815Chris Lattner// RUN: grep "T8 NAMED MODIFIER: \${0:c}" %t 3702af974dca0f855dc36d8a8c26bb87f373310815Chris Lattnervoid t8() { 3802af974dca0f855dc36d8a8c26bb87f373310815Chris Lattner __asm__ volatile("T8 NAMED MODIFIER: %c[input]" :: [input] "i" (4)); 3902af974dca0f855dc36d8a8c26bb87f373310815Chris Lattner} 40