| /* { dg-do compile } */ |
| /* { dg-require-effective-target arm_simd32_ok } */ |
| /* { dg-add-options arm_simd32 } */ |
| |
| #include <arm_acle.h> |
| |
| int16x2_t |
| test_sxtab16 (int16x2_t a, int8x4_t b) |
| { |
| return __sxtab16 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "sxtab16\t...?, ...?, ...?" 1 } } */ |
| |
| |
| int16x2_t |
| test_sxtb16 (int8x4_t a) |
| { |
| return __sxtb16 (a); |
| } |
| |
| /* { dg-final { scan-assembler-times "sxtab16\t...?, ...?" 1 } } */ |
| |
| int8x4_t |
| test_qadd8 (int8x4_t a, int8x4_t b) |
| { |
| return __qadd8 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tqadd8\t...?, ...?, ...?" 1 } } */ |
| |
| int8x4_t |
| test_qsub8 (int8x4_t a, int8x4_t b) |
| { |
| return __qsub8 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tqsub8\t...?, ...?, ...?" 1 } } */ |
| |
| int8x4_t |
| test_shadd8 (int8x4_t a, int8x4_t b) |
| { |
| return __shadd8 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tshadd8\t...?, ...?, ...?" 1 } } */ |
| |
| int8x4_t |
| test_shsub8 (int8x4_t a, int8x4_t b) |
| { |
| return __shsub8 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tshsub8\t...?, ...?, ...?" 1 } } */ |
| |
| uint8x4_t |
| test_uhadd8 (uint8x4_t a, uint8x4_t b) |
| { |
| return __uhadd8 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuhadd8\t...?, ...?, ...?" 1 } } */ |
| |
| uint8x4_t |
| test_uhsub8 (uint8x4_t a, uint8x4_t b) |
| { |
| return __uhsub8 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuhsub8\t...?, ...?, ...?" 1 } } */ |
| |
| uint8x4_t |
| test_uqadd8 (uint8x4_t a, uint8x4_t b) |
| { |
| return __uqadd8 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuqadd8\t...?, ...?, ...?" 1 } } */ |
| |
| uint8x4_t |
| test_uqsub8 (uint8x4_t a, uint8x4_t b) |
| { |
| return __uqsub8 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuqsub8\t...?, ...?, ...?" 1 } } */ |
| |
| int16x2_t |
| test_qadd16 (int16x2_t a, int16x2_t b) |
| { |
| return __qadd16 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tqadd16\t...?, ...?, ...?" 1 } } */ |
| |
| int16x2_t |
| test_qasx (int16x2_t a, int16x2_t b) |
| { |
| return __qasx (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tqasx\t...?, ...?, ...?" 1 } } */ |
| |
| int16x2_t |
| test_qsax (int16x2_t a, int16x2_t b) |
| { |
| return __qsax (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tqsax\t...?, ...?, ...?" 1 } } */ |
| |
| int16x2_t |
| test_qsub16 (int16x2_t a, int16x2_t b) |
| { |
| return __qsub16 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tqsub16\t...?, ...?, ...?" 1 } } */ |
| |
| int16x2_t |
| test_shadd16 (int16x2_t a, int16x2_t b) |
| { |
| return __shadd16 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tshadd16\t...?, ...?, ...?" 1 } } */ |
| |
| int16x2_t |
| test_shasx (int16x2_t a, int16x2_t b) |
| { |
| return __shasx (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tshasx\t...?, ...?, ...?" 1 } } */ |
| |
| int16x2_t |
| test_shsax (int16x2_t a, int16x2_t b) |
| { |
| return __shsax (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tshsax\t...?, ...?, ...?" 1 } } */ |
| |
| int16x2_t |
| test_shsub16 (int16x2_t a, int16x2_t b) |
| { |
| return __shsub16 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tshsub16\t...?, ...?, ...?" 1 } } */ |
| |
| uint16x2_t |
| test_uhadd16 (uint16x2_t a, uint16x2_t b) |
| { |
| return __uhadd16 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuhadd16\t...?, ...?, ...?" 1 } } */ |
| |
| uint16x2_t |
| test_uhasx (uint16x2_t a, uint16x2_t b) |
| { |
| return __uhasx (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuhasx\t...?, ...?, ...?" 1 } } */ |
| |
| uint16x2_t |
| test_uhsax (uint16x2_t a, uint16x2_t b) |
| { |
| return __uhsax (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuhsax\t...?, ...?, ...?" 1 } } */ |
| |
| uint16x2_t |
| test_uhsub16 (uint16x2_t a, uint16x2_t b) |
| { |
| return __uhsub16 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuhsub16\t...?, ...?, ...?" 1 } } */ |
| |
| uint16x2_t |
| test_uqadd16 (uint16x2_t a, uint16x2_t b) |
| { |
| return __uqadd16 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuqadd16\t...?, ...?, ...?" 1 } } */ |
| |
| uint16x2_t |
| test_uqasx (uint16x2_t a, uint16x2_t b) |
| { |
| return __uqasx (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuqasx\t...?, ...?, ...?" 1 } } */ |
| |
| uint16x2_t |
| test_uqsax (uint16x2_t a, uint16x2_t b) |
| { |
| return __uqsax (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuqsax\t...?, ...?, ...?" 1 } } */ |
| |
| uint16x2_t |
| test_uqsub16 (uint16x2_t a, uint16x2_t b) |
| { |
| return __uqsub16 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuqsub16\t...?, ...?, ...?" 1 } } */ |
| |
| int32_t |
| test_smusd (int16x2_t a, int16x2_t b) |
| { |
| return __smusd (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsmusd\t...?, ...?, ...?" 1 } } */ |
| |
| int32_t |
| test_smusdx (int16x2_t a, int16x2_t b) |
| { |
| return __smusdx (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsmusdx\t...?, ...?, ...?" 1 } } */ |
| |
| uint32_t |
| test_usad8 (uint8x4_t a, uint8x4_t b) |
| { |
| return __usad8 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tusad8\t...?, ...?, ...?" 1 } } */ |
| |
| uint32_t |
| test_usada8 (uint8x4_t a, uint8x4_t b, uint32_t c) |
| { |
| return __usada8 (a, b, c); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tusada8\t...?, ...?, ...?, ...?" 1 } } */ |
| |
| int64_t |
| test_smlald (int16x2_t a, int16x2_t b, int64_t c) |
| { |
| return __smlald (a, b, c); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsmlald\t...?, ...?, ...?, ...?" 1 } } */ |
| |
| int64_t |
| test_smlaldx (int16x2_t a, int16x2_t b, int64_t c) |
| { |
| return __smlaldx (a, b, c); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsmlaldx\t...?, ...?, ...?, ...?" 1 } } */ |
| |
| int64_t |
| test_smlsld (int16x2_t a, int16x2_t b, int64_t c) |
| { |
| return __smlsld (a, b, c); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsmlsld\t...?, ...?, ...?, ...?" 1 } } */ |
| |
| int64_t |
| test_smlsldx (int16x2_t a, int16x2_t b, int64_t c) |
| { |
| return __smlsldx (a, b, c); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsmlsldx\t...?, ...?, ...?, ...?" 1 } } */ |
| |
| int8x4_t |
| test_sadd8 (int8x4_t a, int8x4_t b) |
| { |
| return __sadd8 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsadd8\t...?, ...?, ...?" 1 } } */ |
| |
| int8x4_t |
| test_ssub8 (int8x4_t a, int8x4_t b) |
| { |
| return __ssub8 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tssub8\t...?, ...?, ...?" 1 } } */ |
| |
| uint8x4_t |
| test_uadd8 (uint8x4_t a, uint8x4_t b) |
| { |
| return __uadd8 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuadd8\t...?, ...?, ...?" 1 } } */ |
| |
| uint8x4_t |
| test_usub8 (uint8x4_t a, uint8x4_t b) |
| { |
| return __usub8 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tusub8\t...?, ...?, ...?" 1 } } */ |
| |
| int16x2_t |
| test_sadd16 (int16x2_t a, int16x2_t b) |
| { |
| return __sadd16 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsadd8\t...?, ...?, ...?" 1 } } */ |
| |
| int16x2_t |
| test_sasx (int16x2_t a, int16x2_t b) |
| { |
| return __sasx (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsasx\t...?, ...?, ...?" 1 } } */ |
| |
| int16x2_t |
| test_ssax (int16x2_t a, int16x2_t b) |
| { |
| return __ssax (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tssax\t...?, ...?, ...?" 1 } } */ |
| |
| int16x2_t |
| test_ssub16 (int16x2_t a, int16x2_t b) |
| { |
| return __ssub16 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tssub16\t...?, ...?, ...?" 1 } } */ |
| |
| uint16x2_t |
| test_uadd16 (uint16x2_t a, uint16x2_t b) |
| { |
| return __uadd16 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuadd16\t...?, ...?, ...?" 1 } } */ |
| |
| uint16x2_t |
| test_uasx (uint16x2_t a, uint16x2_t b) |
| { |
| return __uasx (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tuasx\t...?, ...?, ...?" 1 } } */ |
| |
| uint16x2_t |
| test_usax (uint16x2_t a, uint16x2_t b) |
| { |
| return __usax (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tusax\t...?, ...?, ...?" 1 } } */ |
| |
| uint16x2_t |
| test_usub16 (uint16x2_t a, uint16x2_t b) |
| { |
| return __usub16 (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tusub16\t...?, ...?, ...?" 1 } } */ |
| |
| int32_t |
| test_smlad (int16x2_t a, int16x2_t b, int32_t c) |
| { |
| return __smlad (a, b, c); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsmlad\t...?, ...?, ...?, ...?" 1 } } */ |
| |
| int32_t |
| test_smladx (int16x2_t a, int16x2_t b, int32_t c) |
| { |
| return __smladx (a, b, c); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsmladx\t...?, ...?, ...?, ...?" 1 } } */ |
| |
| int32_t |
| test_smlsd (int16x2_t a, int16x2_t b, int32_t c) |
| { |
| return __smlsd (a, b, c); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsmlsd\t...?, ...?, ...?, ...?" 1 } } */ |
| |
| int32_t |
| test_smlsdx (int16x2_t a, int16x2_t b, int32_t c) |
| { |
| return __smlsdx (a, b, c); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsmlsdx\t...?, ...?, ...?, ...?" 1 } } */ |
| |
| int32_t |
| test_smuad (int16x2_t a, int16x2_t b) |
| { |
| return __smuad (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsmuad\t...?, ...?, ...?" 1 } } */ |
| |
| int32_t |
| test_smuadx (int16x2_t a, int16x2_t b) |
| { |
| return __smuadx (a, b); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tsmuadx\t...?, ...?, ...?" 1 } } */ |
| |
| int16x2_t |
| test_ssat16 (int16x2_t a) |
| { |
| return __ssat16 (a, 13); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tssat16\t...?, #13, ...?" 1 } } */ |
| |
| int16x2_t |
| test_usat16 (int16x2_t a) |
| { |
| return __usat16 (a, 15); |
| } |
| |
| /* { dg-final { scan-assembler-times "\tusat16\t...?, #15, ...?" 1 } } */ |