150d46caf00c743312e0ea1f87a693d504b12ef51Bill Wendling// REQUIRES: arm-registered-target 22440fb1f91557912f8c43cb72201170254ae09f4Amara Emerson// RUN: %clang_cc1 -triple armv7 -target-feature +neon %s -emit-llvm -o /dev/null 350d46caf00c743312e0ea1f87a693d504b12ef51Bill Wendling 4e2dbaa9f78be2b09b0723d1b614286412808b5d3Bill Wendlingchar bar(); 5e2dbaa9f78be2b09b0723d1b614286412808b5d3Bill Wendling 6e2dbaa9f78be2b09b0723d1b614286412808b5d3Bill Wendlingvoid t1(int x, char y) { 7e2dbaa9f78be2b09b0723d1b614286412808b5d3Bill Wendling __asm__ volatile("mcr p15, 0, %1, c9, c12, 5;" 8e2dbaa9f78be2b09b0723d1b614286412808b5d3Bill Wendling "mrc p15, 0, %0, c9, c13, 2;" 9e2dbaa9f78be2b09b0723d1b614286412808b5d3Bill Wendling : "=r" (x) 10e2dbaa9f78be2b09b0723d1b614286412808b5d3Bill Wendling : "r" (bar())); // no warning 116e6330c07a42ace74637d0ad7356a2fa20de81ecBill Wendling __asm__ volatile("foo %0, %1" 126e6330c07a42ace74637d0ad7356a2fa20de81ecBill Wendling : "+r" (x), 136e6330c07a42ace74637d0ad7356a2fa20de81ecBill Wendling "+r" (y) 146e6330c07a42ace74637d0ad7356a2fa20de81ecBill Wendling :); 15221a8908e4521de533bace49566b5281df9b1924Bob Wilson __asm__ volatile("ldrb %0, [%1]" : "=r" (y) : "r" (x)); // no warning 16e2dbaa9f78be2b09b0723d1b614286412808b5d3Bill Wendling} 17e2dbaa9f78be2b09b0723d1b614286412808b5d3Bill Wendling 18e2dbaa9f78be2b09b0723d1b614286412808b5d3Bill Wendling// <rdar://problem/12284092> 1950d46caf00c743312e0ea1f87a693d504b12ef51Bill Wendlingtypedef __attribute__((neon_vector_type(2))) long long int64x2_t; 2050d46caf00c743312e0ea1f87a693d504b12ef51Bill Wendlingtypedef struct int64x2x4_t { 2150d46caf00c743312e0ea1f87a693d504b12ef51Bill Wendling int64x2_t val[4]; 2250d46caf00c743312e0ea1f87a693d504b12ef51Bill Wendling} int64x2x4_t; 2350d46caf00c743312e0ea1f87a693d504b12ef51Bill Wendlingint64x2x4_t t2(const long long a[]) { 2450d46caf00c743312e0ea1f87a693d504b12ef51Bill Wendling int64x2x4_t r; 2550d46caf00c743312e0ea1f87a693d504b12ef51Bill Wendling __asm__("vldm %[a], { %q[r0], %q[r1], %q[r2], %q[r3] }" 264d2ea738175aacc7405e76a7e92b7e20f05519c6Bob Wilson : [r0] "=r"(r.val[0]), // expected-warning {{value size does not match register size specified by the constraint and modifier}} 274d2ea738175aacc7405e76a7e92b7e20f05519c6Bob Wilson [r1] "=r"(r.val[1]), // expected-warning {{value size does not match register size specified by the constraint and modifier}} 284d2ea738175aacc7405e76a7e92b7e20f05519c6Bob Wilson [r2] "=r"(r.val[2]), // expected-warning {{value size does not match register size specified by the constraint and modifier}} 294d2ea738175aacc7405e76a7e92b7e20f05519c6Bob Wilson [r3] "=r"(r.val[3]) // expected-warning {{value size does not match register size specified by the constraint and modifier}} 3050d46caf00c743312e0ea1f87a693d504b12ef51Bill Wendling : [a] "r"(a)); 3150d46caf00c743312e0ea1f87a693d504b12ef51Bill Wendling return r; 3250d46caf00c743312e0ea1f87a693d504b12ef51Bill Wendling} 33