testsuite: Fix gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
Checks
Commit Message
The test was declaring 'int *carry;' and wrote to '*carry' without
initializing 'carry' first, leading to an attempt to write at address
zero, and a crash.
Fix by declaring 'int carry;' and passing '&carrry' instead of 'carry'
as parameter.
2023-09-08 Christophe Lyon <christophe.lyon@linaro.org>
gcc/testsuite/
* gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c: Fix.
---
.../arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c | 34 +++++++++----------
1 file changed, 17 insertions(+), 17 deletions(-)
Comments
ping?
On Fri, 8 Sept 2023 at 10:43, Christophe Lyon <christophe.lyon@linaro.org>
wrote:
> The test was declaring 'int *carry;' and wrote to '*carry' without
> initializing 'carry' first, leading to an attempt to write at address
> zero, and a crash.
>
> Fix by declaring 'int carry;' and passing '&carrry' instead of 'carry'
> as parameter.
>
> 2023-09-08 Christophe Lyon <christophe.lyon@linaro.org>
>
> gcc/testsuite/
> * gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c: Fix.
> ---
> .../arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c | 34 +++++++++----------
> 1 file changed, 17 insertions(+), 17 deletions(-)
>
> diff --git
> a/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
> b/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
> index a8c6cce67c8..931c9d2f30b 100644
> --- a/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
> +++ b/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
> @@ -7,7 +7,7 @@
>
> volatile int32x4_t c1;
> volatile uint32x4_t c2;
> -int *carry;
> +int carry;
>
> int
> main ()
> @@ -21,45 +21,45 @@ main ()
> uint32x4_t inactive2 = vcreateq_u32 (0, 0);
>
> mve_pred16_t p = 0xFFFF;
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
>
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c1 = vadcq (a1, b1, carry);
> + c1 = vadcq (a1, b1, &carry);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c2 = vadcq (a2, b2, carry);
> + c2 = vadcq (a2, b2, &carry);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c1 = vsbcq (a1, b1, carry);
> + c1 = vsbcq (a1, b1, &carry);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c2 = vsbcq (a2, b2, carry);
> + c2 = vsbcq (a2, b2, &carry);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c1 = vadcq_m (inactive1, a1, b1, carry, p);
> + c1 = vadcq_m (inactive1, a1, b1, &carry, p);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c2 = vadcq_m (inactive2, a2, b2, carry, p);
> + c2 = vadcq_m (inactive2, a2, b2, &carry, p);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c1 = vsbcq_m (inactive1, a1, b1, carry, p);
> + c1 = vsbcq_m (inactive1, a1, b1, &carry, p);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c2 = vsbcq_m (inactive2, a2, b2, carry, p);
> + c2 = vsbcq_m (inactive2, a2, b2, &carry, p);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
>
> --
> 2.34.1
>
>
ping? maybe this counts as obvious?
On Thu, 14 Sept 2023 at 11:13, Christophe Lyon <christophe.lyon@linaro.org>
wrote:
> ping?
>
> On Fri, 8 Sept 2023 at 10:43, Christophe Lyon <christophe.lyon@linaro.org>
> wrote:
>
>> The test was declaring 'int *carry;' and wrote to '*carry' without
>> initializing 'carry' first, leading to an attempt to write at address
>> zero, and a crash.
>>
>> Fix by declaring 'int carry;' and passing '&carrry' instead of 'carry'
>> as parameter.
>>
>> 2023-09-08 Christophe Lyon <christophe.lyon@linaro.org>
>>
>> gcc/testsuite/
>> * gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c: Fix.
>> ---
>> .../arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c | 34 +++++++++----------
>> 1 file changed, 17 insertions(+), 17 deletions(-)
>>
>> diff --git
>> a/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
>> b/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
>> index a8c6cce67c8..931c9d2f30b 100644
>> --- a/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
>> +++ b/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
>> @@ -7,7 +7,7 @@
>>
>> volatile int32x4_t c1;
>> volatile uint32x4_t c2;
>> -int *carry;
>> +int carry;
>>
>> int
>> main ()
>> @@ -21,45 +21,45 @@ main ()
>> uint32x4_t inactive2 = vcreateq_u32 (0, 0);
>>
>> mve_pred16_t p = 0xFFFF;
>> - (*carry) = 0xFFFFFFFF;
>> + carry = 0xFFFFFFFF;
>>
>> __builtin_arm_set_fpscr_nzcvqc (0);
>> - c1 = vadcq (a1, b1, carry);
>> + c1 = vadcq (a1, b1, &carry);
>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>> __builtin_abort ();
>> - (*carry) = 0xFFFFFFFF;
>> + carry = 0xFFFFFFFF;
>> __builtin_arm_set_fpscr_nzcvqc (0);
>> - c2 = vadcq (a2, b2, carry);
>> + c2 = vadcq (a2, b2, &carry);
>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>> __builtin_abort ();
>> - (*carry) = 0xFFFFFFFF;
>> + carry = 0xFFFFFFFF;
>> __builtin_arm_set_fpscr_nzcvqc (0);
>> - c1 = vsbcq (a1, b1, carry);
>> + c1 = vsbcq (a1, b1, &carry);
>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>> __builtin_abort ();
>> - (*carry) = 0xFFFFFFFF;
>> + carry = 0xFFFFFFFF;
>> __builtin_arm_set_fpscr_nzcvqc (0);
>> - c2 = vsbcq (a2, b2, carry);
>> + c2 = vsbcq (a2, b2, &carry);
>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>> __builtin_abort ();
>> - (*carry) = 0xFFFFFFFF;
>> + carry = 0xFFFFFFFF;
>> __builtin_arm_set_fpscr_nzcvqc (0);
>> - c1 = vadcq_m (inactive1, a1, b1, carry, p);
>> + c1 = vadcq_m (inactive1, a1, b1, &carry, p);
>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>> __builtin_abort ();
>> - (*carry) = 0xFFFFFFFF;
>> + carry = 0xFFFFFFFF;
>> __builtin_arm_set_fpscr_nzcvqc (0);
>> - c2 = vadcq_m (inactive2, a2, b2, carry, p);
>> + c2 = vadcq_m (inactive2, a2, b2, &carry, p);
>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>> __builtin_abort ();
>> - (*carry) = 0xFFFFFFFF;
>> + carry = 0xFFFFFFFF;
>> __builtin_arm_set_fpscr_nzcvqc (0);
>> - c1 = vsbcq_m (inactive1, a1, b1, carry, p);
>> + c1 = vsbcq_m (inactive1, a1, b1, &carry, p);
>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>> __builtin_abort ();
>> - (*carry) = 0xFFFFFFFF;
>> + carry = 0xFFFFFFFF;
>> __builtin_arm_set_fpscr_nzcvqc (0);
>> - c2 = vsbcq_m (inactive2, a2, b2, carry, p);
>> + c2 = vsbcq_m (inactive2, a2, b2, &carry, p);
>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>> __builtin_abort ();
>>
>> --
>> 2.34.1
>>
>>
Ping?
Le lun. 2 oct. 2023, 10:23, Christophe Lyon <christophe.lyon@linaro.org> a
écrit :
> ping? maybe this counts as obvious?
>
>
> On Thu, 14 Sept 2023 at 11:13, Christophe Lyon <christophe.lyon@linaro.org>
> wrote:
>
>> ping?
>>
>> On Fri, 8 Sept 2023 at 10:43, Christophe Lyon <christophe.lyon@linaro.org>
>> wrote:
>>
>>> The test was declaring 'int *carry;' and wrote to '*carry' without
>>> initializing 'carry' first, leading to an attempt to write at address
>>> zero, and a crash.
>>>
>>> Fix by declaring 'int carry;' and passing '&carrry' instead of 'carry'
>>> as parameter.
>>>
>>> 2023-09-08 Christophe Lyon <christophe.lyon@linaro.org>
>>>
>>> gcc/testsuite/
>>> * gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c: Fix.
>>> ---
>>> .../arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c | 34 +++++++++----------
>>> 1 file changed, 17 insertions(+), 17 deletions(-)
>>>
>>> diff --git
>>> a/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
>>> b/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
>>> index a8c6cce67c8..931c9d2f30b 100644
>>> --- a/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
>>> +++ b/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
>>> @@ -7,7 +7,7 @@
>>>
>>> volatile int32x4_t c1;
>>> volatile uint32x4_t c2;
>>> -int *carry;
>>> +int carry;
>>>
>>> int
>>> main ()
>>> @@ -21,45 +21,45 @@ main ()
>>> uint32x4_t inactive2 = vcreateq_u32 (0, 0);
>>>
>>> mve_pred16_t p = 0xFFFF;
>>> - (*carry) = 0xFFFFFFFF;
>>> + carry = 0xFFFFFFFF;
>>>
>>> __builtin_arm_set_fpscr_nzcvqc (0);
>>> - c1 = vadcq (a1, b1, carry);
>>> + c1 = vadcq (a1, b1, &carry);
>>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>>> __builtin_abort ();
>>> - (*carry) = 0xFFFFFFFF;
>>> + carry = 0xFFFFFFFF;
>>> __builtin_arm_set_fpscr_nzcvqc (0);
>>> - c2 = vadcq (a2, b2, carry);
>>> + c2 = vadcq (a2, b2, &carry);
>>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>>> __builtin_abort ();
>>> - (*carry) = 0xFFFFFFFF;
>>> + carry = 0xFFFFFFFF;
>>> __builtin_arm_set_fpscr_nzcvqc (0);
>>> - c1 = vsbcq (a1, b1, carry);
>>> + c1 = vsbcq (a1, b1, &carry);
>>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>>> __builtin_abort ();
>>> - (*carry) = 0xFFFFFFFF;
>>> + carry = 0xFFFFFFFF;
>>> __builtin_arm_set_fpscr_nzcvqc (0);
>>> - c2 = vsbcq (a2, b2, carry);
>>> + c2 = vsbcq (a2, b2, &carry);
>>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>>> __builtin_abort ();
>>> - (*carry) = 0xFFFFFFFF;
>>> + carry = 0xFFFFFFFF;
>>> __builtin_arm_set_fpscr_nzcvqc (0);
>>> - c1 = vadcq_m (inactive1, a1, b1, carry, p);
>>> + c1 = vadcq_m (inactive1, a1, b1, &carry, p);
>>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>>> __builtin_abort ();
>>> - (*carry) = 0xFFFFFFFF;
>>> + carry = 0xFFFFFFFF;
>>> __builtin_arm_set_fpscr_nzcvqc (0);
>>> - c2 = vadcq_m (inactive2, a2, b2, carry, p);
>>> + c2 = vadcq_m (inactive2, a2, b2, &carry, p);
>>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>>> __builtin_abort ();
>>> - (*carry) = 0xFFFFFFFF;
>>> + carry = 0xFFFFFFFF;
>>> __builtin_arm_set_fpscr_nzcvqc (0);
>>> - c1 = vsbcq_m (inactive1, a1, b1, carry, p);
>>> + c1 = vsbcq_m (inactive1, a1, b1, &carry, p);
>>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>>> __builtin_abort ();
>>> - (*carry) = 0xFFFFFFFF;
>>> + carry = 0xFFFFFFFF;
>>> __builtin_arm_set_fpscr_nzcvqc (0);
>>> - c2 = vsbcq_m (inactive2, a2, b2, carry, p);
>>> + c2 = vsbcq_m (inactive2, a2, b2, &carry, p);
>>> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
>>> __builtin_abort ();
>>>
>>> --
>>> 2.34.1
>>>
>>>
On 08/09/2023 09:43, Christophe Lyon via Gcc-patches wrote:
> The test was declaring 'int *carry;' and wrote to '*carry' without
> initializing 'carry' first, leading to an attempt to write at address
> zero, and a crash.
>
> Fix by declaring 'int carry;' and passing '&carrry' instead of 'carry'
> as parameter.
>
> 2023-09-08 Christophe Lyon <christophe.lyon@linaro.org>
>
> gcc/testsuite/
> * gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c: Fix.
OK.
R.
> ---
> .../arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c | 34 +++++++++----------
> 1 file changed, 17 insertions(+), 17 deletions(-)
>
> diff --git a/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c b/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
> index a8c6cce67c8..931c9d2f30b 100644
> --- a/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
> +++ b/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c
> @@ -7,7 +7,7 @@
>
> volatile int32x4_t c1;
> volatile uint32x4_t c2;
> -int *carry;
> +int carry;
>
> int
> main ()
> @@ -21,45 +21,45 @@ main ()
> uint32x4_t inactive2 = vcreateq_u32 (0, 0);
>
> mve_pred16_t p = 0xFFFF;
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
>
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c1 = vadcq (a1, b1, carry);
> + c1 = vadcq (a1, b1, &carry);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c2 = vadcq (a2, b2, carry);
> + c2 = vadcq (a2, b2, &carry);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c1 = vsbcq (a1, b1, carry);
> + c1 = vsbcq (a1, b1, &carry);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c2 = vsbcq (a2, b2, carry);
> + c2 = vsbcq (a2, b2, &carry);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c1 = vadcq_m (inactive1, a1, b1, carry, p);
> + c1 = vadcq_m (inactive1, a1, b1, &carry, p);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c2 = vadcq_m (inactive2, a2, b2, carry, p);
> + c2 = vadcq_m (inactive2, a2, b2, &carry, p);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c1 = vsbcq_m (inactive1, a1, b1, carry, p);
> + c1 = vsbcq_m (inactive1, a1, b1, &carry, p);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
> - (*carry) = 0xFFFFFFFF;
> + carry = 0xFFFFFFFF;
> __builtin_arm_set_fpscr_nzcvqc (0);
> - c2 = vsbcq_m (inactive2, a2, b2, carry, p);
> + c2 = vsbcq_m (inactive2, a2, b2, &carry, p);
> if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
> __builtin_abort ();
>
@@ -7,7 +7,7 @@
volatile int32x4_t c1;
volatile uint32x4_t c2;
-int *carry;
+int carry;
int
main ()
@@ -21,45 +21,45 @@ main ()
uint32x4_t inactive2 = vcreateq_u32 (0, 0);
mve_pred16_t p = 0xFFFF;
- (*carry) = 0xFFFFFFFF;
+ carry = 0xFFFFFFFF;
__builtin_arm_set_fpscr_nzcvqc (0);
- c1 = vadcq (a1, b1, carry);
+ c1 = vadcq (a1, b1, &carry);
if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
__builtin_abort ();
- (*carry) = 0xFFFFFFFF;
+ carry = 0xFFFFFFFF;
__builtin_arm_set_fpscr_nzcvqc (0);
- c2 = vadcq (a2, b2, carry);
+ c2 = vadcq (a2, b2, &carry);
if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
__builtin_abort ();
- (*carry) = 0xFFFFFFFF;
+ carry = 0xFFFFFFFF;
__builtin_arm_set_fpscr_nzcvqc (0);
- c1 = vsbcq (a1, b1, carry);
+ c1 = vsbcq (a1, b1, &carry);
if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
__builtin_abort ();
- (*carry) = 0xFFFFFFFF;
+ carry = 0xFFFFFFFF;
__builtin_arm_set_fpscr_nzcvqc (0);
- c2 = vsbcq (a2, b2, carry);
+ c2 = vsbcq (a2, b2, &carry);
if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
__builtin_abort ();
- (*carry) = 0xFFFFFFFF;
+ carry = 0xFFFFFFFF;
__builtin_arm_set_fpscr_nzcvqc (0);
- c1 = vadcq_m (inactive1, a1, b1, carry, p);
+ c1 = vadcq_m (inactive1, a1, b1, &carry, p);
if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
__builtin_abort ();
- (*carry) = 0xFFFFFFFF;
+ carry = 0xFFFFFFFF;
__builtin_arm_set_fpscr_nzcvqc (0);
- c2 = vadcq_m (inactive2, a2, b2, carry, p);
+ c2 = vadcq_m (inactive2, a2, b2, &carry, p);
if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
__builtin_abort ();
- (*carry) = 0xFFFFFFFF;
+ carry = 0xFFFFFFFF;
__builtin_arm_set_fpscr_nzcvqc (0);
- c1 = vsbcq_m (inactive1, a1, b1, carry, p);
+ c1 = vsbcq_m (inactive1, a1, b1, &carry, p);
if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
__builtin_abort ();
- (*carry) = 0xFFFFFFFF;
+ carry = 0xFFFFFFFF;
__builtin_arm_set_fpscr_nzcvqc (0);
- c2 = vsbcq_m (inactive2, a2, b2, carry, p);
+ c2 = vsbcq_m (inactive2, a2, b2, &carry, p);
if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000)
__builtin_abort ();