168fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendling// RUN: %clang_cc1 -triple i386-apple-darwin9 -verify %s 268fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendling// <rdar://problem/12415959> 368fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendling 468fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendlingtypedef unsigned int u_int32_t; 568fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendlingtypedef u_int32_t uint32_t; 668fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendling 768fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendlingtypedef unsigned long long u_int64_t; 868fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendlingtypedef u_int64_t uint64_t; 968fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendling 10984f2783ad8319aa0cbfca1c4a719688b1ecfd5eBill Wendlingint func1() { 11ba541d36f6891892efc3f17773ff2395bb97df44Bill Wendling // Error out if size is > 32-bits. 1268fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendling uint32_t msr = 0x8b; 1368fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendling uint64_t val = 0; 1468fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendling __asm__ volatile("wrmsr" 1568fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendling : 1668fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendling : "c" (msr), 1768fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendling "a" ((val & 0xFFFFFFFFUL)), // expected-error {{invalid input size for constraint 'a'}} 1868fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendling "d" (((val >> 32) & 0xFFFFFFFFUL))); 19ba541d36f6891892efc3f17773ff2395bb97df44Bill Wendling 20ba541d36f6891892efc3f17773ff2395bb97df44Bill Wendling // Don't error out if the size of the destination is <= 32 bits. 21ba541d36f6891892efc3f17773ff2395bb97df44Bill Wendling unsigned char data; 22ba541d36f6891892efc3f17773ff2395bb97df44Bill Wendling unsigned int port; 23ba541d36f6891892efc3f17773ff2395bb97df44Bill Wendling __asm__ volatile("outb %0, %w1" : : "a" (data), "Nd" (port)); // No error expected. 2468fd608c2c0866064e974c3d43778c47c1cbb080Bill Wendling} 25