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