Hi, I spotted that the types of arguments to these intrinsics are wrong, which results in all sorts of fun issues!
Fixed thusly, regression tested with aarch64.exp on aarch64-none-elf with no issues. OK? Thanks, James --- 2013-10-17 James Greenhalgh <james.greenha...@arm.com> * config/aarch64/arm_neon.h (vcvt<ds>_n_<fsu><32,64>_<fsu><32,64>): Correct argument types.
diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h index f7c9db6..55aa742 100644 --- a/gcc/config/aarch64/arm_neon.h +++ b/gcc/config/aarch64/arm_neon.h @@ -5442,7 +5442,7 @@ static float32x2_t vdup_n_f32 (float32_t); __extension__ \ ({ \ int64_t a_ = (a); \ - int64_t result; \ + float64_t result; \ __asm__ ("scvtf %d0,%d1,%2" \ : "=w"(result) \ : "w"(a_), "i"(b) \ @@ -5454,7 +5454,7 @@ static float32x2_t vdup_n_f32 (float32_t); __extension__ \ ({ \ uint64_t a_ = (a); \ - uint64_t result; \ + float64_t result; \ __asm__ ("ucvtf %d0,%d1,%2" \ : "=w"(result) \ : "w"(a_), "i"(b) \ @@ -5466,7 +5466,7 @@ static float32x2_t vdup_n_f32 (float32_t); __extension__ \ ({ \ float64_t a_ = (a); \ - float64_t result; \ + int64_t result; \ __asm__ ("fcvtzs %d0,%d1,%2" \ : "=w"(result) \ : "w"(a_), "i"(b) \ @@ -5478,7 +5478,7 @@ static float32x2_t vdup_n_f32 (float32_t); __extension__ \ ({ \ float64_t a_ = (a); \ - float64_t result; \ + uint64_t result; \ __asm__ ("fcvtzu %d0,%d1,%2" \ : "=w"(result) \ : "w"(a_), "i"(b) \ @@ -5586,7 +5586,7 @@ static float32x2_t vdup_n_f32 (float32_t); __extension__ \ ({ \ int32_t a_ = (a); \ - int32_t result; \ + float32_t result; \ __asm__ ("scvtf %s0,%s1,%2" \ : "=w"(result) \ : "w"(a_), "i"(b) \ @@ -5598,7 +5598,7 @@ static float32x2_t vdup_n_f32 (float32_t); __extension__ \ ({ \ uint32_t a_ = (a); \ - uint32_t result; \ + float32_t result; \ __asm__ ("ucvtf %s0,%s1,%2" \ : "=w"(result) \ : "w"(a_), "i"(b) \ @@ -5610,7 +5610,7 @@ static float32x2_t vdup_n_f32 (float32_t); __extension__ \ ({ \ float32_t a_ = (a); \ - float32_t result; \ + int32_t result; \ __asm__ ("fcvtzs %s0,%s1,%2" \ : "=w"(result) \ : "w"(a_), "i"(b) \ @@ -5622,7 +5622,7 @@ static float32x2_t vdup_n_f32 (float32_t); __extension__ \ ({ \ float32_t a_ = (a); \ - float32_t result; \ + uint32_t result; \ __asm__ ("fcvtzu %s0,%s1,%2" \ : "=w"(result) \ : "w"(a_), "i"(b) \