diff --git a/Makefile b/Makefile index 418d4e0cd..beddd6ecd 100644 --- a/Makefile +++ b/Makefile @@ -101,6 +101,9 @@ docker-%: GLOBAL_SETTINGS := $(shell if [ -f "${HOME}/.ROCKNIX/options" ]; then # LOCAL_SSH_KEYS_FILE is a variable that contains the location of the authorized keys file for development build use. It will be mounted into the container if it exists. docker-%: LOCAL_SSH_KEYS_FILE := $(shell if [ -n "${LOCAL_SSH_KEYS_FILE}" ]; then echo "-v \"${LOCAL_SSH_KEYS_FILE}:${LOCAL_SSH_KEYS_FILE}\""; else echo ""; fi) +# EMULATIONSTATION_SRC is a variable that contains the location of local emulationstation source code. It will be mounted into the container if it exists. +docker-%: EMULATIONSTATION_SRC := $(shell if [ -n "${EMULATIONSTATION_SRC}" ]; then echo "-v \"${EMULATIONSTATION_SRC}:${EMULATIONSTATION_SRC}\""; else echo ""; fi) + # UID is the user ID of current user - ensures docker sets file permissions properly docker-%: UID := $(shell id -u) @@ -141,5 +144,4 @@ docker-image-pull: # Wire up docker to call equivalent make files using % to match and $* to pass the value matched by % docker-%: - BUILD_DIR=$(DOCKER_WORK_DIR) $(DOCKER_CMD) run $(PODMAN_ARGS) $(INTERACTIVE) --init --env-file .env --rm --user $(UID):$(GID) $(GLOBAL_SETTINGS) $(LOCAL_SSH_KEYS_FILE) -v $(PWD):$(DOCKER_WORK_DIR) -w $(DOCKER_WORK_DIR) $(DOCKER_EXTRA_OPTS) $(DOCKER_IMAGE) $(COMMAND) - + BUILD_DIR=$(DOCKER_WORK_DIR) $(DOCKER_CMD) run $(PODMAN_ARGS) $(INTERACTIVE) --init --env-file .env --rm --user $(UID):$(GID) $(GLOBAL_SETTINGS) $(LOCAL_SSH_KEYS_FILE) $(EMULATIONSTATION_SRC) -v $(PWD):$(DOCKER_WORK_DIR) -w $(DOCKER_WORK_DIR) $(DOCKER_EXTRA_OPTS) $(DOCKER_IMAGE) $(COMMAND) \ No newline at end of file diff --git a/config/arch.aarch64 b/config/arch.aarch64 index fd61f33c7..1a1ae6932 100644 --- a/config/arch.aarch64 +++ b/config/arch.aarch64 @@ -10,20 +10,27 @@ # determine architecture's family case $TARGET_CPU in - generic|cortex-a35|cortex-a53|cortex-a57|cortex-a72|exynos-m1|qdf24xx|thunderx|xgene1|cortex-a57.cortex-a53|cortex-a72.cortex-a53|cortex-a55|cortex-a76.cortex-a55|cortex-a73.cortex-a53) + generic|cortex-a35|cortex-a53|cortex-a57|cortex-a72|exynos-m1|qdf24xx|thunderx|xgene1|cortex-a57.cortex-a53|cortex-a72.cortex-a53|cortex-a73.cortex-a53) TARGET_SUBARCH=aarch64 TARGET_VARIANT=armv8-a TARGET_ABI=eabi TARGET_FEATURES+=" neon" + # This only makes sense for 8.0-a, later revisions have LSE + TARGET_CFLAGS=" -mno-outline-atomics" ;; + cortex-a55|cortex-a76.cortex-a55) + TARGET_SUBARCH=aarch64 + TARGET_VARIANT=armv8.2-a + TARGET_ABI=eabi + TARGET_FEATURES+=" neon" + ;; + esac TARGET_GCC_ARCH=${TARGET_SUBARCH/-} TARGET_KERNEL_ARCH=arm64 # setup ARCH specific *FLAGS - TARGET_CFLAGS="-march=${TARGET_VARIANT}${TARGET_CPU_FLAGS} -mabi=lp64 -Wno-psabi -mtune=$TARGET_CPU" -# Disable runtime checking support of ARMv8.0's optional LSE feature. Breaks gdb and mesa compile. - TARGET_CFLAGS="${TARGET_CFLAGS} -mno-outline-atomics" + TARGET_CFLAGS="${TARGET_CFLAGS} -march=${TARGET_VARIANT}${TARGET_CPU_FLAGS} -mabi=lp64 -Wno-psabi -mtune=$TARGET_CPU" TARGET_LDFLAGS="-march=${TARGET_VARIANT}${TARGET_CPU_FLAGS} -mtune=$TARGET_CPU" GCC_OPTS="--with-abi=lp64 --with-arch=$TARGET_VARIANT" diff --git a/config/arch.arm b/config/arch.arm index 08f1cef46..de5ce2016 100644 --- a/config/arch.arm +++ b/config/arch.arm @@ -47,6 +47,13 @@ TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU" TARGET_FEATURES+=" neon" ;; + cortex-a55|cortex-a76.cortex-a55) + TARGET_SUBARCH=armv8.2-a + TARGET_ABI=eabi + TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU" + TARGET_FEATURES+=" neon" + ;; + esac # if [ "${TARGET_FLOAT}" = "hard" ]; then diff --git a/config/optimize b/config/optimize index 1421a5d4e..252b91546 100644 --- a/config/optimize +++ b/config/optimize @@ -34,13 +34,13 @@ LDFLAGS_OPTIM_LINKER_GOLD="-fuse-ld=gold" LDFLAGS_OPTIM_LINKER_MOLD="-fuse-ld=mold" # default compiler optimization -CFLAGS_OPTIM_DEFAULT="-O3 -fomit-frame-pointer -DNDEBUG" +CFLAGS_OPTIM_DEFAULT="-O3 -DNDEBUG" CXXFLAGS_OPTIM_DEFAULT="${CFLAGS_OPTIM_DEFAULT}" # speed flag -CFLAGS_OPTIM_SPEED="-Ofast -fomit-frame-pointer -DNDEBUG" +CFLAGS_OPTIM_SPEED="-Ofast -DNDEBUG" CXXFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED}" # size flag -CFLAGS_OPTIM_SIZE="-Os -fomit-frame-pointer -DNDEBUG" +CFLAGS_OPTIM_SIZE="-Os -DNDEBUG" CXXFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE}" # debug settings CFLAGS_OPTIM_DEBUG="-ggdb -Og" diff --git a/distributions/ROCKNIX/options b/distributions/ROCKNIX/options index e22cc1c49..dab8ad33e 100644 --- a/distributions/ROCKNIX/options +++ b/distributions/ROCKNIX/options @@ -42,15 +42,16 @@ # Define package sets to clean based on the type of build being executed. # This should be updated to be more dynamic in the future. - CLEAN_OS_BASE="emulators system-utils modules quirks autostart rocknix" + CLEAN_OS_BASE="emulators system-utils modules quirks autostart rocknix kernel-firmware" CLEAN_NETWORK="" CLEAN_EMU_32BIT="lib32 box86 pcsx_rearmed-lr arm" # Sway depends on it, weston will use it if it's built but we don't want that. CLEAN_WESTON="libdisplay-info sway" -# Packages to clean for S922X platform - all vary based on VULKAN_SUPPORT - CLEAN_S922X="beetle-psx-lr dolphin-sa duckstation-sa fileman emulationstation flycast-lr flycast-sa" - CLEAN_S922X+=" gmu gzdoom-sa libplacebo lime3ds-sa linux mali-bifrost mesa moonlight parallel-n64-lr" - CLEAN_S922X+=" pipewire portmaster ppsspp-sa qt5 retroarch SDL2" +# Packages to clean for S922X platform - all vary based on VULKAN_SUPPORT or USE_MALI + CLEAN_S922X="beetle-psx-lr dolphin-sa drastic-sa duckstation-sa fileman emulationstation" + CLEAN_S922X+=" flycast-lr flycast-sa gmu gzdoom-sa libplacebo lime3ds-sa linux mali-bifrost" + CLEAN_S922X+=" mesa moonlight parallel-n64-lr pipewire portmaster ppsspp-sa qt5 retroarch" + CLEAN_S922X+=" wayland SDL2" # build and install rocknix joypad driver (yes / no) ROCKNIX_JOYPAD="no" diff --git a/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md index c88251e06..6cb10ace2 100644 --- a/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md +++ b/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md @@ -73,6 +73,7 @@ This document describes all available systems emulators and cores available for |Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| |Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol|**dolphin:** dolphin-sa-gc (default)
**retroarch:** dolphin
| |Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nesh
| +|Nintendo|Nintendo 3DS (3ds)|2010|`3ds`|.3ds .3dsx .elf .axf .cci .cxi .app|**lime3ds:** lime3ds-sa (default)
| |Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** mupen64plus
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
| |Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**retroarch:** melonds (default)
**retroarch:** desmume
**melonds:** melonds-sa
| |Nintendo|Nintendo Entertainment System (nes)|1985|`nes`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nes
| @@ -100,11 +101,11 @@ This document describes all available systems emulators and cores available for |Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| |Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| |Sega|Naomi (naomi)|1998|`naomi`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021
**retroarch:** flycast (default)
**flycast:** flycast-sa
| -|Sega|Saturn (saturn)|1994|`saturn`|.cue .chd .iso .zip|**kronos:** kronos-sa
**retroarch:** yabasanshiro (default)
**retroarch:** kronos
**retroarch:** beetle_saturn
**mednafen:** ss
**kronos:** kronos-sa (default)
| +|Sega|Saturn (saturn)|1994|`saturn`|.cue .chd .iso .zip|**retroarch:** yabasanshiro (default)
**retroarch:** beetle_saturn
**mednafen:** ss
| |Sega|Sega 32X (sega32x)|1994|`sega32x`|.32x .smd .bin .md .zip .7z|**retroarch:** picodrive (default)
| |Sega|Sega CD (segacd)|1991|`segacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
| |Sega|SG-1000 (sg-1000)|1983|`sg-1000`|.bin .sg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
| -|Sega|ST-V (st-v)|1995|`st-v`|.zip .ZIP|**retroarch:** kronos
**mednafen:** ss
| +|Sega|ST-V (st-v)|1995|`st-v`|.zip .ZIP|**mednafen:** ss (default)
| |Sharp|X1 (x1)|1982|`x1`|.dx1 .2d .2hd .tfd .d88 .88d .hdm .xdf .dup .tap .cmd .zip .7z|**retroarch:** x1 (default)
| |Sharp|x68000 (x68000)|1987|`x68000`|.dim .img .d88 .hdm .dup .2hd .xdf .hdf .cmd .m3u .zip .7z|**retroarch:** px68k (default)
| |Sinclair|ZX Spectrum (zxspectrum)|1982|`zxspectrum`|.tzx .tap .z80 .rzx .scl .trd .dsk .zip .7z|**retroarch:** fuse
| @@ -117,7 +118,7 @@ This document describes all available systems emulators and cores available for |Sony|PlayStation (psx)|1994|`psx`|.bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso|**retroarch:** beetle_psx (default)
**mednafen:** psx
**duckstation:** duckstation-sa
**retroarch:** duckstation
**retroarch:** swanstation
| |Sony|PlayStation 2 (ps2)|2000|`ps2`|.iso .mdf .nrg .bin .img .dump .gz .cso .chd|**pcsx2:** pcsx2-sa (default)
**retroarch:** pcsx2
| |Sony|PlayStation 3 (ps3)|2006|`ps3`|.ps3 .psn|**rpcs3:** rpcs3-sa (default)
| -|Sony|PlayStation Portable (psp)|2004|`psp`|.iso .cso .pbp .chd|**ppsspp:** ppsspp-sa (default)
**retroarch:** ppsspp
| +|Sony|PlayStation Portable (psp)|2004|`psp`|.iso .cso .pbp .chd|**ppsspp:** ppsspp-sa (default)
| |Sony|PlayStation Vita (psvita)|2011|`launcher`|.sh .psvita|**vita3k:** vita3k-sa (default)
| |Sony|PSP Minis (pspminis)|2004|`pspminis`|.iso .cso .pbp|**ppsspp:** ppsspp-sa (default)
**retroarch:** ppsspp
| |Sun Microsystems|J2ME (j2me)|2002|`j2me`|.jar|**retroarch:** freej2me (default)
| diff --git a/documentation/PER_DEVICE_DOCUMENTATION/H700/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/H700/SUPPORTED_EMULATORS_AND_CORES.md new file mode 100644 index 000000000..b4dbc8f92 --- /dev/null +++ b/documentation/PER_DEVICE_DOCUMENTATION/H700/SUPPORTED_EMULATORS_AND_CORES.md @@ -0,0 +1,124 @@ +        [![Latest Version](https://img.shields.io/github/release/ROCKNIX/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/ROCKNIX/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/ROCKNIX/distribution?color=5998FF&style=flat-square)](https://github.com/ROCKNIX/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/ROCKNIX/distribution?color=5998FF&style=flat-square)](https://github.com/ROCKNIX/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy) +# + +# Supported Systems Emulators and Cores +This document describes all available systems emulators and cores available for the device. + +|Manufacturer|System|Release Date|Games Path|Supported Extensions|Emulator / Core| +|----|----|----|----|----|----| +| System|Media Player (mplayer)|System|`mplayer`|.mp4 .mkv .avi .mov .wmv .m3u .mpg .ytb .twi .sh .mp3 .aac .mka .dts .flac .ogg .m4a .ac3 .opus .wav .wv .eac33 .thd|**mplayer:** mplayer (default)
| +| System|Moonlight Game Streaming (moonlight)|System|`moonlight`|.sh|| +| System|Music Player (music)|System|`playlists`|.m3u .sh|**gmu:** gmu (default)
| +| System|Ports (ports)|System|`ports`|.sh|**portmaster:** portmaster (default)
| +| System|Screenshots (imageviewer)|System|`screenshots`|.jpg .jpeg .png .bmp .psd .tga .gif .hdr .pic .ppm .pgm .mkv .pdf .mp4 .avi|| +| System|Tools (tools)|System|`modules`|.sh|| +|Amstrad|Amstrad CPC (amstradcpc)|1984|`amstradcpc`|.dsk .cpr .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| +|Apple|Macintosh (macintosh)|1984|`mac`|.dsk .img .hfv .cmd .zip|**retroarch:** minivmac (default)
| +|Arcade|Arcade (arcade)|0000|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
**retroarch:** mame
| +|Arcade|Daphne (daphne)|1996|`daphne`|.daphne .singe|**hypseus-singe:** hypseus-singe (default)
**retroarch:** daphne
| +|Arcade|Final Burn Neo (fbn)|2002|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|MAME (mame)|1997|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arduboy|Arduboy (arduboy)|2014|`arduboy`|.hex|**retroarch:** arduous (default)
| +|Atari|Atari 2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| +|Atari|Atari 5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| +|Atari|Atari 7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| +|Atari|Atari 800 (atari800)|1979|`atari800`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** atari800 (default)
| +|Atari|Atari Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| +|Atari|Atari Lynx (atarilynx)|1989|`atarilynx`|.lnx .lyx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
**mednafen:** lynx
| +|Atari|Atari ST (atarist)|1985|`atarist`|.st .msa .stx .dim .ipf .m3u .zip .7z|**retroarch:** hatari (default)
**hatarisa:** hatarisa
| +|Bandai|SuFami Turbo (sufami)|1996|`sufami`|.st .zip .7z|**retroarch:** snes9x (default)
| +|Bandai|Wonderswan (wonderswan)|1999|`wonderswan`|.ws .wsc .zip .7z|**retroarch:** beetle_wswan (default)
**mednafen:** wswan
| +|Bandai|Wonderswan Color (wonderswancolor)|2000|`wonderswancolor`|.ws .wsc .zip .7z|**retroarch:** beetle_wswan (default)
**mednafen:** wswan
| +|belogic|Uzebox (uzebox)|2008|`uzebox`|.uze|**retroarch:** uzem (default)
| +|Capcom|CPS-I (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-II (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-III (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**AdvanceMame:** AdvanceMame
| +|Coleco|ColecoVision (colecovision)|1982|`coleco`|.bin .col .rom .zip .7z|**retroarch:** gearcoleco (default)
**retroarch:** bluemsx
**retroarch:** smsplus
| +|Commodore|Amiga (amiga)|1985|`amiga`|.zip .adf .uae .ipf .dms .adz .lha .m3u .hdf .hdz|**retroarch:** puae2021 (default)
**retroarch:** puae
**amiberry:** amiberry
**retroarch:** uae4arm
| +|Commodore|Amiga CD32 (amigacd32)|1994|`amigacd32`|.iso .cue .lha .chd|**retroarch:** puae2021 (default)
**retroarch:** puae
**retroarch:** uae4arm
| +|Commodore|Commodore 128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| +|Commodore|Commodore 16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| +|Commodore|Commodore 64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| +|Commodore|Commodore PET (pet)|1977|`pet`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xpet (default)
| +|Commodore|VIC-20 (vic20)|1980|`vic20`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xvic (default)
**vicesa:** xvic
| +|EPOCH/YENO|Super Cassette Vision (scv)|1984|`scv`|.cart .bin .rom .0 .zip|**retroarch:** emuscv (default)
| +|Fairchild|Fairchild Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| +|id Software|Doom (doom)|1993|`doom`|.doom|**gzdoom:** gzdoom-sa (default)
| +|id Software|iDtech (idtech)|1991|`idtech`|.sh|**retroarch:** idtech
| +|Infocom|Z-machine (zmachine)|1979|`zmachine`|.dat .z1 .z2 .z3 .z4 .z5 .z6 .zip|**retroarch:** mojozork (default)
| +|Lexaloffle|PICO-8 (pico-8)|2015|`pico-8`|.p8 .png|**pico-8:** pico8 (default)
**retroarch:** fake08
| +|Magnavox|Odyssey 2 (odyssey2)|1979|`odyssey`|.bin .zip .7z|**retroarch:** o2em (default)
| +|Mattel|Intellivision (intellivision)|1979|`intellivision`|.int .bin .rom .zip .7z|**retroarch:** freeintv (default)
| +|Microsoft|DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| +|Microsoft|MSX (msx)|1983|`msx`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| +|Microsoft|MSX 2 (msx2)|1988|`msx2`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| +|NEC|PC Engine (pcengine)|1987|`pcengine`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
**mednafen:** pce
**mednafen:** pce_fast
| +|NEC|PC Engine CD (pcenginecd)|1988|`pcenginecd`|.cue .ccd .chd .toc .m3u|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
**mednafen:** pce
**mednafen:** pce_fast
| +|NEC|PC-8800 (pc-8800)|1981|`pc88`|.d88 .u88 .m3u|**retroarch:** quasi88 (default)
| +|NEC|PC-9800 (pc-9800)|1983|`pc98`|.d98 .zip .fdi .fdd .2hd .tfd .d88 .hdm .xdf .dup .hdi .thd .nhd .hdd .hdn|**retroarch:** np2kai (default)
| +|NEC|PC-FX (pcfx)|1994|`pcfx`|.chd .cue .ccd .toc|**retroarch:** beetle_pcfx (default)
**mednafen:** pcfx
| +|NEC|SuperGrafx (supergrafx)|1989|`sgfx`|.pce .sgx .cue .ccd .chd .zip .7z|**retroarch:** beetle_supergrafx
**retroarch:** beetle_pce
**mednafen:** pce
**mednafen:** pce_fast
| +|NEC|TurboGrafx-16 (tg16)|1989|`tg16`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
**mednafen:** pce
**mednafen:** pce_fast
| +|NEC|TurboGrafx-CD (tg16cd)|1989|`tg16cd`|.cue .ccd .chd .toc .m3u|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
**mednafen:** pce
**mednafen:** pce_fast
| +|Nesbox|TIC-80 (tic-80)|2017|`tic-80`|.tic|**retroarch:** tic80 (default)
| +|Nintendo|Famicom (famicom)|1983|`famicom`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nes
| +|Nintendo|Famicom Disk System (fds)|1986|`fds`|.fds .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nes
| +|Nintendo|Game & Watch (gameandwatch)|1980|`gameandwatch`|.mgw .zip .7z|**retroarch:** gw
**retroarch:** mame
| +|Nintendo|Game Boy (gb)|1989|`gb`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| +|Nintendo|Game Boy (Hacks) (gbh)|1989|`gbh`|.gb .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| +|Nintendo|Game Boy Advance (gba)|2001|`gba`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
**retroarch:** gpsp
**mednafen:** gba
| +|Nintendo|Game Boy Advance (Hacks) (gbah)|2001|`gbah`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
**mednafen:** gba
| +|Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| +|Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| +|Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nesh
| +|Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** mupen64plus
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
| +|Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**drastic:** drastic-sa (default)
**retroarch:** melonds
**retroarch:** desmume
| +|Nintendo|Nintendo Entertainment System (nes)|1985|`nes`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nes
| +|Nintendo|Pokémon Mini (pokemini)|2001|`pokemini`|.min .zip .7z|**retroarch:** pokemini (default)
| +|Nintendo|Satellaview (satellaview)|1995|`satellaview`|.smc .fig .bs .sfc .bsx .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
| +|Nintendo|Super Famicom (sfc)|1990|`sfc`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes_mercury_performance
| +|Nintendo|Super NES MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
**mednafen:** snes_faust
| +|Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes_mercury_performance
| +|Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes_mercury_performance
| +|Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)
**mednafen:** vb
| +|Palm, Inc.|Palm OS (palm)|1996|`palm`|.prc .pqa .img .pdb .zip|**retroarch:** mu (default)
| +|Panasonic|3DO (3do)|1993|`3do`|.iso .bin .chd .cue|**retroarch:** opera (default)
| +|Philips|CD-i (cdi)|1991|`cdi`|.chd .cue .iso|**retroarch:** same_cdi (default)
| +|Philips|VideoPac (videopac)|1978|`videopac`|.bin .zip .7z|**retroarch:** o2em (default)
| +|Sammy|Atomiswave (atomiswave)|2003|`atomiswave`|.lst .bin .dat .zip .7z|**retroarch:** flycast (default)
**flycast:** flycast-sa
| +|Sega|Dreamcast (dreamcast)|1998|`dreamcast`|.cdi .gdi .chd .m3u .cue|**retroarch:** flycast2021
**retroarch:** flycast (default)
**flycast:** flycast-sa
| +|Sega|Game Gear (gamegear)|1990|`gamegear`|.bin .gg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** gg
| +|Sega|Game Gear (Hacks) (ggh)|1990|`gamegearh`|.bin .gg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** gg
| +|Sega|Genesis (genesis)|1989|`genesis`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| +|Sega|Genesis (Hacks) (genh)|1989|`genh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| +|Sega|Master System (mastersystem)|1985|`mastersystem`|.bin .sms .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** sms
| +|Sega|Mega CD (megacd)|1991|`megacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
| +|Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| +|Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| +|Sega|Naomi (naomi)|1998|`naomi`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021
**retroarch:** flycast (default)
**flycast:** flycast-sa
| +|Sega|Saturn (saturn)|1994|`saturn`|.cue .chd .iso .zip|**yabasanshiro:** yabasanshiro-sa (default)
**retroarch:** yabasanshiro
| +|Sega|Sega 32X (sega32x)|1994|`sega32x`|.32x .smd .bin .md .zip .7z|**retroarch:** picodrive (default)
| +|Sega|Sega CD (segacd)|1991|`segacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
| +|Sega|SG-1000 (sg-1000)|1983|`sg-1000`|.bin .sg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
| +|Sega|ST-V (st-v)|1995|`st-v`|.zip .ZIP|| +|Sharp|X1 (x1)|1982|`x1`|.dx1 .2d .2hd .tfd .d88 .88d .hdm .xdf .dup .tap .cmd .zip .7z|**retroarch:** x1 (default)
| +|Sharp|x68000 (x68000)|1987|`x68000`|.dim .img .d88 .hdm .dup .2hd .xdf .hdf .cmd .m3u .zip .7z|**retroarch:** px68k (default)
| +|Sinclair|ZX Spectrum (zxspectrum)|1982|`zxspectrum`|.tzx .tap .z80 .rzx .scl .trd .dsk .zip .7z|**retroarch:** fuse
| +|Sinclair|ZX81 (zx81)|1981|`zx81`|.tzx .p .t81 .zip .7z|**retroarch:** 81 (default)
| +|Smith Engineering|Vectrex (vectrex)|1982|`vectrex`|.bin .gam .vec .zip .7z|**retroarch:** vecx (default)
| +|SNK|Neo Geo (neogeo)|1990|`neogeo`|.7z .zip .neo|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** geolith
| +|SNK|Neo Geo CD (neocd)|1994|`neocd`|.cue .iso .chd|**retroarch:** neocd (default)
**retroarch:** fbneo
| +|SNK|Neo Geo Pocket (ngp)|1998|`ngp`|.ngp .ngc .zip .7z|**retroarch:** beetle_ngp (default)
**retroarch:** race
**mednafen:** ngp
| +|SNK|Neo Geo Pocket Color (ngpc)|1999|`ngpc`|.ngp .ngc .zip .7z|**retroarch:** beetle_ngp (default)
**retroarch:** race
**mednafen:** ngp
| +|Sony|PlayStation (psx)|1994|`psx`|.bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso|**retroarch:** pcsx_rearmed32 (default)
**retroarch:** pcsx_rearmed
**duckstation:** duckstation-sa
**retroarch:** duckstation
**retroarch:** swanstation
| +|Sony|PlayStation Portable (psp)|2004|`psp`|.iso .cso .pbp .chd|**ppsspp:** ppsspp-sa (default)
| +|Sony|PSP Minis (pspminis)|2004|`pspminis`|.iso .cso .pbp|**ppsspp:** ppsspp-sa (default)
**retroarch:** ppsspp
| +|Sun Microsystems|J2ME (j2me)|2002|`j2me`|.jar|**retroarch:** freej2me (default)
| +|Thomson|MO/TO family (TO7, TO7/70, TO8, TO8D, TO9, TO9+, MO5 and MO6) (moto)|1982|`moto`|.fd .sap .k7 .m7 .m5 .rom|**retroarch:** theodore (default)
| +|Various|CHIP-8 / S-CHIP / XO-CHIP (chip-8)|1978|`chip-8`|.ch8 .sc8 .xo8|**retroarch:** jaxe (default)
| +|Various|EasyRPG (easyrpg)|2003|`easyrpg`|.zip .easyrpg .ldb|**retroarch:** easyrpg (default)
| +|Various|OpenBOR (openbor)|2003|`openbor`|.pak|**OpenBOR:** OpenBOR (default)
| +|Various|ScummVM (scummvm)|2001|`games`|.sh .svm .scummvm|**scummvmsa:** scummvm (default)
**retroarch:** scummvm
| +|Various|Vircon32 (vircon32)|2021|`vircon32`|.v32|**retroarch:** vircon32 (default)
| +|Watara|Supervision (supervision)|1992|`supervision`|.sv .zip .7z|**retroarch:** potator (default)
| +|Welback Holdings|Mega Duck (megaduck)|1993|`megaduck`|.bin .zip .7z|**retroarch:** sameduck (default)
| diff --git a/packages/apps/gamecontrollerdb/config/gamecontrollerdb.txt b/packages/apps/gamecontrollerdb/config/gamecontrollerdb.txt index 8e9abe7f3..ccf3b29ca 100644 --- a/packages/apps/gamecontrollerdb/config/gamecontrollerdb.txt +++ b/packages/apps/gamecontrollerdb/config/gamecontrollerdb.txt @@ -14,3 +14,4 @@ 03001354474f2d556c74726120476100,GO-Ultra Gamepad,platform:Linux,a:b1,b:b0,dpdown:b15,dpleft:b16,guide:b11,+lefty:+a1,-leftx:-a0,+leftx:+a0,-lefty:-a1,leftshoulder:b5,leftstick:b12,lefttrigger:b7,dpright:b17,+righty:+a3,-rightx:-a2,+rightx:+a2,-righty:-a3,rightshoulder:b6,rightstick:b13,righttrigger:b8,back:b9,start:b10,dpup:b14,x:b3,y:b4, 1900d632010000000100000000010000,rg_arc_joypad,platform:Linux,x:b4,a:b0,b:b1,y:b3,back:b10,start:b11,dpleft:b14,dpdown:b13,dpright:b15,dpup:b12,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,righttrigger:b9,rightstick:b2,leftstick:b5,platform:Linux, 0300879bfeca00000550000011010000,CM5 Gamepad,platform:Linux,a:b1,b:b0,x:b3,y:b2,back:b5,guide:b14,start:b4,leftstick:b12,rightstick:b13,leftshoulder:b11,rightshoulder:b10,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7, +19007b94010000000100000000010000,gpio-keys-gamepad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b8,guide:b10,start:b9,dpleft:b13,dpdown:b12,dpright:b14,dpup:b11,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7, diff --git a/packages/apps/gamecontrollerdb/package.mk b/packages/apps/gamecontrollerdb/package.mk index 9464cbe22..1ca56f15e 100644 --- a/packages/apps/gamecontrollerdb/package.mk +++ b/packages/apps/gamecontrollerdb/package.mk @@ -20,6 +20,5 @@ makeinstall_target() { then cat ${PKG_DIR}/config/gamecontrollerdb.txt >${INSTALL}/usr/config/SDL-GameControllerDB/gamecontrollerdb.txt fi - sed -i '/RetroGame Joypad/d' ${PKG_BUILD}/gamecontrollerdb.txt cat ${PKG_BUILD}/gamecontrollerdb.txt >>${INSTALL}/usr/config/SDL-GameControllerDB/gamecontrollerdb.txt } diff --git a/packages/apps/portmaster/sources/control.txt b/packages/apps/portmaster/sources/control.txt index 204cb4b91..d2f8807be 100644 --- a/packages/apps/portmaster/sources/control.txt +++ b/packages/apps/portmaster/sources/control.txt @@ -60,6 +60,16 @@ case "${QUIRK_DEVICE}" in lres="N" sticks="2" ;; + "Anbernic RG35XX H") + profile="anbernic" + lres="N" + sticks="2" + ;; + "Anbernic RG35XX Plus") + profile="anbernic" + lres="N" + sticks="0" + ;; *) profile="rg552" lres="N" diff --git a/packages/audio/libao/package.mk b/packages/audio/libao/package.mk index d1e8dae9c..fb603851b 100644 --- a/packages/audio/libao/package.mk +++ b/packages/audio/libao/package.mk @@ -11,3 +11,6 @@ PKG_LONGDESC="Libao is a cross-platform audio library that allows programs to ou audio using a simple API on a wide variety of platforms." PKG_BUILD_FLAGS="+pic" +pre_configure_target() { +export CFLAGS="${CFLAGS} -Wno-implicit-function-declaration" +} diff --git a/packages/audio/pipewire/package.mk b/packages/audio/pipewire/package.mk index 63e69068d..75649cf52 100644 --- a/packages/audio/pipewire/package.mk +++ b/packages/audio/pipewire/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) PKG_NAME="pipewire" -PKG_VERSION="1.1.81" +PKG_VERSION="1.1.83" PKG_LICENSE="LGPL" PKG_SITE="https://pipewire.org" PKG_URL="https://github.com/PipeWire/pipewire/archive/${PKG_VERSION}.tar.gz" @@ -80,6 +80,7 @@ PKG_MESON_OPTS_TARGET="-Ddocs=disabled \ -Dlegacy-rtkit=false" pre_configure_target() { + export TARGET_CFLAGS="${TARGET_CFLAGS} -Wno-error=float-conversion" export TARGET_LDFLAGS="${TARGET_LDFLAGS} -lncursesw -ltinfow" } diff --git a/packages/compat/box64/package.mk b/packages/compat/box64/package.mk index f4ee4cc88..6f164c150 100644 --- a/packages/compat/box64/package.mk +++ b/packages/compat/box64/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="box64" -PKG_VERSION="5b5723c5a50a607331787a14081c47ba8e7d9400" +PKG_VERSION="b26ae5886ddc7d0d84595fb5b94878f50d488d42" PKG_ARCH="aarch64" PKG_LICENSE="MIT" PKG_SITE="https://github.com/ptitSeb/box64" diff --git a/packages/compat/box86/package.mk b/packages/compat/box86/package.mk index 63373fa07..d186bf1fb 100644 --- a/packages/compat/box86/package.mk +++ b/packages/compat/box86/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="box86" -PKG_VERSION="f5f1e1413d167eb0c4e2aa9a65ab251ce1e142c4" +PKG_VERSION="c5bccdf300ff5017b7225e49a934c395c51f297b" PKG_LICENSE="MIT" PKG_SITE="https://github.com/ptitSeb/box86" PKG_URL="${PKG_SITE}.git" diff --git a/packages/compat/wine/package.mk b/packages/compat/wine/package.mk index 9a5bdf669..8ab1b3757 100644 --- a/packages/compat/wine/package.mk +++ b/packages/compat/wine/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2024-present JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="wine" -PKG_VERSION="9.11" +PKG_VERSION="9.13" PKG_LICENSE="MIT" PKG_SITE="https://github.com/Kron4ek/Wine-Builds" PKG_URL="${PKG_SITE}/releases/download/${PKG_VERSION}/wine-${PKG_VERSION}-x86.tar.xz" diff --git a/packages/compress/unzip/package.mk b/packages/compress/unzip/package.mk index 1fb825895..ab8342714 100644 --- a/packages/compress/unzip/package.mk +++ b/packages/compress/unzip/package.mk @@ -3,10 +3,10 @@ PKG_NAME="unzip" PKG_VERSION="60" -PKG_SHA256="036d96991646d0449ed0aa952e4fbe21b476ce994abc276e49d30e686708bd37" +PKG_SHA256="002da7dccff8314cc6077794343990353935efbd3623a3c457ed0d8a0c1fbea1" PKG_LICENSE="OSS" PKG_SITE="http://www.info-zip.org/pub/infozip/" -PKG_URL="https://sourceforge.net/projects/infozip/files/UnZip%206.x%20(latest)/UnZip%206.0/unzip60.tar.gz" +PKG_URL="https://github.com/madler/unzip/archive/0b82c20ac7375b522215b567174f370be89a4b12.tar.gz" PKG_DEPENDS_TARGET="toolchain" PKG_LONGDESC="UnZip is an extraction utility for archives compressed in .zip format." PKG_TOOLCHAIN="manual" diff --git a/packages/compress/unzip/patches/fix-compile-with-gcc14.patch b/packages/compress/unzip/patches/fix-compile-with-gcc14.patch new file mode 100644 index 000000000..6ee7a5180 --- /dev/null +++ b/packages/compress/unzip/patches/fix-compile-with-gcc14.patch @@ -0,0 +1,45 @@ +--- a/timezone.c 2004-11-13 08:35:12.000000000 +0000 ++++ b/timezone.c 2024-05-01 09:22:13.780112533 +0000 +@@ -39,6 +39,7 @@ + + #include "zip.h" + #include "timezone.h" ++#include + #include + #include + +--- a/unix/configure 2008-06-20 03:32:20.000000000 +0000 ++++ b/unix/configure 2024-05-01 09:27:12.149292690 +0000 +@@ -544,7 +595,7 @@ + echo Check for errno declaration + cat > conftest.c << _EOF_ + #include +-main() ++int main() + { + errno = 0; + return 0; +@@ -556,6 +607,7 @@ + + echo Check for directory libraries + cat > conftest.c << _EOF_ ++#include + int main() { return closedir(opendir(".")); } + _EOF_ + +@@ -621,11 +673,13 @@ + + echo Check for valloc + cat > conftest.c << _EOF_ +-main() ++#include ++int main() + { + #ifdef MMAP + valloc(); + #endif ++ return 0; + } + _EOF_ + $CC ${CFLAGS} -c conftest.c > /dev/null 2>/dev/null + diff --git a/packages/compress/zip/patches/fix-compile-with-gcc14.patch b/packages/compress/zip/patches/fix-compile-with-gcc14.patch new file mode 100644 index 000000000..a4e970f74 --- /dev/null +++ b/packages/compress/zip/patches/fix-compile-with-gcc14.patch @@ -0,0 +1,122 @@ +--- a/timezone.c 2004-11-13 08:35:12.000000000 +0000 ++++ b/timezone.c 2024-05-01 09:22:13.780112533 +0000 +@@ -39,6 +39,7 @@ + + #include "zip.h" + #include "timezone.h" ++#include + #include + #include + +--- a/unix/configure 2008-06-20 03:32:20.000000000 +0000 ++++ b/unix/configure 2024-05-01 09:27:12.149292690 +0000 +@@ -509,17 +509,68 @@ + # Check for missing functions + # add NO_'function_name' to flags if missing + +-for func in rmdir strchr strrchr rename mktemp mktime mkstemp +-do +- echo Check for $func +- echo "int main(){ $func(); return 0; }" > conftest.c +- $CC $BFLAG -o conftest conftest.c >/dev/null 2>/dev/null +- [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_`echo $func | tr '[a-z]' '[A-Z]'`" +-done ++echo Check for rmdir ++cat > conftest.c << _EOF_ ++#include ++int main() { rmdir(""); return 0; } ++_EOF_ ++$CC -o conftest conftest.c >/dev/null 2>/dev/null ++[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_RMDIR" ++ ++echo Check for strchr ++cat > conftest.c << _EOF_ ++#include ++int main() { strchr("", 0); return 0; } ++_EOF_ ++$CC -o conftest conftest.c >/dev/null 2>/dev/null ++[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_STRCHR" ++ ++echo Check for strrchr ++cat > conftest.c << _EOF_ ++#include ++int main() { strrchr("",0); return 0; } ++_EOF_ ++$CC -o conftest conftest.c >/dev/null 2>/dev/null ++[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_STRRCHR" ++ ++echo Check for rename ++cat > conftest.c << _EOF_ ++#include ++int main() { rename("",""); return 0; } ++_EOF_ ++$CC -o conftest conftest.c >/dev/null 2>/dev/null ++[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_RENAME" ++ ++echo Check for mktemp ++cat > conftest.c << _EOF_ ++#include ++int main() { mktemp(""); return 0; } ++_EOF_ ++$CC -o conftest conftest.c >/dev/null 2>/dev/null ++[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_MKTEMP" ++ ++echo Check for mktime ++cat > conftest.c << _EOF_ ++#include ++int main() { struct tm *t; mktime(t); return 0; } ++_EOF_ ++$CC -o conftest conftest.c >/dev/null 2>/dev/null ++[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_MKTIME" ++ ++echo Check for mkstemp ++cat > conftest.c << _EOF_ ++#include ++int main() { mkstemp(""); return 0; } ++_EOF_ ++$CC -o conftest conftest.c >/dev/null 2>/dev/null ++[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_MKSTEMP" + + + echo Check for memset +-echo "int main(){ char k; memset(&k,0,0); return 0; }" > conftest.c ++cat > conftest.c << _EOF_ ++#include ++int main() { char k; memset(&k,0,0); return 0; } ++_EOF_ + $CC -o conftest conftest.c >/dev/null 2>/dev/null + [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DZMEM" + +@@ -544,7 +595,7 @@ + echo Check for errno declaration + cat > conftest.c << _EOF_ + #include +-main() ++int main() + { + errno = 0; + return 0; +@@ -556,6 +607,7 @@ + + echo Check for directory libraries + cat > conftest.c << _EOF_ ++#include + int main() { return closedir(opendir(".")); } + _EOF_ + +@@ -621,11 +673,13 @@ + + echo Check for valloc + cat > conftest.c << _EOF_ +-main() ++#include ++int main() + { + #ifdef MMAP + valloc(); + #endif ++ return 0; + } + _EOF_ + $CC ${CFLAGS} -c conftest.c > /dev/null 2>/dev/null + diff --git a/packages/debug/libunwind/package.mk b/packages/debug/libunwind/package.mk index 8d1a15e9f..60712210f 100644 --- a/packages/debug/libunwind/package.mk +++ b/packages/debug/libunwind/package.mk @@ -2,11 +2,11 @@ # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) PKG_NAME="libunwind" -PKG_VERSION="1.6.2" -PKG_SHA256="4a6aec666991fb45d0889c44aede8ad6eb108071c3554fcdff671f9c94794976" +PKG_VERSION="1.8.1" +PKG_SHA256="ddf0e32dd5fafe5283198d37e4bf9decf7ba1770b6e7e006c33e6df79e6a6157" PKG_LICENSE="GPL" -PKG_SITE="http://www.nongnu.org/libunwind/" -PKG_URL="http://download.savannah.nongnu.org/releases/libunwind/libunwind-${PKG_VERSION}.tar.gz" +PKG_SITE="https://github.com/libunwind/libunwind" +PKG_URL="${PKG_SITE}/releases/download/v${PKG_VERSION}/libunwind-${PKG_VERSION}.tar.gz" PKG_DEPENDS_TARGET="toolchain zlib" PKG_LONGDESC="library to determine the call-chain of a program" PKG_BUILD_FLAGS="+pic" diff --git a/packages/debug/strace/package.mk b/packages/debug/strace/package.mk index baa0d0ec8..85803e368 100644 --- a/packages/debug/strace/package.mk +++ b/packages/debug/strace/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="strace" -PKG_VERSION="6.6" +PKG_VERSION="6.9" PKG_LICENSE="BSD" PKG_SITE="https://strace.io/" PKG_URL="https://strace.io/files/${PKG_VERSION}/strace-${PKG_VERSION}.tar.xz" diff --git a/packages/devel/cmake/package.mk b/packages/devel/cmake/package.mk index b60f0a638..9f84db6d9 100644 --- a/packages/devel/cmake/package.mk +++ b/packages/devel/cmake/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="cmake" -PKG_VERSION="3.27.3" +PKG_VERSION="3.29.6" PKG_LICENSE="BSD" PKG_SITE="https://cmake.org/" PKG_URL="https://cmake.org/files/v$(get_pkg_version_maj_min)/cmake-${PKG_VERSION}.tar.gz" diff --git a/packages/devel/fakeroot/package.mk b/packages/devel/fakeroot/package.mk index b514c55aa..bd741824b 100644 --- a/packages/devel/fakeroot/package.mk +++ b/packages/devel/fakeroot/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv) PKG_NAME="fakeroot" -PKG_VERSION="1.35" +PKG_VERSION="1.35.1" PKG_LICENSE="GPL3" PKG_SITE="https://salsa.debian.org/clint/fakeroot" PKG_URL="http://deb.debian.org/debian/pool/main/f/fakeroot/fakeroot_${PKG_VERSION}.orig.tar.gz" diff --git a/packages/devel/libffi/package.mk b/packages/devel/libffi/package.mk index 961011d0f..513e2c024 100644 --- a/packages/devel/libffi/package.mk +++ b/packages/devel/libffi/package.mk @@ -3,8 +3,8 @@ # Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv) PKG_NAME="libffi" -PKG_VERSION="3.4.4" -PKG_SHA256="d66c56ad259a82cf2a9dfc408b32bf5da52371500b84745f7fb8b645712df676" +PKG_VERSION="3.4.6" +PKG_SHA256="b0dea9df23c863a7a50e825440f3ebffabd65df1497108e5d437747843895a4e" PKG_LICENSE="GPL" PKG_SITE="http://sourceware.org/${PKG_NAME}/" PKG_URL="https://github.com/libffi/libffi/releases/download/v${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.gz" diff --git a/packages/devel/rapidjson/package.mk b/packages/devel/rapidjson/package.mk index bfaf3a9b7..d8f18c79a 100644 --- a/packages/devel/rapidjson/package.mk +++ b/packages/devel/rapidjson/package.mk @@ -2,11 +2,11 @@ # Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) PKG_NAME="rapidjson" -PKG_VERSION="1.1.0" -PKG_SHA256="bf7ced29704a1e696fbccf2a2b4ea068e7774fa37f6d7dd4039d0787f8bed98e" +PKG_VERSION="ab1842a2dae061284c0a62dca1cc6d5e7e37e346" +PKG_SHA256="208f551cd08586a0a642cbd8d2c59783419c8a7e4f7552e13a19bc4e806403a9" PKG_LICENSE="MIT" PKG_SITE="https://github.com/miloyip/rapidjson" -PKG_URL="https://github.com/miloyip/rapidjson/archive/v${PKG_VERSION}.tar.gz" +PKG_URL="https://github.com/Tencent/rapidjson/archive/${PKG_VERSION}.zip" PKG_DEPENDS_TARGET="toolchain" PKG_LONGDESC="A fast JSON parser/generator for C++ with both SAX/DOM style API" diff --git a/packages/devel/rapidjson/patches/rapidjson-0001-remove_custom_cxx_flags.patch b/packages/devel/rapidjson/patches/rapidjson-0001-remove_custom_cxx_flags.patch deleted file mode 100644 index 51434ff52..000000000 --- a/packages/devel/rapidjson/patches/rapidjson-0001-remove_custom_cxx_flags.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index ceda71b..efb259e 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -50,7 +50,6 @@ if(CCACHE_FOUND) - endif(CCACHE_FOUND) - - if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") -- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -Wextra -Werror") - if (RAPIDJSON_BUILD_CXX11) - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7.0") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") -@@ -73,7 +72,6 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - endif() - endif() - elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") -- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -Wextra -Werror -Wno-missing-field-initializers") - if (RAPIDJSON_BUILD_CXX11) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - endif() -@@ -88,7 +86,6 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - endif() - endif() - elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") -- add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") - endif() - - diff --git a/packages/emulators/libretro/81-lr/package.mk b/packages/emulators/libretro/81-lr/package.mk index 8d06a6721..da0f83e96 100644 --- a/packages/emulators/libretro/81-lr/package.mk +++ b/packages/emulators/libretro/81-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="81-lr" -PKG_VERSION="525d5c18f1ff3fc54c37e083a475225d9179d59d" +PKG_VERSION="c0d56c5bc5cd48715b4e83cbb3d241a6bed94c2a" PKG_LICENSE="GPLv3" PKG_SITE="https://github.com/libretro/81-libretro" PKG_URL="https://github.com/libretro/81-libretro/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/atari800-lr/package.mk b/packages/emulators/libretro/atari800-lr/package.mk index 363687501..a1c8221ca 100644 --- a/packages/emulators/libretro/atari800-lr/package.mk +++ b/packages/emulators/libretro/atari800-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="atari800-lr" -PKG_VERSION="8bfa3b80f6a2db365dfd1e8a6c06b7b0844327cf" +PKG_VERSION="50141a6bf1a069abd86dd8c53aa4031f3f7cfbd1" PKG_LICENSE="GPL" PKG_SITE="https://github.com/libretro/libretro-atari800" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/libretro/beetle-lynx-lr/package.mk b/packages/emulators/libretro/beetle-lynx-lr/package.mk index dd82fa7b6..2fe73e986 100644 --- a/packages/emulators/libretro/beetle-lynx-lr/package.mk +++ b/packages/emulators/libretro/beetle-lynx-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-lynx-lr" -PKG_VERSION="48909ddd1aba4de034d9c1da70c460b1724daa3b" +PKG_VERSION="d982616da671c3dd9c9271dd9d95c5c7d1393191" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/beetle-lynx-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/beetle-ngp-lr/package.mk b/packages/emulators/libretro/beetle-ngp-lr/package.mk index dc5ed4150..dc2855e6c 100644 --- a/packages/emulators/libretro/beetle-ngp-lr/package.mk +++ b/packages/emulators/libretro/beetle-ngp-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-ngp-lr" -PKG_VERSION="673c3d924ff33d71c6a342b170eff5359244df1f" +PKG_VERSION="09869bb6032610714e22d09b95a81ea291937a8f" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/beetle-ngp-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/beetle-pce-fast-lr/package.mk b/packages/emulators/libretro/beetle-pce-fast-lr/package.mk index 87055e845..6b562c005 100644 --- a/packages/emulators/libretro/beetle-pce-fast-lr/package.mk +++ b/packages/emulators/libretro/beetle-pce-fast-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-pce-fast-lr" -PKG_VERSION="414149d335ce2a3284db6cdffbb8ed2ce42dbe5f" +PKG_VERSION="3f1c0a14b16802998f4f32ea27b0c8ad81d3b9e7" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/beetle-pce-fast-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/beetle-pce-lr/package.mk b/packages/emulators/libretro/beetle-pce-lr/package.mk index ee8de3ed5..80686de00 100644 --- a/packages/emulators/libretro/beetle-pce-lr/package.mk +++ b/packages/emulators/libretro/beetle-pce-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-pce-lr" -PKG_VERSION="0eb4b423452da40dbf4393e09d4126c3090a1210" +PKG_VERSION="d921176765d58da24d555bc02b73411a89b73976" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/beetle-pce-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/beetle-pcfx-lr/package.mk b/packages/emulators/libretro/beetle-pcfx-lr/package.mk index 2149ccf9d..d77e21324 100644 --- a/packages/emulators/libretro/beetle-pcfx-lr/package.mk +++ b/packages/emulators/libretro/beetle-pcfx-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-pcfx-lr" -PKG_VERSION="47c355b6a515aef6dc57f57df1535570108a0e21" +PKG_VERSION="3a4e8d3665816a2938ea5029f05bc1537f0cbe40" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/beetle-pcfx-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/beetle-supergrafx-lr/package.mk b/packages/emulators/libretro/beetle-supergrafx-lr/package.mk index e0ed17722..0744ab895 100644 --- a/packages/emulators/libretro/beetle-supergrafx-lr/package.mk +++ b/packages/emulators/libretro/beetle-supergrafx-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-supergrafx-lr" -PKG_VERSION="e3f68c1311d4684a5a59d3d1662d5c4f32662c02" +PKG_VERSION="dfff1f9c032b9556a070ae6848d1e28df3023e4d" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/beetle-supergrafx-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/beetle-vb-lr/package.mk b/packages/emulators/libretro/beetle-vb-lr/package.mk index 339f184b1..a3949cf8e 100644 --- a/packages/emulators/libretro/beetle-vb-lr/package.mk +++ b/packages/emulators/libretro/beetle-vb-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-vb-lr" -PKG_VERSION="9d1bd03f21dac7897f65269e1095496331efce8b" +PKG_VERSION="4395c809d407c8b5a80b0d0ee87783aad5fedf8f" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/beetle-vb-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/beetle-wswan-lr/package.mk b/packages/emulators/libretro/beetle-wswan-lr/package.mk index 2c7c50025..d3aac6f36 100644 --- a/packages/emulators/libretro/beetle-wswan-lr/package.mk +++ b/packages/emulators/libretro/beetle-wswan-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-wswan-lr" -PKG_VERSION="32bf70a3032a138baa969c22445f4b7821632c30" +PKG_VERSION="440e9228592a3f603d7d09e8bee707b0163f545f" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/beetle-wswan-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/bluemsx-lr/package.mk b/packages/emulators/libretro/bluemsx-lr/package.mk index 1d5530527..704541bf7 100644 --- a/packages/emulators/libretro/bluemsx-lr/package.mk +++ b/packages/emulators/libretro/bluemsx-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="bluemsx-lr" -PKG_VERSION="df29d437204af0a5158b6ecb2d6b68296f8d979a" +PKG_VERSION="824690b5ac997ec9694e8db1595186459bb3b652" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/blueMSX-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/boom3-lr/package.mk b/packages/emulators/libretro/boom3-lr/package.mk index aa8a5b570..d235d9351 100644 --- a/packages/emulators/libretro/boom3-lr/package.mk +++ b/packages/emulators/libretro/boom3-lr/package.mk @@ -25,8 +25,4 @@ makeinstall_target() { mkdir -p ${INSTALL}/usr/lib/libretro cp -v ${PKG_BUILD}/neo/boom3_libretro.so ${INSTALL}/usr/lib/libretro/ cp -v ${PKG_BUILD}/neo/boom3_xp_libretro.so ${INSTALL}/usr/lib/libretro/ - - mkdir -p ${INSTALL}/usr/config/idtech - cp -rf ${PKG_DIR}/scripts/* ${INSTALL}/usr/config/idtech/ - chmod 0755 ${INSTALL}/usr/config/idtech/* } diff --git a/packages/emulators/libretro/boom3-lr/scripts/Doom 3 - Resurrection of Evil.sh b/packages/emulators/libretro/boom3-lr/scripts/Doom 3 - Resurrection of Evil.sh deleted file mode 100644 index 89472908b..000000000 --- a/packages/emulators/libretro/boom3-lr/scripts/Doom 3 - Resurrection of Evil.sh +++ /dev/null @@ -1,4 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) - -/usr/bin/retroarch -L /usr/lib/libretro/boom3_xp_libretro.so /storage/roms/idtech/doom3/d3xp/pak000.pk4 diff --git a/packages/emulators/libretro/boom3-lr/scripts/Doom 3.sh b/packages/emulators/libretro/boom3-lr/scripts/Doom 3.sh deleted file mode 100644 index 203c04d6a..000000000 --- a/packages/emulators/libretro/boom3-lr/scripts/Doom 3.sh +++ /dev/null @@ -1,4 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) - -/usr/bin/retroarch -L /usr/lib/libretro/boom3_libretro.so /storage/roms/idtech/doom3/base/pak000.pk4 diff --git a/packages/emulators/libretro/cap32-lr/package.mk b/packages/emulators/libretro/cap32-lr/package.mk index 722edf660..d25197f8d 100644 --- a/packages/emulators/libretro/cap32-lr/package.mk +++ b/packages/emulators/libretro/cap32-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="cap32-lr" -PKG_VERSION="0d1c8667a409cf284aea98c1ac6786bbc826fdf1" +PKG_VERSION="bae879df46f7f22951efda256c19b1692b77ef3e" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/libretro-cap32" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/core-info/package.mk b/packages/emulators/libretro/core-info/package.mk index c1cc4cbb9..55f1e3df8 100644 --- a/packages/emulators/libretro/core-info/package.mk +++ b/packages/emulators/libretro/core-info/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="core-info" -PKG_VERSION="60d03476d002c92fe3d5dfffb548e5247a5a78a8" +PKG_VERSION="50aa833e885e2132bad1e919ba2ebe687cf64b91" PKG_LICENSE="GPL" PKG_SITE="https://github.com/libretro/libretro-core-info" PKG_URL="https://github.com/libretro/libretro-core-info/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/crocods-lr/package.mk b/packages/emulators/libretro/crocods-lr/package.mk index d0ce63138..e0971549e 100644 --- a/packages/emulators/libretro/crocods-lr/package.mk +++ b/packages/emulators/libretro/crocods-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="crocods-lr" -PKG_VERSION="f1b4b91291ba1e8e7c0be02269cd0d75c7fa71b9" +PKG_VERSION="e80f49c21c6788617e57ab86e9442a162d24f38a" PKG_LICENSE="MIT" PKG_SITE="https://github.com/libretro/libretro-crocods" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/daphne-lr/package.mk b/packages/emulators/libretro/daphne-lr/package.mk index c27fc188f..7af8d89a2 100644 --- a/packages/emulators/libretro/daphne-lr/package.mk +++ b/packages/emulators/libretro/daphne-lr/package.mk @@ -10,6 +10,10 @@ PKG_DEPENDS_TARGET="toolchain" PKG_LONGDESC="This is a Daphne core" PKG_TOOLCHAIN="make" +pre_configure_target() { + export CFLAGS="${CFLAGS} -Wno-use-after-free -Wno-unused-function -Wno-maybe-uninitialized -Wno-unused-variable -Wno-implicit-function-declaration -Wno-builtin-declaration-mismatch -Wno-unknown-pragmas -Wno-pointer-to-int-cast -Wno-pedantic -Wno-error=incompatible-pointer-types" +} + makeinstall_target() { mkdir -p ${INSTALL}/usr/lib/libretro cp daphne_libretro.so ${INSTALL}/usr/lib/libretro/ diff --git a/packages/emulators/libretro/dolphin-lr/package.mk b/packages/emulators/libretro/dolphin-lr/package.mk index 4dc95f6f6..21f67262c 100644 --- a/packages/emulators/libretro/dolphin-lr/package.mk +++ b/packages/emulators/libretro/dolphin-lr/package.mk @@ -35,7 +35,15 @@ then PKG_CONFIGURE_OPTS_TARGET+=" -DENABLE_VULKAN=ON" fi -pre_configure_target() { +pre_configure_target() + + if [ "${ARCH}" = "aarch64" ]; then + # This is only needed for armv8.2-a targets where we don't use this flag + # as it prohibits the use of LSE-instructions, this is a package bug most likely + export CFLAGS="${CFLAGS} -mno-outline-atomics" + export CXXFLAGS="${CXXFLAGS} -mno-outline-atomics" + fi +{ PKG_CMAKE_OPTS_TARGET+=" -DENABLE_EGL=ON \ -DUSE_SHARED_ENET=OFF \ -DUSE_UPNP=ON \ diff --git a/packages/emulators/libretro/dolphin-lr/patches/fix-gcc14.patch b/packages/emulators/libretro/dolphin-lr/patches/fix-gcc14.patch new file mode 100644 index 000000000..8d01e20b1 --- /dev/null +++ b/packages/emulators/libretro/dolphin-lr/patches/fix-gcc14.patch @@ -0,0 +1,27 @@ +From b6c97e3158554f29c1467011e8d50ad2b2350bc1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Piotr=20Pawe=C5=82=20Stefaniak?= + <3462925+pstef@users.noreply.github.com> +Date: Sat, 11 May 2024 19:12:53 +0200 +Subject: [PATCH] Fix build on some systems +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The complaint was: error: ‘reverse’ is not a member of ‘std’ +--- + Source/Core/Core/Debugger/PPCDebugInterface.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/Core/Core/Debugger/PPCDebugInterface.cpp b/Source/Core/Core/Debugger/PPCDebugInterface.cpp +index f44c20d7f28c..1ebd0f8d5b48 100644 +--- a/Source/Core/Core/Debugger/PPCDebugInterface.cpp ++++ b/Source/Core/Core/Debugger/PPCDebugInterface.cpp +@@ -4,6 +4,7 @@ + + #include "Core/Debugger/PPCDebugInterface.h" + ++#include + #include + #include + #include + diff --git a/packages/emulators/libretro/dosbox-pure-lr/package.mk b/packages/emulators/libretro/dosbox-pure-lr/package.mk index c22e08b14..42d4e04df 100644 --- a/packages/emulators/libretro/dosbox-pure-lr/package.mk +++ b/packages/emulators/libretro/dosbox-pure-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="dosbox-pure-lr" -PKG_VERSION="1e3cb35355769467ca7be192e740eb9728ecc88c" +PKG_VERSION="16a5f9cb92653426e1586cd4b0e52663b394dbac" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/schellingb/dosbox-pure" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/libretro/ecwolf-lr/package.mk b/packages/emulators/libretro/ecwolf-lr/package.mk index d05ac0d50..d778c786c 100644 --- a/packages/emulators/libretro/ecwolf-lr/package.mk +++ b/packages/emulators/libretro/ecwolf-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="ecwolf-lr" -PKG_VERSION="18eca17c2d634b154824e0782c6cbbe0a2c9ea76" +PKG_VERSION="71ec64cf98ba0a2a94e2fede560f1b435761b36d" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/ecwolf" PKG_URL="${PKG_SITE}.git" @@ -18,6 +18,10 @@ fi PKG_MAKE_OPTS_TARGET="-C src/libretro" +pre_configure_target() { + CXXFLAGS="${CXXFLAGS} -Wno-error=int-conversion" +} + pre_make_target() { cd ${PKG_BUILD} } diff --git a/packages/emulators/libretro/ecwolf-lr/patches/01-fix-gcc14.patch b/packages/emulators/libretro/ecwolf-lr/patches/01-fix-gcc14.patch new file mode 100644 index 000000000..c1a5cac14 --- /dev/null +++ b/packages/emulators/libretro/ecwolf-lr/patches/01-fix-gcc14.patch @@ -0,0 +1,13 @@ +diff --git a/src/tmemory.h b/src/tmemory.h +index 75bee43..dc544b2 100644 +--- a/src/tmemory.h ++++ b/src/tmemory.h +@@ -460,7 +460,7 @@ public: + Reference(); + } + +- void Swap(const Self &other) ++ void Swap(Self &other) + { + T *oldptr = p; + TSharedPtrRef *oldref = r; diff --git a/packages/emulators/libretro/fbalpha2012-lr/package.mk b/packages/emulators/libretro/fbalpha2012-lr/package.mk index 781e8e7fa..4672569eb 100644 --- a/packages/emulators/libretro/fbalpha2012-lr/package.mk +++ b/packages/emulators/libretro/fbalpha2012-lr/package.mk @@ -28,6 +28,10 @@ PKG_DEPENDS_TARGET="toolchain" PKG_LONGDESC="Port of Final Burn Alpha 2012 to Libretro" PKG_TOOLCHAIN="make" +pre_configure_target() { +export CFLAGS="${CFLAGS} -Wno-maybe-uninitialized -Wno-unused-function -Wno-error=incompatible-pointer-types" +} + make_target() { cd svn-current/trunk make -f makefile.libretro diff --git a/packages/emulators/libretro/fbneo-lr/package.mk b/packages/emulators/libretro/fbneo-lr/package.mk index 9bceb14e6..7673036f7 100644 --- a/packages/emulators/libretro/fbneo-lr/package.mk +++ b/packages/emulators/libretro/fbneo-lr/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="fbneo-lr" -PKG_VERSION="634d207adade213bbe83684be2a183d158f56e52" +PKG_VERSION="981bd35179e0b4dc4471bdd4c8f093b206ed578b" PKG_LICENSE="Non-commercial" PKG_SITE="https://github.com/libretro/FBNeo" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/fceumm-lr/package.mk b/packages/emulators/libretro/fceumm-lr/package.mk index 8c2eb1f9b..09b994131 100644 --- a/packages/emulators/libretro/fceumm-lr/package.mk +++ b/packages/emulators/libretro/fceumm-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="fceumm-lr" -PKG_VERSION="ac7ab8a99fc7bca578b3e39faa3a5159fb5d39ea" +PKG_VERSION="744f5d9c8b976a431dcb5417a520c0c709b17fbe" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/libretro-fceumm" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/flycast2021-lr/package.mk b/packages/emulators/libretro/flycast2021-lr/package.mk index 0dce885a0..e9c299639 100644 --- a/packages/emulators/libretro/flycast2021-lr/package.mk +++ b/packages/emulators/libretro/flycast2021-lr/package.mk @@ -40,6 +40,7 @@ if [ "${OPENGLES_SUPPORT}" = yes ]; then fi pre_configure_target() { + export CXXFLAGS="${CXXFLAGS} -Wno-implicit-function-declaration" sed -i 's/define CORE_OPTION_NAME "reicast"/define CORE_OPTION_NAME "flycast2021"/g' core/libretro/libretro_core_option_defines.h sed -i 's/\-O[23]/-Ofast/' ${PKG_BUILD}/Makefile PKG_MAKE_OPTS_TARGET="${PKG_MAKE_OPTS_TARGET} ARCH=${TARGET_ARCH} HAVE_OPENMP=1 GIT_VERSION=${PKG_VERSION:0:7} HAVE_LTCG=0" @@ -51,6 +52,9 @@ pre_make_target() { RK3*|S922X) PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}" ;; + H700) + PKG_MAKE_OPTS_TARGET+=" platform=RK3326" + ;; esac } diff --git a/packages/emulators/libretro/flycast2021-lr/patches/01-fix-gcc14.patch b/packages/emulators/libretro/flycast2021-lr/patches/01-fix-gcc14.patch new file mode 100644 index 000000000..6b5bf785a --- /dev/null +++ b/packages/emulators/libretro/flycast2021-lr/patches/01-fix-gcc14.patch @@ -0,0 +1,28 @@ +diff --git a/core/deps/libzip/mkstemp.c b/core/deps/libzip/mkstemp.c +index 353f3f7..3776f91 100644 +--- a/core/deps/libzip/mkstemp.c ++++ b/core/deps/libzip/mkstemp.c +@@ -43,9 +43,7 @@ + #include + #include + +-#ifdef __APPLE__ + #include +-#endif + + #ifndef O_BINARY + #define O_BINARY 0 +diff --git a/core/deps/libzip/zip_close.c b/core/deps/libzip/zip_close.c +index 88265a0..89bb26d 100644 +--- a/core/deps/libzip/zip_close.c ++++ b/core/deps/libzip/zip_close.c +@@ -42,9 +42,7 @@ + + #include "zipint.h" + +-#ifdef __APPLE__ + #include +-#endif + + static int add_data(struct zip *, struct zip_source *, struct zip_dirent *, + FILE *); diff --git a/packages/emulators/libretro/flycast2021-lr/patches/AMD64/000-build-fix.patch b/packages/emulators/libretro/flycast2021-lr/patches/AMD64/000-build-fix.patch new file mode 100644 index 000000000..5318defc3 --- /dev/null +++ b/packages/emulators/libretro/flycast2021-lr/patches/AMD64/000-build-fix.patch @@ -0,0 +1,30 @@ +diff -rupN flycast2021-lr.orig/core/libretro-common/glsm/glsm.c flycast2021-lr/core/libretro-common/glsm/glsm.c +--- flycast2021-lr.orig/core/libretro-common/glsm/glsm.c 2024-07-08 19:56:17.217751724 +0000 ++++ flycast2021-lr/core/libretro-common/glsm/glsm.c 2024-07-08 20:00:09.491339516 +0000 +@@ -2747,7 +2747,7 @@ static void glsm_state_setup(void) + #endif + + #ifdef CORE +- glGenVertexArrays(1, &gl_state.vao); ++ rglGenVertexArrays(1, &gl_state.vao); + #endif + } + +@@ -2755,7 +2755,7 @@ static void glsm_state_bind(void) + { + unsigned i; + #ifdef CORE +- glBindVertexArray(gl_state.vao); ++ rglBindVertexArray(gl_state.vao); + #endif + glBindBuffer(GL_ARRAY_BUFFER, gl_state.array_buffer); + +@@ -2871,7 +2871,7 @@ static void glsm_state_unbind(void) + { + unsigned i; + #ifdef CORE +- glBindVertexArray(0); ++ rglBindVertexArray(0); + #endif + for (i = 0; i < SGL_CAP_MAX; i ++) + { diff --git a/packages/emulators/libretro/flycast2021-lr/patches/H700/000-platform.patch b/packages/emulators/libretro/flycast2021-lr/patches/H700/000-platform.patch new file mode 100644 index 000000000..2dad924ad --- /dev/null +++ b/packages/emulators/libretro/flycast2021-lr/patches/H700/000-platform.patch @@ -0,0 +1,43 @@ +diff -rupN flycast.orig/Makefile flycast/Makefile +--- flycast.orig/Makefile 2022-06-18 13:29:52.675787687 -0400 ++++ flycast/Makefile 2022-06-18 13:53:23.564624927 -0400 +@@ -403,26 +403,30 @@ else ifeq ($(platform), arm64_cortex_a53 + + ####################################### + +-# ARM64 SM1 Odroid C4 +-else ifeq ($(platform), odroidc4) ++# ARM64 RK3326 ++else ifeq ($(platform), RK3326) + EXT ?= so + TARGET := $(TARGET_NAME)_libretro.$(EXT) + SHARED += -shared -Wl,--version-script=link.T +- LDFLAGS += -Wl,--no-undefined + fpic = -fPIC + LIBS += -lrt + ARM_FLOAT_ABI_HARD = 0 + FORCE_GLES = 1 + SINGLE_PREC_FLAGS = 1 +- CPUFLAGS += -DHOST_CPU=0x20000006 -DTARGET_LINUX_ARMv8 -frename-registers +- CFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS) +- CXXFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS) +- ASFLAGS += $(CFLAGS) -c -frename-registers -fno-strict-aliasing -ffast-math -ftree-vectorize ++ HAVE_LTCG = 0 ++ HAVE_OPENMP = 0 ++ CFLAGS += -Ofast \ ++ -fuse-linker-plugin \ ++ -fno-stack-protector -fno-ident -fomit-frame-pointer \ ++ -fmerge-all-constants -ffast-math -funroll-all-loops \ ++ -mcpu=cortex-a35 -mtune=cortex-a35 -mno-outline-atomics ++ CXXFLAGS += $(CFLAGS) ++ LDFLAGS += -mcpu=cortex-a35 -mtune=cortex-a35 -Ofast -flto -fuse-linker-plugin + PLATFORM_EXT := unix ++ CORE_DEFINES += -DLOW_END -DLOW_RES + WITH_DYNAREC=arm64 ++ PLATFORM_EXT := unix + HAVE_GENERIC_JIT = 0 +- HAVE_VULKAN = 0 +- HAVE_LTCG = 0 + + ####################################### + diff --git a/packages/emulators/libretro/fmsx-lr/package.mk b/packages/emulators/libretro/fmsx-lr/package.mk index c65e2136d..a7eb980e4 100644 --- a/packages/emulators/libretro/fmsx-lr/package.mk +++ b/packages/emulators/libretro/fmsx-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="fmsx-lr" -PKG_VERSION="9b5cf868825a629cc4c7086768338165d3bbf706" +PKG_VERSION="cf97a3c6da07d5f8e98c90c907ad987ffea432e0" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/fmsx-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/freechaf-lr/package.mk b/packages/emulators/libretro/freechaf-lr/package.mk index 7c6aa9a4d..6e06639fb 100644 --- a/packages/emulators/libretro/freechaf-lr/package.mk +++ b/packages/emulators/libretro/freechaf-lr/package.mk @@ -1,5 +1,5 @@ PKG_NAME="freechaf-lr" -PKG_VERSION="830b73b5eb8ba6d538e1cca363684c3ad617013d" +PKG_VERSION="cdb8ad6fcecb276761b193650f5ce9ae8b878067" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/FreeChaF" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/libretro/freeintv-lr/package.mk b/packages/emulators/libretro/freeintv-lr/package.mk index 08e240927..1d88b7b09 100644 --- a/packages/emulators/libretro/freeintv-lr/package.mk +++ b/packages/emulators/libretro/freeintv-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="freeintv-lr" -PKG_VERSION="85bf25a39a34bbc39fe36677175d87c2b597dbe7" +PKG_VERSION="6bd91d0d83d896e66b9fd7e5e239f93f00e4ad87" PKG_LICENSE="GPLv3" PKG_SITE="https://github.com/libretro/FreeIntv" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/fuse-lr/package.mk b/packages/emulators/libretro/fuse-lr/package.mk index 580fe1002..a688effc5 100644 --- a/packages/emulators/libretro/fuse-lr/package.mk +++ b/packages/emulators/libretro/fuse-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="fuse-lr" -PKG_VERSION="847dbbd6f787823ac9a5dfacdd68ab181063374e" +PKG_VERSION="4d511d7fc3faa7714fa5de2e824793d35d5f4da8" PKG_LICENSE="GPLv3" PKG_SITE="https://github.com/libretro/fuse-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/gambatte-lr/package.mk b/packages/emulators/libretro/gambatte-lr/package.mk index bbf155217..b720a15e6 100644 --- a/packages/emulators/libretro/gambatte-lr/package.mk +++ b/packages/emulators/libretro/gambatte-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="gambatte-lr" -PKG_VERSION="e2031a4010463adcd00ce3f34acbbb6db2ad1266" +PKG_VERSION="f122ffc63e3969e29b232de8700e57095c305a53" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/gambatte-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/gearboy-lr/package.mk b/packages/emulators/libretro/gearboy-lr/package.mk index beceb669b..5070fede3 100644 --- a/packages/emulators/libretro/gearboy-lr/package.mk +++ b/packages/emulators/libretro/gearboy-lr/package.mk @@ -15,7 +15,7 @@ ################################################################################ PKG_NAME="gearboy-lr" -PKG_VERSION="699a021a909a658aa5ec16a9ff51ca529bb7d4d5" +PKG_VERSION="d729e3b53b4a1a09e5972fc53b94175d5c8ddc7e" PKG_LICENSE="GPL" PKG_SITE="https://github.com/drhelius/Gearboy" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/gearcoleco-lr/package.mk b/packages/emulators/libretro/gearcoleco-lr/package.mk index 224c20038..bf33326ac 100644 --- a/packages/emulators/libretro/gearcoleco-lr/package.mk +++ b/packages/emulators/libretro/gearcoleco-lr/package.mk @@ -15,7 +15,7 @@ ################################################################################ PKG_NAME="gearcoleco-lr" -PKG_VERSION="3e44ca22ea36643a6ab50c0dd7980dbd2ded3b11" +PKG_VERSION="8c7d6436a9e0aea87233d0a16a6c6910767a841e" PKG_LICENSE="GPL" PKG_SITE="https://github.com/drhelius/Gearcoleco" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/gearsystem-lr/package.mk b/packages/emulators/libretro/gearsystem-lr/package.mk index 8e1de0f4f..0e91ef8ab 100644 --- a/packages/emulators/libretro/gearsystem-lr/package.mk +++ b/packages/emulators/libretro/gearsystem-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="gearsystem-lr" -PKG_VERSION="b72d4a6d1e88a37245f7fa3cdefee2a2c02e04da" +PKG_VERSION="59087fb1f8b77c3c151df4aeb03cc44821db6112" PKG_LICENSE="GPLv3" PKG_SITE="https://github.com/drhelius/Gearsystem" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/libretro/genesis-plus-gx-lr/package.mk b/packages/emulators/libretro/genesis-plus-gx-lr/package.mk index 92ca90934..c0f47b40c 100644 --- a/packages/emulators/libretro/genesis-plus-gx-lr/package.mk +++ b/packages/emulators/libretro/genesis-plus-gx-lr/package.mk @@ -21,7 +21,7 @@ ################################################################################ PKG_NAME="genesis-plus-gx-lr" -PKG_VERSION="60955a01f601ef73c02b07581dd7d5aa3b6a4788" +PKG_VERSION="53a4af8fa4061fe7b60b9a1de5080dfa40617e57" PKG_LICENSE="Non-commercial" PKG_SITE="https://github.com/libretro/Genesis-Plus-GX" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/genesis-plus-gx-wide-lr/package.mk b/packages/emulators/libretro/genesis-plus-gx-wide-lr/package.mk index 2403b43d5..b9159885a 100644 --- a/packages/emulators/libretro/genesis-plus-gx-wide-lr/package.mk +++ b/packages/emulators/libretro/genesis-plus-gx-wide-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="genesis-plus-gx-wide-lr" -PKG_VERSION="3c4dccdc2a60db50bb8c37090e3d3d2134a51295" +PKG_VERSION="a0717a3cc7757c27ded83625331f2ced4bc25065" PKG_LICENSE="Non-commercial" PKG_SITE="https://github.com/libretro/Genesis-Plus-GX-Wide" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/gw-lr/package.mk b/packages/emulators/libretro/gw-lr/package.mk index 754771335..21111be90 100644 --- a/packages/emulators/libretro/gw-lr/package.mk +++ b/packages/emulators/libretro/gw-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="gw-lr" -PKG_VERSION="0ecff52b11c327af52b22ea94b268c90472b6732" +PKG_VERSION="feab76c102166784230dc44c45cad4cb49a1c9a7" PKG_LICENSE="GPLv3" PKG_SITE="https://github.com/libretro/gw-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/handy-lr/package.mk b/packages/emulators/libretro/handy-lr/package.mk index d981a7312..c24e91488 100644 --- a/packages/emulators/libretro/handy-lr/package.mk +++ b/packages/emulators/libretro/handy-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="handy-lr" -PKG_VERSION="65d6b865544cd441ef2bd18cde7bd834c23d0e48" +PKG_VERSION="15d3c87e0eba52464ed759d3702d7cb7fdd0d7e0" PKG_LICENSE="Zlib" PKG_SITE="https://github.com/libretro/libretro-handy" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/hatari-lr/package.mk b/packages/emulators/libretro/hatari-lr/package.mk index 35d21a3fc..fea9d2054 100644 --- a/packages/emulators/libretro/hatari-lr/package.mk +++ b/packages/emulators/libretro/hatari-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="hatari-lr" -PKG_VERSION="a4c9eb0bb79e47a2870c12b04566c1f8d25e4bf3" +PKG_VERSION="c10a21dbe99277b06ccf7de10eceb74f5d57e921" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/hatari" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/idtech-lr/scripts/generate-idtech.sh b/packages/emulators/libretro/idtech-lr/scripts/generate-idtech.sh index 583a9757b..b45d89798 100644 --- a/packages/emulators/libretro/idtech-lr/scripts/generate-idtech.sh +++ b/packages/emulators/libretro/idtech-lr/scripts/generate-idtech.sh @@ -105,6 +105,15 @@ ${RA_BIN} -L ${RA_DIR}/boom3_libretro.so ${GAME_DIR}/doom3/base/* EOF fi +### Doom 3 - Resurrection of Evil +if [[ ${HW_ARCH} = "x86_64" ]] && [[ -f "${GAME_DIR}/doom3/d3xp/pak000.pk4" ]] && [[ ! -f ${SCRIPT_DIR}/Doom\ 3\ -\ Resurrection\ of\ Evil.sh ]]; then +cat <${SCRIPT_DIR}/Doom\ 3\ -\ Resurrection\ of\ Evil.sh +#!/bin/bash + +${RA_BIN} -L ${RA_DIR}/boom3_xp_libretro.so ${GAME_DIR}/doom3/d3xp/* +EOF +fi + ### Quake if [[ -f "${GAME_DIR}/quake/id1/pak0.pak" ]] && [[ ! -f ${SCRIPT_DIR}/Quake.sh ]]; then cat <${SCRIPT_DIR}/Quake.sh diff --git a/packages/emulators/libretro/libretro-database/package.mk b/packages/emulators/libretro/libretro-database/package.mk index 6ca3383de..6cb3accda 100644 --- a/packages/emulators/libretro/libretro-database/package.mk +++ b/packages/emulators/libretro/libretro-database/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="libretro-database" -PKG_VERSION="fa96e11200e4bba3a2e53c50000ee53d7cf9564e" +PKG_VERSION="6ddbb571bf1bcd78867a0f4bc20caa0004bba689" PKG_LICENSE="GPL" PKG_SITE="https://github.com/libretro/libretro-database" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/mame2003-plus-lr/package.mk b/packages/emulators/libretro/mame2003-plus-lr/package.mk index 25373432c..d7262928e 100644 --- a/packages/emulators/libretro/mame2003-plus-lr/package.mk +++ b/packages/emulators/libretro/mame2003-plus-lr/package.mk @@ -21,7 +21,7 @@ ################################################################################ PKG_NAME="mame2003-plus-lr" -PKG_VERSION="3206819c48567e759f993134ac27491b11b3dd80" +PKG_VERSION="444bc10c2ab1553b3ed59b7d6afb54da39b891de" PKG_LICENSE="MAME" PKG_SITE="https://github.com/libretro/mame2003-plus-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/minivmac-lr/package.mk b/packages/emulators/libretro/minivmac-lr/package.mk index 36b28e618..76c353bd3 100644 --- a/packages/emulators/libretro/minivmac-lr/package.mk +++ b/packages/emulators/libretro/minivmac-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="minivmac-lr" -PKG_VERSION="e7fcfefe5963aaefb039c8ece5b9072f8d3f9cb9" +PKG_VERSION="7de54a87e2527eb15b9ec2ac589e041c3d051d49" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/libretro-minivmac" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/libretro/mupen64plus-lr/package.mk b/packages/emulators/libretro/mupen64plus-lr/package.mk index 269591ebe..419af8941 100644 --- a/packages/emulators/libretro/mupen64plus-lr/package.mk +++ b/packages/emulators/libretro/mupen64plus-lr/package.mk @@ -43,12 +43,19 @@ pre_make_target() { } pre_configure_target() { +export CFLAGS="${CFLAGS} -Wno-error=incompatible-pointer-types" + case ${DEVICE} in RK3*) PKG_MAKE_OPTS_TARGET=" platform=${DEVICE}" CFLAGS="${CFLAGS} -DLINUX -DEGL_API_FB" CPPFLAGS="${CPPFLAGS} -DLINUX -DEGL_API_FB" ;; + H700) + PKG_MAKE_OPTS_TARGET=" platform=RKH700" + CFLAGS="${CFLAGS} -DLINUX -DEGL_API_FB" + CPPFLAGS="${CPPFLAGS} -DLINUX -DEGL_API_FB" + ;; *) PKG_MAKE_OPTS_TARGET="GLES=0 GLES3=0" ;; diff --git a/packages/emulators/libretro/mupen64plus-nx-lr/package.mk b/packages/emulators/libretro/mupen64plus-nx-lr/package.mk index fdf5ce224..f57915768 100755 --- a/packages/emulators/libretro/mupen64plus-nx-lr/package.mk +++ b/packages/emulators/libretro/mupen64plus-nx-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="mupen64plus-nx-lr" -PKG_VERSION="5d2ac21adb784ad72d6101290117702eef0411dd" +PKG_VERSION="c7cd8edcd015ddcbd4a2e984573c9c1d1ddd0b6e" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/mupen64plus-libretro-nx" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" @@ -22,6 +22,12 @@ if [ "${OPENGLES_SUPPORT}" = yes ]; then fi pre_configure_target() { + export CFLAGS="${CFLAGS} -DHAVE_UNISTD_H -Wno-error=incompatible-pointer-types" + if [ "${ARCH}" = "aarch64" ]; then + # This is only needed for armv8.2-a targets where we don't use this flag + # as it prohibits the use of LSE-instructions, this is a package bug most likely + export CXXFLAGS="${CXXFLAGS} -mno-outline-atomics" + fi for SOURCE in ${PKG_BUILD}/mupen64plus-rsp-paraLLEl/rsp_disasm.cpp ${PKG_BUILD}/mupen64plus-rsp-paraLLEl/rsp_disasm.hpp do sed -i '/include /a #include ' ${SOURCE} @@ -32,6 +38,9 @@ pre_configure_target() { RK3*|S922X) PKG_MAKE_OPTS_TARGET=" platform=${DEVICE}" ;; + H700) + PKG_MAKE_OPTS_TARGET=" platform=RK3326" + ;; esac } diff --git a/packages/emulators/libretro/neocd_lr/package.mk b/packages/emulators/libretro/neocd_lr/package.mk index 096b03e47..6f692532c 100644 --- a/packages/emulators/libretro/neocd_lr/package.mk +++ b/packages/emulators/libretro/neocd_lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2019-present Team CoreELEC (https://coreelec.org) PKG_NAME="neocd_lr" -PKG_VERSION="f297cab3e79573e33e6fbc39c1cd1a7a6eb6e500" +PKG_VERSION="f87ed9eb4a7bf1243f031044c4e2ae1a7bf7100b" PKG_LICENSE="LGPLv3.0" PKG_SITE="https://github.com/libretro/neocd_libretro" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/libretro/nestopia-lr/package.mk b/packages/emulators/libretro/nestopia-lr/package.mk index d4a093c7e..39e951835 100644 --- a/packages/emulators/libretro/nestopia-lr/package.mk +++ b/packages/emulators/libretro/nestopia-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="nestopia-lr" -PKG_VERSION="b99ede358b2219602443e7f414eabf81e17da244" +PKG_VERSION="be1139ec4d89151fc65b81a3494d2b9c0fd0b7dc" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/nestopia" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/np2kai-lr/package.mk b/packages/emulators/libretro/np2kai-lr/package.mk index a7365e0ed..8074ff0f1 100644 --- a/packages/emulators/libretro/np2kai-lr/package.mk +++ b/packages/emulators/libretro/np2kai-lr/package.mk @@ -27,6 +27,10 @@ PKG_DEPENDS_TARGET="toolchain" PKG_LONGDESC="Neko Project II kai" PKG_TOOLCHAIN="make" +pre_configure_target() { +export CFLAGS="${CFLAGS} -Wno-error=incompatible-pointer-types -Wno-int-conversion" +} + make_target() { VERSION="${PKG_VERSION:0:7}" cd ${PKG_BUILD}/sdl diff --git a/packages/emulators/libretro/o2em-lr/package.mk b/packages/emulators/libretro/o2em-lr/package.mk index e23b5f2b5..a8e86145a 100644 --- a/packages/emulators/libretro/o2em-lr/package.mk +++ b/packages/emulators/libretro/o2em-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="o2em-lr" -PKG_VERSION="44fe5f306033242f7d74144105e19a7d4939477e" +PKG_VERSION="c8f458d035392963823fbb50db0cec0033d9315f" PKG_LICENSE="Artistic License" PKG_SITE="https://github.com/libretro/libretro-o2em" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/parallel-n64-lr/package.mk b/packages/emulators/libretro/parallel-n64-lr/package.mk index 4bae0d8fb..0b2ba49da 100644 --- a/packages/emulators/libretro/parallel-n64-lr/package.mk +++ b/packages/emulators/libretro/parallel-n64-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="parallel-n64-lr" -PKG_VERSION="330fa5efd306ad116c44faf6833a8108ed4144b0" +PKG_VERSION="334998e6129debe50f7ef9c5cd1e995460ae2da8" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/parallel-n64" PKG_URL="${PKG_SITE}.git" @@ -24,13 +24,22 @@ if [ "${VULKAN_SUPPORT}" = "yes" ]; then fi case ${DEVICE} in - RK3*|S922X) + RK3*|S922X|H700) PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}" ;; AMD64) PKG_MAKE_OPTS_TARGET+=" HAVE_PARALLEL_RSP=1" esac +pre_configure_target() { + if [ "${ARCH}" = "aarch64" ]; then + # This is only needed for armv8.2-a targets where we don't use this flag + # as it prohibits the use of LSE-instructions, this is a package bug most likely + export CFLAGS="${CFLAGS} -mno-outline-atomics" + export CXXFLAGS="${CXXFLAGS} -mno-outline-atomics" + fi +} + makeinstall_target() { mkdir -p ${INSTALL}/usr/lib/libretro cp parallel_n64_libretro.so ${INSTALL}/usr/lib/libretro/ diff --git a/packages/emulators/libretro/pcsx_rearmed-lr/package.mk b/packages/emulators/libretro/pcsx_rearmed-lr/package.mk index c8b92b53d..aa99e56db 100644 --- a/packages/emulators/libretro/pcsx_rearmed-lr/package.mk +++ b/packages/emulators/libretro/pcsx_rearmed-lr/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="pcsx_rearmed-lr" -PKG_VERSION="3e80e5c25edcf850f603cf0948e1cc16dc38e98d" +PKG_VERSION="19f1a7d2de3a136810a84341db77d4f5eb8f3361" PKG_ARCH="arm aarch64" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/pcsx_rearmed" diff --git a/packages/emulators/libretro/picodrive-lr/package.mk b/packages/emulators/libretro/picodrive-lr/package.mk index 5999bd010..7486e1d86 100644 --- a/packages/emulators/libretro/picodrive-lr/package.mk +++ b/packages/emulators/libretro/picodrive-lr/package.mk @@ -1,5 +1,5 @@ PKG_NAME="picodrive-lr" -PKG_VERSION="ad93670449a28825d4b2cebf2eeff72cf03377a9" +PKG_VERSION="479f120b928153815a4543b7c4104c0aa355a660" PKG_LICENSE="MAME" PKG_SITE="https://github.com/libretro/picodrive" PKG_URL="${PKG_SITE}.git" @@ -9,9 +9,12 @@ GET_HANDLER_SUPPORT="git" PKG_BUILD_FLAGS="-gold" PKG_TOOLCHAIN="make" - PKG_PATCH_DIRS="${PROJECT}" +pre_configure_target() { +export CFLAGS="${CFLAGS} -Wno-error=incompatible-pointer-types" +} + configure_target() { : } diff --git a/packages/emulators/libretro/pokemini-lr/package.mk b/packages/emulators/libretro/pokemini-lr/package.mk index df7f38926..2bf088b5c 100644 --- a/packages/emulators/libretro/pokemini-lr/package.mk +++ b/packages/emulators/libretro/pokemini-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="pokemini-lr" -PKG_VERSION="9bf450887026d9b92d4f9432b5d2a5ed749a35e2" +PKG_VERSION="a62d157d2fc10a1400ffa435b4beb08f7a7d8e09" PKG_LICENSE="GPLv3" PKG_SITE="https://github.com/libretro/pokemini" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/prboom-lr/package.mk b/packages/emulators/libretro/prboom-lr/package.mk index 176353097..ae22be85c 100644 --- a/packages/emulators/libretro/prboom-lr/package.mk +++ b/packages/emulators/libretro/prboom-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="prboom-lr" -PKG_VERSION="6ec854969fd9dec33bb2cab350f05675d1158969" +PKG_VERSION="9d412db570d3291829b308e6d1ac17f04acdda17" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/libretro-prboom" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/prosystem-lr/package.mk b/packages/emulators/libretro/prosystem-lr/package.mk index 6236969a6..9ccaffcdd 100644 --- a/packages/emulators/libretro/prosystem-lr/package.mk +++ b/packages/emulators/libretro/prosystem-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="prosystem-lr" -PKG_VERSION="4202ac5bdb2ce1a21f84efc0e26d75bb5aa7e248" +PKG_VERSION="a639359434cde73e6cdc651763afc587c1afb678" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/prosystem-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/px68k-lr/package.mk b/packages/emulators/libretro/px68k-lr/package.mk index 17b155e09..3867012de 100644 --- a/packages/emulators/libretro/px68k-lr/package.mk +++ b/packages/emulators/libretro/px68k-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="px68k-lr" -PKG_VERSION="8bdae0a389fb471f02154dce74afaed726d5ae79" +PKG_VERSION="6bd8d244cc3fd058a4e1b3b44fc5b6b43cd2cb90" PKG_LICENSE="Unknown" PKG_SITE="https://github.com/libretro/px68k-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/quasi88-lr/package.mk b/packages/emulators/libretro/quasi88-lr/package.mk index 57a27a1cf..b481a7ac9 100644 --- a/packages/emulators/libretro/quasi88-lr/package.mk +++ b/packages/emulators/libretro/quasi88-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2019-present asakous (https://github.com/asakous) PKG_NAME="quasi88-lr" -PKG_VERSION="31ccb0c2b634e73355a00086901c0d464846b90a" +PKG_VERSION="ff94d9d2884d71580c163fcd71b6850c0f393f44" PKG_LICENSE="BSD3" PKG_SITE="https://github.com/libretro/quasi88-libretro" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/libretro/quicknes-lr/package.mk b/packages/emulators/libretro/quicknes-lr/package.mk index 66c6644c0..6589cbd3c 100644 --- a/packages/emulators/libretro/quicknes-lr/package.mk +++ b/packages/emulators/libretro/quicknes-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="quicknes-lr" -PKG_VERSION="cd73f021be7dd5b1a21b71155a320364c02de4ac" +PKG_VERSION="89d649a544e7d37a5cdbc77c811e88753fa23131" PKG_LICENSE="LGPLv2.1+" PKG_SITE="https://github.com/libretro/QuickNES_Core" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/retroarch/package.mk b/packages/emulators/libretro/retroarch/package.mk index f43c7341e..63f9622e8 100644 --- a/packages/emulators/libretro/retroarch/package.mk +++ b/packages/emulators/libretro/retroarch/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="retroarch" -PKG_VERSION="00b8a5f15c7d671cdf107c3d01e71a729581d1cd" # v1.19.0 +PKG_VERSION="0792144fe3a7b59908b0afdb2c01722e79040360" # v1.19.1 PKG_SITE="https://github.com/libretro/RetroArch" PKG_URL="${PKG_SITE}.git" PKG_LICENSE="GPLv3" @@ -74,7 +74,7 @@ if [ "${OPENGLES_SUPPORT}" = "yes" ]; then PKG_DEPENDS_TARGET+=" ${OPENGLES}" PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengles --enable-opengles3" case ${DEVICE} in - RK33*|RK35*) + RK33*|RK35*|H700) PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengles3_1" ;; S922X) diff --git a/packages/emulators/libretro/retroarch/retroarch-assets/package.mk b/packages/emulators/libretro/retroarch/retroarch-assets/package.mk index 1d6fccb24..54e99c5c2 100644 --- a/packages/emulators/libretro/retroarch/retroarch-assets/package.mk +++ b/packages/emulators/libretro/retroarch/retroarch-assets/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="retroarch-assets" -PKG_VERSION="771e60b1eacd4edc57c19b61ab2c713200af0a3f" +PKG_VERSION="8a74442fabfc6f72c623dbf1f7a59bfeba771b9f" PKG_LICENSE="GPL" PKG_SITE="https://github.com/libretro/retroarch-assets" PKG_URL="https://github.com/libretro/retroarch-assets/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/retroarch/retroarch-joypads/gamepads/gpio-keys-gamepad.cfg b/packages/emulators/libretro/retroarch/retroarch-joypads/gamepads/gpio-keys-gamepad.cfg new file mode 100644 index 000000000..f430e66c5 --- /dev/null +++ b/packages/emulators/libretro/retroarch/retroarch-joypads/gamepads/gpio-keys-gamepad.cfg @@ -0,0 +1,34 @@ +input_driver = "udev" +input_device = "gpio-keys-gamepad" +input_device_display_name = "Anbernic RG35XX Plus Joypad" + +input_b_btn = "0" +input_a_btn = "1" +input_x_btn = "3" +input_y_btn = "2" + +input_select_btn = "8" +input_start_btn = "9" + +input_l_btn = "4" +input_r_btn = "5" +input_l2_btn = "6" +input_r2_btn = "7" + +input_up_btn = "11" +input_down_btn = "12" +input_left_btn = "13" +input_right_btn = "14" + +# Hotkeys +input_enable_hotkey_btn = "10" +input_exit_emulator_btn = "9" + +input_menu_toggle_btn = "3" +input_fps_toggle_btn = "2" + +input_load_state_btn = "4" +input_save_state_btn = "5" + +input_rewind_btn = "6" +input_toggle_fast_forward_btn = "7" diff --git a/packages/emulators/libretro/retroarch/retroarch-joypads/package.mk b/packages/emulators/libretro/retroarch/retroarch-joypads/package.mk index 42ba5af2d..6d37cf599 100644 --- a/packages/emulators/libretro/retroarch/retroarch-joypads/package.mk +++ b/packages/emulators/libretro/retroarch/retroarch-joypads/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="retroarch-joypads" -PKG_VERSION="ae224d2ea4aa74b797c575a33be82882d455d638" +PKG_VERSION="945c145f65fe30b25337e7b008bfcee1a6df8d99" PKG_LICENSE="GPL" PKG_SITE="https://github.com/libretro/retroarch-joypad-autoconfig" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/libretro/retroarch/retroarch-overlays/package.mk b/packages/emulators/libretro/retroarch/retroarch-overlays/package.mk index cb7c09dac..793e8a76f 100644 --- a/packages/emulators/libretro/retroarch/retroarch-overlays/package.mk +++ b/packages/emulators/libretro/retroarch/retroarch-overlays/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="retroarch-overlays" -PKG_VERSION="4b5ca35c5d5451046c286f0650a6885740056335" +PKG_VERSION="7c9ed3968eff50b742fb8e9b478919c0ee0ed859" PKG_LICENSE="GPL" PKG_SITE="https://github.com/libretro/common-overlays" PKG_URL="https://github.com/libretro/common-overlays/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/retroarch/sources/H700/TATE-MAME 2003-Plus.rmp b/packages/emulators/libretro/retroarch/sources/H700/TATE-MAME 2003-Plus.rmp new file mode 100755 index 000000000..366e47afa --- /dev/null +++ b/packages/emulators/libretro/retroarch/sources/H700/TATE-MAME 2003-Plus.rmp @@ -0,0 +1,27 @@ +input_libretro_device_p1 = "1" +input_libretro_device_p2 = "1" +input_libretro_device_p3 = "1" +input_libretro_device_p4 = "1" +input_libretro_device_p5 = "1" +input_player1_analog_dpad_mode = "1" +input_player1_btn_down = "6" +input_player1_btn_left = "4" +input_player1_btn_right = "5" +input_player1_btn_up = "7" +input_player1_stk_l_x+ = "5" +input_player1_stk_l_x- = "4" +input_player1_stk_l_y+ = "6" +input_player1_stk_l_y- = "7" +input_player1_stk_r_x+ = "5" +input_player1_stk_r_x- = "4" +input_player1_stk_r_y+ = "6" +input_player1_stk_r_y- = "7" +input_player2_analog_dpad_mode = "0" +input_player3_analog_dpad_mode = "0" +input_player4_analog_dpad_mode = "0" +input_player5_analog_dpad_mode = "0" +input_remap_port_p1 = "0" +input_remap_port_p2 = "1" +input_remap_port_p3 = "2" +input_remap_port_p4 = "3" +input_remap_port_p5 = "4" diff --git a/packages/emulators/libretro/retroarch/sources/H700/retroarch-core-options.cfg b/packages/emulators/libretro/retroarch/sources/H700/retroarch-core-options.cfg new file mode 100755 index 000000000..f0f312272 --- /dev/null +++ b/packages/emulators/libretro/retroarch/sources/H700/retroarch-core-options.cfg @@ -0,0 +1,153 @@ +mupen64plus-alt-map = "False" +mupen64plus-aspect = "4:3" +mupen64plus-astick-deadzone = "15" +mupen64plus-astick-sensitivity = "100" +mupen64plus-BackgroundMode = "Stripped" +mupen64plus-BilinearMode = "standard" +mupen64plus-CorrectTexrectCoords = "Auto" +mupen64plus-CountPerOp = "0" +mupen64plus-CountPerOpDenomPot = "0" +mupen64plus-cpucore = "dynamic_recompiler" +mupen64plus-d-cbutton = "C3" +mupen64plus-DitheringPattern = "True" +mupen64plus-DitheringQuantization = "True" +mupen64plus-EnableCopyAuxToRDRAM = "True" +mupen64plus-EnableCopyColorToRDRAM = "Async" +mupen64plus-EnableCopyDepthToRDRAM = "Software" +mupen64plus-EnableEnhancedHighResStorage = "False" +mupen64plus-EnableEnhancedTextureStorage = "False" +mupen64plus-EnableFBEmulation = "True" +mupen64plus-EnableFragmentDepthWrite = "False" +mupen64plus-EnableHiResAltCRC = "False" +mupen64plus-EnableHWLighting = "True" +mupen64plus-EnableInaccurateTextureCoordinates = "False" +mupen64plus-EnableLegacyBlending = "False" +mupen64plus-EnableLODEmulation = "True" +mupen64plus-EnableNativeResFactor = "1" +mupen64plus-EnableNativeResTexrects = "Optimized" +mupen64plus-EnableOverscan = "Enabled" +mupen64plus-EnableTexCoordBounds = "False" +mupen64plus-EnableTextureCache = "True" +mupen64plus-ForceDisableExtraMem = "False" +mupen64plus-FrameDuping = "True" +mupen64plus-Framerate = "Original" +mupen64plus-FXAA = "0" +mupen64plus-GLideN64IniBehaviour = "late" +mupen64plus-HybridFilter = "True" +mupen64plus-IgnoreTLBExceptions = "False" +mupen64plus-l-cbutton = "C2" +mupen64plus-MaxHiResTxVramLimit = "0" +mupen64plus-MaxTxCacheSize = "8000" +mupen64plus-MultiSampling = "0" +mupen64plus-OverscanBottom = "0" +mupen64plus-OverscanLeft = "0" +mupen64plus-OverscanRight = "0" +mupen64plus-OverscanTop = "0" +mupen64plus-pak1 = "memory" +mupen64plus-pak2 = "none" +mupen64plus-pak3 = "none" +mupen64plus-pak4 = "none" +mupen64plus-r-cbutton = "C1" +mupen64plus-rdp-plugin = "gliden64" +mupen64plus-RDRAMImageDitheringMode = "BlueNoise" +mupen64plus-rsp-plugin = "hle" +mupen64plus-ThreadedRenderer = "True" +mupen64plus-txCacheCompression = "True" +mupen64plus-txEnhancementMode = "None" +mupen64plus-txFilterIgnoreBG = "True" +mupen64plus-txFilterMode = "None" +mupen64plus-txHiresEnable = "False" +mupen64plus-txHiresFullAlphaChannel = "False" +mupen64plus-u-cbutton = "C4" +mupen64plus-virefresh = "Auto" +pcsx_rearmed_analog_axis_modifier = "circle" +pcsx_rearmed_async_cd = "sync" +pcsx_rearmed_bios = "auto" +pcsx_rearmed_display_internal_fps = "disabled" +pcsx_rearmed_dithering = "enabled" +pcsx_rearmed_drc = "enabled" +pcsx_rearmed_duping_enable = "enabled" +pcsx_rearmed_frameskip_type = "disabled" +pcsx_rearmed_gteregsunneeded = "disabled" +pcsx_rearmed_gunconadjustratiox = "1" +pcsx_rearmed_gunconadjustratioy = "1" +pcsx_rearmed_gunconadjustx = "0" +pcsx_rearmed_gunconadjusty = "0" +pcsx_rearmed_idiablofix = "disabled" +pcsx_rearmed_input_sensitivity = "1.00" +pcsx_rearmed_inuyasha_fix = "disabled" +pcsx_rearmed_memcard2 = "disabled" +pcsx_rearmed_multitap1 = "auto" +pcsx_rearmed_multitap2 = "auto" +pcsx_rearmed_negcon_deadzone = "0" +pcsx_rearmed_negcon_response = "linear" +pcsx_rearmed_neon_enhancement_enable = "disabled" +pcsx_rearmed_neon_enhancement_no_main = "disabled" +pcsx_rearmed_neon_interlace_enable = "disabled" +pcsx_rearmed_nocdaudio = "enabled" +pcsx_rearmed_nogteflags = "disabled" +pcsx_rearmed_nosmccheck = "disabled" +pcsx_rearmed_noxadecoding = "enabled" +pcsx_rearmed_pad1type = "standard" +pcsx_rearmed_pad2type = "standard" +pcsx_rearmed_pad3type = "none" +pcsx_rearmed_pad4type = "none" +pcsx_rearmed_pad5type = "none" +pcsx_rearmed_pad6type = "none" +pcsx_rearmed_pad7type = "none" +pcsx_rearmed_pad8type = "none" +pcsx_rearmed_pe2_fix = "disabled" +pcsx_rearmed_psxclock = "57" +pcsx_rearmed_region = "auto" +pcsx_rearmed_show_bios_bootlogo = "disabled" +pcsx_rearmed_show_other_input_settings = "disabled" +pcsx_rearmed_spu_interpolation = "simple" +pcsx_rearmed_spu_reverb = "enabled" +pcsx_rearmed_spuirq = "disabled" +pcsx_rearmed_vibration = "enabled" +gambatte_gb_colorization = "disabled" +gambatte_gb_internal_palette = "" +mame2003-plus_analog = "digital" +mame2003-plus_art_resolution = "1" +mame2003-plus_brightness = "1.0" +mame2003-plus_cheat_input_ports = "disabled" +mame2003-plus_core_save_subfolder = "enabled" +mame2003-plus_core_sys_subfolder = "enabled" +mame2003-plus_dcs_speedhack = "enabled" +mame2003-plus_deadzone = "20" +mame2003-plus_digital_joy_centering = "enabled" +mame2003-plus_display_artwork = "enabled" +mame2003-plus_display_setup = "disabled" +mame2003-plus_four_way_emulation = "disabled" +mame2003-plus_frameskip = "0" +mame2003-plus_gamma = "1.0" +mame2003-plus_input_interface = "retropad" +mame2003-plus_machine_timing = "enabled" +mame2003-plus_mame_remapping = "enabled" +mame2003-plus_mouse_device = "mouse" +mame2003-plus_sample_rate = "48000" +mame2003-plus_skip_disclaimer = "disabled" +mame2003-plus_skip_warnings = "disabled" +flycast_internal_resolution = "640x480" +flycast_alpha_sorting = "per-strip (fast, least accurate)" +flycast_enable_dsp = "disabled" +flycast_threaded_rendering = "enabled" +flycast_anisotropic_filtering = "off" +flycast_synchronous_rendering = "enabled" +flycast_enable_rtt = "disabled" +flycast_enable_rttb = "disabled" +flycast_delay_frame_swapping = "disabled" +flycast_div_matching = "auto" +flycast_texupscale = "off" +flycast_auto_skip_frame = "normal" +opera_swi_hle = "enabled" +opera_dsp_threaded = "enabled" +opera_madam_matrix_engine = "software" +puae_deadzone = "25" +melonds_screen_layout = "Left/Right" +melonds_swapscreen_mode = "Toggle" +melonds_threaded_renderer = "enabled" +melonds_touch_mode = "Joystick" +duckstation_GPU.Renderer = "Software" +virtualjaguar_bios = "enabled" +virtualjaguar_usefastblitter = "enabled" diff --git a/packages/emulators/libretro/retroarch/sources/H700/retroarch.cfg b/packages/emulators/libretro/retroarch/sources/H700/retroarch.cfg new file mode 100755 index 000000000..be01a15cf --- /dev/null +++ b/packages/emulators/libretro/retroarch/sources/H700/retroarch.cfg @@ -0,0 +1,818 @@ +accessibility_enable = "false" +accessibility_narrator_speech_speed = "5" +ai_service_enable = "true" +ai_service_mode = "1" +ai_service_pause = "false" +ai_service_source_lang = "0" +ai_service_target_lang = "0" +ai_service_url = "http://localhost:4404/" +all_users_control_menu = "true" +apply_cheats_after_load = "false" +apply_cheats_after_toggle = "false" +aspect_ratio_index = "22" +assets_directory = "/tmp/assets" +audio_block_frames = "0" +audio_device = "" +audio_driver = "alsathread" +audio_dsp_plugin = "" +audio_enable_menu_bgm = "false" +audio_enable_menu_cancel = "false" +audio_enable_menu = "false" +audio_enable_menu_notice = "false" +audio_enable_menu_ok = "false" +audio_enable = "true" +audio_fastforward_mute = "false" +audio_filter_dir = "~/.config/retroarch/filters/audio" +audio_latency = "32" +audio_max_timing_skew = "0.049999" +audio_mixer_mute_enable = "false" +audio_mixer_volume = "0.000000" +audio_mute_enable = "false" +audio_out_rate = "48000" +audio_rate_control_delta = "0.004999" +audio_rate_control = "true" +audio_resampler_quality = "2" +audio_resampler = "sinc" +audio_sync = "true" +audio_volume = "0.000000" +auto_overrides_enable = "true" +auto_remaps_enable = "true" +autosave_interval = "10" +auto_screenshot_filename = "true" +auto_shaders_enable = "true" +block_sram_overwrite = "false" +bluetooth_driver = "null" +builtin_imageviewer_enable = "false" +builtin_mediaplayer_enable = "true" +bundle_assets_dst_path = "" +bundle_assets_dst_path_subdir = "" +bundle_assets_extract_enable = "false" +bundle_assets_extract_last_version = "0" +bundle_assets_extract_version_current = "0" +bundle_assets_src_path = "" +cache_directory = "/tmp/cache" +camera_allow = "false" +camera_device = "" +camera_driver = "null" +cheat_database_path = "/tmp/database/cht" +check_firmware_before_loading = "false" +cheevos_auto_screenshot = "false" +cheevos_badges_enable = "false" +cheevos_challenge_indicators = "true" +cheevos_enable = "false" +cheevos_hardcore_mode_enable = "false" +cheevos_leaderboards_enable = "" +cheevos_password = "" +cheevos_richpresence_enable = "true" +cheevos_start_active = "false" +cheevos_test_unofficial = "false" +cheevos_token = "" +cheevos_unlock_sound_enable = "false" +cheevos_username = "" +cheevos_verbose_enable = "false" +config_save_on_exit = "false" +content_database_path = "/tmp/database/rdb" +content_favorites_directory = "default" +content_favorites_path = "~/.config/retroarch/content_favorites.lpl" +content_favorites_size = "200" +content_history_dir = "" +content_history_directory = "default" +content_history_path = "~/.config/retroarch/content_history.lpl" +content_history_size = "200" +content_image_history_directory = "default" +content_image_history_path = "~/.config/retroarch/content_image_history.lpl" +content_music_history_directory = "default" +content_music_history_path = "~/.config/retroarch/content_music_history.lpl" +content_runtime_log_aggregate = "false" +content_runtime_log = "true" +content_show_add_entry = "2" +content_show_add = "true" +content_show_explore = "true" +content_show_favorites = "true" +content_show_history = "true" +content_show_images = "false" +content_show_music = "false" +content_show_netplay = "true" +content_show_playlists = "true" +content_show_settings_password = "" +content_show_settings = "true" +content_show_video = "false" +content_video_directory = "default" +content_video_history_path = "~/.config/retroarch/content_video_history.lpl" +core_assets_directory = "~/roms/downloads" +core_info_cache_enable = "true" +core_option_category_enable = "true" +core_options_path = "" +core_set_supports_no_game_enable = "true" +core_updater_auto_backup = "false" +core_updater_auto_backup_history_size = "1" +core_updater_auto_extract_archive = "true" +core_updater_buildbot_assets_url = "http://buildbot.libretro.com/assets/" +core_updater_buildbot_cores_url = "" +core_updater_buildbot_url = "http://buildbot.libretro.com/nightly/linux/armhf/latest/" +core_updater_show_experimental_cores = "false" +cpu_main_gov = "performance" +cpu_max_freq = "-1" +cpu_menu_gov = "ondemand" +cpu_min_freq = "1" +cpu_scaling_mode = "0" +crt_switch_center_adjust = "0" +crt_switch_hires_menu = "false" +crt_switch_porch_adjust = "0" +crt_switch_resolution = "0" +crt_switch_resolution_super = "2560" +crt_switch_resolution_use_custom_refresh_rate = "false" +crt_switch_timings = "" +crt_video_refresh_rate = "60.000000" +current_resolution_id = "0" +cursor_directory = "~/.config/retroarch/database/cursors" +desktop_menu_enable = "true" +discord_allow = "false" +discord_app_id = "475456035851599874" +driver_switch_enable = "true" +dynamic_wallpapers_directory = "default" +emuelec_exit_to_kodi = "false" +enable_device_vibration = "true" +facebook_stream_key = "" +fastforward_ratio = "0.000000" +filter_by_current_core = "false" +flicker_filter_enable = "false" +flicker_filter_index = "0" +fps_show = "false" +fps_update_interval = "256" +framecount_show = "false" +frame_time_counter_reset_after_fastforwarding = "false" +frame_time_counter_reset_after_load_state = "false" +frame_time_counter_reset_after_save_state = "false" +frontend_log_level = "1" +game_specific_options = "true" +gamma_correction = "0" +global_core_options = "false" +history_list_enable = "true" +input_ai_service_axis = "nul" +input_ai_service_btn = "nul" +input_ai_service_mbtn = "nul" +input_ai_service = "nul" +input_analog_deadzone = "0.000000" +input_analog_sensitivity = "1.500000" +input_audio_mute_axis = "nul" +input_audio_mute_btn = "nul" +input_audio_mute = "f9" +input_audio_mute_mbtn = "nul" +input_autodetect_enable = "true" +input_auto_game_focus = "0" +input_auto_mouse_grab = "false" +input_axis_threshold = "0.500000" +input_bind_hold = "2" +input_bind_timeout = "5" +input_cheat_index_minus_axis = "nul" +input_cheat_index_minus_btn = "nul" +input_cheat_index_minus_mbtn = "nul" +input_cheat_index_minus = "t" +input_cheat_index_plus_axis = "nul" +input_cheat_index_plus_btn = "nul" +input_cheat_index_plus_mbtn = "nul" +input_cheat_index_plus = "y" +input_cheat_toggle_axis = "nul" +input_cheat_toggle_btn = "nul" +input_cheat_toggle_mbtn = "nul" +input_cheat_toggle = "u" +input_close_content_axis = "nul" +input_close_content_btn = "nul" +input_close_content_mbtn = "nul" +input_close_content = "nul" +input_descriptor_hide_unbound = "false" +input_descriptor_label_show = "true" +input_desktop_menu_toggle_axis = "nul" +input_desktop_menu_toggle_btn = "nul" +input_desktop_menu_toggle = "f5" +input_desktop_menu_toggle_mbtn = "nul" +input_device_p1 = "0" +input_device_p10 = "0" +input_device_p11 = "0" +input_device_p12 = "0" +input_device_p13 = "0" +input_device_p14 = "0" +input_device_p15 = "0" +input_device_p16 = "0" +input_device_p2 = "0" +input_device_p3 = "0" +input_device_p4 = "0" +input_device_p5 = "0" +input_device_p6 = "0" +input_device_p7 = "0" +input_device_p8 = "0" +input_device_p9 = "0" +input_disk_eject_toggle_axis = "nul" +input_disk_eject_toggle_btn = "nul" +input_disk_eject_toggle_mbtn = "nul" +input_disk_eject_toggle = "nul" +input_disk_next_axis = "nul" +input_disk_next_btn = "nul" +input_disk_next_mbtn = "nul" +input_disk_next = "nul" +input_disk_prev_axis = "nul" +input_disk_prev_btn = "nul" +input_disk_prev_mbtn = "nul" +input_disk_prev = "nul" +input_driver = "udev" +input_duty_cycle = "3" +input_enable_hotkey_axis = "nul" +input_enable_hotkey_mbtn = "nul" +input_enable_hotkey = "nul" +input_exit_emulator_axis = "nul" +input_exit_emulator_btn = "9" +input_exit_emulator = "escape" +input_exit_emulator_mbtn = "nul" +input_fps_toggle_axis = "nul" +input_fps_toggle = "f3" +input_fps_toggle_mbtn = "nul" +input_frame_advance_axis = "nul" +input_frame_advance_btn = "nul" +input_frame_advance = "k" +input_frame_advance_mbtn = "nul" +input_game_focus_toggle_axis = "nul" +input_game_focus_toggle_btn = "nul" +input_game_focus_toggle_mbtn = "nul" +input_game_focus_toggle = "scroll_lock" +input_grab_mouse_toggle_axis = "nul" +input_grab_mouse_toggle_btn = "nul" +input_grab_mouse_toggle = "f11" +input_grab_mouse_toggle_mbtn = "nul" +input_hold_fast_forward_axis = "nul" +input_hold_fast_forward_btn = "nul" +input_hold_fast_forward = "l" +input_hold_fast_forward_mbtn = "nul" +input_hold_slowmotion_axis = "nul" +input_hold_slowmotion_btn = "nul" +input_hold_slowmotion = "e" +input_hold_slowmotion_mbtn = "nul" +input_hotkey_block_delay = "5" +input_joypad_driver = "udev" +input_keyboard_layout = "" +input_libretro_device_p10 = "1" +input_libretro_device_p1 = "1" +input_libretro_device_p11 = "1" +input_libretro_device_p12 = "1" +input_libretro_device_p13 = "1" +input_libretro_device_p14 = "1" +input_libretro_device_p15 = "1" +input_libretro_device_p16 = "1" +input_libretro_device_p2 = "1" +input_libretro_device_p3 = "1" +input_libretro_device_p4 = "1" +input_libretro_device_p5 = "1" +input_libretro_device_p6 = "1" +input_libretro_device_p7 = "1" +input_libretro_device_p8 = "1" +input_libretro_device_p9 = "1" +input_load_state_axis = "nul" +input_load_state_btn = "4" +input_load_state = "f4" +input_load_state_mbtn = "nul" +input_max_users = "5" +input_menu_toggle_axis = "nul" +input_menu_toggle = "f1" +input_menu_toggle_gamepad_combo = "2" +input_menu_toggle_mbtn = "nul" +input_movie_record_toggle_axis = "nul" +input_movie_record_toggle_btn = "nul" +input_movie_record_toggle_mbtn = "nul" +input_movie_record_toggle = "o" +input_netplay_game_watch_axis = "nul" +input_netplay_game_watch_btn = "nul" +input_netplay_game_watch = "i" +input_netplay_game_watch_mbtn = "nul" +input_netplay_host_toggle_axis = "nul" +input_netplay_host_toggle_btn = "nul" +input_netplay_host_toggle_mbtn = "nul" +input_netplay_host_toggle = "nul" +input_nowinkey_enable = "false" +input_osk_toggle_axis = "nul" +input_osk_toggle_btn = "nul" +input_osk_toggle = "f12" +input_osk_toggle_mbtn = "nul" +input_overlay = "" +input_overlay_aspect_adjust_landscape = "0.000000" +input_overlay_aspect_adjust_portrait = "0.000000" +input_overlay_auto_rotate = "false" +input_overlay_auto_scale = "false" +input_overlay_enable_autopreferred = "true" +input_overlay_enable = "false" +input_overlay_hide_in_menu = "true" +input_overlay_hide_when_gamepad_connected = "false" +input_overlay_next_axis = "nul" +input_overlay_next_btn = "nul" +input_overlay_next_mbtn = "nul" +input_overlay_next = "nul" +input_overlay_opacity = "0.700000" +input_overlay_scale_landscape = "1.000000" +input_overlay_scale_portrait = "1.000000" +input_overlay_show_inputs = "2" +input_overlay_show_inputs_port = "0" +input_overlay_show_mouse_cursor = "true" +input_overlay_x_offset_landscape = "0.000000" +input_overlay_x_offset_portrait = "0.000000" +input_overlay_x_separation_landscape = "0.000000" +input_overlay_x_separation_portrait = "0.000000" +input_overlay_y_offset_landscape = "0.000000" +input_overlay_y_offset_portrait = "0.000000" +input_overlay_y_separation_landscape = "0.000000" +input_overlay_y_separation_portrait = "0.000000" +input_pause_toggle_axis = "nul" +input_pause_toggle_btn = "nul" +input_pause_toggle_mbtn = "nul" +input_pause_toggle = "p" +input_poll_type_behavior = "2" +input_quit_gamepad_combo = "0" +input_recording_toggle_axis = "nul" +input_recording_toggle_btn = "nul" +input_recording_toggle_mbtn = "nul" +input_recording_toggle = "nul" +input_remap_binds_enable = "true" +input_remapping_directory = "~/remappings" +input_reset_axis = "nul" +input_reset_btn = "nul" +input_reset = "h" +input_reset_mbtn = "nul" +input_rewind_axis = "nul" +input_rewind_btn = "6" +input_rewind_mbtn = "nul" +input_rewind = "r" +input_rumble_gain = "100" +input_runahead_toggle_axis = "nul" +input_runahead_toggle_btn = "nul" +input_runahead_toggle_mbtn = "nul" +input_runahead_toggle = "nul" +input_save_state_axis = "nul" +input_save_state_btn = "5" +input_save_state = "f2" +input_save_state_mbtn = "nul" +input_screenshot_axis = "nul" +input_screenshot_btn = "nul" +input_screenshot = "f8" +input_screenshot_mbtn = "nul" +input_send_debug_info_axis = "nul" +input_send_debug_info_btn = "nul" +input_send_debug_info = "f10" +input_send_debug_info_mbtn = "nul" +input_sensors_enable = "true" +input_shader_next_axis = "nul" +input_shader_next_btn = "nul" +input_shader_next = "m" +input_shader_next_mbtn = "nul" +input_shader_prev_axis = "nul" +input_shader_prev_btn = "nul" +input_shader_prev_mbtn = "nul" +input_shader_prev = "n" +input_state_slot_decrease_axis = "nul" +input_state_slot_decrease_btn = "nul" +input_state_slot_decrease = "f6" +input_state_slot_decrease_mbtn = "nul" +input_state_slot_increase_axis = "nul" +input_state_slot_increase_btn = "nul" +input_state_slot_increase = "f7" +input_state_slot_increase_mbtn = "nul" +input_streaming_toggle_axis = "nul" +input_streaming_toggle_btn = "nul" +input_streaming_toggle_mbtn = "nul" +input_streaming_toggle = "nul" +input_toggle_fast_forward_axis = "nul" +input_toggle_fast_forward_btn = "7" +input_toggle_fast_forward_mbtn = "nul" +input_toggle_fast_forward = "space" +input_toggle_fullscreen_axis = "nul" +input_toggle_fullscreen_btn = "nul" +input_toggle_fullscreen = "f" +input_toggle_fullscreen_mbtn = "nul" +input_toggle_slowmotion_axis = "nul" +input_toggle_slowmotion_btn = "nul" +input_toggle_slowmotion_mbtn = "nul" +input_toggle_slowmotion = "nul" +input_touch_scale = "1" +input_turbo_default_button = "0" +input_turbo_mode = "0" +input_turbo_period = "6" +input_volume_down_axis = "nul" +input_volume_down_btn = "nul" +input_volume_down_mbtn = "nul" +input_volume_down = "subtract" +input_volume_up = "add" +input_volume_up_axis = "nul" +input_volume_up_btn = "nul" +input_volume_up_mbtn = "nul" +joypad_autoconfig_dir = "/tmp/joypads" +keyboard_gamepad_enable = "true" +keyboard_gamepad_mapping_type = "1" +kiosk_mode_enable = "false" +kiosk_mode_password = "" +led_driver = "null" +libretro_directory = "/tmp/cores" +libretro_info_path = "/tmp/cores" +libretro_log_level = "1" +load_dummy_on_core_shutdown = "true" +location_allow = "false" +location_driver = "null" +log_dir = "~/.config/retroarch/logs" +log_to_file = "false" +log_to_file_timestamp = "false" +log_verbosity = "true" +materialui_auto_rotate_nav_bar = "true" +materialui_dual_thumbnail_list_view_enable = "true" +materialui_icons_enable = "true" +materialui_landscape_layout_optimization = "1" +materialui_menu_color_theme = "9" +materialui_menu_transition_animation = "0" +materialui_playlist_icons_enable = "true" +materialui_show_nav_bar = "true" +materialui_thumbnail_background_enable = "true" +materialui_thumbnail_view_landscape = "2" +materialui_thumbnail_view_portrait = "1" +memory_show = "false" +memory_update_interval = "256" +menu_battery_level_enable = "true" +menu_core_enable = "true" +menu_dynamic_wallpaper_enable = "false" +menu_enable_widgets = "true" +menu_font_color_blue = "255" +menu_font_color_green = "255" +menu_font_color_red = "255" +menu_footer_opacity = "1.000000" +menu_framebuffer_opacity = "0.899999" +menu_header_opacity = "1.000000" +menu_horizontal_animation = "true" +menu_insert_disk_resume = "true" +menu_left_thumbnails = "0" +menu_linear_filter = "false" +menu_mouse_enable = "false" +menu_navigation_browser_filter_supported_extensions_enable = "true" +menu_navigation_wraparound_enable = "true" +menu_pause_libretro = "true" +menu_pointer_enable = "false" +menu_rgui_full_width_layout = "true" +menu_rgui_shadows = "false" +menu_rgui_transparency = "true" +menu_savestate_resume = "true" +menu_scale_factor = "0.300000" +menu_screensaver_animation = "0" +menu_screensaver_animation_speed = "1.000000" +menu_screensaver_timeout = "0" +menu_scroll_delay = "256" +menu_scroll_fast = "false" +menu_shader_pipeline = "2" +menu_show_advanced_settings = "true" +menu_show_configurations = "true" +menu_show_core_updater = "false" +menu_show_dump_disc = "true" +menu_show_help = "true" +menu_show_information = "true" +menu_show_latency = "true" +menu_show_legacy_thumbnail_updater = "false" +menu_show_load_content_animation = "false" +menu_show_load_content = "true" +menu_show_load_core = "true" +menu_show_load_disc = "true" +menu_show_online_updater = "true" +menu_show_overlays = "true" +menu_show_quit_retroarch = "true" +menu_show_reboot = "false" +menu_show_restart_retroarch = "true" +menu_show_rewind = "true" +menu_show_shutdown = "false" +menu_show_sublabels = "true" +menu_show_video_layout = "true" +menu_swap_ok_cancel_buttons = "false" +menu_throttle_framerate = "true" +menu_thumbnails = "3" +menu_thumbnail_upscale_threshold = "0" +menu_ticker_smooth = "true" +menu_ticker_speed = "2.000000" +menu_ticker_type = "1" +menu_timedate_date_separator = "0" +menu_timedate_enable = "true" +menu_timedate_style = "11" +menu_unified_controls = "false" +menu_use_preferred_system_color_theme = "false" +menu_wallpaper = "" +menu_wallpaper_opacity = "1.000000" +menu_widget_scale_auto = "false" +menu_widget_scale_factor = "0.350000" +menu_widget_scale_factor_windowed = "1.000000" +menu_xmb_animation_horizontal_highlight = "0" +menu_xmb_animation_move_up_down = "0" +menu_xmb_animation_opening_main_menu = "0" +menu_xmb_thumbnail_scale_factor = "100" +midi_driver = "alsa" +midi_input = "Off" +midi_output = "Off" +midi_volume = "100" +netplay_allow_slaves = "true" +netplay_check_frames = "600" +netplay_input_latency_frames_min = "0" +netplay_input_latency_frames_range = "0" +netplay_ip_address = "" +netplay_ip_port = "55435" +netplay_max_connections = "3" +netplay_mitm_server = "nyc" +netplay_nat_traversal = "true" +netplay_nickname = "" +netplay_password = "" +netplay_public_announce = "true" +netplay_request_device_p10 = "false" +netplay_request_device_p11 = "false" +netplay_request_device_p12 = "false" +netplay_request_device_p13 = "false" +netplay_request_device_p14 = "false" +netplay_request_device_p15 = "false" +netplay_request_device_p16 = "false" +netplay_request_device_p1 = "false" +netplay_request_device_p2 = "false" +netplay_request_device_p3 = "false" +netplay_request_device_p4 = "false" +netplay_request_device_p5 = "false" +netplay_request_device_p6 = "false" +netplay_request_device_p7 = "false" +netplay_request_device_p8 = "false" +netplay_request_device_p9 = "false" +netplay_require_slaves = "false" +netplay_share_analog = "1" +netplay_share_digital = "1" +netplay_spectate_password = "" +netplay_start_as_spectator = "false" +netplay_stateless_mode = "false" +netplay_use_mitm_server = "false" +network_cmd_enable = "false" +network_cmd_port = "55355" +network_on_demand_thumbnails = "false" +network_remote_base_port = "55400" +network_remote_enable = "false" +network_remote_enable_user_p10 = "false" +network_remote_enable_user_p11 = "false" +network_remote_enable_user_p12 = "false" +network_remote_enable_user_p13 = "false" +network_remote_enable_user_p14 = "false" +network_remote_enable_user_p15 = "false" +network_remote_enable_user_p16 = "false" +network_remote_enable_user_p1 = "false" +network_remote_enable_user_p2 = "false" +network_remote_enable_user_p3 = "false" +network_remote_enable_user_p4 = "false" +network_remote_enable_user_p5 = "false" +network_remote_enable_user_p6 = "false" +network_remote_enable_user_p7 = "false" +network_remote_enable_user_p8 = "false" +network_remote_enable_user_p9 = "false" +notification_show_autoconfig = "false" +notification_show_cheats_applied = "true" +notification_show_config_override_load = "false" +notification_show_fast_forward = "true" +notification_show_netplay_extra = "false" +notification_show_patch_applied = "true" +notification_show_refresh_rate = "true" +notification_show_remap_load = "false" +notification_show_screenshot_duration = "2" +notification_show_screenshot = "false" +notification_show_screenshot_flash = "1" +notification_show_set_initial_disk = "true" +overlay_directory = "/tmp/overlays" +ozone_collapse_sidebar = "false" +ozone_menu_color_theme = "1" +ozone_scroll_content_metadata = "false" +ozone_sort_after_truncate_playlist_name = "true" +ozone_truncate_playlist_name = "true" +pause_nonactive = "true" +perfcnt_enable = "false" +playlist_compression = "false" +playlist_cores = "" +playlist_directory = "~/playlists" +playlist_entry_remove_enable = "1" +playlist_entry_remove = "false" +playlist_entry_rename = "false" +playlist_fuzzy_archive_match = "false" +playlist_names = "" +playlist_portable_paths = "false" +playlist_show_entry_idx = "true" +playlist_show_inline_core_name = "0" +playlist_show_sublabels = "true" +playlist_sort_alphabetical = "true" +playlist_sublabel_last_played_style = "0" +playlist_sublabel_runtime_type = "0" +playlist_use_old_format = "false" +quick_menu_show_add_to_favorites = "true" +quick_menu_show_cheats = "true" +quick_menu_show_close_content = "true" +quick_menu_show_controls = "true" +quick_menu_show_core_options_flush = "false" +quick_menu_show_download_thumbnails = "true" +quick_menu_show_information = "true" +quick_menu_show_options = "true" +quick_menu_show_recording = "true" +quick_menu_show_reset_core_association = "true" +quick_menu_show_restart_content = "true" +quick_menu_show_resume_content = "true" +quick_menu_show_save_content_dir_overrides = "true" +quick_menu_show_save_core_overrides = "false" +quick_menu_show_save_game_overrides = "false" +quick_menu_show_save_load_state = "true" +quick_menu_show_set_core_association = "true" +quick_menu_show_shaders = "true" +quick_menu_show_start_recording = "true" +quick_menu_show_start_streaming = "true" +quick_menu_show_streaming = "true" +quick_menu_show_take_screenshot = "true" +quick_menu_show_undo_save_load_state = "false" +quit_on_close_content = "0" +quit_press_twice = "true" +record_driver = "null" +recording_config_directory = "" +recording_output_directory = "~/roms/screenshots" +resampler_directory = "" +rewind_buffer_size = "20971520" +rewind_buffer_size_step = "10" +rewind_enable = "false" +rewind_granularity = "1" +rgui_aspect_ratio = "0" +rgui_aspect_ratio_lock = "0" +rgui_background_filler_thickness_enable = "true" +rgui_border_filler_enable = "true" +rgui_border_filler_thickness_enable = "true" +rgui_browser_directory = "~/roms" +rgui_config_directory = "~/.config/retroarch/config" +rgui_extended_ascii = "false" +rgui_inline_thumbnails = "false" +rgui_internal_upscale_level = "0" +rgui_menu_color_theme = "4" +rgui_menu_theme_preset = "" +rgui_particle_effect = "0" +rgui_particle_effect_screensaver = "true" +rgui_particle_effect_speed = "1.000000" +rgui_show_start_screen = "false" +rgui_swap_thumbnails = "false" +rgui_switch_icons = "true" +rgui_thumbnail_delay = "0" +rgui_thumbnail_downscaler = "0" +run_ahead_enabled = "false" +run_ahead_frames = "1" +run_ahead_hide_warnings = "false" +run_ahead_secondary_instance = "true" +runtime_log_directory = "default" +save_file_compression = "false" +savefile_directory = "~/.config/retroarch/saves" +savefiles_in_content_dir = "true" +savestate_auto_index = "false" +savestate_auto_load = "false" +savestate_auto_save = "false" +savestate_directory = "~/.config/retroarch/states" +savestate_file_compression = "true" +savestate_max_keep = "0" +savestates_in_content_dir = "false" +savestate_thumbnail_enable = "true" +scan_without_core_match = "false" +screen_brightness = "100" +screen_orientation = "0" +screenshot_directory = "~/roms/screenshots" +screenshots_in_content_dir = "false" +settings_show_accessibility = "true" +settings_show_achievements = "true" +settings_show_ai_service = "true" +settings_show_audio = "true" +settings_show_configuration = "true" +settings_show_core = "true" +settings_show_directory = "true" +settings_show_drivers = "true" +settings_show_file_browser = "true" +settings_show_frame_throttle = "true" +settings_show_input = "true" +settings_show_latency = "true" +settings_show_logging = "true" +settings_show_network = "true" +settings_show_onscreen_display = "true" +settings_show_playlists = "true" +settings_show_power_management = "true" +settings_show_recording = "true" +settings_show_saving = "true" +settings_show_user_interface = "true" +settings_show_user = "true" +settings_show_video = "true" +show_hidden_files = "false" +slowmotion_ratio = "3.000000" +soft_filter_enable = "false" +soft_filter_index = "0" +sort_savefiles_by_content_enable = "false" +sort_savefiles_enable = "false" +sort_savestates_by_content_enable = "false" +sort_savestates_enable = "false" +sort_screenshots_by_content_enable = "false" +state_slot = "0" +statistics_show = "false" +stdin_cmd_enable = "false" +streaming_mode = "0" +suspend_screensaver_enable = "true" +sustained_performance_mode = "false" +system_directory = "~/roms/bios" +systemfiles_in_content_dir = "false" +threaded_data_runloop_enable = "true" +thumbnails_directory = "~/thumbnails" +twitch_stream_key = "" +ui_companion_enable = "false" +ui_companion_start_on_boot = "true" +ui_companion_toggle = "false" +ui_menubar_enable = "true" +use_last_start_directory = "false" +user_language = "0" +vibrate_on_keypress = "true" +video_adaptive_vsync = "false" +video_allow_rotate = "true" +video_aspect_ratio = "-1.000000" +video_aspect_ratio_auto = "true" +video_black_frame_insertion = "0" +video_context_driver = "" +video_crop_overscan = "true" +video_ctx_scaling = "false" +video_disable_composition = "false" +video_driver = "glcore" +video_filter = "" +video_filter_dir = "~/.config/retroarch/filters/video" +video_font_enable = "true" +video_font_path = "/usr/share/retroarch-assets/xmb/monochrome/font.ttf" +video_font_size = "32.000000" +video_force_aspect = "true" +video_force_srgb_disable = "false" +video_frame_delay = "0" +video_frame_delay_auto = "false" +video_fullscreen = "true" +video_fullscreen_x = "640" +video_fullscreen_y = "480" +video_gpu_record = "false" +video_gpu_screenshot = "false" +video_hard_sync = "false" +video_hard_sync_frames = "0" +video_hdr_display_contrast = "5.000000" +video_hdr_enable = "false" +video_hdr_expand_gamut = "true" +video_hdr_max_nits = "1000.000000" +video_hdr_paper_white_nits = "200.000000" +video_layout_directory = "~/.config/retroarch/layouts" +video_layout_enable = "true" +video_layout_path = "" +video_layout_selected_view = "0" +video_max_swapchain_images = "3" +video_message_color = "ffff00" +video_message_pos_x = "0.049999" +video_message_pos_y = "0.049999" +video_monitor_index = "0" +video_msg_bgcolor_blue = "0" +video_msg_bgcolor_enable = "false" +video_msg_bgcolor_green = "0" +video_msg_bgcolor_opacity = "1.000000" +video_msg_bgcolor_red = "0" +video_notch_write_over_enable = "false" +video_oga_vertical_enable = "false" +video_post_filter_record = "false" +video_record_config = "" +video_record_quality = "4" +video_record_scale_factor = "1" +video_record_threads = "2" +video_refresh_rate = "60.000000" +video_rotation = "0" +video_scale = "3.000000" +video_scale_integer = "false" +video_scale_integer_overscale = "false" +video_shader_delay = "0" +video_shader_dir = "/tmp/shaders" +video_shader_enable = "false" +video_shader_preset_save_reference_enable = "true" +video_shader_remember_last_dir = "false" +video_shader_watch_files = "false" +video_shared_context = "false" +video_smooth = "false" +video_stream_config = "" +video_stream_port = "56400" +video_stream_quality = "10" +video_stream_scale_factor = "1" +video_stream_url = "" +video_swap_interval = "1" +video_threaded = "true" +video_vsync = "true" +video_window_auto_height_max = "480" +video_window_auto_width_max = "640" +video_window_custom_size_enable = "false" +video_windowed_fullscreen = "false" +video_windowed_position_height = "720" +video_windowed_position_width = "1280" +video_windowed_position_x = "0" +video_windowed_position_y = "0" +video_window_opacity = "100" +video_window_save_positions = "false" +video_window_show_decorations = "true" +vrr_runloop_enable = "false" +wifi_driver = "null" +wifi_enabled = "true" +xmb_alpha_factor = "75" +xmb_font = "/usr/share/retroarch-assets/xmb/monochrome/font.ttf" +xmb_layout = "2" +xmb_menu_color_theme = "4" +xmb_shadows_enable = "true" +xmb_theme = "0" +xmb_vertical_thumbnails = "false" +youtube_stream_key = "" diff --git a/packages/emulators/libretro/retroarch/sources/H700/retroarch32bit-append.cfg b/packages/emulators/libretro/retroarch/sources/H700/retroarch32bit-append.cfg new file mode 100755 index 000000000..9e743a38f --- /dev/null +++ b/packages/emulators/libretro/retroarch/sources/H700/retroarch32bit-append.cfg @@ -0,0 +1,2 @@ +audio_filter_dir = "/usr/share/retroarch/filters/32bit/audio" +video_filter_dir = "/usr/share/retroarch/filters/32bit/video" diff --git a/packages/emulators/libretro/retroarch/sources/H700/retroarch64bit-append.cfg b/packages/emulators/libretro/retroarch/sources/H700/retroarch64bit-append.cfg new file mode 100755 index 000000000..b6cbf6831 --- /dev/null +++ b/packages/emulators/libretro/retroarch/sources/H700/retroarch64bit-append.cfg @@ -0,0 +1,2 @@ +audio_filter_dir = "/usr/share/retroarch/filters/64bit/audio" +video_filter_dir = "/usr/share/retroarch/filters/64bit/video" diff --git a/packages/emulators/libretro/retroarch/sources/RK3566/retroarch.cfg b/packages/emulators/libretro/retroarch/sources/RK3566/retroarch.cfg index 8f7db2581..f95b39101 100644 --- a/packages/emulators/libretro/retroarch/sources/RK3566/retroarch.cfg +++ b/packages/emulators/libretro/retroarch/sources/RK3566/retroarch.cfg @@ -276,7 +276,7 @@ input_max_users = "5" input_menu_toggle_axis = "nul" input_menu_toggle_btn = "2" input_menu_toggle = "f1" -input_menu_toggle_gamepad_combo = "2" +input_menu_toggle_gamepad_combo = "9" input_menu_toggle_mbtn = "nul" input_movie_record_toggle_axis = "nul" input_movie_record_toggle_btn = "nul" diff --git a/packages/emulators/libretro/retroarch/sources/RK3588/retroarch.cfg b/packages/emulators/libretro/retroarch/sources/RK3588/retroarch.cfg index 4cf09f7de..46991fdc9 100755 --- a/packages/emulators/libretro/retroarch/sources/RK3588/retroarch.cfg +++ b/packages/emulators/libretro/retroarch/sources/RK3588/retroarch.cfg @@ -734,7 +734,7 @@ video_context_driver = "" video_crop_overscan = "true" video_ctx_scaling = "false" video_disable_composition = "false" -video_driver = "glcore" +video_driver = "gl" video_filter = "" video_filter_dir = "~/.config/retroarch/filters/video" video_font_enable = "true" diff --git a/packages/emulators/libretro/scummvm-lr/package.mk b/packages/emulators/libretro/scummvm-lr/package.mk index 2db478790..2be9e0650 100644 --- a/packages/emulators/libretro/scummvm-lr/package.mk +++ b/packages/emulators/libretro/scummvm-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="scummvm-lr" -PKG_VERSION="8ce898dcc55e56b75b12ba2a5023bb062e918198" +PKG_VERSION="4f5f776b8d25cfc4636ff02e01b8fa7fe4259950" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/scummvm" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/libretro/slang-shaders/package.mk b/packages/emulators/libretro/slang-shaders/package.mk index 64bc4a7b0..cfbceb83b 100644 --- a/packages/emulators/libretro/slang-shaders/package.mk +++ b/packages/emulators/libretro/slang-shaders/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="slang-shaders" -PKG_VERSION="573b339c98400ff9c2687bf4d653edaf7dfd3fdb" +PKG_VERSION="b3d795acb9e682bb05aa940ce3c296446f227ab9" PKG_LICENSE="GPL" PKG_SITE="https://github.com/libretro/slang-shaders" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/libretro/smsplus-gx-lr/package.mk b/packages/emulators/libretro/smsplus-gx-lr/package.mk index b2e537104..e4cb6834f 100644 --- a/packages/emulators/libretro/smsplus-gx-lr/package.mk +++ b/packages/emulators/libretro/smsplus-gx-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="smsplus-gx-lr" -PKG_VERSION="96fa9bc65aa27a5ab2779f9f2ff0439fec7cf513" +PKG_VERSION="978d977119eff1bd7214c0095eb91b15b859bb61" PKG_LICENSE="Non-commercial" PKG_SITE="https://github.com/libretro/smsplus-gx" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/snes9x2002-lr/package.mk b/packages/emulators/libretro/snes9x2002-lr/package.mk index f14dfb230..608e1a57f 100644 --- a/packages/emulators/libretro/snes9x2002-lr/package.mk +++ b/packages/emulators/libretro/snes9x2002-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="snes9x2002-lr" -PKG_VERSION="540baad622d9833bba7e0696193cb06f5f02f564" +PKG_VERSION="2790d03b2266c58444429b4f7d76ba298e0bde87" PKG_LICENSE="Non-commercial" PKG_SITE="https://github.com/libretro/snes9x2002" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/snes9x2005_plus-lr/package.mk b/packages/emulators/libretro/snes9x2005_plus-lr/package.mk index cbb04650c..2709740b5 100644 --- a/packages/emulators/libretro/snes9x2005_plus-lr/package.mk +++ b/packages/emulators/libretro/snes9x2005_plus-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="snes9x2005_plus-lr" -PKG_VERSION="fd45b0e055bce6cff3acde77414558784e93e7d0" +PKG_VERSION="285220ed696ec661ce5c42856e033a1586fda967" PKG_LICENSE="Non-commercial" PKG_SITE="https://github.com/libretro/snes9x2005" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/snes9x2010-lr/package.mk b/packages/emulators/libretro/snes9x2010-lr/package.mk index 11f5e5316..edd02afa2 100644 --- a/packages/emulators/libretro/snes9x2010-lr/package.mk +++ b/packages/emulators/libretro/snes9x2010-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="snes9x2010-lr" -PKG_VERSION="d8b10c4cd7606ed58f9c562864c986bc960faaaf" +PKG_VERSION="84b963a2f627bbc41198e357430619f34bbebc8a" PKG_LICENSE="Non-commercial" PKG_SITE="https://github.com/libretro/snes9x2010" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/stella-lr/package.mk b/packages/emulators/libretro/stella-lr/package.mk index cd1ca531a..1d78e3e5f 100644 --- a/packages/emulators/libretro/stella-lr/package.mk +++ b/packages/emulators/libretro/stella-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="stella-lr" -PKG_VERSION="cd24689b20f2ff4a5b1f588415b77b4f1747e431" +PKG_VERSION="90da70a572de8474ced4f18ddbe98cad4e6d52df" PKG_LICENSE="GPL2" PKG_SITE="https://github.com/stella-emu/stella" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/swanstation-lr/package.mk b/packages/emulators/libretro/swanstation-lr/package.mk index 3fadaf831..7c2bf3cb8 100644 --- a/packages/emulators/libretro/swanstation-lr/package.mk +++ b/packages/emulators/libretro/swanstation-lr/package.mk @@ -3,7 +3,7 @@ # Maintenance 2020 351ELEC team (https://github.com/fewtarius/351ELEC) PKG_NAME="swanstation-lr" -PKG_VERSION="7a27436548128c00e70b08dde63c52118e2a6228" +PKG_VERSION="37cd87e14ca09ac1b558e5b2c7db4ad256865bbb" PKG_LICENSE="GPLv3" PKG_SITE="https://github.com/libretro/swanstation" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/tgbdual-lr/package.mk b/packages/emulators/libretro/tgbdual-lr/package.mk index 648875c7f..d60d1e9bc 100644 --- a/packages/emulators/libretro/tgbdual-lr/package.mk +++ b/packages/emulators/libretro/tgbdual-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="tgbdual-lr" -PKG_VERSION="a6f3018e6a23030afc1873845ee54d4b2d8ec9d3" +PKG_VERSION="fba7d50b136abef0692b434091a9d735f7ad28b2" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/tgbdual-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/theodore-lr/package.mk b/packages/emulators/libretro/theodore-lr/package.mk index 417b934fa..cfe1783a1 100644 --- a/packages/emulators/libretro/theodore-lr/package.mk +++ b/packages/emulators/libretro/theodore-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="theodore-lr" -PKG_VERSION="7889613edede5ba89de1dfe7c05cf8397cf178ba" +PKG_VERSION="503b2bb4fa747442fb91b89644238e5267637bcd" PKG_LICENSE="GPLv3" PKG_SITE="https://github.com/Zlika/theodore" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/libretro/vba-next-lr/package.mk b/packages/emulators/libretro/vba-next-lr/package.mk index 8e0806458..716778c32 100644 --- a/packages/emulators/libretro/vba-next-lr/package.mk +++ b/packages/emulators/libretro/vba-next-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="vba-next-lr" -PKG_VERSION="ee92625d2f1666496be4f5662508a2430e846b00" +PKG_VERSION="2c726f25da75a5600ef5791ce904befe06c4dddd" PKG_LICENSE="GPL" PKG_SITE="https://github.com/libretro/vba-next" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/vbam-lr/package.mk b/packages/emulators/libretro/vbam-lr/package.mk index aab1fea92..68117d944 100644 --- a/packages/emulators/libretro/vbam-lr/package.mk +++ b/packages/emulators/libretro/vbam-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="vbam-lr" -PKG_VERSION="a2378f05f600a5a9cf450c60a87976b80d6a895a" +PKG_VERSION="b5a4788747fa46afe681080db758f4a827ff7274" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/vbam-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/vecx-lr/package.mk b/packages/emulators/libretro/vecx-lr/package.mk index 88bc31a40..2a862d130 100644 --- a/packages/emulators/libretro/vecx-lr/package.mk +++ b/packages/emulators/libretro/vecx-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="vecx-lr" -PKG_VERSION="3a5655ff67e161ef33f66b0f6c26aaf2e59ceda8" +PKG_VERSION="0e48a8903bd9cc359da3f7db783f83e22722c0cf" PKG_LICENSE="GPLv2|LGPLv2.1" PKG_SITE="https://github.com/libretro/libretro-vecx" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/vircon32-lr/package.mk b/packages/emulators/libretro/vircon32-lr/package.mk index 48d2540f5..2cbee5c79 100644 --- a/packages/emulators/libretro/vircon32-lr/package.mk +++ b/packages/emulators/libretro/vircon32-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2024-present AmberELEC (https://github.com/AmberELEC) PKG_NAME="vircon32-lr" -PKG_VERSION="293d0b2b0e3b996b991b7a667ec31a64d8865450" +PKG_VERSION="bb87ba3471f5002d1246ae5bfbedeea441efef00" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/vircon32/vircon32-libretro" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/libretro/vitaquake2-lr/package.mk b/packages/emulators/libretro/vitaquake2-lr/package.mk index c0536ce5c..6e13073b4 100644 --- a/packages/emulators/libretro/vitaquake2-lr/package.mk +++ b/packages/emulators/libretro/vitaquake2-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX) PKG_NAME="vitaquake2-lr" -PKG_VERSION="6bb3ee592169694b055e7efd5fa2a4e57875bddd" +PKG_VERSION="69e56a470638ca8ed15b53212923220360a69f97" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/vitaquake2" PKG_URL="$PKG_SITE/archive/$PKG_VERSION.tar.gz" @@ -18,7 +18,7 @@ fi pre_make_target() { export BUILD_SYSROOT=${SYSROOT_PREFIX} - PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}" + PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}_rocknix" } makeinstall_target() { diff --git a/packages/emulators/libretro/vitaquake2-lr/patches/aarch64/001-set-platform.patch b/packages/emulators/libretro/vitaquake2-lr/patches/aarch64/001-set-platform.patch index f14c8858b..19116a3a4 100644 --- a/packages/emulators/libretro/vitaquake2-lr/patches/aarch64/001-set-platform.patch +++ b/packages/emulators/libretro/vitaquake2-lr/patches/aarch64/001-set-platform.patch @@ -5,12 +5,12 @@ diff -rupN vitaquake2.orig/Makefile vitaquake2/Makefile SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T LIBM := -+else ifeq ($(platform), @DEVICE@) ++else ifeq ($(platform), @DEVICE@_rocknix) + TARGET := $(TARGET_NAME)_libretro.so -+ fpic := -fPIC ++ fpic := -fPIC + SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T -Wl,--no-undefined -+ CFLAGS += -mcpu=@TARGET_CPU@ -mtune=@TARGET_CPU@ -ffast-math -DARM -+ CFLAGS += -D_POSIX_C_SOURCE=199309L ++ CFLAGS += -mcpu=@TARGET_CPU@ -mtune=@TARGET_CPU@ -ffast-math -DARM ++ CFLAGS += -D_POSIX_C_SOURCE=200809L -D_DEFAULT_SOURCE + GLES := 1 + GLES31 := 1 + diff --git a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/package.mk b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/package.mk index 5f1b499d1..29f58bf9b 100644 --- a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/package.mk +++ b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX) PKG_NAME="vitaquake2-rogue-lr" -PKG_VERSION="6bb3ee592169694b055e7efd5fa2a4e57875bddd" +PKG_VERSION="69e56a470638ca8ed15b53212923220360a69f97" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/vitaquake2" PKG_URL="$PKG_SITE/archive/$PKG_VERSION.tar.gz" @@ -18,7 +18,7 @@ fi pre_make_target() { export BUILD_SYSROOT=${SYSROOT_PREFIX} - PKG_MAKE_OPTS_TARGET+=" basegame=rogue platform=${DEVICE}" + PKG_MAKE_OPTS_TARGET+=" basegame=rogue platform=${DEVICE}_rocknix" } makeinstall_target() { diff --git a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/patches/aarch64/001-set-platform.patch b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/patches/aarch64/001-set-platform.patch deleted file mode 100644 index f14c8858b..000000000 --- a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/patches/aarch64/001-set-platform.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -rupN vitaquake2.orig/Makefile vitaquake2/Makefile ---- vitaquake2.orig/Makefile 2023-09-15 16:57:45.991890996 +0000 -+++ vitaquake2/Makefile 2023-09-15 20:08:45.856895708 +0000 -@@ -76,6 +76,15 @@ else ifeq ($(platform), linux-portable) - SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T - LIBM := - -+else ifeq ($(platform), @DEVICE@) -+ TARGET := $(TARGET_NAME)_libretro.so -+ fpic := -fPIC -+ SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T -Wl,--no-undefined -+ CFLAGS += -mcpu=@TARGET_CPU@ -mtune=@TARGET_CPU@ -ffast-math -DARM -+ CFLAGS += -D_POSIX_C_SOURCE=199309L -+ GLES := 1 -+ GLES31 := 1 -+ - else ifneq (,$(findstring rockchip,$(platform))) - EXT ?= so - TARGET := $(TARGET_NAME)_libretro.$(EXT) diff --git a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/patches/aarch64/001-set-platform.patch b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/patches/aarch64/001-set-platform.patch new file mode 120000 index 000000000..77bcdfd10 --- /dev/null +++ b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/patches/aarch64/001-set-platform.patch @@ -0,0 +1 @@ +../../../patches/aarch64/001-set-platform.patch \ No newline at end of file diff --git a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/package.mk b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/package.mk index 1534b815c..3e48e20cd 100644 --- a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/package.mk +++ b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX) PKG_NAME="vitaquake2-xatrix-lr" -PKG_VERSION="6bb3ee592169694b055e7efd5fa2a4e57875bddd" +PKG_VERSION="69e56a470638ca8ed15b53212923220360a69f97" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/vitaquake2" PKG_URL="$PKG_SITE/archive/$PKG_VERSION.tar.gz" @@ -18,7 +18,7 @@ fi pre_make_target() { export BUILD_SYSROOT=${SYSROOT_PREFIX} - PKG_MAKE_OPTS_TARGET+=" basegame=xatrix platform=${DEVICE}" + PKG_MAKE_OPTS_TARGET+=" basegame=xatrix platform=${DEVICE}_rocknix" } makeinstall_target() { diff --git a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/patches/aarch64/001-set-platform.patch b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/patches/aarch64/001-set-platform.patch deleted file mode 100644 index f14c8858b..000000000 --- a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/patches/aarch64/001-set-platform.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -rupN vitaquake2.orig/Makefile vitaquake2/Makefile ---- vitaquake2.orig/Makefile 2023-09-15 16:57:45.991890996 +0000 -+++ vitaquake2/Makefile 2023-09-15 20:08:45.856895708 +0000 -@@ -76,6 +76,15 @@ else ifeq ($(platform), linux-portable) - SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T - LIBM := - -+else ifeq ($(platform), @DEVICE@) -+ TARGET := $(TARGET_NAME)_libretro.so -+ fpic := -fPIC -+ SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T -Wl,--no-undefined -+ CFLAGS += -mcpu=@TARGET_CPU@ -mtune=@TARGET_CPU@ -ffast-math -DARM -+ CFLAGS += -D_POSIX_C_SOURCE=199309L -+ GLES := 1 -+ GLES31 := 1 -+ - else ifneq (,$(findstring rockchip,$(platform))) - EXT ?= so - TARGET := $(TARGET_NAME)_libretro.$(EXT) diff --git a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/patches/aarch64/001-set-platform.patch b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/patches/aarch64/001-set-platform.patch new file mode 120000 index 000000000..77bcdfd10 --- /dev/null +++ b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/patches/aarch64/001-set-platform.patch @@ -0,0 +1 @@ +../../../patches/aarch64/001-set-platform.patch \ No newline at end of file diff --git a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/package.mk b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/package.mk index 7df1d82e9..f71292035 100644 --- a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/package.mk +++ b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX) PKG_NAME="vitaquake2-zaero-lr" -PKG_VERSION="6bb3ee592169694b055e7efd5fa2a4e57875bddd" +PKG_VERSION="69e56a470638ca8ed15b53212923220360a69f97" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/vitaquake2" PKG_URL="$PKG_SITE/archive/$PKG_VERSION.tar.gz" @@ -18,7 +18,7 @@ fi pre_make_target() { export BUILD_SYSROOT=${SYSROOT_PREFIX} - PKG_MAKE_OPTS_TARGET+=" basegame=zaero platform=${DEVICE}" + PKG_MAKE_OPTS_TARGET+=" basegame=zaero platform=${DEVICE}_rocknix" } makeinstall_target() { diff --git a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/patches/aarch64/001-set-platform.patch b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/patches/aarch64/001-set-platform.patch deleted file mode 100644 index f14c8858b..000000000 --- a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/patches/aarch64/001-set-platform.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -rupN vitaquake2.orig/Makefile vitaquake2/Makefile ---- vitaquake2.orig/Makefile 2023-09-15 16:57:45.991890996 +0000 -+++ vitaquake2/Makefile 2023-09-15 20:08:45.856895708 +0000 -@@ -76,6 +76,15 @@ else ifeq ($(platform), linux-portable) - SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T - LIBM := - -+else ifeq ($(platform), @DEVICE@) -+ TARGET := $(TARGET_NAME)_libretro.so -+ fpic := -fPIC -+ SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T -Wl,--no-undefined -+ CFLAGS += -mcpu=@TARGET_CPU@ -mtune=@TARGET_CPU@ -ffast-math -DARM -+ CFLAGS += -D_POSIX_C_SOURCE=199309L -+ GLES := 1 -+ GLES31 := 1 -+ - else ifneq (,$(findstring rockchip,$(platform))) - EXT ?= so - TARGET := $(TARGET_NAME)_libretro.$(EXT) diff --git a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/patches/aarch64/001-set-platform.patch b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/patches/aarch64/001-set-platform.patch new file mode 120000 index 000000000..77bcdfd10 --- /dev/null +++ b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/patches/aarch64/001-set-platform.patch @@ -0,0 +1 @@ +../../../patches/aarch64/001-set-platform.patch \ No newline at end of file diff --git a/packages/emulators/libretro/vitaquake3-lr/package.mk b/packages/emulators/libretro/vitaquake3-lr/package.mk index 05e8be26a..829423e05 100644 --- a/packages/emulators/libretro/vitaquake3-lr/package.mk +++ b/packages/emulators/libretro/vitaquake3-lr/package.mk @@ -16,6 +16,10 @@ elif [ "${OPENGLES_SUPPORT}" = "yes" ]; then PKG_DEPENDS_TARGET+=" ${OPENGLES}" fi +pre_configure_target() { + export CFLAGS="${CFLAGS} -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -Wno-implicit-int" +} + makeinstall_target() { mkdir -p ${INSTALL}/usr/lib/libretro cp vitaquake3_libretro.so $INSTALL/usr/lib/libretro/ diff --git a/packages/emulators/libretro/xmil-lr/package.mk b/packages/emulators/libretro/xmil-lr/package.mk index f94c06f7a..f53621895 100644 --- a/packages/emulators/libretro/xmil-lr/package.mk +++ b/packages/emulators/libretro/xmil-lr/package.mk @@ -2,9 +2,9 @@ # Copyright (C) 2019-present asakous (https://github.com/asakous) PKG_NAME="xmil-lr" -PKG_VERSION="b07506c0cae31d260db28cb079148857d6ca2e93" +PKG_VERSION="927e2eb8c097e88f623efdf15c4372b973a6c5e5" PKG_LICENSE="Unknown" -PKG_SITE="https://github.com/r-type/xmil-libretro" +PKG_SITE="https://github.com/libretro/xmil-libretro" PKG_URL="${PKG_SITE}.git" PKG_DEPENDS_TARGET="toolchain" PKG_LONGDESC="Libretro port of X Millennium Sharp X1 emulator" diff --git a/packages/emulators/libretro/yabasanshiro-lr/package.mk b/packages/emulators/libretro/yabasanshiro-lr/package.mk index b06094e89..50f65a757 100644 --- a/packages/emulators/libretro/yabasanshiro-lr/package.mk +++ b/packages/emulators/libretro/yabasanshiro-lr/package.mk @@ -40,11 +40,21 @@ if [ "${OPENGLES_SUPPORT}" = yes ]; then fi pre_configure_target() { + export CFLAGS="${CFLAGS} -Wno-implicit-function-declaration" + if [ "${ARCH}" = "aarch64" ]; then + # This is only needed for armv8.2-a targets where we don't use this flag + # as it prohibits the use of LSE-instructions, this is a package bug most likely + export CFLAGS="${CFLAGS} -mno-outline-atomics" + export CXXFLAGS="${CXXFLAGS} -mno-outline-atomics" + fi sed -i 's/\-O[23]/-Ofast -ffast-math/' ${PKG_BUILD}/yabause/src/libretro/Makefile case ${DEVICE} in RK3*|S922X) PKG_MAKE_OPTS_TARGET+=" -C yabause/src/libretro platform=rockpro64 HAVE_NEON=0 FORCE_GLES=1" ;; + H700) + PKG_MAKE_OPTS_TARGET+=" -C yabause/src/libretro platform=arm64_cortex_a53_gles3 HAVE_NEON=0 FORCE_GLES=1" + ;; AMD64) PKG_MAKE_OPTS_TARGET+=" -C yabause/src/libretro FORCE_GLES=0 USE_X86_DRC=1 FASTMATH=1" ;; diff --git a/packages/emulators/standalone/dolphin-sa/config/S922X/GamecubeControllerProfiles/GCPadNew.ini.south b/packages/emulators/standalone/dolphin-sa/config/S922X/GamecubeControllerProfiles/GCPadNew.ini.south index d34241032..6f3ae8606 100644 --- a/packages/emulators/standalone/dolphin-sa/config/S922X/GamecubeControllerProfiles/GCPadNew.ini.south +++ b/packages/emulators/standalone/dolphin-sa/config/S922X/GamecubeControllerProfiles/GCPadNew.ini.south @@ -5,7 +5,7 @@ Buttons/B = Button 3 Buttons/Start = Button 7 Buttons/X = Button 1 Buttons/Y = Button 2 -Buttons/Z = Button 5 +Buttons/Z = Axis 5+ Buttons/Hotkey = Button 6 C-Stick/Dead Zone = 25.000000000000000 C-Stick/Down = Axis 4+ @@ -25,5 +25,5 @@ Main Stick/Modifier = Shift_L Main Stick/Modifier/Range = 50.000000000000000 Main Stick/Right = Axis 0+ Main Stick/Up = Axis 1- -Triggers/L = Axis 2+ -Triggers/R = Axis 5+ +Triggers/L = Button 4 +Triggers/R = Button 5 diff --git a/packages/emulators/standalone/dolphin-sa/config/S922X/GamecubeControllerProfiles/GCPadNew.ini.west b/packages/emulators/standalone/dolphin-sa/config/S922X/GamecubeControllerProfiles/GCPadNew.ini.west index d9d0185cb..7c37ae856 100644 --- a/packages/emulators/standalone/dolphin-sa/config/S922X/GamecubeControllerProfiles/GCPadNew.ini.west +++ b/packages/emulators/standalone/dolphin-sa/config/S922X/GamecubeControllerProfiles/GCPadNew.ini.west @@ -5,7 +5,7 @@ Buttons/B = Button 0 Buttons/Start = Button 7 Buttons/X = Button 2 Buttons/Y = Button 3 -Buttons/Z = Button 5 +Buttons/Z = Axis 5+ Buttons/Hotkey = Button 6 C-Stick/Dead Zone = 25.000000000000000 C-Stick/Down = Axis 4+ @@ -25,5 +25,5 @@ Main Stick/Modifier = Shift_L Main Stick/Modifier/Range = 50.000000000000000 Main Stick/Right = Axis 0+ Main Stick/Up = Axis 1- -Triggers/L = Axis 2+ -Triggers/R = Axis 5+ +Triggers/L = Button 4 +Triggers/R = Button 5 diff --git a/packages/emulators/standalone/dolphin-sa/package.mk b/packages/emulators/standalone/dolphin-sa/package.mk index e9ae494e1..255c82034 100644 --- a/packages/emulators/standalone/dolphin-sa/package.mk +++ b/packages/emulators/standalone/dolphin-sa/package.mk @@ -3,7 +3,7 @@ PKG_NAME="dolphin-sa" PKG_LICENSE="GPLv2" -PKG_DEPENDS_TARGET="toolchain libevdev libdrm ffmpeg zlib libpng lzo libusb zstd ecm openal-soft pulseaudio alsa-lib" +PKG_DEPENDS_TARGET="toolchain libevdev libdrm ffmpeg zlib libpng lzo libusb zstd ecm openal-soft pulseaudio alsa-lib libfmt" PKG_LONGDESC="Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements. " PKG_TOOLCHAIN="cmake" diff --git a/packages/emulators/standalone/drastic-sa/config/H700/drastic.cfg b/packages/emulators/standalone/drastic-sa/config/H700/drastic.cfg new file mode 100644 index 000000000..b27c7d5b9 --- /dev/null +++ b/packages/emulators/standalone/drastic-sa/config/H700/drastic.cfg @@ -0,0 +1,111 @@ +frameskip_type = 2 +frameskip_value = 3 +safe_frameskip = 0 +show_frame_counter = 0 +screen_orientation = 1 +screen_swap = 0 +savestate_number = 0 +fast_forward = 0 +enable_sound = 1 +clock_speed = 0 +threaded_3d = 1 +mirror_touch = 0 +compress_savestates = 1 +savestate_snapshot = 1 +unzip_roms = 0 +preload_roms = 0 +backup_in_savestates = 1 +ignore_gamecard_limit = 0 +frame_interval = 0 +trim_roms = 0 +fix_main_2d_screen = 0 +disable_edge_marking = 0 +interframe_blend = 0 +hires_3d = 1 +use_rtc_custom_time = 0 +rtc_custom_time = 0 +rtc_system_time = 0 +slot2_device_type = 0 +rumble_frames = 3 +firmware.username = JELOS +firmware.language = 1 +firmware.favorite_color = 0 +firmware.birthday_month = 1 +firmware.birthday_day = 1 +enable_cheats = 1 +controls_a[CONTROL_INDEX_UP] = 1217 +controls_a[CONTROL_INDEX_DOWN] = 1153 +controls_a[CONTROL_INDEX_LEFT] = 1216 +controls_a[CONTROL_INDEX_RIGHT] = 1152 +controls_a[CONTROL_INDEX_A] = 65535 +controls_a[CONTROL_INDEX_B] = 65535 +controls_a[CONTROL_INDEX_X] = 65535 +controls_a[CONTROL_INDEX_Y] = 65535 +controls_a[CONTROL_INDEX_L] = 65535 +controls_a[CONTROL_INDEX_R] = 65535 +controls_a[CONTROL_INDEX_START] = 65535 +controls_a[CONTROL_INDEX_SELECT] = 65535 +controls_a[CONTROL_INDEX_HINGE] = 65535 +controls_a[CONTROL_INDEX_TOUCH_CURSOR_UP] = 65535 +controls_a[CONTROL_INDEX_TOUCH_CURSOR_DOWN] = 65535 +controls_a[CONTROL_INDEX_TOUCH_CURSOR_LEFT] = 65535 +controls_a[CONTROL_INDEX_TOUCH_CURSOR_RIGHT] = 65535 +controls_a[CONTROL_INDEX_TOUCH_CURSOR_PRESS] = 65535 +controls_a[CONTROL_INDEX_MENU] = 65535 +controls_a[CONTROL_INDEX_SAVE_STATE] = 65535 +controls_a[CONTROL_INDEX_LOAD_STATE] = 65535 +controls_a[CONTROL_INDEX_FAST_FORWARD] = 65535 +controls_a[CONTROL_INDEX_SWAP_SCREENS] = 65535 +controls_a[CONTROL_INDEX_SWAP_ORIENTATION_A] = 65535 +controls_a[CONTROL_INDEX_SWAP_ORIENTATION_B] = 65535 +controls_a[CONTROL_INDEX_LOAD_GAME] = 65535 +controls_a[CONTROL_INDEX_QUIT] = 65535 +controls_a[CONTROL_INDEX_FAKE_MICROPHONE] = 65535 +controls_a[CONTROL_INDEX_UI_UP] = 1217 +controls_a[CONTROL_INDEX_UI_DOWN] = 1153 +controls_a[CONTROL_INDEX_UI_LEFT] = 1216 +controls_a[CONTROL_INDEX_UI_RIGHT] = 1152 +controls_a[CONTROL_INDEX_UI_SELECT] = 65535 +controls_a[CONTROL_INDEX_UI_BACK] = 65535 +controls_a[CONTROL_INDEX_UI_EXIT] = 65535 +controls_a[CONTROL_INDEX_UI_PAGE_UP] = 65535 +controls_a[CONTROL_INDEX_UI_PAGE_DOWN] = 65535 +controls_a[CONTROL_INDEX_UI_SWITCH] = 65535 +controls_b[CONTROL_INDEX_UP] = 1037 +controls_b[CONTROL_INDEX_DOWN] = 1038 +controls_b[CONTROL_INDEX_LEFT] = 1039 +controls_b[CONTROL_INDEX_RIGHT] = 1040 +controls_b[CONTROL_INDEX_A] = 1025 +controls_b[CONTROL_INDEX_B] = 1024 +controls_b[CONTROL_INDEX_X] = 1026 +controls_b[CONTROL_INDEX_Y] = 1027 +controls_b[CONTROL_INDEX_L] = 1028 +controls_b[CONTROL_INDEX_R] = 1029 +controls_b[CONTROL_INDEX_START] = 1033 +controls_b[CONTROL_INDEX_SELECT] = 1032 +controls_b[CONTROL_INDEX_HINGE] = 65535 +controls_b[CONTROL_INDEX_TOUCH_CURSOR_UP] = 1219 +controls_b[CONTROL_INDEX_TOUCH_CURSOR_DOWN] = 1155 +controls_b[CONTROL_INDEX_TOUCH_CURSOR_LEFT] = 1218 +controls_b[CONTROL_INDEX_TOUCH_CURSOR_RIGHT] = 1154 +controls_b[CONTROL_INDEX_TOUCH_CURSOR_PRESS] = 1036 +controls_b[CONTROL_INDEX_MENU] = 1035 +controls_b[CONTROL_INDEX_SAVE_STATE] = 65535 +controls_b[CONTROL_INDEX_LOAD_STATE] = 65535 +controls_b[CONTROL_INDEX_FAST_FORWARD] = 65535 +controls_b[CONTROL_INDEX_SWAP_SCREENS] = 65535 +controls_b[CONTROL_INDEX_SWAP_ORIENTATION_A] = 1030 +controls_b[CONTROL_INDEX_SWAP_ORIENTATION_B] = 1031 +controls_b[CONTROL_INDEX_LOAD_GAME] = 65535 +controls_b[CONTROL_INDEX_QUIT] = 65535 +controls_b[CONTROL_INDEX_FAKE_MICROPHONE] = 65535 +controls_b[CONTROL_INDEX_UI_UP] = 1037 +controls_b[CONTROL_INDEX_UI_DOWN] = 1038 +controls_b[CONTROL_INDEX_UI_LEFT] = 1039 +controls_b[CONTROL_INDEX_UI_RIGHT] = 1040 +controls_b[CONTROL_INDEX_UI_SELECT] = 1025 +controls_b[CONTROL_INDEX_UI_BACK] = 65535 +controls_b[CONTROL_INDEX_UI_EXIT] = 1024 +controls_b[CONTROL_INDEX_UI_PAGE_UP] = 65535 +controls_b[CONTROL_INDEX_UI_PAGE_DOWN] = 65535 +controls_b[CONTROL_INDEX_UI_SWITCH] = 65535 diff --git a/packages/emulators/standalone/drastic-sa/scripts/drastic_sense.sh b/packages/emulators/standalone/drastic-sa/scripts/drastic_sense.sh index d5fd41e83..9674e80d1 100644 --- a/packages/emulators/standalone/drastic-sa/scripts/drastic_sense.sh +++ b/packages/emulators/standalone/drastic-sa/scripts/drastic_sense.sh @@ -91,10 +91,10 @@ get_devices get_devices ;; (${L2_RELEASED_EVENT}) - swaymsg fullscreen disable + swaymsg floating enable ;; (${R2_RELEASED_EVENT}) - swaymsg fullscreen disable + swaymsg floating enable ;; esac done diff --git a/packages/emulators/standalone/duckstation-sa/config/H700/settings.ini b/packages/emulators/standalone/duckstation-sa/config/H700/settings.ini new file mode 100644 index 000000000..dca2bf7ea --- /dev/null +++ b/packages/emulators/standalone/duckstation-sa/config/H700/settings.ini @@ -0,0 +1,262 @@ +[Main] +SettingsVersion = 3 +StartFullscreen = true +EmulationSpeed = 1.000000 +FastForwardSpeed = 0.000000 +TurboSpeed = 0.000000 +SyncToHostRefreshRate = false +IncreaseTimerResolution = true +InhibitScreensaver = true +StartPaused = false +PauseOnFocusLoss = false +PauseOnMenu = true +SaveStateOnExit = true +ConfirmPowerOff = true +LoadDevicesFromSaveStates = false +ApplyGameSettings = true +AutoLoadCheats = true +DisableAllEnhancements = false +RewindEnable = false +RewindFrequency = 10.000000 +RewindSaveSlots = 10 +RunaheadFrameCount = 0 + + +[BIOS] +SearchDirectory = /storage/roms/bios +PathNTSCU = +PathNTSCJ = +PathPAL = +PatchTTYEnable = false +PatchFastBoot = true + + +[GPU] +Renderer = Software +Adapter = +ResolutionScale = 1 +Multisamples = 1 +UseDebugDevice = false +PerSampleShading = false +UseThread = true +ThreadedPresentation = true +UseSoftwareRendererForReadbacks = false +TrueColor = false +ScaledDithering = false +TextureFilter = Nearest +DownsampleMode = Disabled +DisableInterlacing = false +ForceNTSCTimings = false +WidescreenHack = false +ChromaSmoothing24Bit = false +PGXPEnable = false +PGXPCulling = true +PGXPTextureCorrection = true +PGXPVertexCache = false +PGXPCPU = false +PGXPPreserveProjFP = false +PGXPTolerance = -1.000000 +PGXPDepthBuffer = false +PGXPDepthClearThreshold = 300.000000 + + +[Display] +CropMode = Overscan +ActiveStartOffset = 0 +ActiveEndOffset = 0 +LineStartOffset = 0 +LineEndOffset = 0 +Force4_3For24Bit = false +AspectRatio = 4:3 +CustomAspectRatioNumerator = 4 +LinearFiltering = true +IntegerScaling = false +Stretch = false +PostProcessing = false +ShowOSDMessages = true +ShowFPS = false +ShowVPS = false +ShowSpeed = false +ShowResolution = false +ShowStatusIndicators = true +ShowEnhancements = false +DisplayAllFrames = true +VSync = false +MaxFPS = 0.000000 + + +[Hotkeys] +OpenPauseMenu = SDL-0/Back & SDL-0/X +FastForward = SDL-0/Back & SDL-0/+RightTrigger +Screenshot = SDL-0/Back & SDL-0/A +LoadSelectedSaveState = SDL-0/Back & SDL-0/LeftShoulder +SaveSelectedSaveState = SDL-0/Back & SDL-0/RightShoulder +PowerOff = SDL-0/Back & SDL-0/Start + + +[Logging] +LogLevel = Error +LogFilter = +LogToConsole = false +LogToDebug = false +LogToWindow = false +LogToFile = false + + +[Controller1] +Type = AnalogController +ButtonUp = Controller0/Button11 +ButtonDown = Controller0/Button12 +ButtonLeft = Controller0/Button13 +ButtonRight = Controller0/Button14 +ButtonSelect = Controller0/Button4 +ButtonStart = Controller0/Button6 +ButtonTriangle = Controller0/Button2 +ButtonCross = Controller0/Button1 +ButtonSquare = Controller0/Button3 +ButtonCircle = Controller0/Button0 +ButtonL1 = Controller0/Button9 +ButtonL2 = Controller0/+Axis4 +ButtonR1 = Controller0/Button10 +ButtonR2 = Controller0/+Axis5 +AxisLeftX = Controller0/Axis0 +AxisLeftY = Controller0/Axis1 +ButtonL3 = Controller0/Button7 +ButtonR3 = Controller0/Button8 +AxisRightX = Controller0/Axis2 +AxisRightY = Controller0/Axis3 +AnalogDPadInDigitalMode = false + + +[GameList] +RecursivePaths = /storage/roms/psx + + +[MemoryCards] +UsePlaylistTitle = true +Directory = /storage/roms/psx +Card1Type = PerGameTitle +Card2Type = None + + +[Console] +Region = Auto +Enable8MBRAM = false + + +[CPU] +ExecutionMode = Recompiler +OverclockEnable = false +OverclockNumerator = 1 +OverclockDenominator = 1 +RecompilerMemoryExceptions = false +RecompilerBlockLinking = true +RecompilerICache = false +FastmemMode = MMap + + +[CDROM] +ReadaheadSectors = 8 +RegionCheck = false +LoadImageToRAM = false +MuteCDAudio = false +ReadSpeedup = 1 +SeekSpeedup = 1 + + +[Audio] +Backend = SDL +OutputVolume = 100 +FastForwardVolume = 100 +BufferSize = 2048 +Resampling = true +OutputMuted = false +Sync = true +DumpOnBoot = false + + +[Hacks] +DMAMaxSliceTicks = 1000 +DMAHaltTicks = 100 +GPUFIFOSize = 16 +GPUMaxRunAhead = 128 + + +[Controller2] +Type = None + + +[Controller3] +Type = None + + +[Controller4] +Type = None + + +[Controller5] +Type = None + + +[Controller6] +Type = None + + +[Controller7] +Type = None + + +[Controller8] +Type = None + + +[ControllerPorts] +MultitapMode = Disabled + + +[Debug] +ShowVRAM = false +DumpCPUToVRAMCopies = false +DumpVRAMToCPUCopies = false +ShowGPUState = false +ShowCDROMState = false +ShowSPUState = false +ShowTimersState = false +ShowMDECState = false +ShowDMAState = false + + +[TextureReplacements] +EnableVRAMWriteReplacements = false +PreloadTextures = false +DumpVRAMWrites = false +DumpVRAMWriteForceAlphaChannel = true +DumpVRAMWriteWidthThreshold = 128 +DumpVRAMWriteHeightThreshold = 128 + + +[Pad1] +Up = SDL-0/DPadUp +Right = SDL-0/DPadRight +Down = SDL-0/DPadDown +Left = SDL-0/DPadLeft +Triangle = SDL-0/X +Circle = SDL-0/A +Cross = SDL-0/B +Square = SDL-0/Y +Select = SDL-0/Back +Start = SDL-0/Start +L1 = SDL-0/LeftShoulder +R1 = SDL-0/RightShoulder +L2 = SDL-0/+LeftTrigger +R2 = SDL-0/+RightTrigger +L3 = SDL-0/LeftStick +R3 = SDL-0/RightStick +LLeft = SDL-0/-LeftX +LRight = SDL-0/+LeftX +LDown = SDL-0/+LeftY +LUp = SDL-0/-LeftY +RLeft = SDL-0/+RightX +RRight = SDL-0/-RightX +RDown = SDL-0/+RightY +RUp = SDL-0/-RightY diff --git a/packages/emulators/standalone/duckstation-sa/package.mk b/packages/emulators/standalone/duckstation-sa/package.mk index cd2818af1..76b1b7fef 100644 --- a/packages/emulators/standalone/duckstation-sa/package.mk +++ b/packages/emulators/standalone/duckstation-sa/package.mk @@ -31,6 +31,7 @@ fi if [ "${DISPLAYSERVER}" = "wl" ]; then PKG_DEPENDS_TARGET+=" wayland ${WINDOWMANAGER} xwayland xrandr libXi" PKG_CMAKE_OPTS_TARGET+=" -DUSE_WAYLAND=ON" +else PKG_CMAKE_OPTS_TARGET+=" -DUSE_WAYLAND=OFF -DUSE_DRMKMS=ON" fi if [ "${VULKAN_SUPPORT}" = "yes" ]; then diff --git a/packages/emulators/standalone/flycast-sa/config/H700/emu.cfg b/packages/emulators/standalone/flycast-sa/config/H700/emu.cfg new file mode 100644 index 000000000..ce42e9795 --- /dev/null +++ b/packages/emulators/standalone/flycast-sa/config/H700/emu.cfg @@ -0,0 +1,13 @@ +[audio] +backend = pulse + +[input] +maple_sdl_joystick_0 = 0 +maple_sdl_joystick_1 = 1 + +device1 = 0 +device1.1 = 1 +device1.2 = 1 +device2 = 0 +device2.1 = 1 +device2.2 = 1 diff --git a/packages/emulators/standalone/flycast-sa/config/H700/mappings/SDL_retrogame_joypad.cfg b/packages/emulators/standalone/flycast-sa/config/H700/mappings/SDL_retrogame_joypad.cfg new file mode 100644 index 000000000..3e61e80e1 --- /dev/null +++ b/packages/emulators/standalone/flycast-sa/config/H700/mappings/SDL_retrogame_joypad.cfg @@ -0,0 +1,34 @@ +[analog] +bind0 = 0-:btn_analog_left +bind1 = 0+:btn_analog_right +bind2 = 1-:btn_analog_up +bind3 = 1+:btn_analog_down +bind4 = 2-:axis2_left +bind5 = 2+:axis2_right +bind6 = 3-:axis2_up +bind7 = 3+:axis2_down + +[digital] +bind0 = 0:btn_a +bind1 = 1:btn_b +bind10 = 13:btn_dpad1_up +bind11 = 14:btn_dpad1_down +bind12 = 15:btn_dpad1_left +bind13 = 16:btn_dpad1_right +bind2 = 2:btn_y +bind3 = 3:btn_x +bind4 = 4:btn_trigger_left +bind5 = 5:btn_trigger_right +bind6 = 6:btn_trigger2_left +bind7 = 7:btn_trigger2_right +bind8 = 8:btn_menu +bind9 = 9:btn_start + +[emulator] +dead_zone = 10 +mapping_name = RetroGame Joypad +rumble_power = 100 +saturation = 100 +version = 3 + + diff --git a/packages/emulators/standalone/hatarisa/package.mk b/packages/emulators/standalone/hatarisa/package.mk index 8fdbe742f..54d1e7e77 100644 --- a/packages/emulators/standalone/hatarisa/package.mk +++ b/packages/emulators/standalone/hatarisa/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2018-present 5schatten (https://github.com/5schatten) PKG_NAME="hatarisa" -PKG_VERSION="cce4819401e8bb5767788a1c12ddb8b4101e2fad" +PKG_VERSION="bc9504ded632048d7bf24cefc0e38f28457ab18b" PKG_LICENSE="GPL" PKG_SITE="https://github.com/hatari/hatari" PKG_URL="https://github.com/hatari/hatari/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/standalone/hypseus-singe/package.mk b/packages/emulators/standalone/hypseus-singe/package.mk index 5a2b016c0..9fa27e99c 100644 --- a/packages/emulators/standalone/hypseus-singe/package.mk +++ b/packages/emulators/standalone/hypseus-singe/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="hypseus-singe" -PKG_VERSION="060535e3f1174e6d4d4286eddb5b40068b056dac" +PKG_VERSION="9afc6345407e656d5b34fa795a25fb978f16e598" PKG_LICENSE="GPL3" PKG_SITE="https://github.com/DirtBagXon/hypseus-singe" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/standalone/kronos-sa/package.mk b/packages/emulators/standalone/kronos-sa/package.mk index f76105774..8eae8224d 100644 --- a/packages/emulators/standalone/kronos-sa/package.mk +++ b/packages/emulators/standalone/kronos-sa/package.mk @@ -6,7 +6,7 @@ PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/FCare/Kronos" PKG_ARCH="x86_64" PKG_URL="${PKG_SITE}.git" -PKG_VERSION="8e0eade" +PKG_VERSION="400670e78da403ec37a86f23ac6e6c64e641e78e" PKG_GIT_CLONE_BRANCH="extui-align" PKG_DEPENDS_TARGET="toolchain SDL2 boost openal-soft zlib qt5" PKG_LONGDESC="Kronos is a Sega Saturn emulator forked from yabause." diff --git a/packages/emulators/standalone/lime3ds-sa/config/AMD64/sdl2-config.ini b/packages/emulators/standalone/lime3ds-sa/config/AMD64/sdl2-config.ini index f1d7e9d20..99a85bef2 100644 --- a/packages/emulators/standalone/lime3ds-sa/config/AMD64/sdl2-config.ini +++ b/packages/emulators/standalone/lime3ds-sa/config/AMD64/sdl2-config.ini @@ -18,22 +18,22 @@ # - "direction"(only used for axis): "+" means the button is triggered when the axis value # is greater than the threshold; "-" means the button is triggered when the axis value # is smaller than the threshold -button_a=button:1,engine:sdl,guid:030003f05e0400008e02000010010000,port:0 -button_b=button:0,engine:sdl,guid:030003f05e0400008e02000010010000,port:0 -button_x=button:3,engine:sdl,guid:030003f05e0400008e02000010010000,port:0 -button_y=button:2,engine:sdl,guid:030003f05e0400008e02000010010000,port:0 -button_up=direction:up,engine:sdl,guid:030003f05e0400008e02000010010000,hat:0,port:0 -button_down=direction:down,engine:sdl,guid:030003f05e0400008e02000010010000,hat:0,port:0 -button_left=direction:left,engine:sdl,guid:030003f05e0400008e02000010010000,hat:0,port:0 -button_right=direction:right,engine:sdl,guid:030003f05e0400008e02000010010000,hat:0,port:0 -button_l=button:4,engine:sdl,guid:030003f05e0400008e02000010010000,port:0 -button_r=button:5,engine:sdl,guid:030003f05e0400008e02000010010000,port:0 -button_start=button:7,engine:sdl,guid:030003f05e0400008e02000010010000,port:0 -button_select=button:6,engine:sdl,guid:030003f05e0400008e02000010010000,port:0 +button_a=button:1,engine:sdl,guid:030081b85e0400008e02000010010000,port:0 +button_b=button:0,engine:sdl,guid:030081b85e0400008e02000010010000,port:0 +button_x=button:3,engine:sdl,guid:030081b85e0400008e02000010010000,port:0 +button_y=button:2,engine:sdl,guid:030081b85e0400008e02000010010000,port:0 +button_up=direction:up,engine:sdl,guid:030081b85e0400008e02000010010000,hat:0,port:0 +button_down=direction:down,engine:sdl,guid:030081b85e0400008e02000010010000,hat:0,port:0 +button_left=direction:left,engine:sdl,guid:030081b85e0400008e02000010010000,hat:0,port:0 +button_right=direction:right,engine:sdl,guid:030081b85e0400008e02000010010000,hat:0,port:0 +button_l=button:4,engine:sdl,guid:030081b85e0400008e02000010010000,port:0 +button_r=button:5,engine:sdl,guid:030081b85e0400008e02000010010000,port:0 +button_start=button:7,engine:sdl,guid:030081b85e0400008e02000010010000,port:0 +button_select=button:6,engine:sdl,guid:030081b85e0400008e02000010010000,port:0 button_debug= button_gpio14= -button_zl=axis:2,direction:+,engine:sdl,guid:030003f05e0400008e02000010010000,port:0,threshold:0.5 -button_zr=axis:5,direction:+,engine:sdl,guid:030003f05e0400008e02000010010000,port:0,threshold:0.5 +button_zl=axis:2,direction:+,engine:sdl,guid:030081b85e0400008e02000010010000,port:0,threshold:0.5 +button_zr=axis:5,direction:+,engine:sdl,guid:030081b85e0400008e02000010010000,port:0,threshold:0.5 button_home= # for analog input, the following devices are available: @@ -48,8 +48,8 @@ button_home= # - "axis_x": the index of the axis to bind as x-axis (default to 0) # - "axis_y": the index of the axis to bind as y-axis (default to 1) -circle_Pad=axis_x:0,axis_y:1,deadzone:0.100000,engine:sdl,guid:030003f05e0400008e02000010010000,port:0 -c_stick=axis_x:3,axis_y:4,deadzone:0.100000,engine:sdl,guid:030003f05e0400008e02000010010000,port:0 +circle_Pad=axis_x:0,axis_y:1,deadzone:0.100000,engine:sdl,guid:030081b85e0400008e02000010010000,port:0 +c_stick=axis_x:3,axis_y:4,deadzone:0.100000,engine:sdl,guid:030081b85e0400008e02000010010000,port:0 # for motion input, the following devices are available: # - "motion_emu" (default) for emulating motion input from mouse input. Required parameters: diff --git a/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/H700/default.ini b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/H700/default.ini new file mode 100644 index 000000000..ddb609d69 --- /dev/null +++ b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/H700/default.ini @@ -0,0 +1,25 @@ +; RG552 Gamepad - default.ini +[retrogame_joypad] +plugged = True +mouse = False +AnalogDeadzone = 0,0 +AnalogPeak = 32768,32768 +DPad R = button(16) +DPad L = button(15) +DPad D = button(14) +DPad U = button(13) +Start = button(9) +Z Trig = button(6) +B Button = button(3) +A Button = button(0) +C Button R = axis(2+) +C Button L = axis(2-) +C Button D = axis(3+) +C Button U = axis(3-) +R Trig = button(5) +L Trig = button(4) +Mempak switch = +Rumblepak switch = +# Analog axis configuration mappings +X Axis = axis(0-,0+) +Y Axis = axis(1-,1+) diff --git a/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/H700/zlswap.ini b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/H700/zlswap.ini new file mode 100644 index 000000000..3e596ab60 --- /dev/null +++ b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/H700/zlswap.ini @@ -0,0 +1,25 @@ +; RG552 Gamepad - zlswap.ini +[retrogame_joypad] +plugged = True +mouse = False +AnalogDeadzone = 0,0 +AnalogPeak = 32768,32768 +DPad R = button(16) +DPad L = button(15) +DPad D = button(14) +DPad U = button(13) +Start = button(9) +Z Trig = button(4) +B Button = button(3) +A Button = button(0) +C Button R = axis(2+) +C Button L = axis(2-) +C Button D = axis(3+) +C Button U = axis(3-) +R Trig = button(5) +L Trig = button(6) +Mempak switch = +Rumblepak switch = +# Analog axis configuration mappings +X Axis = axis(0-,0+) +Y Axis = axis(1-,1+) \ No newline at end of file diff --git a/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-simplecore/package.mk b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-simplecore/package.mk index 4eb4e44da..940b6a979 100644 --- a/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-simplecore/package.mk +++ b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-simplecore/package.mk @@ -26,6 +26,8 @@ case ${DEVICE} in esac make_target() { +# export TARGET_CLFAGS="${TARGET_CFLAGS} -Wno-implicit-function-declaration -Wno-error=incompatible-pointer-types" +# export TARGET_CXXLFAGS="${TARGET_CXXFLAGS} -Wno-implicit-function-declaration -Wno-error=incompatible-pointer-types" case ${ARCH} in arm|aarch64) export HOST_CPU=aarch64 @@ -37,6 +39,9 @@ make_target() { ;; esac + # Always diable Vulkan + export VULKAN=0 + export BINUTILS="$(get_build_dir binutils)/.${TARGET_NAME}" export NEW_DYNAREC=1 export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -pthread -D_REENTRANT" diff --git a/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-ui-console/package.mk b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-ui-console/package.mk index 53b10fd6d..21f522724 100644 --- a/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-ui-console/package.mk +++ b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-ui-console/package.mk @@ -31,6 +31,7 @@ case ${DEVICE} in esac make_target() { + export CFLAGS="${CFLAGS} -Wno-error=incompatible-pointer-types" export V=1 \ VC=0 diff --git a/packages/emulators/standalone/ppsspp-sa/sources/H700/controls.ini b/packages/emulators/standalone/ppsspp-sa/sources/H700/controls.ini new file mode 100755 index 000000000..213f7119a --- /dev/null +++ b/packages/emulators/standalone/ppsspp-sa/sources/H700/controls.ini @@ -0,0 +1,25 @@ +[ControlMapping] +Up = 10-19 +Down = 10-20 +Left = 10-21 +Right = 10-22 +Circle = 10-189 +Cross = 10-190 +Square = 10-188 +Triangle = 10-191 +Start = 10-197 +Select = 10-196 +L = 10-193 +R = 10-192 +An.Up = 10-4002 +An.Down = 10-4003 +An.Left = 10-4000 +An.Right = 10-4001 +Fast-forward = 1-61 +Pause = 10-106 +Save State = 10-4010 +Load State = 10-4008 +RightAn.Up = 10-4007 +RightAn.Down = 10-4006 +RightAn.Left = 10-4005 +RightAn.Right = 10-4004 diff --git a/packages/emulators/standalone/ppsspp-sa/sources/H700/ppsspp.ini b/packages/emulators/standalone/ppsspp-sa/sources/H700/ppsspp.ini new file mode 100755 index 000000000..7825573a2 --- /dev/null +++ b/packages/emulators/standalone/ppsspp-sa/sources/H700/ppsspp.ini @@ -0,0 +1,462 @@ +[General] +FirstRun = False +RunCount = 3 +Enable Logging = True +AutoRun = True +Browse = False +IgnoreBadMemAccess = True +CurrentDirectory = /storage +ShowDebuggerOnLoad = False +CheckForNewVersion = True +Language = en_US +ForceLagSync2 = False +DiscordPresence = True +UISound = False +AutoLoadSaveState = 0 +EnableCheats = False +CwCheatRefreshRate = 77 +CwCheatScrollPosition = 0.000000 +GameListScrollPosition = 0.000000 +ScreenshotsAsPNG = False +UseFFV1 = False +DumpFrames = False +DumpVideoOutput = False +DumpAudio = False +SaveLoadResetsAVdumping = False +StateSlot = 0 +EnableStateUndo = True +StateLoadUndoGame = NA +StateUndoLastSaveGame = NA +StateUndoLastSaveSlot = -5 +RewindSnapshotInterval = 0 +ShowOnScreenMessage = True +ShowRegionOnGameIcon = False +ShowIDOnGameIcon = False +GameGridScale = 1.000000 +GridView1 = True +GridView2 = True +GridView3 = False +RightAnalogUp = 0 +RightAnalogDown = 0 +RightAnalogLeft = 0 +RightAnalogRight = 0 +RightAnalogPress = 0 +RightAnalogCustom = False +RightAnalogDisableDiagonal = False +SwipeUp = 0 +SwipeDown = 0 +SwipeLeft = 0 +SwipeRight = 0 +SwipeSensitivity = 1.000000 +SwipeSmoothing = 0.300000 +DoubleTapGesture = 0 +GestureControlEnabled = False +ReportingHost = default +AutoSaveSymbolMap = False +CacheFullIsoInRam = False +RemoteISOPort = 0 +LastRemoteISOServer = +LastRemoteISOPort = 0 +RemoteISOManualConfig = False +RemoteShareOnStartup = False +RemoteISOSubdir = / +RemoteDebuggerOnStartup = False +InternalScreenRotation = 1 +BackgroundAnimation = 1 +TransparentBackground = True +UITint = 0.000000 +UISaturation = 1.000000 +PauseWhenMinimized = False +DumpDecryptedEboots = False +ShowMenuBar = True +MemStickInserted = True +EnablePlugins = True +IgnoreCompatSettings = +[CPU] +CPUCore = 1 +SeparateSASThread = True +IOTimingMethod = 0 +FastMemoryAccess = True +FunctionReplacements = True +HideSlowWarnings = False +HideStateWarnings = False +PreloadFunctions = False +JitDisableFlags = 0x00000000 +CPUSpeed = 0 +[Graphics] +EnableCardboardVR = False +CardboardScreenSize = 50 +CardboardXShift = 0 +CardboardYShift = 0 +iShowStatusFlags = 0 +GraphicsBackend = 0 (OPENGL) +FailedGraphicsBackends = +DisabledGraphicsBackends = +VulkanDevice = +CameraDevice = +UseGeometryShader = False +SkipBufferEffects = False +SoftwareRenderer = False +SoftwareRendererJit = True +HardwareTransform = True +SoftwareSkinning = True +TextureFiltering = 1 +BufferFiltering = 1 +InternalResolution = 1 +HighQualityDepth = 1 +FrameSkip = 0 +FrameSkipType = 0 +AutoFrameSkip = False +StereoRendering = False +StereoToMonoShader = RedBlue +FrameRate = 0 +FrameRate2 = -1 +AnalogFrameRate = 240 +AnalogFrameRateMode = 0 +UnthrottlingMode = CONTINUOUS +AnisotropyLevel = 4 +MultiSampleLevel = 0 +VertexDecCache = False +TextureBackoffCache = False +FullScreen = True +FullScreenMulti = False +DisplayOffsetX = 0.500000 +DisplayOffsetY = 0.500000 +DisplayScale = 1.000000 +DisplayAspectRatio = 1.000000 +DisplayStretch = False +ImmersiveMode = True +SustainedPerformanceMode = False +IgnoreScreenInsets = True +ReplaceTextures = True +SaveNewTextures = False +IgnoreTextureFilenames = False +ReplaceTexturesAllowLate = True +TexScalingLevel = 1 +TexScalingType = 0 +TexDeposterize = False +TexHardwareScaling = False +VSyncInterval = False +BloomHack = 0 +SplineBezierQuality = 2 +HardwareTessellation = False +TextureShader = Off +ShaderChainRequires60FPS = False +SkipGPUReadbacks = False +LogFrameDrops = False +InflightFrames = 3 +RenderDuplicateFrames = False +GpuLogProfiler = False +[Sound] +Enable = True +AudioBackend = 0 +ExtraAudioBuffering = False +GlobalVolume = 10 +ReverbVolume = 10 +AltSpeedVolume = -1 +AudioDevice = +AutoAudioDevice = True +[Control] +HapticFeedback = False +ShowTouchCross = True +ShowTouchCircle = True +ShowTouchSquare = True +ShowTouchTriangle = True +Custom0Mapping = 0x0000000000000000 +Custom0Image = 0 +Custom0Shape = 0 +Custom0Toggle = False +Custom0Repeat = False +Custom1Mapping = 0x0000000000000000 +Custom1Image = 1 +Custom1Shape = 0 +Custom1Toggle = False +Custom1Repeat = False +Custom2Mapping = 0x0000000000000000 +Custom2Image = 2 +Custom2Shape = 0 +Custom2Toggle = False +Custom2Repeat = False +Custom3Mapping = 0x0000000000000000 +Custom3Image = 3 +Custom3Shape = 0 +Custom3Toggle = False +Custom3Repeat = False +Custom4Mapping = 0x0000000000000000 +Custom4Image = 4 +Custom4Shape = 0 +Custom4Toggle = False +Custom4Repeat = False +Custom5Mapping = 0x0000000000000000 +Custom5Image = 0 +Custom5Shape = 1 +Custom5Toggle = False +Custom5Repeat = False +Custom6Mapping = 0x0000000000000000 +Custom6Image = 1 +Custom6Shape = 1 +Custom6Toggle = False +Custom6Repeat = False +Custom7Mapping = 0x0000000000000000 +Custom7Image = 2 +Custom7Shape = 1 +Custom7Toggle = False +Custom7Repeat = False +Custom8Mapping = 0x0000000000000000 +Custom8Image = 3 +Custom8Shape = 1 +Custom8Toggle = False +Custom8Repeat = False +Custom9Mapping = 0x0000000000000000 +Custom9Image = 4 +Custom9Shape = 1 +Custom9Toggle = False +Custom9Repeat = False +ShowTouchPause = False +ShowTouchControls = False +DisableDpadDiagonals = False +GamepadOnlyFocused = False +TouchButtonStyle = 1 +TouchButtonOpacity = 65 +TouchButtonHideSeconds = 20 +AutoCenterTouchAnalog = False +AnalogAutoRotSpeed = 8.000000 +TouchSnapToGrid = False +TouchSnapGridSize = 64 +ActionButtonSpacing2 = 1.000000 +ActionButtonCenterX = 0.859485 +ActionButtonCenterY = 0.750000 +ActionButtonScale = 1.150000 +DPadX = 0.167447 +DPadY = 0.400000 +DPadScale = 1.150000 +ShowTouchDpad = True +DPadSpacing = 1.000000 +StartKeyX = 0.634660 +StartKeyY = 0.856250 +StartKeyScale = 1.150000 +ShowTouchStart = True +SelectKeyX = 0.500000 +SelectKeyY = 0.856250 +SelectKeyScale = 1.150000 +ShowTouchSelect = True +UnthrottleKeyX = 0.365340 +UnthrottleKeyY = 0.856250 +UnthrottleKeyScale = 1.150000 +ShowTouchUnthrottle = True +LKeyX = 0.080796 +LKeyY = 0.089583 +LKeyScale = 1.150000 +ShowTouchLTrigger = True +RKeyX = 0.919204 +RKeyY = 0.089583 +RKeyScale = 1.150000 +ShowTouchRTrigger = True +AnalogStickX = 0.167447 +AnalogStickY = 0.808333 +AnalogStickScale = 1.150000 +ShowAnalogStick = True +RightAnalogStickX = 0.859485 +RightAnalogStickY = 0.808333 +RightAnalogStickScale = 1.150000 +ShowRightAnalogStick = False +fcombo0X = 0.661592 +fcombo0Y = 0.500000 +comboKeyScale0 = 1.150000 +ShowComboKey0 = False +fcombo1X = 0.796253 +fcombo1Y = 0.500000 +comboKeyScale1 = 1.150000 +ShowComboKey1 = False +fcombo2X = 0.930913 +fcombo2Y = 0.500000 +comboKeyScale2 = 1.150000 +ShowComboKey2 = False +fcombo3X = 0.661592 +fcombo3Y = 0.333333 +comboKeyScale3 = 1.150000 +ShowComboKey3 = False +fcombo4X = 0.796253 +fcombo4Y = 0.333333 +comboKeyScale4 = 1.150000 +ShowComboKey4 = False +fcombo5X = 0.338407 +fcombo5Y = 0.500000 +comboKeyScale5 = 1.150000 +ShowComboKey5 = False +fcombo6X = 0.203747 +fcombo6Y = 0.500000 +comboKeyScale6 = 1.150000 +ShowComboKey6 = False +fcombo7X = 0.069087 +fcombo7Y = 0.500000 +comboKeyScale7 = 1.150000 +ShowComboKey7 = False +fcombo8X = 0.338407 +fcombo8Y = 0.333333 +comboKeyScale8 = 1.150000 +ShowComboKey8 = False +fcombo9X = 0.203747 +fcombo9Y = 0.333333 +comboKeyScale9 = 1.150000 +ShowComboKey9 = False +AnalogDeadzone = 0.150000 +AnalogInverseDeadzone = 0.000000 +AnalogSensitivity = 1.100000 +AnalogIsCircular = False +AnalogLimiterDeadzone = 0.600000 +LeftStickHeadScale = 1.000000 +RightStickHeadScale = 1.000000 +HideStickBackground = False +UseMouse = False +MapMouse = False +ConfineMap = False +MouseSensitivity = 0.100000 +MouseSmoothing = 0.900000 +SystemControls = True +[Network] +EnableWlan = False +EnableAdhocServer = False +proAdhocServer = socom.cc +PortOffset = 10000 +MinTimeout = 0 +ForcedFirstConnect = False +EnableUPnP = False +UPnPUseOriginalPort = False +EnableNetworkChat = False +ChatButtonPosition = 0 +ChatScreenPosition = 0 +EnableQuickChat = True +QuickChat1 = Quick Chat 1 +QuickChat2 = Quick Chat 2 +QuickChat3 = Quick Chat 3 +QuickChat4 = Quick Chat 4 +QuickChat5 = Quick Chat 5 +[SystemParam] +PSPModel = 1 +PSPFirmwareVersion = 660 +NickName = PPSSPP +MacAddress = dc:39:74:d2:dd:86 +Language = 1 +ParamTimeFormat = 0 +ParamDateFormat = 0 +TimeZone = 0 +DayLightSavings = False +ButtonPreference = 1 +LockParentalLevel = 0 +WlanAdhocChannel = 0 +WlanPowerSave = False +EncryptSave = True +SavedataUpgradeVersion = True +MemStickSize = 16 +[Debugger] +DisasmWindowX = -1 +DisasmWindowY = -1 +DisasmWindowW = -1 +DisasmWindowH = -1 +GEWindowX = -1 +GEWindowY = -1 +GEWindowW = -1 +GEWindowH = -1 +GEWindowTabsBL = 0x00000000 +GEWindowTabsBR = 0x00000000 +GEWindowTabsTR = 0x00000000 +ConsoleWindowX = -1 +ConsoleWindowY = -1 +FontWidth = 8 +FontHeight = 12 +DisplayStatusBar = True +ShowBottomTabTitles = True +ShowDeveloperMenu = False +SkipDeadbeefFilling = False +FuncHashMap = False +MemInfoDetailed = False +DrawFrameGraph = False +[Upgrade] +UpgradeMessage = +UpgradeVersion = +DismissedVersion = +[Theme] +ThemeName = Default +[VR] +VREnable = True +VREnable6DoF = True +VREnableStereo = False +VREnableMotions = True +VRForce72Hz = True +VRManualForceVR = False +VRCameraDistance = 0.000000 +VRCameraHeight = 0.000000 +VRCameraSide = 0.000000 +VRCanvasDistance = 12.000000 +VRFieldOfView = 100.000000 +VRHeadUpDisplayScale = 0.300000 +VRMotionLength = 0.500000 +VRHeadRotationScale = 5.000000 +VRHeadRotationSmoothing = False +VRHeadRotation = 0 +[Recent] +MaxRecent = 60 +FileName0 = /storage/roms/psp/Final Fantasy III.iso +FileName1 = /storage/roms/psp/Final Fantasy II.iso +[Log] +SYSTEMEnabled = True +SYSTEMLevel = 2 +BOOTEnabled = True +BOOTLevel = 2 +COMMONEnabled = True +COMMONLevel = 2 +CPUEnabled = True +CPULevel = 2 +FILESYSEnabled = True +FILESYSLevel = 2 +G3DEnabled = True +G3DLevel = 2 +HLEEnabled = True +HLELevel = 2 +JITEnabled = True +JITLevel = 2 +LOADEREnabled = True +LOADERLevel = 2 +MEEnabled = True +MELevel = 2 +MEMMAPEnabled = True +MEMMAPLevel = 2 +SASMIXEnabled = True +SASMIXLevel = 2 +SAVESTATEEnabled = True +SAVESTATELevel = 2 +FRAMEBUFEnabled = True +FRAMEBUFLevel = 2 +AUDIOEnabled = True +AUDIOLevel = 2 +IOEnabled = True +IOLevel = 2 +SCEAUDIOEnabled = True +SCEAUDIOLevel = 2 +SCECTRLEnabled = True +SCECTRLLevel = 2 +SCEDISPEnabled = True +SCEDISPLevel = 2 +SCEFONTEnabled = True +SCEFONTLevel = 2 +SCEGEEnabled = True +SCEGELevel = 2 +SCEINTCEnabled = True +SCEINTCLevel = 2 +SCEIOEnabled = True +SCEIOLevel = 2 +SCEKERNELEnabled = True +SCEKERNELLevel = 2 +SCEMODULEEnabled = True +SCEMODULELevel = 2 +SCENETEnabled = True +SCENETLevel = 2 +SCERTCEnabled = True +SCERTCLevel = 2 +SCESASEnabled = True +SCESASLevel = 2 +SCEUTILEnabled = True +SCEUTILLevel = 2 +SCEMISCEnabled = True +SCEMISCLevel = 2 diff --git a/packages/emulators/standalone/supermodel-sa/package.mk b/packages/emulators/standalone/supermodel-sa/package.mk index 56e595ed7..44bba2fe8 100644 --- a/packages/emulators/standalone/supermodel-sa/package.mk +++ b/packages/emulators/standalone/supermodel-sa/package.mk @@ -12,7 +12,7 @@ GET_HANDLER_SUPPORT="git" case ${TARGET_ARCH} in aarch64|arm) - PKG_VERSION="f94232e45e17f74ea510c7b754eec73529f06f58" + PKG_VERSION="cec451f3c3639622a372e0140ce3589ca616c84f" PKG_GIT_CLONE_BRANCH="arm" ;; *) diff --git a/packages/emulators/standalone/supermodel-sa/patches/01-glew.patch b/packages/emulators/standalone/supermodel-sa/patches/01-glew.patch deleted file mode 100644 index b52ff784f..000000000 --- a/packages/emulators/standalone/supermodel-sa/patches/01-glew.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- a/Src/OSD/SDL/Main.cpp 2024-04-04 17:30:55.333806373 -0400 -+++ b/Src/OSD/SDL/Main.cpp 2024-04-04 17:30:24.325773043 -0400 -@@ -237,11 +237,11 @@ - // Set the context as the current window context - SDL_GL_MakeCurrent(s_window, context); - - // Initialize GLEW, allowing us to use features beyond OpenGL 1.2 - err = glewInit(); -- if (GLEW_OK != err) -+ if (GLEW_OK != err && GLEW_ERROR_NO_GLX_DISPLAY != err) - { - ErrorLog("OpenGL initialization failed: %s\n", glewGetErrorString(err)); - return FAIL; - } - diff --git a/packages/emulators/standalone/supermodel-sa/patches/03-fix-gcc14.patch b/packages/emulators/standalone/supermodel-sa/patches/03-fix-gcc14.patch new file mode 100644 index 000000000..2955921b3 --- /dev/null +++ b/packages/emulators/standalone/supermodel-sa/patches/03-fix-gcc14.patch @@ -0,0 +1,12 @@ +diff --git a/Src/Graphics/New3D/R3DFloat.cpp b/Src/Graphics/New3D/R3DFloat.cpp +index 4256e18..2d347ff 100644 +--- a/Src/Graphics/New3D/R3DFloat.cpp ++++ b/Src/Graphics/New3D/R3DFloat.cpp +@@ -1,6 +1,7 @@ + #include "Types.h" + #include "R3DFloat.h" + #include "Util/BitCast.h" ++#include + + float R3DFloat::GetFloat16(UINT16 f) + { diff --git a/packages/emulators/standalone/supermodel-sa/patches/04-fix-gcc14.patch b/packages/emulators/standalone/supermodel-sa/patches/04-fix-gcc14.patch new file mode 100644 index 000000000..096d4c39c --- /dev/null +++ b/packages/emulators/standalone/supermodel-sa/patches/04-fix-gcc14.patch @@ -0,0 +1,13 @@ +diff --git a/Makefiles/Rules.inc b/Makefiles/Rules.inc +index 01b8958..5e5c394 100644 +--- a/Makefiles/Rules.inc ++++ b/Makefiles/Rules.inc +@@ -79,7 +79,7 @@ CXXSTD = -std=c++17 + # Construct the compiler (C and C++) and linker flags + # + COMMON_CFLAGS = -c $(ARCH) $(OPT) $(WARN) $(addprefix -I,$(sort $(INCLUDE_DIRS))) -DGLEW_STATIC $(SUPERMODEL_BUILD_FLAGS) +-CFLAGS = $(COMMON_CFLAGS) $(CSTD) ++CFLAGS = $(COMMON_CFLAGS) $(CSTD) -Wno-implicit-function-declaration + CXXFLAGS = $(PLATFORM_CXXFLAGS) $(COMMON_CFLAGS) $(CXXSTD) + LDFLAGS = -o $(BIN_DIR)/$(OUTFILE) $(PLATFORM_LDFLAGS) -s + diff --git a/packages/emulators/standalone/vita3k-sa/package.mk b/packages/emulators/standalone/vita3k-sa/package.mk index ecac6015a..a1f85aa2d 100644 --- a/packages/emulators/standalone/vita3k-sa/package.mk +++ b/packages/emulators/standalone/vita3k-sa/package.mk @@ -2,7 +2,8 @@ # Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="vita3k-sa" -PKG_VERSION="79bc40003e764c30f0552468617072d1e94e55aa" +PKG_VERSION="087285ab6531bf34945512be3ac0b6c81977ed47" +#PKG_VERSION="92c464648945a699f7e2c667c791f939b686550b" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/Vita3K/Vita3K" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/standalone/xemu-sa/package.mk b/packages/emulators/standalone/xemu-sa/package.mk index 7cdea8032..bf200ce56 100644 --- a/packages/emulators/standalone/xemu-sa/package.mk +++ b/packages/emulators/standalone/xemu-sa/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="xemu-sa" -PKG_VERSION="v0.7.119" +PKG_VERSION="v0.7.127" PKG_ARCH="x86_64" PKG_LICENSE="GPLv3" PKG_SITE="https://github.com/xemu-project/xemu" diff --git a/packages/emulators/standalone/yabasanshiro-sa/package.mk b/packages/emulators/standalone/yabasanshiro-sa/package.mk index e2fc81822..f91e9c89a 100644 --- a/packages/emulators/standalone/yabasanshiro-sa/package.mk +++ b/packages/emulators/standalone/yabasanshiro-sa/package.mk @@ -26,8 +26,6 @@ case ${TARGET_ARCH} in ;; esac -PKG_CMAKE_OPTS_TARGET="${PKG_BUILD}/yabause " - if [ ! "${OPENGL}" = "no" ]; then PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd" fi @@ -54,7 +52,6 @@ pre_make_target() { } pre_configure_target() { - PKG_CMAKE_OPTS_TARGET="${PKG_BUILD}/yabause " if [ ! "${OPENGL}" = "no" ]; then @@ -75,7 +72,7 @@ pre_configure_target() { case ${ARCH} in aarch64) PKG_CMAKE_OPTS_TARGET+=" -DYAB_WANT_ARM7=ON \ - -DYAB_WANT_DYNAREC_DEVMIYAX=ON + -DYAB_WANT_DYNAREC_DEVMIYAX=ON \ -DCMAKE_TOOLCHAIN_FILE=${PKG_BUILD}/yabause/src/retro_arena/n2.cmake \ -DYAB_PORTS=retro_arena" ;; @@ -88,7 +85,8 @@ pre_configure_target() { -DOPENGL_glx_LIBRARY=${SYSROOT_PREFIX}/usr/lib \ -DLIBPNG_LIB_DIR=${SYSROOT_PREFIX}/usr/lib \ -Dpng_STATIC_LIBRARIES=${SYSROOT_PREFIX}/usr/lib/libpng16.so \ - -DCMAKE_BUILD_TYPE=Release" + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON" } makeinstall_target() { diff --git a/packages/emulators/standalone/yabasanshiro-sa/patches/06-large-files.patch b/packages/emulators/standalone/yabasanshiro-sa/patches/06-large-files.patch new file mode 100644 index 000000000..8ef4578f4 --- /dev/null +++ b/packages/emulators/standalone/yabasanshiro-sa/patches/06-large-files.patch @@ -0,0 +1,13 @@ +diff --git a/yabause/src/CMakeLists.txt b/yabause/src/CMakeLists.txt +index 0b0e624..7e4037e 100644 +--- a/yabause/src/CMakeLists.txt ++++ b/yabause/src/CMakeLists.txt +@@ -194,7 +194,8 @@ if (YAB_USE_SSF) + find_package(ZLIB) + + if (ZLIB_FOUND) + add_definitions(-DYAB_WANT_SSF=1) ++ set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=incompatible-pointer-types -Wno-int-conversion -Wno-implicit-function-declaration -D_LARGEFILE_SOURCE" ) + include_directories(${ZLIB_INCLUDE_DIRS}) + set(YABAUSE_LIBRARIES ${YABAUSE_LIBRARIES} ${ZLIB_LIBRARIES}) + diff --git a/packages/graphics/SDL2/package.mk b/packages/graphics/SDL2/package.mk index 8a38fc530..cd1826840 100644 --- a/packages/graphics/SDL2/package.mk +++ b/packages/graphics/SDL2/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="SDL2" -PKG_VERSION="2.30.4" +PKG_VERSION="2.30.5" PKG_LICENSE="GPL" PKG_SITE="https://www.libsdl.org/" PKG_URL="https://www.libsdl.org/release/SDL2-${PKG_VERSION}.tar.gz" diff --git a/packages/graphics/libdrm/package.mk b/packages/graphics/libdrm/package.mk index aa054c7c8..e9e8938c9 100644 --- a/packages/graphics/libdrm/package.mk +++ b/packages/graphics/libdrm/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) PKG_NAME="libdrm" -PKG_VERSION="2.4.120" +PKG_VERSION="2.4.122" PKG_LICENSE="GPL" PKG_SITE="http://dri.freedesktop.org" PKG_URL="http://dri.freedesktop.org/libdrm/libdrm-${PKG_VERSION}.tar.xz" diff --git a/packages/graphics/libmali/sources/bin/gpudriver b/packages/graphics/libmali/sources/bin/gpudriver index 0783ed299..1a43075af 100755 --- a/packages/graphics/libmali/sources/bin/gpudriver +++ b/packages/graphics/libmali/sources/bin/gpudriver @@ -29,6 +29,8 @@ load_driver() { if [ -d /usr/lib/glesonly ]; then grep -q /usr/lib/libSDL2-2.0.so /proc/mounts || find /usr/{lib,lib32}/glesonly -type f -exec bash -c 'lib={}; mount --bind $lib ${lib/\/glesonly\//\/}' ';' fi + mount --bind /dev/null /usr/lib/libGL.so + mount --bind /dev/null /usr/lib32/libGL.so ;; "panfrost") modprobe -r mali_kbase diff --git a/packages/graphics/mesa/package.mk b/packages/graphics/mesa/package.mk index a14e33520..06aea19bd 100644 --- a/packages/graphics/mesa/package.mk +++ b/packages/graphics/mesa/package.mk @@ -29,7 +29,7 @@ case ${DEVICE} in fi ;; *) - PKG_VERSION="24.0.7" + PKG_VERSION="24.1.3" PKG_SITE="http://www.mesa3d.org/" PKG_URL="https://gitlab.freedesktop.org/mesa/mesa/-/archive/mesa-${PKG_VERSION}/mesa-mesa-${PKG_VERSION}.tar.gz" ;; @@ -41,7 +41,6 @@ PKG_MESON_OPTS_TARGET=" ${MESA_LIBS_PATH_OPTS} \ -Dgallium-drivers=${GALLIUM_DRIVERS// /,} \ -Dgallium-extra-hud=false \ -Dgallium-omx=disabled \ - -Dgallium-nine=true \ -Dgallium-opencl=disabled \ -Dgallium-xa=disabled \ -Dshader-cache=enabled \ @@ -60,12 +59,14 @@ if [ "${DISPLAYSERVER}" = "x11" ]; then export X11_INCLUDES= PKG_MESON_OPTS_TARGET+=" -Dplatforms=x11 \ -Ddri3=enabled \ + -Dgallium-nine=true \ -Dglx=dri \ -Dglvnd=true" elif [ "${DISPLAYSERVER}" = "wl" ]; then PKG_DEPENDS_TARGET+=" wayland wayland-protocols libglvnd glfw" PKG_MESON_OPTS_TARGET+=" -Dplatforms=wayland,x11 \ -Ddri3=enabled \ + -Dgallium-nine=true \ -Dglx=dri \ -Dglvnd=true" PKG_DEPENDS_TARGET+=" xorgproto libXext libXdamage libXfixes libXxf86vm libxcb libX11 libxshmfence libXrandr libglvnd" @@ -73,6 +74,7 @@ elif [ "${DISPLAYSERVER}" = "wl" ]; then else PKG_MESON_OPTS_TARGET+=" -Dplatforms="" \ -Ddri3=disabled \ + -Dgallium-nine=false \ -Dglx=disabled \ -Dglvnd=false" fi diff --git a/packages/graphics/vulkan/glslang/package.mk b/packages/graphics/vulkan/glslang/package.mk index e3945df8c..44e41617c 100755 --- a/packages/graphics/vulkan/glslang/package.mk +++ b/packages/graphics/vulkan/glslang/package.mk @@ -6,7 +6,7 @@ PKG_NAME="glslang" # The SPIRV-Tools & SPIRV-Headers pkg_version/s need to match the compatible (known_good) glslang pkg_version. # https://raw.githubusercontent.com/KhronosGroup/glslang/${PKG_VERSION}/known_good.json # When updating glslang pkg_version please update to the known_good spirv-tools & spirv-headers pkg_version/s. -PKG_VERSION="14.2.0" +PKG_VERSION="14.3.0" PKG_LICENSE="Apache-2.0" PKG_SITE="https://github.com/KhronosGroup/glslang" PKG_URL="https://github.com/KhronosGroup/glslang/archive/${PKG_VERSION}.tar.gz" @@ -22,15 +22,19 @@ PKG_CMAKE_OPTS_COMMON="-DBUILD_EXTERNAL=ON \ -DENABLE_EXCEPTIONS=OFF \ -DENABLE_OPT=ON \ -DENABLE_PCH=ON \ - -DENABLE_CTEST=OFF \ - -DUSE_CCACHE=ON \ + -DGLSLANG_TESTS=OFF \ -Wno-dev" post_unpack() { # Enables SPIR-V optimzer capability needed for ENABLE_OPT CMake build option + mkdir -p ${PKG_BUILD}/External/spirv-tools + tar --strip-components=1 \ + -xf "${SOURCES}/spirv-tools/spirv-tools-$(get_pkg_version spirv-tools).tar.gz" \ + -C "${PKG_BUILD}/External/spirv-tools" mkdir -p ${PKG_BUILD}/External/spirv-tools/external/spirv-headers - cp -R $(get_build_dir spirv-tools)/* ${PKG_BUILD}/External/spirv-tools - cp -R $(get_build_dir spirv-headers)/* ${PKG_BUILD}/External/spirv-tools/external/spirv-headers + tar --strip-components=1 \ + -xf "${SOURCES}/spirv-headers/spirv-headers-$(get_pkg_version spirv-headers).tar.gz" \ + -C "${PKG_BUILD}/External/spirv-tools/external/spirv-headers" } pre_configure_host() { diff --git a/packages/graphics/vulkan/glslang/patches/glslang-100.01-build-static-spirv-tools.patch b/packages/graphics/vulkan/glslang/patches/glslang-100.01-build-static-spirv-tools.patch index ab3ac57c9..67607c818 100644 --- a/packages/graphics/vulkan/glslang/patches/glslang-100.01-build-static-spirv-tools.patch +++ b/packages/graphics/vulkan/glslang/patches/glslang-100.01-build-static-spirv-tools.patch @@ -1,12 +1,17 @@ ---- a/External/CMakeLists.txt -+++ b/External/CMakeLists.txt -@@ -71,7 +71,8 @@ endif() - if(ENABLE_OPT AND NOT TARGET SPIRV-Tools-opt) - if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools) - set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests") -- add_subdirectory(spirv-tools) -+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "Disable build shared libs" FORCE) -+ add_subdirectory(spirv-tools EXCLUDE_FROM_ALL) - endif() - endif() +diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt +index 37eecaadd4..0e9037bf7a 100644 +--- a/glslang/CMakeLists.txt ++++ b/glslang/CMakeLists.txt +@@ -254,11 +254,8 @@ if(PROJECT_IS_TOP_LEVEL) + set(PUBLIC_HEADERS + Public/ResourceLimits.h +- Public/ShaderLang.h + Public/resource_limits_c.h +- Include/glslang_c_interface.h +- Include/glslang_c_shader_types.h +- Include/ResourceLimits.h ++ ${GLSLANG_HEADERS} + MachineIndependent/Versions.h) + + foreach(file ${PUBLIC_HEADERS}) diff --git a/packages/graphics/vulkan/spirv-headers/package.mk b/packages/graphics/vulkan/spirv-headers/package.mk index 4a5588dd4..13ca5b2b2 100644 --- a/packages/graphics/vulkan/spirv-headers/package.mk +++ b/packages/graphics/vulkan/spirv-headers/package.mk @@ -6,7 +6,7 @@ PKG_NAME="spirv-headers" # The SPIRV-Headers pkg_version needs to match the compatible (known_good) glslang pkg_version. # https://raw.githubusercontent.com/KhronosGroup/glslang/${PKG_VERSION}/known_good.json # When updating glslang pkg_version please update to the known_good spirv-headers pkg_version. -PKG_VERSION="4f7b471f1a66b6d06462cd4ba57628cc0cd087d7" +PKG_VERSION="2acb319af38d43be3ea76bfabf3998e5281d8d12" PKG_LICENSE="Apache-2.0" PKG_SITE="https://github.com/KhronosGroup/SPIRV-headers" PKG_URL="https://github.com/KhronosGroup/SPIRV-headers/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/graphics/vulkan/spirv-tools/package.mk b/packages/graphics/vulkan/spirv-tools/package.mk index 00e8fcb2e..a2c5000f8 100644 --- a/packages/graphics/vulkan/spirv-tools/package.mk +++ b/packages/graphics/vulkan/spirv-tools/package.mk @@ -6,10 +6,17 @@ PKG_NAME="spirv-tools" # The SPIRV-Tools pkg_version needs to match the compatible (known_good) glslang pkg_version. # https://raw.githubusercontent.com/KhronosGroup/glslang/${PKG_VERSION}/known_good.json # When updating glslang pkg_version please update to the known_good spirv-tools pkg_version. -PKG_VERSION="dd4b663e13c07fea4fbb3f70c1c91c86731099f7" +PKG_VERSION="0cfe9e7219148716dfd30b37f4d21753f098707a" PKG_LICENSE="Apache-2.0" PKG_SITE="https://github.com/KhronosGroup/SPIRV-Tools" PKG_URL="https://github.com/KhronosGroup/SPIRV-Tools/archive/${PKG_VERSION}.tar.gz" -PKG_DEPENDS_HOST="" +PKG_DEPENDS_HOST="toolchain:host" +PKG_DEPENDS_UNPACK="spirv-headers" PKG_LONGDESC="The SPIR-V Tools project provides an API and commands for processing SPIR-V modules." -PKG_TOOLCHAIN="manual" + +post_unpack() { + mkdir -p ${PKG_BUILD}/external/spirv-headers + tar --strip-components=1 \ + -xf "${SOURCES}/spirv-headers/spirv-headers-$(get_pkg_version spirv-headers).tar.gz" \ + -C "${PKG_BUILD}/external/spirv-headers" +} diff --git a/packages/hardware/quirks/devices/AYANEO AIR/bin/fancontrol b/packages/hardware/quirks/devices/AYANEO AIR/bin/fancontrol index c6e2debe1..8a3b6ddf1 100755 --- a/packages/hardware/quirks/devices/AYANEO AIR/bin/fancontrol +++ b/packages/hardware/quirks/devices/AYANEO AIR/bin/fancontrol @@ -73,7 +73,7 @@ declare -a HISTORY while true do INDEX=0 - CPU_TEMP=$(printf "%.0f" $(awk '{ total += $1; count++ } END { print total/count }' ${DEVICE_TEMP_SENSOR})) + CPU_TEMP=$(awk '{total += $1; count++} END {printf "%d", total/count}' ${DEVICE_TEMP_SENSOR}) ### Keep a rolling history of CPU temps. HISTORY+=(${CPU_TEMP}) diff --git a/packages/hardware/quirks/devices/AYANEO AYANEO 2S/bin/fancontrol b/packages/hardware/quirks/devices/AYANEO AYANEO 2S/bin/fancontrol index 6faa6e15e..4b3a9acfb 100755 --- a/packages/hardware/quirks/devices/AYANEO AYANEO 2S/bin/fancontrol +++ b/packages/hardware/quirks/devices/AYANEO AYANEO 2S/bin/fancontrol @@ -61,7 +61,7 @@ set_control 1 >/dev/null 2>&1 while true do INDEX=0 - CPU_TEMP=$(printf "%.0f" $(awk '{ total += $1; count++ } END { print total/count }' ${DEVICE_TEMP_SENSOR})) + CPU_TEMP=$(awk '{total += $1; count++} END {printf "%d", total/count}' ${DEVICE_TEMP_SENSOR}) $DEBUG && log $0 "CPU TEMP: ${CPU_TEMP}" 2>/dev/null for TEMP in "${TEMPS[@]}" do diff --git a/packages/hardware/quirks/devices/Anbernic RG ARC-D/001-device_config b/packages/hardware/quirks/devices/Anbernic RG ARC-D/001-device_config old mode 100644 new mode 100755 index 54c030c92..76eb095b5 --- a/packages/hardware/quirks/devices/Anbernic RG ARC-D/001-device_config +++ b/packages/hardware/quirks/devices/Anbernic RG ARC-D/001-device_config @@ -4,8 +4,6 @@ cat </storage/.config/profile.d/001-device_config DEVICE_FAKE_JACKSENSE="false" -DEVICE_POWER_LED="false" -DEVICE_BRIGHTNESS="128" DEVICE_BATTERY_LED_STATUS="true" DEVICE_HAS_TOUCHSCREEN="true" EOF diff --git a/packages/hardware/quirks/devices/Anbernic RG ARC-D/040-display b/packages/hardware/quirks/devices/Anbernic RG ARC-D/040-display deleted file mode 100755 index 107ddab32..000000000 --- a/packages/hardware/quirks/devices/Anbernic RG ARC-D/040-display +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile - -# Configure default contrast saturation and hue values -for PROPERTY in brightness contrast saturation hue -do - MYVAL=$(get_setting display.${PROPERTY}) - if [ -z "${MYVAL}" ] - then - MYVAL=$(drm_tool list | sed -n '/Connector: 133/,$p' | awk '/'${PROPERTY}'/ {print $5}') - fi - paneladj ${PROPERTY} ${MYVAL} -done diff --git a/packages/hardware/quirks/devices/Anbernic RG ARC-D/050-game-configs b/packages/hardware/quirks/devices/Anbernic RG ARC-D/050-game-configs index 95dee1421..003c6ea50 100755 --- a/packages/hardware/quirks/devices/Anbernic RG ARC-D/050-game-configs +++ b/packages/hardware/quirks/devices/Anbernic RG ARC-D/050-game-configs @@ -60,3 +60,64 @@ if [ -d "${REMAP_DIR}" ]; then fi done fi + +# hypseus aka daphne +if [ ! -d "/storage/.config/game/configs/hypseus/" ]; then + mkdir -p /storage/.config/game/configs/hypseus/ +fi +if [ ! -f "/storage/.config/game/configs/hypseus/hypinput.ini" ]; then +cat </storage/.config/game/configs/hypseus/hypinput.ini +# Sample hypinput.ini +# All key options listed +# Arcade layout by OzFalcon +# Hypseus uses SDL2 Keycodes +# KEY_BUTTON3 Turns scoreboard on/off +# SWITCH = Key1 Key2 Joy +# Start + Select will exit game +################################## +#Button Info for ARC-D running Rocknix by Morfious +# +#Controller Button ID# Game Function +#Dpad Up 13 Dpad Up 1073741906 SDLK_UP BUTTON_DPAD_UP +#Dpad Down 14 Dpad Down 1073741905 SDLK_DOWN BUTTON_DPAD_DOWN +#Dpad Left 15 Dpad Left 1073741904 SDLK_LEFT BUTTON_DPAD_LEFT +#Dpad Right 16 Dpad Right 1073741903 SDLK_RIGHT BUTTON_DPAD_RIGHT +#Select 11 Insert Coin +#Start 12 Start Game +#A Button 2 Button 1 +#B Button 1 Button 2 +#C Button 3 Toggle Scoreboard +#X Button 4 Skill 1 +#Y Button 5 Skill 2 +#Z Button 6 Skill 3 +#L1 7 Pause +#R1 8 Test Mode +#L2 9 Reset +#R2 10 Service Mode + +[KEYBOARD] +KEY_UP = 1073741906 SDLK_UP 13 +KEY_DOWN = 1073741905 SDLK_DOWN 14 +KEY_LEFT = 1073741904 SDLK_LEFT 15 +KEY_RIGHT = 1073741903 SDLK_RIGHT 16 +KEY_COIN1 = SDLK_5 0 11 +KEY_COIN2 = SDLK_6 0 0 +KEY_START1 = SDLK_1 0 12 +KEY_START2 = SDLK_2 0 0 +KEY_BUTTON1 = SDLK_LCTRL 0 2 +KEY_BUTTON2 = SDLK_LALT 0 1 +KEY_BUTTON3 = SDLK_SPACE 0 3 +KEY_SKILL1 = SDLK_LSHIFT 0 4 +KEY_SKILL2 = SDLK_z 0 5 +KEY_SKILL3 = SDLK_x 0 6 +KEY_SERVICE = SDLK_9 0 10 +KEY_TEST = SDLK_F2 SDLK_F4 8 +KEY_RESET = SDLK_0 0 9 +KEY_SCREENSHOT = SDLK_F12 0 0 +KEY_QUIT = SDLK_ESCAPE 0 0 +KEY_PAUSE = SDLK_p 0 7 +KEY_CONSOLE = SDLK_BACKSLASH 0 0 +KEY_TILT = SDLK_t 0 0 +END +EOF +fi diff --git a/packages/hardware/quirks/devices/Anbernic RG ARC-S/001-device_config b/packages/hardware/quirks/devices/Anbernic RG ARC-S/001-device_config index b57d9e7bf..ef9f43808 100755 --- a/packages/hardware/quirks/devices/Anbernic RG ARC-S/001-device_config +++ b/packages/hardware/quirks/devices/Anbernic RG ARC-S/001-device_config @@ -3,9 +3,6 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) cat </storage/.config/profile.d/001-device_config -DEVICE_FAKE_JACKSENSE="true" -DEVICE_POWER_LED="true" -DEVICE_HEADPHONE_DEV="/dev/input/by-path/platform-rk817-sound-event" -DEVICE_BRIGHTNESS="70" - +DEVICE_FAKE_JACKSENSE="false" +DEVICE_BATTERY_LED_STATUS="true" EOF diff --git a/packages/hardware/quirks/devices/Anbernic RG ARC-S/020-gpios b/packages/hardware/quirks/devices/Anbernic RG ARC-S/020-gpios deleted file mode 100755 index 608532312..000000000 --- a/packages/hardware/quirks/devices/Anbernic RG ARC-S/020-gpios +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -cat </storage/.config/profile.d/020-gpios -DEVICE_WIFI="5" -DEVICE_LED="77" -DEVICE_PWM_MOTOR="pwmchip1" -DEVICE_JACK="86" -EOF - -. /storage/.config/profile.d/020-gpios -# Enable PWM for rumble and turn rumble off during startup. -echo 0 > /sys/class/pwm/${DEVICE_PWM_MOTOR}/export -echo 1000000 > /sys/class/pwm/${DEVICE_PWM_MOTOR}/pwm0/period -echo 1 > /sys/class/pwm/${DEVICE_PWM_MOTOR}/pwm0/enable -echo 1000000 > /sys/class/pwm/${DEVICE_PWM_MOTOR}/pwm0/duty_cycle diff --git a/packages/hardware/quirks/devices/Anbernic RG ARC-S/020-gpios b/packages/hardware/quirks/devices/Anbernic RG ARC-S/020-gpios new file mode 120000 index 000000000..f892ec22a --- /dev/null +++ b/packages/hardware/quirks/devices/Anbernic RG ARC-S/020-gpios @@ -0,0 +1 @@ +../Anbernic RG ARC-D/020-gpios \ No newline at end of file diff --git a/packages/hardware/quirks/devices/Anbernic RG ARC-S/040-display b/packages/hardware/quirks/devices/Anbernic RG ARC-S/040-display deleted file mode 100755 index 107ddab32..000000000 --- a/packages/hardware/quirks/devices/Anbernic RG ARC-S/040-display +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile - -# Configure default contrast saturation and hue values -for PROPERTY in brightness contrast saturation hue -do - MYVAL=$(get_setting display.${PROPERTY}) - if [ -z "${MYVAL}" ] - then - MYVAL=$(drm_tool list | sed -n '/Connector: 133/,$p' | awk '/'${PROPERTY}'/ {print $5}') - fi - paneladj ${PROPERTY} ${MYVAL} -done diff --git a/packages/hardware/quirks/devices/Anbernic RG351M/001-device_config b/packages/hardware/quirks/devices/Anbernic RG351M/001-device_config index 58e91c023..2c81da255 100755 --- a/packages/hardware/quirks/devices/Anbernic RG351M/001-device_config +++ b/packages/hardware/quirks/devices/Anbernic RG351M/001-device_config @@ -4,10 +4,8 @@ cat </storage/.config/profile.d/001-device_config # Device Features -DEVICE_POWER_LED="false" DEVICE_PLAYBACK_PATH_SPK="HP" DEVICE_PLAYBACK_PATH_HP="SPK" -DEVICE_BRIGHTNESS="128" DEVICE_VOLUME="100" DEVICE_BATTERY_LED_STATUS="true" DEVICE_PWR_LED_GPIO="77" diff --git a/packages/hardware/quirks/devices/Anbernic RG351V/001-device_config b/packages/hardware/quirks/devices/Anbernic RG351V/001-device_config index d52aa6dbd..96d6492db 100755 --- a/packages/hardware/quirks/devices/Anbernic RG351V/001-device_config +++ b/packages/hardware/quirks/devices/Anbernic RG351V/001-device_config @@ -4,10 +4,8 @@ cat </storage/.config/profile.d/001-device_config # Device Features -DEVICE_POWER_LED="false" DEVICE_PLAYBACK_PATH_SPK="SPK" DEVICE_PLAYBACK_PATH_HP="HP" -DEVICE_BRIGHTNESS="128" DEVICE_BATTERY_LED_STATUS="true" DEVICE_PWR_LED_GPIO="77" DEVICE_TEMP_SENSOR="/sys/devices/virtual/thermal/thermal_zone0/temp" diff --git a/packages/hardware/quirks/devices/Anbernic RG353P/001-device_config b/packages/hardware/quirks/devices/Anbernic RG353P/001-device_config index a70f4866a..9cad1d4a8 100644 --- a/packages/hardware/quirks/devices/Anbernic RG353P/001-device_config +++ b/packages/hardware/quirks/devices/Anbernic RG353P/001-device_config @@ -4,8 +4,6 @@ cat </storage/.config/profile.d/001-device_config DEVICE_FAKE_JACKSENSE="false" -DEVICE_POWER_LED="false" -DEVICE_BRIGHTNESS="128" DEVICE_BATTERY_LED_STATUS="false" DEVICE_HAS_TOUCHSCREEN="true" EOF diff --git a/packages/hardware/quirks/devices/Anbernic RG353PS/001-device_config b/packages/hardware/quirks/devices/Anbernic RG353PS/001-device_config index d39597c79..61c452a2d 100644 --- a/packages/hardware/quirks/devices/Anbernic RG353PS/001-device_config +++ b/packages/hardware/quirks/devices/Anbernic RG353PS/001-device_config @@ -4,7 +4,5 @@ cat </storage/.config/profile.d/001-device_config DEVICE_FAKE_JACKSENSE="false" -DEVICE_POWER_LED="false" -DEVICE_BRIGHTNESS="128" DEVICE_BATTERY_LED_STATUS="false" EOF diff --git a/packages/hardware/quirks/devices/Anbernic RG353V/001-device_config b/packages/hardware/quirks/devices/Anbernic RG353V/001-device_config index 474f33e1e..0755a3f1c 100755 --- a/packages/hardware/quirks/devices/Anbernic RG353V/001-device_config +++ b/packages/hardware/quirks/devices/Anbernic RG353V/001-device_config @@ -4,9 +4,7 @@ cat </storage/.config/profile.d/001-device_config DEVICE_FAKE_JACKSENSE="true" -DEVICE_POWER_LED="true" DEVICE_HEADPHONE_DEV="/dev/input/by-path/platform-rk817-sound-event" -DEVICE_BRIGHTNESS="70" DEVICE_HAS_TOUCHSCREEN="true" EOF diff --git a/packages/hardware/quirks/devices/Anbernic RG353VS/001-device_config b/packages/hardware/quirks/devices/Anbernic RG353VS/001-device_config index b57d9e7bf..75a4a2360 100755 --- a/packages/hardware/quirks/devices/Anbernic RG353VS/001-device_config +++ b/packages/hardware/quirks/devices/Anbernic RG353VS/001-device_config @@ -4,8 +4,6 @@ cat </storage/.config/profile.d/001-device_config DEVICE_FAKE_JACKSENSE="true" -DEVICE_POWER_LED="true" DEVICE_HEADPHONE_DEV="/dev/input/by-path/platform-rk817-sound-event" -DEVICE_BRIGHTNESS="70" EOF diff --git a/packages/hardware/quirks/devices/Anbernic RG503/001-device_config b/packages/hardware/quirks/devices/Anbernic RG503/001-device_config index 81ba3c028..127677e36 100755 --- a/packages/hardware/quirks/devices/Anbernic RG503/001-device_config +++ b/packages/hardware/quirks/devices/Anbernic RG503/001-device_config @@ -4,6 +4,4 @@ cat </storage/.config/profile.d/001-device_config DEVICE_FAKE_JACKSENSE="false" -DEVICE_POWER_LED="false" -DEVICE_BRIGHTNESS="153" EOF diff --git a/packages/hardware/quirks/devices/Anbernic RG552/001-device_config b/packages/hardware/quirks/devices/Anbernic RG552/001-device_config index af86e5cf9..d2500c0f5 100755 --- a/packages/hardware/quirks/devices/Anbernic RG552/001-device_config +++ b/packages/hardware/quirks/devices/Anbernic RG552/001-device_config @@ -8,7 +8,6 @@ DEVICE_FAKE_JACKSENSE="true" DEVICE_AUDIO_MIXER="DAC" DEVICE_PLAYBACK_PATH_SPK="1*" DEVICE_PLAYBACK_PATH_HP="0*" -DEVICE_BRIGHTNESS="128" DEVICE_HEADPHONE_DEV="/dev/input/by-path/platform-es8316-sound-event" DEVICE_HAS_HDMI="true" DEVICE_BATTERY_LED_STATUS="true" diff --git a/packages/hardware/quirks/devices/Anbernic RG552/bin/fancontrol b/packages/hardware/quirks/devices/Anbernic RG552/bin/fancontrol index 54316ae22..0b50005cf 100755 --- a/packages/hardware/quirks/devices/Anbernic RG552/bin/fancontrol +++ b/packages/hardware/quirks/devices/Anbernic RG552/bin/fancontrol @@ -62,7 +62,7 @@ set_control 1 >/dev/null 2>&1 while true do INDEX=0 - CPU_TEMP=$(printf "%.0f" $(awk '{ total += $1; count++ } END { print total/count }' ${DEVICE_TEMP_SENSOR})) + CPU_TEMP=$(awk '{total += $1; count++} END {printf "%d", total/count}' ${DEVICE_TEMP_SENSOR}) $DEBUG && log $0 "CPU TEMP: ${CPU_TEMP}" 2>/dev/null for TEMP in "${TEMPS[@]}" do diff --git a/packages/hardware/quirks/devices/Game Console R33S/001-device_config b/packages/hardware/quirks/devices/Game Console R33S/001-device_config index 24664d56c..daf508520 100755 --- a/packages/hardware/quirks/devices/Game Console R33S/001-device_config +++ b/packages/hardware/quirks/devices/Game Console R33S/001-device_config @@ -4,10 +4,8 @@ cat </storage/.config/profile.d/001-device_config # Device Features -DEVICE_POWER_LED="false" DEVICE_PLAYBACK_PATH_SPK="HP" DEVICE_PLAYBACK_PATH_HP="SPK" -DEVICE_BRIGHTNESS="128" DEVICE_PWR_LED_GPIO="77" DEVICE_TEMP_SENSOR="/sys/devices/virtual/thermal/thermal_zone0/temp" DEVICE_DTB_SWITCH="true" diff --git a/packages/hardware/quirks/devices/Game Console R36S/001-device_config b/packages/hardware/quirks/devices/Game Console R36S/001-device_config index 24664d56c..daf508520 100755 --- a/packages/hardware/quirks/devices/Game Console R36S/001-device_config +++ b/packages/hardware/quirks/devices/Game Console R36S/001-device_config @@ -4,10 +4,8 @@ cat </storage/.config/profile.d/001-device_config # Device Features -DEVICE_POWER_LED="false" DEVICE_PLAYBACK_PATH_SPK="HP" DEVICE_PLAYBACK_PATH_HP="SPK" -DEVICE_BRIGHTNESS="128" DEVICE_PWR_LED_GPIO="77" DEVICE_TEMP_SENSOR="/sys/devices/virtual/thermal/thermal_zone0/temp" DEVICE_DTB_SWITCH="true" diff --git a/packages/hardware/quirks/devices/Game Console R36S/110-retroarch-joypad b/packages/hardware/quirks/devices/Game Console R36S/110-retroarch-joypad index 2ee2be90a..f98b32702 100755 --- a/packages/hardware/quirks/devices/Game Console R36S/110-retroarch-joypad +++ b/packages/hardware/quirks/devices/Game Console R36S/110-retroarch-joypad @@ -32,8 +32,8 @@ input_r_x_plus_axis = "+2" input_r_x_minus_axis = "-2" input_r_y_plus_axis = "+3" input_r_y_minus_axis = "-3" -input_enable_hotkey_btn = "12" -input_exit_emulator_btn = "13" +input_enable_hotkey_btn = "8" +input_exit_emulator_btn = "9" input_menu_toggle_btn = "2" input_fps_toggle_btn = "3" input_load_state_btn = "4" diff --git a/packages/hardware/quirks/devices/GameForce ACE/001-device_config b/packages/hardware/quirks/devices/GameForce ACE/001-device_config index 6d43256f5..a9a1520dc 100755 --- a/packages/hardware/quirks/devices/GameForce ACE/001-device_config +++ b/packages/hardware/quirks/devices/GameForce ACE/001-device_config @@ -8,7 +8,6 @@ cat </storage/.config/profile.d/001-device_config #DEVICE_AUDIO_MIXER="DAC" #DEVICE_PLAYBACK_PATH_SPK="1*" #DEVICE_PLAYBACK_PATH_HP="0*" -DEVICE_BRIGHTNESS="128" #DEVICE_HEADPHONE_DEV="/dev/input/by-path/platform-es8316-sound-event" DEVICE_HAS_TOUCHSCREEN="true" #DEVICE_BATTERY_LED_STATUS="true" diff --git a/packages/hardware/quirks/devices/GameForce ACE/bin/fancontrol b/packages/hardware/quirks/devices/GameForce ACE/bin/fancontrol index 563cc33e2..0056edb43 100755 --- a/packages/hardware/quirks/devices/GameForce ACE/bin/fancontrol +++ b/packages/hardware/quirks/devices/GameForce ACE/bin/fancontrol @@ -74,7 +74,7 @@ declare -a HISTORY while true do INDEX=0 - CPU_TEMP=$(printf "%.0f" $(awk '{ total += $1; count++ } END { print total/count }' ${DEVICE_TEMP_SENSOR})) + CPU_TEMP=$(awk '{total += $1; count++} END {printf "%d", total/count}' ${DEVICE_TEMP_SENSOR}) ### Keep a rolling history of CPU temps. HISTORY+=(${CPU_TEMP}) diff --git a/packages/hardware/quirks/devices/Gameforce CHI/001-device_config b/packages/hardware/quirks/devices/Gameforce CHI/001-device_config index 58e91c023..2c81da255 100755 --- a/packages/hardware/quirks/devices/Gameforce CHI/001-device_config +++ b/packages/hardware/quirks/devices/Gameforce CHI/001-device_config @@ -4,10 +4,8 @@ cat </storage/.config/profile.d/001-device_config # Device Features -DEVICE_POWER_LED="false" DEVICE_PLAYBACK_PATH_SPK="HP" DEVICE_PLAYBACK_PATH_HP="SPK" -DEVICE_BRIGHTNESS="128" DEVICE_VOLUME="100" DEVICE_BATTERY_LED_STATUS="true" DEVICE_PWR_LED_GPIO="77" diff --git a/packages/hardware/quirks/devices/Hardkernel ODROID-GO-Ultra/001-device_config b/packages/hardware/quirks/devices/Hardkernel ODROID-GO-Ultra/001-device_config index 144b17542..dffa839f5 100755 --- a/packages/hardware/quirks/devices/Hardkernel ODROID-GO-Ultra/001-device_config +++ b/packages/hardware/quirks/devices/Hardkernel ODROID-GO-Ultra/001-device_config @@ -5,7 +5,5 @@ cat </storage/.config/profile.d/001-device_config DEVICE_FAKE_JACKSENSE="true" DEVICE_HEADPHONE_DEV="/dev/input/by-path/platform-gpio-keys-event" -DEVICE_POWER_LED="false" -DEVICE_BRIGHTNESS="128" DEVICE_TEMP_SENSOR=("/sys/devices/virtual/thermal/thermal_zone0/temp" "/sys/devices/virtual/thermal/thermal_zone3/temp" "/sys/devices/virtual/thermal/thermal_zone2/temp") EOF diff --git a/packages/hardware/quirks/devices/Hardkernel ODROID-N2/001-device_config b/packages/hardware/quirks/devices/Hardkernel ODROID-N2/001-device_config index 87d0e1313..738f0bc51 100755 --- a/packages/hardware/quirks/devices/Hardkernel ODROID-N2/001-device_config +++ b/packages/hardware/quirks/devices/Hardkernel ODROID-N2/001-device_config @@ -5,7 +5,5 @@ cat </storage/.config/profile.d/001-device_config # Device Features DEVICE_VOLUME="100" -DEVICE_POWER_LED="false" -DEVICE_BRIGHTNESS="hardware" DEVICE_TEMP_SENSOR=("/sys/devices/virtual/thermal/thermal_zone0/temp" "/sys/devices/virtual/thermal/thermal_zone3/temp" "/sys/devices/virtual/thermal/thermal_zone2/temp") EOF diff --git a/packages/hardware/quirks/devices/MagicX XU10/001-device_config b/packages/hardware/quirks/devices/MagicX XU10/001-device_config index 1303393a1..00efc770c 100755 --- a/packages/hardware/quirks/devices/MagicX XU10/001-device_config +++ b/packages/hardware/quirks/devices/MagicX XU10/001-device_config @@ -4,10 +4,8 @@ cat </storage/.config/profile.d/001-device_config # Device Features -DEVICE_POWER_LED="false" DEVICE_PLAYBACK_PATH_SPK="SPK" DEVICE_PLAYBACK_PATH_HP="HP" -DEVICE_BRIGHTNESS="128" DEVICE_BATTERY_LED_STATUS="true" DEVICE_TEMP_SENSOR="/sys/devices/virtual/thermal/thermal_zone0/temp" EOF diff --git a/packages/hardware/quirks/devices/ODROID-GO Advance Black Edition/001-device_config b/packages/hardware/quirks/devices/ODROID-GO Advance Black Edition/001-device_config index ebbbce0ab..24e0afa1f 100755 --- a/packages/hardware/quirks/devices/ODROID-GO Advance Black Edition/001-device_config +++ b/packages/hardware/quirks/devices/ODROID-GO Advance Black Edition/001-device_config @@ -4,10 +4,8 @@ cat </storage/.config/profile.d/001-device_config # Device Features -DEVICE_POWER_LED="false" DEVICE_SW_HP_SWITCH="true" DEVICE_PLAYBACK_PATH_SPK="SPK" DEVICE_PLAYBACK_PATH_HP="HP" -DEVICE_BRIGHTNESS="128" DEVICE_MMC_EJECT="false" EOF diff --git a/packages/hardware/quirks/devices/ODROID-GO Advance/001-device_config b/packages/hardware/quirks/devices/ODROID-GO Advance/001-device_config index c78bcd396..574664674 100755 --- a/packages/hardware/quirks/devices/ODROID-GO Advance/001-device_config +++ b/packages/hardware/quirks/devices/ODROID-GO Advance/001-device_config @@ -4,11 +4,9 @@ cat </storage/.config/profile.d/001-device_config # Device Features -DEVICE_POWER_LED="false" DEVICE_PLAYBACK_PATH_SPK="SPK" DEVICE_PLAYBACK_PATH_HP="HP" DEVICE_SW_HP_SWITCH="true" -DEVICE_BRIGHTNESS="128" DEVICE_VOLUME="100" DEVICE_BATTERY_LED_STATUS="true" DEVICE_PWR_LED_GPIO="77" diff --git a/packages/hardware/quirks/devices/ODROID-GO Super/001-device_config b/packages/hardware/quirks/devices/ODROID-GO Super/001-device_config index 14497ebdc..b7ba91a58 100755 --- a/packages/hardware/quirks/devices/ODROID-GO Super/001-device_config +++ b/packages/hardware/quirks/devices/ODROID-GO Super/001-device_config @@ -4,9 +4,7 @@ cat </storage/.config/profile.d/001-device_config # Device Features -DEVICE_POWER_LED="false" DEVICE_PLAYBACK_PATH_SPK="SPK" DEVICE_PLAYBACK_PATH_HP="HP" -DEVICE_BRIGHTNESS="128" DEVICE_MMC_EJECT="false" EOF diff --git a/packages/hardware/quirks/devices/Powkiddy RGB20S/001-device_config b/packages/hardware/quirks/devices/Powkiddy RGB20S/001-device_config index 5e350b0f5..5512ae4a2 100755 --- a/packages/hardware/quirks/devices/Powkiddy RGB20S/001-device_config +++ b/packages/hardware/quirks/devices/Powkiddy RGB20S/001-device_config @@ -4,10 +4,8 @@ cat </storage/.config/profile.d/001-device_config # Device Features -DEVICE_POWER_LED="false" DEVICE_PLAYBACK_PATH_SPK="HP" DEVICE_PLAYBACK_PATH_HP="SPK" -DEVICE_BRIGHTNESS="128" DEVICE_PWR_LED_GPIO="77" DEVICE_TEMP_SENSOR="/sys/devices/virtual/thermal/thermal_zone0/temp" EOF diff --git a/packages/hardware/quirks/devices/Powkiddy x55/001-device_config b/packages/hardware/quirks/devices/Powkiddy x55/001-device_config index 626cd0953..d2daab3db 100755 --- a/packages/hardware/quirks/devices/Powkiddy x55/001-device_config +++ b/packages/hardware/quirks/devices/Powkiddy x55/001-device_config @@ -4,7 +4,5 @@ cat </storage/.config/profile.d/001-device_config DEVICE_FAKE_JACKSENSE="true" -DEVICE_POWER_LED="false" -DEVICE_BRIGHTNESS="128" DEVICE_BATTERY_LED_STATUS="true" EOF diff --git a/packages/hardware/quirks/devices/Retro Lite CM5/001-device_config b/packages/hardware/quirks/devices/Retro Lite CM5/001-device_config index 3dc868479..bf25515bf 100755 --- a/packages/hardware/quirks/devices/Retro Lite CM5/001-device_config +++ b/packages/hardware/quirks/devices/Retro Lite CM5/001-device_config @@ -8,7 +8,6 @@ cat </storage/.config/profile.d/001-device_config #DEVICE_AUDIO_MIXER="DAC" #DEVICE_PLAYBACK_PATH_SPK="1*" #DEVICE_PLAYBACK_PATH_HP="0*" -DEVICE_BRIGHTNESS="128" #DEVICE_HEADPHONE_DEV="/dev/input/by-path/platform-wm8960-sound-event" DEVICE_HAS_TOUCHSCREEN="true" #DEVICE_BATTERY_LED_STATUS="true" diff --git a/packages/hardware/quirks/platforms/AMD64/001-device_config b/packages/hardware/quirks/platforms/AMD64/001-device_config index f8067f367..ee6943d83 100755 --- a/packages/hardware/quirks/platforms/AMD64/001-device_config +++ b/packages/hardware/quirks/platforms/AMD64/001-device_config @@ -6,7 +6,6 @@ ### Set the default device configuration cat </storage/.config/profile.d/001-device_config -DEVICE_BRIGHTNESS="hardware" EOF CPU_INFO=$(awk 'BEGIN {FS=":"} /model name/ {print $2; exit}' /proc/cpuinfo) diff --git a/packages/hardware/quirks/platforms/H700/001-device_config b/packages/hardware/quirks/platforms/H700/001-device_config new file mode 100644 index 000000000..763737fa3 --- /dev/null +++ b/packages/hardware/quirks/platforms/H700/001-device_config @@ -0,0 +1,8 @@ +#!/bin/bash +# SPDX-License-Identifier: Apache-2.0 +# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX) + +cat </storage/.config/profile.d/001-device_config +DEVICE_BRIGHTNESS="128" +DEVICE_TEMP_SENSOR="/sys/devices/virtual/thermal/thermal_zone2/temp" +EOF diff --git a/packages/hardware/quirks/platforms/H700/002-turbo-mode_config b/packages/hardware/quirks/platforms/H700/002-turbo-mode_config new file mode 100755 index 000000000..6883d58da --- /dev/null +++ b/packages/hardware/quirks/platforms/H700/002-turbo-mode_config @@ -0,0 +1,7 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) + +cat </storage/.config/profile.d/002-turbo-mode_config +DEVICE_TURBO_MODE="false" +EOF diff --git a/packages/hardware/quirks/platforms/H700/010-governors b/packages/hardware/quirks/platforms/H700/010-governors new file mode 100755 index 000000000..45631b7be --- /dev/null +++ b/packages/hardware/quirks/platforms/H700/010-governors @@ -0,0 +1,8 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +cat </storage/.config/profile.d/010-governors +CPU_FREQ=("/sys/devices/system/cpu/cpufreq/policy0") +GPU_FREQ=("/sys/devices/platform/soc/1800000.gpu/devfreq/1800000.gpu") +EOF diff --git a/packages/hardware/quirks/platforms/H700/060-game_settings b/packages/hardware/quirks/platforms/H700/060-game_settings new file mode 100755 index 000000000..c38bd3449 --- /dev/null +++ b/packages/hardware/quirks/platforms/H700/060-game_settings @@ -0,0 +1,15 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile.d/001-functions + +### Set the default performance scaling mode for a few systems. +for SYSTEM in dreamcast n64 ports psp psx saturn gba pcfx cdi +do + CPU_SETTING=$(get_setting ${SYSTEM}.cpugovernor) + if [ -z "${CPU_SETTING}" ] + then + set_setting ${SYSTEM}.cpugovernor performance + fi +done diff --git a/packages/hardware/quirks/platforms/H700/091-ui_shader b/packages/hardware/quirks/platforms/H700/091-ui_shader new file mode 100755 index 000000000..7eab4389f --- /dev/null +++ b/packages/hardware/quirks/platforms/H700/091-ui_shader @@ -0,0 +1,8 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +### Set the default device configuration +cat </storage/.config/profile.d/091-ui_shader +UI_SHADER="glslp" +EOF diff --git a/packages/hardware/quirks/platforms/H700/sleep.d/post/002-freq b/packages/hardware/quirks/platforms/H700/sleep.d/post/002-freq new file mode 100755 index 000000000..cfc35a100 --- /dev/null +++ b/packages/hardware/quirks/platforms/H700/sleep.d/post/002-freq @@ -0,0 +1,23 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +### Restore previous governors before going to sleep + +. /etc/profile + +### Grab the old governors. +OLD_CPU_FREQ=$(get_setting "sleep.cpugovernor") +if [ ! -n "${OLD_CPU_FREQ}" ]; then + OLD_CPU_FREQ="ondemand" +fi + +#OLD_GPU_FREQ=$(get_setting "sleep.gpugovernor") +#if [ ! -n "${OLD_GPU_FREQ}" ]; then +# OLD_GPU_FREQ="simple_ondemand" +#fi + +# Restore old governors. +set_cpu_gov "${OLD_CPU_FREQ}" +#set_dmc_gov "${OLD_CPU_FREQ}" +#set_gpu_gov "${OLD_GPU_FREQ}" diff --git a/packages/hardware/quirks/platforms/H700/sleep.d/pre/002-freq b/packages/hardware/quirks/platforms/H700/sleep.d/pre/002-freq new file mode 100755 index 000000000..e23ad5f35 --- /dev/null +++ b/packages/hardware/quirks/platforms/H700/sleep.d/pre/002-freq @@ -0,0 +1,19 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +# Store current freq governors and set governors to powersave. + +. /etc/profile + +### Get the current cpu and gpu governor, save for when the device wakes from sleep. +CUR_CPU_FREQ="$(cat ${CPU_FREQ}/scaling_governor)" +#CUR_GPU_FREQ="$(cat ${GPU_FREQ}/governor)" + +set_setting sleep.cpugovernor "${CUR_CPU_FREQ}" +#set_setting sleep.gpugovernor "${CUR_GPU_FREQ}" + +### Set all governors to powersave +set_cpu_gov powersave +#set_dmc_gov powersave +#set_gpu_gov powersave diff --git a/packages/hardware/quirks/platforms/RK3566/001-device_config b/packages/hardware/quirks/platforms/RK3566/001-device_config index bc5588143..107e2f30d 100755 --- a/packages/hardware/quirks/platforms/RK3566/001-device_config +++ b/packages/hardware/quirks/platforms/RK3566/001-device_config @@ -4,6 +4,4 @@ cat </storage/.config/profile.d/001-device_config DEVICE_FAKE_JACKSENSE="false" -DEVICE_POWER_LED="false" -DEVICE_BRIGHTNESS="128" EOF diff --git a/packages/hardware/quirks/platforms/RK3588/001-device_config b/packages/hardware/quirks/platforms/RK3588/001-device_config index 026782af2..900dfb7e6 100755 --- a/packages/hardware/quirks/platforms/RK3588/001-device_config +++ b/packages/hardware/quirks/platforms/RK3588/001-device_config @@ -3,7 +3,6 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) cat </storage/.config/profile.d/001-device_config -DEVICE_BRIGHTNESS="128" DEVICE_TEMP_SENSOR="/sys/devices/virtual/thermal/thermal_zone*/temp" # Affinity diff --git a/packages/hardware/quirks/platforms/RK3588/091-ui_shader b/packages/hardware/quirks/platforms/RK3588/091-ui_shader index d087007a4..7eab4389f 100755 --- a/packages/hardware/quirks/platforms/RK3588/091-ui_shader +++ b/packages/hardware/quirks/platforms/RK3588/091-ui_shader @@ -4,5 +4,5 @@ ### Set the default device configuration cat </storage/.config/profile.d/091-ui_shader -UI_SHADER="slangp" +UI_SHADER="glslp" EOF diff --git a/packages/hardware/quirks/platforms/S922X/001-device_config b/packages/hardware/quirks/platforms/S922X/001-device_config index cce007fdd..7c0c63753 100755 --- a/packages/hardware/quirks/platforms/S922X/001-device_config +++ b/packages/hardware/quirks/platforms/S922X/001-device_config @@ -4,7 +4,5 @@ cat </storage/.config/profile.d/001-device_config # Device Features -DEVICE_POWER_LED="false" -DEVICE_BRIGHTNESS="128" DEVICE_TEMP_SENSOR=("/sys/devices/virtual/thermal/thermal_zone0/temp" "/sys/devices/virtual/thermal/thermal_zone3/temp" "/sys/devices/virtual/thermal/thermal_zone2/temp") EOF diff --git a/packages/hardware/quirks/platforms/S922X/090-ui_service b/packages/hardware/quirks/platforms/S922X/090-ui_service index bc7013fc9..4c9e45dae 100755 --- a/packages/hardware/quirks/platforms/S922X/090-ui_service +++ b/packages/hardware/quirks/platforms/S922X/090-ui_service @@ -3,6 +3,12 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) ### Set the default device configuration -cat </storage/.config/profile.d/090-ui_service +if [ -f "/usr/lib/systemd/system/sway.service" ]; then + cat </storage/.config/profile.d/090-ui_service +UI_SERVICE="sway.service essway.service" +EOF +else + cat </storage/.config/profile.d/090-ui_service UI_SERVICE="weston.service" EOF +fi \ No newline at end of file diff --git a/packages/hardware/quirks/profile.d/999-export b/packages/hardware/quirks/profile.d/999-export index 9b56fb76f..b95fee3c9 100755 --- a/packages/hardware/quirks/profile.d/999-export +++ b/packages/hardware/quirks/profile.d/999-export @@ -12,7 +12,6 @@ export SLOW_CORES \ GPU_FREQ \ DEVICE_AUDIO_MIXER \ DEVICE_BASE_TDP \ - DEVICE_BRIGHTNESS \ DEVICE_BATTERY_LED_STATUS \ DEVICE_DTB_SWITCH \ DEVICE_FAKE_JACKSENSE \ @@ -36,7 +35,6 @@ export SLOW_CORES \ DEVICE_PLAYBACK_PATH \ DEVICE_PLAYBACK_PATH_HP \ DEVICE_PLAYBACK_PATH_SPK \ - DEVICE_POWER_LED \ DEVICE_PWM_FAN \ DEVICE_PWM_MOTOR \ DEVICE_ROTATED_SDL \ diff --git a/packages/hardware/quirks/system.d/led-poweroff.service b/packages/hardware/quirks/system.d/led-poweroff.service old mode 100755 new mode 100644 diff --git a/packages/kernel/drivers/dtbocfg/package.mk b/packages/kernel/drivers/dtbocfg/package.mk new file mode 100644 index 000000000..070942c4e --- /dev/null +++ b/packages/kernel/drivers/dtbocfg/package.mk @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +PKG_NAME="dtbocfg" +PKG_VERSION="0.1.0" +PKG_LICENSE="BSD" +PKG_SITE="https://github.com/ikwzm/dtbocfg" +PKG_URL="${PKG_SITE}/archive/refs/tags/v${PKG_VERSION}.tar.gz" +PKG_LONGDESC="Device Tree Blob Overlay Configuration File System" +PKG_DEPENDS_TARGET="toolchain linux" +PKG_NEED_UNPACK="${LINUX_DEPENDS}" +PKG_TOOLCHAIN="manual" +PKG_IS_KERNEL_PKG="yes" + +make_target() { + kernel_make KERNEL_SRC=$(kernel_path) -C ${PKG_BUILD} +} + +makeinstall_target() { + mkdir -p ${INSTALL}/$(get_full_module_dir)/${PKG_NAME} + cp dtbocfg.ko ${INSTALL}/$(get_full_module_dir)/${PKG_NAME}/ +} diff --git a/packages/kernel/drivers/generic-dsi/firmware/elida-kd35t133.desc b/packages/kernel/drivers/generic-dsi/firmware/elida-kd35t133.desc deleted file mode 100644 index ae52db9e8..000000000 --- a/packages/kernel/drivers/generic-dsi/firmware/elida-kd35t133.desc +++ /dev/null @@ -1,25 +0,0 @@ -# size=width_mm,height_mm delays=prepare,reset,init,enable,disable,unprepare -G size=42,82 delays=2,1,20,120,50,20 format=rgb888 lanes=1 flags=0xe03 # DSI params - -M clock=14118 horizontal=320,130,4,130 vertical=480,2,1,2 -M clock=15545 horizontal=320,130,4,130 vertical=480,2,1,2 -M clock=16286 horizontal=320,130,4,130 vertical=480,2,1,2 -M clock=16917 horizontal=320,130,4,130 vertical=480,2,1,2 -M clock=16976 horizontal=320,130,4,130 vertical=480,2,1,2 default=1 -M clock=17022 horizontal=320,130,4,130 vertical=480,2,1,2 -M clock=21375 horizontal=320,130,4,130 vertical=480,2,1,2 - -I dcs=e0 data=001318040f063a564d030a06303e0f # positive gamma -I dcs=e1 data=00131801110638344d060d0b31370f # negative gamma -I dcs=c0 data=1817 # power control 1 -I dcs=c1 data=41 # power control 2 -I dcs=c5 data=001a80 # vcom -I dcs=36 data=48 # MIPI_DCS_SET_ADDRESS_MODE -I dcs=3a data=55 # MIPI_DCS_SET_PIXEL_FORMAT -I dcs=b0 data=00 # inetrface mode -I dcs=b1 data=a0 # framerate -I dcs=b4 data=02 # display inversion -I dcs=b6 data=2002 # display function -I dcs=e9 data=00 # image function -I dcs=f7 data=a9512c82 # adjust control -I dcs=21 data= # MIPI_DCS_ENTER_INVERT_MODE diff --git a/packages/kernel/drivers/generic-dsi/firmware/r36s-panel-orig.desc b/packages/kernel/drivers/generic-dsi/firmware/r36s-panel-orig.desc deleted file mode 100644 index 206beb1e7..000000000 --- a/packages/kernel/drivers/generic-dsi/firmware/r36s-panel-orig.desc +++ /dev/null @@ -1,28 +0,0 @@ -G size=52,70 delays=2,1,20,120,20 format=rgb888 lanes=4 flags=0xe03 - -M clock=50000 horizontal=640,450,70,450 vertical=480,17,5,13 default=1 - -I seq=b9f11283 # orig_cmd=0x39 -I seq=b1000000da80 # orig_cmd=0x39 -I seq=b2001370 # orig_cmd=0x39 -I seq=b31010282803ff00000000 # orig_cmd=0x39 -I seq=b480 # orig_cmd=0x15 -I seq=b50a0a # orig_cmd=0x15 -I seq=b67f7f # orig_cmd=0x15 -I seq=b82662f063 # orig_cmd=0x39 -I seq=ba338105f90e0e2000000000000000442500900a0000014f01000037 # orig_cmd=0x39 -I seq=bc47 # orig_cmd=0x15 -I seq=bf021100 # orig_cmd=0x39 -I seq=c0737350500000125000 # orig_cmd=0x39 -I seq=c153c0323277e1dddd77773333 # orig_cmd=0x39 -I seq=c68200bfff00ff # orig_cmd=0x39 -I seq=c7b8000a000000 # orig_cmd=0x39 -I seq=c810401e02 # orig_cmd=0x39 -I seq=cc0b # orig_cmd=0x15 -I seq=e000070d37353f4144060c0d0f111012141a00070d37353f4144060c0d0f111012141a # orig_cmd=0x39 -I seq=e307070b0b0b0b00000000ff00c010 # orig_cmd=0x39 -I seq=e9c810020000b0b11131232880b0b127080004020000000004020000008888ba60240888888888888888ba713518888888888800000001000000000000000000 # orig_cmd=0x39 -I seq=ea970a820203070000000000008188ba17538888888888888088ba0642888888888888230000028000000000000000000000000000000000000000000000 # orig_cmd=0x39 -I seq=efffff01 # orig_cmd=0x39 -I seq=11 wait=200 # orig_cmd=0x5 -I seq=29 wait=50 # orig_cmd=0x5 diff --git a/packages/kernel/drivers/generic-dsi/firmware/r36s-panel1.desc b/packages/kernel/drivers/generic-dsi/firmware/r36s-panel1.desc deleted file mode 100644 index 8fd668ab4..000000000 --- a/packages/kernel/drivers/generic-dsi/firmware/r36s-panel1.desc +++ /dev/null @@ -1,31 +0,0 @@ -G size=52,70 delays=20,150,20,120,20 format=rgb888 lanes=4 flags=0xe03 - -M clock=29000 horizontal=640,80,20,80 vertical=480,20,4,12 default=1 -M clock=29000 horizontal=640,80,20,80 vertical=480,20,4,12 -M clock=29000 horizontal=640,80,20,80 vertical=480,20,4,12 - -I seq=e0abba # orig_cmd=0x39 -I seq=e1baab # orig_cmd=0x39 -I seq=b1100147ff # orig_cmd=0x39 -I seq=b20c0804505014 # orig_cmd=0x39 -I seq=b35612e0 # orig_cmd=0x39 -I seq=b4333004 # orig_cmd=0x39 -I seq=b6b0000010001000 # orig_cmd=0x39 -I seq=b80512294948 # orig_cmd=0x39 -I seq=b97f635245423439243e3d3c59464d3e3d3022007f635245423439243e3d3c59464d3e3d302200 # orig_cmd=0x39 -I seq=c03210123422222222900490040f0000c1 # orig_cmd=0x39 -I seq=c1129f8e89900490045440 # orig_cmd=0x39 -I seq=c2770908890811223344871800 # orig_cmd=0x39 -I seq=c3884a24241e1f120c0e10040624240202020202020202 # orig_cmd=0x39 -I seq=c4090b24241e1f130d0f11050724240202020202020202 # orig_cmd=0x39 -I seq=c64655 # orig_cmd=0x39 -I seq=c8120031423416 # orig_cmd=0x39 -I seq=ca1843 # orig_cmd=0x39 -I seq=cd0e64642c166b06b3 # orig_cmd=0x39 -I seq=d2e32b3808 # orig_cmd=0x39 -I seq=d40001000e04440810000000 # orig_cmd=0x39 -I seq=e68009ffffffffffff # orig_cmd=0x39 -I seq=f012032000ff # orig_cmd=0x39 -I seq=f303 # orig_cmd=0x15 -I seq=11 wait=200 # orig_cmd=0x5 -I seq=29 wait=20 # orig_cmd=0x5 diff --git a/packages/kernel/drivers/generic-dsi/firmware/r36s-panel2.desc b/packages/kernel/drivers/generic-dsi/firmware/r36s-panel2.desc deleted file mode 100644 index f12e743f7..000000000 --- a/packages/kernel/drivers/generic-dsi/firmware/r36s-panel2.desc +++ /dev/null @@ -1,193 +0,0 @@ -G size=52,70 delays=20,150,20,120,20 format=rgb888 lanes=4 flags=0xe03 - -M clock=29000 horizontal=640,46,2,44 vertical=480,16,2,14 default=1 -M clock=29000 horizontal=640,46,2,44 vertical=480,16,2,14 -M clock=29000 horizontal=640,46,2,44 vertical=480,16,2,14 - -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff01 # orig_cmd=0x15 -I seq=e300 # orig_cmd=0x15 -I seq=400a # orig_cmd=0x15 -I seq=0340 # orig_cmd=0x15 -I seq=0400 # orig_cmd=0x15 -I seq=0503 # orig_cmd=0x15 -I seq=2412 # orig_cmd=0x15 -I seq=251e # orig_cmd=0x15 -I seq=266f # orig_cmd=0x15 -I seq=2752 # orig_cmd=0x15 -I seq=2867 # orig_cmd=0x15 -I seq=2901 # orig_cmd=0x15 -I seq=2adf # orig_cmd=0x15 -I seq=379c # orig_cmd=0x15 -I seq=38a7 # orig_cmd=0x15 -I seq=3953 # orig_cmd=0x15 -I seq=4400 # orig_cmd=0x15 -I seq=493c # orig_cmd=0x15 -I seq=59fe # orig_cmd=0x15 -I seq=5c00 # orig_cmd=0x15 -I seq=8020 # orig_cmd=0x15 -I seq=9177 # orig_cmd=0x15 -I seq=9277 # orig_cmd=0x15 -I seq=a055 # orig_cmd=0x15 -I seq=a150 # orig_cmd=0x15 -I seq=a49c # orig_cmd=0x15 -I seq=a702 # orig_cmd=0x15 -I seq=a801 # orig_cmd=0x15 -I seq=a921 # orig_cmd=0x15 -I seq=aafc # orig_cmd=0x15 -I seq=ab28 # orig_cmd=0x15 -I seq=ac06 # orig_cmd=0x15 -I seq=ad06 # orig_cmd=0x15 -I seq=ae06 # orig_cmd=0x15 -I seq=af03 # orig_cmd=0x15 -I seq=b008 # orig_cmd=0x15 -I seq=b126 # orig_cmd=0x15 -I seq=b228 # orig_cmd=0x15 -I seq=b328 # orig_cmd=0x15 -I seq=b433 # orig_cmd=0x15 -I seq=b508 # orig_cmd=0x15 -I seq=b626 # orig_cmd=0x15 -I seq=b708 # orig_cmd=0x15 -I seq=b826 # orig_cmd=0x15 -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff02 # orig_cmd=0x15 -I seq=b00b # orig_cmd=0x15 -I seq=b116 # orig_cmd=0x15 -I seq=b217 # orig_cmd=0x15 -I seq=b32c # orig_cmd=0x15 -I seq=b432 # orig_cmd=0x15 -I seq=b53b # orig_cmd=0x15 -I seq=b629 # orig_cmd=0x15 -I seq=b740 # orig_cmd=0x15 -I seq=b80d # orig_cmd=0x15 -I seq=b905 # orig_cmd=0x15 -I seq=ba12 # orig_cmd=0x15 -I seq=bb10 # orig_cmd=0x15 -I seq=bc12 # orig_cmd=0x15 -I seq=bd15 # orig_cmd=0x15 -I seq=be19 # orig_cmd=0x15 -I seq=bf0e # orig_cmd=0x15 -I seq=c016 # orig_cmd=0x15 -I seq=c10a # orig_cmd=0x15 -I seq=d00c # orig_cmd=0x15 -I seq=d117 # orig_cmd=0x15 -I seq=d214 # orig_cmd=0x15 -I seq=d32e # orig_cmd=0x15 -I seq=d432 # orig_cmd=0x15 -I seq=d53c # orig_cmd=0x15 -I seq=d622 # orig_cmd=0x15 -I seq=d73d # orig_cmd=0x15 -I seq=d80d # orig_cmd=0x15 -I seq=d907 # orig_cmd=0x15 -I seq=da13 # orig_cmd=0x15 -I seq=db13 # orig_cmd=0x15 -I seq=dc11 # orig_cmd=0x15 -I seq=dd15 # orig_cmd=0x15 -I seq=de19 # orig_cmd=0x15 -I seq=df10 # orig_cmd=0x15 -I seq=e017 # orig_cmd=0x15 -I seq=e10a # orig_cmd=0x15 -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff03 # orig_cmd=0x15 -I seq=002a # orig_cmd=0x15 -I seq=012a # orig_cmd=0x15 -I seq=022a # orig_cmd=0x15 -I seq=032a # orig_cmd=0x15 -I seq=0461 # orig_cmd=0x15 -I seq=0580 # orig_cmd=0x15 -I seq=06c7 # orig_cmd=0x15 -I seq=0701 # orig_cmd=0x15 -I seq=0882 # orig_cmd=0x15 -I seq=0983 # orig_cmd=0x15 -I seq=302a # orig_cmd=0x15 -I seq=312a # orig_cmd=0x15 -I seq=322a # orig_cmd=0x15 -I seq=332a # orig_cmd=0x15 -I seq=34a1 # orig_cmd=0x15 -I seq=35c5 # orig_cmd=0x15 -I seq=3680 # orig_cmd=0x15 -I seq=3723 # orig_cmd=0x15 -I seq=4082 # orig_cmd=0x15 -I seq=4183 # orig_cmd=0x15 -I seq=4280 # orig_cmd=0x15 -I seq=4381 # orig_cmd=0x15 -I seq=4455 # orig_cmd=0x15 -I seq=45e6 # orig_cmd=0x15 -I seq=46e5 # orig_cmd=0x15 -I seq=4755 # orig_cmd=0x15 -I seq=48e8 # orig_cmd=0x15 -I seq=49e7 # orig_cmd=0x15 -I seq=5002 # orig_cmd=0x15 -I seq=5101 # orig_cmd=0x15 -I seq=5204 # orig_cmd=0x15 -I seq=5303 # orig_cmd=0x15 -I seq=5455 # orig_cmd=0x15 -I seq=55ea # orig_cmd=0x15 -I seq=56e9 # orig_cmd=0x15 -I seq=5755 # orig_cmd=0x15 -I seq=58ec # orig_cmd=0x15 -I seq=59eb # orig_cmd=0x15 -I seq=7e02 # orig_cmd=0x15 -I seq=7f80 # orig_cmd=0x15 -I seq=e05a # orig_cmd=0x15 -I seq=b100 # orig_cmd=0x15 -I seq=b40e # orig_cmd=0x15 -I seq=b50f # orig_cmd=0x15 -I seq=b604 # orig_cmd=0x15 -I seq=b707 # orig_cmd=0x15 -I seq=b806 # orig_cmd=0x15 -I seq=b905 # orig_cmd=0x15 -I seq=ba0f # orig_cmd=0x15 -I seq=c700 # orig_cmd=0x15 -I seq=ca0e # orig_cmd=0x15 -I seq=cb0f # orig_cmd=0x15 -I seq=cc04 # orig_cmd=0x15 -I seq=cd07 # orig_cmd=0x15 -I seq=ce06 # orig_cmd=0x15 -I seq=cf05 # orig_cmd=0x15 -I seq=d00f # orig_cmd=0x15 -I seq=810f # orig_cmd=0x15 -I seq=840e # orig_cmd=0x15 -I seq=850f # orig_cmd=0x15 -I seq=8607 # orig_cmd=0x15 -I seq=8704 # orig_cmd=0x15 -I seq=8805 # orig_cmd=0x15 -I seq=8906 # orig_cmd=0x15 -I seq=8a00 # orig_cmd=0x15 -I seq=970f # orig_cmd=0x15 -I seq=9a0e # orig_cmd=0x15 -I seq=9b0f # orig_cmd=0x15 -I seq=9c07 # orig_cmd=0x15 -I seq=9d04 # orig_cmd=0x15 -I seq=9e05 # orig_cmd=0x15 -I seq=9f06 # orig_cmd=0x15 -I seq=a000 # orig_cmd=0x15 -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff02 # orig_cmd=0x15 -I seq=0101 # orig_cmd=0x15 -I seq=02da # orig_cmd=0x15 -I seq=03ba # orig_cmd=0x15 -I seq=04a8 # orig_cmd=0x15 -I seq=059a # orig_cmd=0x15 -I seq=0670 # orig_cmd=0x15 -I seq=07ff # orig_cmd=0x15 -I seq=0891 # orig_cmd=0x15 -I seq=0990 # orig_cmd=0x15 -I seq=0aff # orig_cmd=0x15 -I seq=0b8f # orig_cmd=0x15 -I seq=0c60 # orig_cmd=0x15 -I seq=0d58 # orig_cmd=0x15 -I seq=0e48 # orig_cmd=0x15 -I seq=0f38 # orig_cmd=0x15 -I seq=102b # orig_cmd=0x15 -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff00 # orig_cmd=0x15 -I seq=3602 # orig_cmd=0x15 -I seq=3a70 # orig_cmd=0x15 -I seq=11 wait=200 # orig_cmd=0x5 -I seq=29 wait=20 # orig_cmd=0x5 diff --git a/packages/kernel/drivers/generic-dsi/firmware/r36s-panel3.desc b/packages/kernel/drivers/generic-dsi/firmware/r36s-panel3.desc deleted file mode 100644 index 855189ac9..000000000 --- a/packages/kernel/drivers/generic-dsi/firmware/r36s-panel3.desc +++ /dev/null @@ -1,194 +0,0 @@ -G size=52,70 delays=20,150,20,120,20 format=rgb888 lanes=4 flags=0xe03 - -M clock=29000 horizontal=640,46,2,44 vertical=480,16,2,14 default=1 -M clock=29000 horizontal=640,46,2,44 vertical=480,16,2,14 -M clock=29000 horizontal=640,46,2,44 vertical=480,16,2,14 - -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff01 # orig_cmd=0x15 -I seq=e300 # orig_cmd=0x15 -I seq=0400 # orig_cmd=0x15 -I seq=0503 # orig_cmd=0x15 -I seq=2412 # orig_cmd=0x15 -I seq=251e # orig_cmd=0x15 -I seq=266f # orig_cmd=0x15 -I seq=2752 # orig_cmd=0x15 -I seq=2867 # orig_cmd=0x15 -I seq=2901 # orig_cmd=0x15 -I seq=2adf # orig_cmd=0x15 -I seq=379c # orig_cmd=0x15 -I seq=38a7 # orig_cmd=0x15 -I seq=3953 # orig_cmd=0x15 -I seq=4400 # orig_cmd=0x15 -I seq=493c # orig_cmd=0x15 -I seq=59fe # orig_cmd=0x15 -I seq=5c00 # orig_cmd=0x15 -I seq=8020 # orig_cmd=0x15 -I seq=9177 # orig_cmd=0x15 -I seq=9277 # orig_cmd=0x15 -I seq=a055 # orig_cmd=0x15 -I seq=a150 # orig_cmd=0x15 -I seq=a49c # orig_cmd=0x15 -I seq=a702 # orig_cmd=0x15 -I seq=a801 # orig_cmd=0x15 -I seq=a921 # orig_cmd=0x15 -I seq=aafc # orig_cmd=0x15 -I seq=ab28 # orig_cmd=0x15 -I seq=ac06 # orig_cmd=0x15 -I seq=ad06 # orig_cmd=0x15 -I seq=ae06 # orig_cmd=0x15 -I seq=af03 # orig_cmd=0x15 -I seq=b008 # orig_cmd=0x15 -I seq=b126 # orig_cmd=0x15 -I seq=b228 # orig_cmd=0x15 -I seq=b328 # orig_cmd=0x15 -I seq=b433 # orig_cmd=0x15 -I seq=b508 # orig_cmd=0x15 -I seq=b626 # orig_cmd=0x15 -I seq=b708 # orig_cmd=0x15 -I seq=b826 # orig_cmd=0x15 -I seq=c000 # orig_cmd=0x15 -I seq=c100 # orig_cmd=0x15 -I seq=c200 # orig_cmd=0x15 -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff02 # orig_cmd=0x15 -I seq=b00b # orig_cmd=0x15 -I seq=b116 # orig_cmd=0x15 -I seq=b217 # orig_cmd=0x15 -I seq=b32c # orig_cmd=0x15 -I seq=b432 # orig_cmd=0x15 -I seq=b53b # orig_cmd=0x15 -I seq=b629 # orig_cmd=0x15 -I seq=b740 # orig_cmd=0x15 -I seq=b80d # orig_cmd=0x15 -I seq=b905 # orig_cmd=0x15 -I seq=ba12 # orig_cmd=0x15 -I seq=bb10 # orig_cmd=0x15 -I seq=bc12 # orig_cmd=0x15 -I seq=bd15 # orig_cmd=0x15 -I seq=be19 # orig_cmd=0x15 -I seq=bf0e # orig_cmd=0x15 -I seq=c016 # orig_cmd=0x15 -I seq=c10a # orig_cmd=0x15 -I seq=d00c # orig_cmd=0x15 -I seq=d117 # orig_cmd=0x15 -I seq=d214 # orig_cmd=0x15 -I seq=d32e # orig_cmd=0x15 -I seq=d432 # orig_cmd=0x15 -I seq=d53c # orig_cmd=0x15 -I seq=d622 # orig_cmd=0x15 -I seq=d73d # orig_cmd=0x15 -I seq=d80d # orig_cmd=0x15 -I seq=d907 # orig_cmd=0x15 -I seq=da13 # orig_cmd=0x15 -I seq=db13 # orig_cmd=0x15 -I seq=dc11 # orig_cmd=0x15 -I seq=dd15 # orig_cmd=0x15 -I seq=de19 # orig_cmd=0x15 -I seq=df10 # orig_cmd=0x15 -I seq=e017 # orig_cmd=0x15 -I seq=e10a # orig_cmd=0x15 -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff03 # orig_cmd=0x15 -I seq=002a # orig_cmd=0x15 -I seq=012a # orig_cmd=0x15 -I seq=022a # orig_cmd=0x15 -I seq=032a # orig_cmd=0x15 -I seq=0461 # orig_cmd=0x15 -I seq=0580 # orig_cmd=0x15 -I seq=06c7 # orig_cmd=0x15 -I seq=0701 # orig_cmd=0x15 -I seq=0882 # orig_cmd=0x15 -I seq=0983 # orig_cmd=0x15 -I seq=302a # orig_cmd=0x15 -I seq=312a # orig_cmd=0x15 -I seq=322a # orig_cmd=0x15 -I seq=332a # orig_cmd=0x15 -I seq=34a1 # orig_cmd=0x15 -I seq=35c5 # orig_cmd=0x15 -I seq=3680 # orig_cmd=0x15 -I seq=3723 # orig_cmd=0x15 -I seq=4082 # orig_cmd=0x15 -I seq=4183 # orig_cmd=0x15 -I seq=4280 # orig_cmd=0x15 -I seq=4381 # orig_cmd=0x15 -I seq=4455 # orig_cmd=0x15 -I seq=45e6 # orig_cmd=0x15 -I seq=46e5 # orig_cmd=0x15 -I seq=4755 # orig_cmd=0x15 -I seq=48e8 # orig_cmd=0x15 -I seq=49e7 # orig_cmd=0x15 -I seq=5002 # orig_cmd=0x15 -I seq=5101 # orig_cmd=0x15 -I seq=5204 # orig_cmd=0x15 -I seq=5303 # orig_cmd=0x15 -I seq=5455 # orig_cmd=0x15 -I seq=55ea # orig_cmd=0x15 -I seq=56e9 # orig_cmd=0x15 -I seq=5755 # orig_cmd=0x15 -I seq=58ec # orig_cmd=0x15 -I seq=59eb # orig_cmd=0x15 -I seq=7e02 # orig_cmd=0x15 -I seq=7f80 # orig_cmd=0x15 -I seq=e05a # orig_cmd=0x15 -I seq=b100 # orig_cmd=0x15 -I seq=b40e # orig_cmd=0x15 -I seq=b50f # orig_cmd=0x15 -I seq=b604 # orig_cmd=0x15 -I seq=b707 # orig_cmd=0x15 -I seq=b806 # orig_cmd=0x15 -I seq=b905 # orig_cmd=0x15 -I seq=ba0f # orig_cmd=0x15 -I seq=c700 # orig_cmd=0x15 -I seq=ca0e # orig_cmd=0x15 -I seq=cb0f # orig_cmd=0x15 -I seq=cc04 # orig_cmd=0x15 -I seq=cd07 # orig_cmd=0x15 -I seq=ce06 # orig_cmd=0x15 -I seq=cf05 # orig_cmd=0x15 -I seq=d00f # orig_cmd=0x15 -I seq=810f # orig_cmd=0x15 -I seq=840e # orig_cmd=0x15 -I seq=850f # orig_cmd=0x15 -I seq=8607 # orig_cmd=0x15 -I seq=8704 # orig_cmd=0x15 -I seq=8805 # orig_cmd=0x15 -I seq=8906 # orig_cmd=0x15 -I seq=8a00 # orig_cmd=0x15 -I seq=970f # orig_cmd=0x15 -I seq=9a0e # orig_cmd=0x15 -I seq=9b0f # orig_cmd=0x15 -I seq=9c07 # orig_cmd=0x15 -I seq=9d04 # orig_cmd=0x15 -I seq=9e05 # orig_cmd=0x15 -I seq=9f06 # orig_cmd=0x15 -I seq=a000 # orig_cmd=0x15 -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff02 # orig_cmd=0x15 -I seq=0101 # orig_cmd=0x15 -I seq=02da # orig_cmd=0x15 -I seq=03ba # orig_cmd=0x15 -I seq=04a8 # orig_cmd=0x15 -I seq=059a # orig_cmd=0x15 -I seq=0670 # orig_cmd=0x15 -I seq=07ff # orig_cmd=0x15 -I seq=0891 # orig_cmd=0x15 -I seq=0990 # orig_cmd=0x15 -I seq=0aff # orig_cmd=0x15 -I seq=0b8f # orig_cmd=0x15 -I seq=0c60 # orig_cmd=0x15 -I seq=0d58 # orig_cmd=0x15 -I seq=0e48 # orig_cmd=0x15 -I seq=0f38 # orig_cmd=0x15 -I seq=102b # orig_cmd=0x15 -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff00 # orig_cmd=0x15 -I seq=3602 # orig_cmd=0x15 -I seq=3a70 # orig_cmd=0x15 -I seq=11 wait=200 # orig_cmd=0x5 -I seq=29 wait=20 # orig_cmd=0x5 diff --git a/packages/kernel/drivers/generic-dsi/firmware/r36s-panel4.desc b/packages/kernel/drivers/generic-dsi/firmware/r36s-panel4.desc deleted file mode 100644 index 62133b955..000000000 --- a/packages/kernel/drivers/generic-dsi/firmware/r36s-panel4.desc +++ /dev/null @@ -1,161 +0,0 @@ -G size=52,70 delays=20,150,20,120,20 format=rgb888 lanes=4 flags=0xe03 - -M clock=29000 horizontal=640,46,2,44 vertical=480,165,2,14 default=1 # 60 -M clock=29000 horizontal=640,46,2,44 vertical=480,296,2,14 # 50 -M clock=29000 horizontal=640,46,2,44 vertical=480,32,2,14 # 75 - -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff01 # orig_cmd=0x15 -I seq=e300 # orig_cmd=0x15 -I seq=2510 # orig_cmd=0x15 -I seq=286f # orig_cmd=0x15 -I seq=2901 # orig_cmd=0x15 -I seq=2adf # orig_cmd=0x15 -I seq=2c22 # orig_cmd=0x15 -I seq=c30f # orig_cmd=0x15 -I seq=379c # orig_cmd=0x15 -I seq=38a7 # orig_cmd=0x15 -I seq=3941 # orig_cmd=0x15 -I seq=8020 # orig_cmd=0x15 -I seq=9167 # orig_cmd=0x15 -I seq=9267 # orig_cmd=0x15 -I seq=a055 # orig_cmd=0x15 -I seq=a150 # orig_cmd=0x15 -I seq=a358 # orig_cmd=0x15 -I seq=a49c # orig_cmd=0x15 -I seq=a702 # orig_cmd=0x15 -I seq=a801 # orig_cmd=0x15 -I seq=a921 # orig_cmd=0x15 -I seq=aafc # orig_cmd=0x15 -I seq=ab28 # orig_cmd=0x15 -I seq=ac06 # orig_cmd=0x15 -I seq=ad06 # orig_cmd=0x15 -I seq=ae06 # orig_cmd=0x15 -I seq=af03 # orig_cmd=0x15 -I seq=b008 # orig_cmd=0x15 -I seq=b126 # orig_cmd=0x15 -I seq=b228 # orig_cmd=0x15 -I seq=b328 # orig_cmd=0x15 -I seq=b403 # orig_cmd=0x15 -I seq=b508 # orig_cmd=0x15 -I seq=b626 # orig_cmd=0x15 -I seq=b708 # orig_cmd=0x15 -I seq=b826 # orig_cmd=0x15 -I seq=2c22 # orig_cmd=0x15 -I seq=5c40 # orig_cmd=0x15 -I seq=c000 # orig_cmd=0x15 -I seq=c100 # orig_cmd=0x15 -I seq=c200 # orig_cmd=0x15 -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff02 # orig_cmd=0x15 -I seq=b002 # orig_cmd=0x15 -I seq=d002 # orig_cmd=0x15 -I seq=b10f # orig_cmd=0x15 -I seq=d110 # orig_cmd=0x15 -I seq=b211 # orig_cmd=0x15 -I seq=d212 # orig_cmd=0x15 -I seq=b332 # orig_cmd=0x15 -I seq=d333 # orig_cmd=0x15 -I seq=b436 # orig_cmd=0x15 -I seq=d436 # orig_cmd=0x15 -I seq=b53c # orig_cmd=0x15 -I seq=d53c # orig_cmd=0x15 -I seq=b620 # orig_cmd=0x15 -I seq=d620 # orig_cmd=0x15 -I seq=b73e # orig_cmd=0x15 -I seq=d73e # orig_cmd=0x15 -I seq=b80e # orig_cmd=0x15 -I seq=d80d # orig_cmd=0x15 -I seq=b905 # orig_cmd=0x15 -I seq=d905 # orig_cmd=0x15 -I seq=ba11 # orig_cmd=0x15 -I seq=da12 # orig_cmd=0x15 -I seq=bb11 # orig_cmd=0x15 -I seq=db11 # orig_cmd=0x15 -I seq=bc13 # orig_cmd=0x15 -I seq=dc14 # orig_cmd=0x15 -I seq=bd14 # orig_cmd=0x15 -I seq=dd14 # orig_cmd=0x15 -I seq=be16 # orig_cmd=0x15 -I seq=de18 # orig_cmd=0x15 -I seq=bf0e # orig_cmd=0x15 -I seq=df0f # orig_cmd=0x15 -I seq=c017 # orig_cmd=0x15 -I seq=e017 # orig_cmd=0x15 -I seq=c107 # orig_cmd=0x15 -I seq=e108 # orig_cmd=0x15 -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff03 # orig_cmd=0x15 -I seq=088a # orig_cmd=0x15 -I seq=098b # orig_cmd=0x15 -I seq=3000 # orig_cmd=0x15 -I seq=3100 # orig_cmd=0x15 -I seq=3200 # orig_cmd=0x15 -I seq=3300 # orig_cmd=0x15 -I seq=3461 # orig_cmd=0x15 -I seq=35d4 # orig_cmd=0x15 -I seq=3624 # orig_cmd=0x15 -I seq=3703 # orig_cmd=0x15 -I seq=4086 # orig_cmd=0x15 -I seq=4187 # orig_cmd=0x15 -I seq=4284 # orig_cmd=0x15 -I seq=4385 # orig_cmd=0x15 -I seq=4411 # orig_cmd=0x15 -I seq=45de # orig_cmd=0x15 -I seq=46dd # orig_cmd=0x15 -I seq=4711 # orig_cmd=0x15 -I seq=48e0 # orig_cmd=0x15 -I seq=49df # orig_cmd=0x15 -I seq=5082 # orig_cmd=0x15 -I seq=5183 # orig_cmd=0x15 -I seq=5280 # orig_cmd=0x15 -I seq=5381 # orig_cmd=0x15 -I seq=5411 # orig_cmd=0x15 -I seq=55e2 # orig_cmd=0x15 -I seq=56e1 # orig_cmd=0x15 -I seq=5711 # orig_cmd=0x15 -I seq=58e4 # orig_cmd=0x15 -I seq=59e3 # orig_cmd=0x15 -I seq=820f # orig_cmd=0x15 -I seq=830f # orig_cmd=0x15 -I seq=8400 # orig_cmd=0x15 -I seq=850f # orig_cmd=0x15 -I seq=860f # orig_cmd=0x15 -I seq=870e # orig_cmd=0x15 -I seq=880e # orig_cmd=0x15 -I seq=8906 # orig_cmd=0x15 -I seq=8a06 # orig_cmd=0x15 -I seq=8b07 # orig_cmd=0x15 -I seq=8c07 # orig_cmd=0x15 -I seq=8d04 # orig_cmd=0x15 -I seq=8e04 # orig_cmd=0x15 -I seq=8f05 # orig_cmd=0x15 -I seq=9005 # orig_cmd=0x15 -I seq=980f # orig_cmd=0x15 -I seq=990f # orig_cmd=0x15 -I seq=9a00 # orig_cmd=0x15 -I seq=9b0f # orig_cmd=0x15 -I seq=9c0f # orig_cmd=0x15 -I seq=9d0e # orig_cmd=0x15 -I seq=9e0e # orig_cmd=0x15 -I seq=9f06 # orig_cmd=0x15 -I seq=a006 # orig_cmd=0x15 -I seq=a107 # orig_cmd=0x15 -I seq=a207 # orig_cmd=0x15 -I seq=a304 # orig_cmd=0x15 -I seq=a404 # orig_cmd=0x15 -I seq=a505 # orig_cmd=0x15 -I seq=a605 # orig_cmd=0x15 -I seq=e002 # orig_cmd=0x15 -I seq=e152 # orig_cmd=0x15 -I seq=ff30 # orig_cmd=0x15 -I seq=ff52 # orig_cmd=0x15 -I seq=ff00 # orig_cmd=0x15 -I seq=3602 # orig_cmd=0x15 -I seq=1100 # orig_cmd=0x15 -I seq=2900 # orig_cmd=0x15 -I seq=11 wait=200 # orig_cmd=0x5 -I seq=29 wait=20 # orig_cmd=0x5 diff --git a/packages/kernel/drivers/generic-dsi/package.mk b/packages/kernel/drivers/generic-dsi/package.mk index 4e1956375..b6a86ff89 100644 --- a/packages/kernel/drivers/generic-dsi/package.mk +++ b/packages/kernel/drivers/generic-dsi/package.mk @@ -5,22 +5,23 @@ PKG_NAME="generic-dsi" PKG_VERSION="0.1.0" PKG_LICENSE="GPL" PKG_LONGDESC="generic DSI panel driver" +PKG_DEPENDS_TARGET="pyFDT" PKG_TOOLCHAIN="manual" - ### For development. Easier to check if code compiles and works. ### No need for a long build-transfer-reboot-wait-reboot-check loop make_target() { - if [ "${I_AM_DEVELOPER}" != "yes" ]; then - echo "###### you should not build ${PKG_NAME} as package! ######" >&2; - exit 3; + if [ "${I_AM_DEVELOPER}" == "yes" ]; then + # rename the driver to not conflict with built-in one + sed 's|define DRIVER_NAME .*$|define DRIVER_NAME "panel-generic-dsi-test"|' panel-generic-dsi.c > panel-generic-dsi-test.c + echo 'obj-m += panel-generic-dsi-test.o' > ${PKG_BUILD}/Makefile + kernel_make -C $(kernel_path) M=${PKG_BUILD} fi - echo 'obj-m += panel-generic-dsi.o' > ${PKG_BUILD}/Makefile - kernel_make -C $(kernel_path) M=${PKG_BUILD} } makeinstall_target() { - : + mkdir -p "${INSTALL}/usr/libexec/generic-dsi" + cp -v "${PKG_DIR}/scripts/importpanel.py" "${INSTALL}/usr/libexec/generic-dsi/" } diff --git a/packages/kernel/drivers/generic-dsi/scripts/desc2dtbo.sh b/packages/kernel/drivers/generic-dsi/scripts/desc2dtbo.sh deleted file mode 100755 index 64257a865..000000000 --- a/packages/kernel/drivers/generic-dsi/scripts/desc2dtbo.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -desc2dtso() { -cat << EOH -/dts-v1/; -/plugin/; - -// compile with \`dtc -@ -I dts -O dtb -o mipi-panel.dtbo elida-kd35t133.dtso\` - -/ { - fragment@0 { - target-path = "/dsi@ff450000/panel@0"; - __overlay__ { - compatible = "rocknix,generic-dsi"; - panel_description = -EOH - -sed 's|^\(..*\)$| "\1",|' $1 - -cat << EOF - "#END"; - }; - }; -}; -EOF -} - -desc2dtso $1 | dtc -I dts -O dtb diff --git a/packages/kernel/drivers/generic-dsi/scripts/importpanel.py b/packages/kernel/drivers/generic-dsi/scripts/importpanel.py new file mode 100755 index 000000000..39f8571f8 --- /dev/null +++ b/packages/kernel/drivers/generic-dsi/scripts/importpanel.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python + +# https://pypi.org/project/fdt/ +# pip install fdt + +import sys, argparse +import fdt +import math + +parser = argparse.ArgumentParser(description="Extract MIPI panel description from stock dtb to use with panel-mipi-generic driver") +parser.add_argument("-n", "--name", help="human readable panel name") +parser.add_argument("-O", "--dtbo", help="store result in ready to use .dtbo file") +parser.add_argument(metavar="/path/to/vendor.dtb", dest="source_dtb", help="dtb file from stock firmware") +args = parser.parse_args() + +with open(args.source_dtb, "rb") as f: + dtb_data = f.read() + +acc = [] + +g_name = f"name='{args.name}' " if args.name else "" + +dt = fdt.parse_dtb(dtb_data) +panel = dt.get_node("dsi@ff450000/panel@0") + +w = panel.get_property("width-mm").value +h = panel.get_property("height-mm").value + +delays = [ + panel.get_property("prepare-delay-ms").value, + panel.get_property("reset-delay-ms").value, + panel.get_property("init-delay-ms").value, + panel.get_property("enable-delay-ms").value, + 20 # ready -- no such timeout in legacy dtbs + ] +delays_str = ','.join(map(str, delays)) + +fmt = ['rgb888', 'rgb666', 'rgb666_packed', 'rgb565'] [panel.get_property("dsi,format").value] +lanes = panel.get_property("dsi,lanes").value +flags = panel.get_property("dsi,flags").value +flags |= 0x0400 + +# G size=52,70 delays=2,1,20,120,50,20 format=rgb888 lanes=4 flags=0xe03 +acc += [f"G {g_name}size={w},{h} delays={delays_str} format={fmt} lanes={lanes} flags=0x{flags:x}", ""] + + +timings = panel.get_subnode("display-timings") +native = timings.get_property("native-mode").value + +# Collect vendor modes +modes = {} +orig_def_fps = None +for m in timings.nodes: + clock = round(m.get_property("clock-frequency").value/1000) + hor = [ + m.get_property("hactive").value, + m.get_property("hfront-porch").value, + m.get_property("hsync-len").value, + m.get_property("hback-porch").value, + ] + ver = [ + m.get_property("vactive").value, + m.get_property("vfront-porch").value, + m.get_property("vsync-len").value, + m.get_property("vback-porch").value, + ] + + mode = {'clock': clock, 'hor': hor, 'ver': ver} + if (m.get_property("phandle").value == native): + mode['default'] = True + + htotal = sum(hor) + vtotal = sum(ver) + fps = clock*1000/(htotal*vtotal) + + if fps not in modes: + modes[fps] = mode + if (m.get_property("phandle").value == native): + modes[fps]['default'] = True + orig_def_fps = fps + + +def absfrac(x): + return abs(x - round(x)) + +# Based on vendor modes construct a better set of modes +# https://tasvideos.org/PlatformFramerates +# 50, 60 -- generic +# */1.001 -- NTSC hack with 1001 divisor +# 50.0070 -- PAL NES https://www.nesdev.org/wiki/Cycle_reference_chart +# 60.0988 -- NTSC NES +# 54.8766 -- src/mame/toaplan/twincobr.cpp +# 57.5 -- src/mame/kaneko/snowbros.cpp +# 59.7275 -- https://en.wikipedia.org/wiki/Game_Boy +# 75.47 -- https://ws.nesdev.org/wiki/Display +def_fps = 60 +if orig_def_fps: + def_fps = orig_def_fps +for targetfps in [orig_def_fps, 50/1.001, 50, 50.0070, 57.5, 59.7275, 60/1.001, 60, 60.0988, 75.47, 90, 120]: + if not targetfps: + continue + warn = "" + # nearest fps to base on + greaterfps = [fps for fps in modes.keys() if fps >= targetfps] + if greaterfps == []: + basefps = max(modes.keys()) + basemode = modes[basefps] + clock = None + else: + # Trust original clock. If real clock differs, maybe make a whitelist or blacklist here + basefps = min(greaterfps) + basemode = modes[basefps] + clock = basemode['clock'] + hor = basemode['hor'].copy() + ver = basemode['ver'].copy() + # Assume original totals are minimal for the panel at this clock + htotal = sum(hor) + vtotal = sum(ver) + perfectclock = targetfps*htotal*vtotal/1000 + if not clock: + warn = "(CAN FAIL) " + # This may fail, but worth trying. Round up to 10kHz + clock = math.ceil(perfectclock/10)*10 + elif clock > 1.25*perfectclock: + # Too much deviation may cause no image + clock = math.ceil(perfectclock/10)*10 + + maxvtotal = round(vtotal*1.25) + # A little bruteforce to find a best totals for target fps + # TODO: maybe iterate over some clock values too + options = [(absfrac(c*1000/targetfps/vt), c, vt) + for vt in range(vtotal, maxvtotal+1) + for c in range(clock, round(1.25*perfectclock), 10) + if ((c*1000/targetfps/vt) >= htotal) and ((c*1000/targetfps/vt) < htotal*1.05) ] + if options == []: + acc += [f"# failed to find mode for fps={targetfps:.6f} c={clock} h={htotal} v={vtotal}"] + continue + (mindev, newclock, newvtotal) = min(options) + # construct a new mode with chosen vtotal + newhtotal = round(newclock*1000/targetfps/newvtotal) + addhtotal = newhtotal - htotal + addvtotal = newvtotal - vtotal + expectedfps = newclock*1000/newvtotal/newhtotal + hor[2] += addhtotal + ver[2] += addvtotal + hor_str = ','.join(map(str, hor)) + ver_str = ','.join(map(str, ver)) + maybe_default = " default=1" if targetfps == def_fps else "" + acc += [f"M clock={newclock} horizontal={hor_str} vertical={ver_str}{maybe_default} # {warn}fps={expectedfps:.6f} (target={targetfps:.6f})"] + +acc += [""] + +iseq0 = panel.get_property("panel-init-sequence") +if (hasattr(iseq0, 'value')) and (isinstance(iseq0.value, (int))): + iseq = b''.join(map(lambda w : w.to_bytes(4, "big"), list(iseq0))) +else: + iseq = bytearray(iseq0) + +while iseq: + cmd = iseq[0] + wait = iseq[1] + datalen = iseq[2] + iseq = iseq[3:] + + data = iseq[0:datalen] + iseq = iseq[datalen:] + + maybe_wait = f" wait={wait}" if (wait) else "" + acc += [f"I seq={data.hex()}{maybe_wait} # orig_cmd=0x{cmd:x}"] + +if args.dtbo: + # remove empty lines as pyfdt does not like them + acc = [ l for l in acc if l != ''] + # create an overlay tree + overlay = fdt.FDT() + overlay.set_property('target-path', '/dsi@ff450000/panel@0', path='fragment@0') + overlay.set_property('compatible', 'rocknix,generic-dsi', path='fragment@0/__overlay__') + overlay.set_property('panel_description', acc, path='fragment@0/__overlay__') + # store the overlay + with open(args.dtbo, "wb") as f: + f.write(overlay.to_dtb(version=17)) +else: + for l in acc: + print(l) diff --git a/packages/kernel/drivers/generic-dsi/scripts/stock2desc.py b/packages/kernel/drivers/generic-dsi/scripts/stock2desc.py deleted file mode 100755 index a0c7cd131..000000000 --- a/packages/kernel/drivers/generic-dsi/scripts/stock2desc.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env python - -# https://pypi.org/project/fdt/ -# pip install fdt - -import sys -import fdt - -with open(sys.argv[1], "rb") as f: - dtb_data = f.read() - -dt = fdt.parse_dtb(dtb_data) -panel = dt.get_node("dsi@ff450000/panel@0") - -w = panel.get_property("width-mm").value -h = panel.get_property("height-mm").value - -delays = [ - panel.get_property("prepare-delay-ms").value, - panel.get_property("reset-delay-ms").value, - panel.get_property("init-delay-ms").value, - panel.get_property("enable-delay-ms").value, - 20 # ready -- no such timeout in legacy dtbs - ] -delays_str = ','.join(map(str, delays)) - -fmt = ['rgb888', 'rgb666', 'rgb666_packed', 'rgb565'] [panel.get_property("dsi,format").value] -lanes = panel.get_property("dsi,lanes").value -flags = panel.get_property("dsi,flags").value -flags |= 0x0400 - -# G size=52,70 delays=2,1,20,120,50,20 format=rgb888 lanes=4 flags=0xe03 -print(f"G size={w},{h} delays={delays_str} format={fmt} lanes={lanes} flags=0x{flags:x}\n") - - -timings = panel.get_subnode("display-timings") -native = timings.get_property("native-mode").value -# M clock=27500 horizontal=640,50,2,90 vertical=480,18,2,8 -for m in timings.nodes: - clock = round(m.get_property("clock-frequency").value/1000) - hor = [ - m.get_property("hactive").value, - m.get_property("hfront-porch").value, - m.get_property("hsync-len").value, - m.get_property("hback-porch").value, - ] - hor_str = ','.join(map(str, hor)) - ver = [ - m.get_property("vactive").value, - m.get_property("vfront-porch").value, - m.get_property("vsync-len").value, - m.get_property("vback-porch").value, - ] - ver_str = ','.join(map(str, ver)) - maybe_default = "" - if (m.get_property("phandle").value == native): - maybe_default = " default=1" - - print(f"M clock={clock} horizontal={hor_str} vertical={ver_str} {maybe_default}") - -print() - -iseq0 = panel.get_property("panel-init-sequence") -if (hasattr(iseq0, 'value')) and (isinstance(iseq0.value, (int))): - iseq = b''.join(map(lambda w : w.to_bytes(4, "big"), list(iseq0))) -else: - iseq = bytearray(iseq0) - -while iseq: - cmd = iseq[0] - wait = iseq[1] - datalen = iseq[2] - iseq = iseq[3:] - - data = iseq[0:datalen] - iseq = iseq[datalen:] - - maybe_wait = f" wait={wait}" if (wait) else "" - print(f"I seq={data.hex()}{maybe_wait} # orig_cmd=0x{cmd:x}") diff --git a/packages/kernel/drivers/generic-dsi/sources/panel-generic-dsi.c b/packages/kernel/drivers/generic-dsi/sources/panel-generic-dsi.c index 774e17df0..7740d10bc 100644 --- a/packages/kernel/drivers/generic-dsi/sources/panel-generic-dsi.c +++ b/packages/kernel/drivers/generic-dsi/sources/panel-generic-dsi.c @@ -24,6 +24,8 @@ #include #include +#define DRIVER_NAME "panel-generic-dsi" + static char *descfile = ""; module_param(descfile,charp,0660); MODULE_PARM_DESC(descfile, "Panel description filename in firmware dir"); @@ -53,25 +55,26 @@ struct generic_panel_mode { struct generic_panel_init_seq { int dcs; int len; + int read; int wait; u8 *data; struct generic_panel_init_seq *link; }; struct generic_panel { - struct device *dev; - struct drm_panel panel; - struct gpio_desc *reset_gpio; - struct regulator *vdd; - struct regulator *iovcc; + struct device *dev; + struct drm_panel panel; + struct gpio_desc *reset_gpio; + struct regulator *vdd; + struct regulator *iovcc; struct generic_panel_delays delays; struct generic_panel_size size; struct generic_panel_mode *modes; struct generic_panel_init_seq *iseq; - enum drm_panel_orientation orientation; - bool prepared; + enum drm_panel_orientation orientation; + bool prepared; }; @@ -84,6 +87,7 @@ int load_init_seq(char *data, struct mipi_dsi_device *dsi, struct generic_panel int load_globals(char *data, struct mipi_dsi_device *dsi, struct generic_panel *ctx) { + struct device *dev = &dsi->dev; char *param, *val; while (*data) { data = next_arg(data, ¶m, &val); @@ -111,21 +115,21 @@ int load_globals(char *data, struct mipi_dsi_device *dsi, struct generic_panel * } else if (strcmp(val, "rgb565") == 0) { dsi->format = MIPI_DSI_FMT_RGB565; } else { - dev_info(NULL, "bad format %s\n", val); + dev_info(dev, "bad format %s\n", val); } } else if (strcmp(param, "lanes") == 0) { if (get_option(&val, &dsi->lanes) == 0) { - dev_info(NULL, "bad lanes %s\n", val); + dev_info(dev, "bad lanes %s\n", val); } } else if (strcmp(param, "flags") == 0) { int flags; if (get_option(&val, &flags) == 0) { - dev_info(NULL, "bad flags %s\n", val); + dev_info(dev, "bad flags %s\n", val); } else { dsi->mode_flags = flags; } } else { - dev_info(NULL, "unknown param %s\n", param); + dev_info(dev, "unknown param %s\n", param); return -1; } } @@ -134,11 +138,11 @@ int load_globals(char *data, struct mipi_dsi_device *dsi, struct generic_panel * int load_mode(char *data, struct mipi_dsi_device *dsi, struct generic_panel *ctx) { - struct device *dev = &dsi->dev; + struct device *dev = &dsi->dev; struct generic_panel_mode *mode; char *param, *val; - mode = devm_kzalloc(dev, sizeof(*mode), GFP_KERNEL); + mode = devm_kzalloc(dev, sizeof(*mode), GFP_KERNEL); while (*data) { data = next_arg(data, ¶m, &val); @@ -168,13 +172,14 @@ int load_mode(char *data, struct mipi_dsi_device *dsi, struct generic_panel *ctx } int load_init_seq(char *data, struct mipi_dsi_device *dsi, struct generic_panel *ctx) { - struct device *dev = &dsi->dev; + struct device *dev = &dsi->dev; struct generic_panel_init_seq *item; char *param, *val; - item = devm_kzalloc(dev, sizeof(*item), GFP_KERNEL); + item = devm_kzalloc(dev, sizeof(*item), GFP_KERNEL); item->dcs = -1; item->len = -1; + item->read = 0; item->wait = 0; while (*data) { @@ -200,6 +205,9 @@ int load_init_seq(char *data, struct mipi_dsi_device *dsi, struct generic_panel dev_info(dev, "bad seq %s\n", val); return -1; } + dev_dbg(dev, "loaded seq len=%d %s\n", item->len, val); + } else if (strcmp(param, "read") == 0) { + item->read = simple_strtoul(val, NULL, 16); } else if (strcmp(param, "wait") == 0) { item->wait = simple_strtoul(val, NULL, 16); } else { @@ -222,7 +230,7 @@ int load_init_seq(char *data, struct mipi_dsi_device *dsi, struct generic_panel int load_panel_description_line(char *data, struct mipi_dsi_device *dsi, struct generic_panel *ctx) { size_t pos; for (pos = 0; data[pos] != 0; pos ++) { - if (data[pos] == '#') { + if ((data[pos] == '#') || data[pos] == '\n') { data[pos] = 0; break; } @@ -246,8 +254,13 @@ int load_panel_description_line(char *data, struct mipi_dsi_device *dsi, struct return 0; } -int load_panel_description(struct mipi_dsi_device *dsi, struct generic_panel *ctx) { - struct device *dev = &dsi->dev; +int panel_description_foreach(struct mipi_dsi_device *dsi, struct generic_panel *ctx, + int (*handle_line)(char*, struct mipi_dsi_device*, struct generic_panel*)); + +int panel_description_foreach(struct mipi_dsi_device *dsi, struct generic_panel *ctx, + int (*handle_line)(char*, struct mipi_dsi_device*, struct generic_panel*)) +{ + struct device *dev = &dsi->dev; const struct firmware *fw; int ret; @@ -267,7 +280,7 @@ int load_panel_description(struct mipi_dsi_device *dsi, struct generic_panel *ct if (pos < size) pos++; data[pos - 1] = 0; - load_panel_description_line(data, dsi, ctx); + handle_line(data, dsi, ctx); data = &data[pos]; size = size - pos; @@ -277,7 +290,8 @@ int load_panel_description(struct mipi_dsi_device *dsi, struct generic_panel *ct release_firmware(fw); } else { //ret = of_drm_get_panel_orientation(dev->of_node, &ctx->orientation); - const char **lines = NULL; + const char *line; + char * buf; size_t linescnt, i; linescnt = of_property_count_strings(dev->of_node, "panel_description"); @@ -286,36 +300,31 @@ int load_panel_description(struct mipi_dsi_device *dsi, struct generic_panel *ct return -1; } - lines = devm_kcalloc(dev, linescnt + 1, sizeof(*lines), GFP_KERNEL); - if (!lines) { - dev_err(dev, "failed to allocate description lines\n"); - return -1; - } + for (i = 0; i < linescnt; i++) { + ret = of_property_read_string_index(dev->of_node, "panel_description", i, &line); + if (ret < 0) { + dev_err(dev, "failed to read panel_description[%ld] from device tree %d\n", i, ret); + return -1; + } + buf = kstrdup(line, GFP_KERNEL); + if (!buf) { + dev_err(dev, "kstrdup(of desc line) failed\n"); + return -1; + } - linescnt = of_property_read_string_array(dev->of_node, "panel_description", lines, linescnt); - if (linescnt < 0) { - dev_err(dev, "failed to read panel_description from device tree %ld\n", linescnt); - kfree(lines); - return -1; + dev_dbg(dev, "desc[%ld]: %s", i, line); + handle_line(buf, dsi, ctx); + kfree(buf); } + } + return 0; +} - size_t buflen = 0; - for (i = 0; i < linescnt; i++) { buflen = max(buflen, strlen(lines[i])+1); }; - char *buf = devm_kcalloc(dev, buflen, sizeof(char), GFP_KERNEL); - if (!buf) { - dev_err(dev, "failed to allocate line buffer\n"); - kfree(lines); - return -1; - } +int load_panel_description(struct mipi_dsi_device *dsi, struct generic_panel *ctx) { + int ret; - for (i = 0; i < linescnt; i++) { - dev_info(dev, "desc: %s", lines[i]); - strncpy(buf, lines[i], buflen); - load_panel_description_line(buf, dsi, ctx); - } - kfree(buf); - kfree(lines); - } + ret = panel_description_foreach(dsi, ctx, &load_panel_description_line); + if (ret < 0) { return ret; } // Reverse iseq struct generic_panel_init_seq *rev = ctx->iseq, *fwd = NULL, *tmp = NULL; @@ -334,20 +343,31 @@ int load_panel_description(struct mipi_dsi_device *dsi, struct generic_panel *ct static inline struct generic_panel *panel_to_generic_panel(struct drm_panel *panel) { - return container_of(panel, struct generic_panel, panel); + return container_of(panel, struct generic_panel, panel); } static int generic_panel_init_sequence(struct generic_panel *ctx) { - struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); - struct device *dev = ctx->dev; + struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); + struct device *dev = ctx->dev; int ret; struct generic_panel_init_seq *iseq = ctx->iseq; while (iseq) { - if (iseq->dcs == DCS_PSEUDO_CMD_SEQ) { + if (iseq->read > 0) { + u8 readbuf[8]; + if (iseq->read > 8) { iseq->read = 8; } + ret = mipi_dsi_generic_read(dsi, iseq->data, iseq->len, &readbuf[0], iseq->read); + if (ret < 0) { + dev_err(ctx->dev, "failed to read: %d\n", ret); + } else { + for (int i = 0; i < ret; i++) { + dev_info(ctx->dev, "read[%d]: %02x\n", i, readbuf[i]); + } + } + } else if (iseq->dcs == DCS_PSEUDO_CMD_SEQ) { ret = mipi_dsi_dcs_write_buffer(dsi, iseq->data, iseq->len); - dev_dbg(dev, "iseq %02x len=%d -> %d\n", iseq->dcs, iseq->len, ret); + dev_dbg(dev, "iseq 0x%px len=%d -> %d\n", (void*)iseq, iseq->len, ret); } else { ret = mipi_dsi_dcs_write(dsi, iseq->dcs, iseq->data, iseq->len); dev_dbg(dev, "iseq %02x len=%d -> %d\n", iseq->dcs, iseq->len, ret); @@ -358,103 +378,103 @@ static int generic_panel_init_sequence(struct generic_panel *ctx) iseq = iseq->link; } - dev_info(dev, "Panel init sequence done\n"); + dev_dbg(dev, "Panel init sequence done\n"); - return 0; + return 0; } static int generic_panel_unprepare(struct drm_panel *panel) { - struct generic_panel *ctx = panel_to_generic_panel(panel); - struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); - int ret; + struct generic_panel *ctx = panel_to_generic_panel(panel); + struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); + int ret; - if (!ctx->prepared) - return 0; + if (!ctx->prepared) + return 0; - ret = mipi_dsi_dcs_set_display_off(dsi); - if (ret < 0) - dev_err(ctx->dev, "failed to set display off: %d\n", ret); + ret = mipi_dsi_dcs_set_display_off(dsi); + if (ret < 0) + dev_err(ctx->dev, "failed to set display off: %d\n", ret); - ret = mipi_dsi_dcs_enter_sleep_mode(dsi); - if (ret < 0) { - dev_err(ctx->dev, "failed to enter sleep mode: %d\n", ret); - return ret; - } + ret = mipi_dsi_dcs_enter_sleep_mode(dsi); + if (ret < 0) { + dev_err(ctx->dev, "failed to enter sleep mode: %d\n", ret); + return ret; + } - gpiod_set_value_cansleep(ctx->reset_gpio, 1); + gpiod_set_value_cansleep(ctx->reset_gpio, 1); - regulator_disable(ctx->iovcc); - regulator_disable(ctx->vdd); + regulator_disable(ctx->iovcc); + regulator_disable(ctx->vdd); - gpiod_set_value_cansleep(ctx->reset_gpio, 1); + gpiod_set_value_cansleep(ctx->reset_gpio, 1); - ctx->prepared = false; + ctx->prepared = false; - return 0; + return 0; } static int generic_panel_prepare(struct drm_panel *panel) { - struct generic_panel *ctx = panel_to_generic_panel(panel); - struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); - int ret; + struct generic_panel *ctx = panel_to_generic_panel(panel); + struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); + int ret; - if (ctx->prepared) - return 0; + if (ctx->prepared) { + return 0; + } - dev_dbg(ctx->dev, "Resetting the panel\n"); - ret = regulator_enable(ctx->vdd); - if (ret < 0) { - dev_err(ctx->dev, "Failed to enable vdd supply: %d\n", ret); - return ret; - } + ret = regulator_enable(ctx->vdd); + if (ret < 0) { + dev_err(ctx->dev, "Failed to enable vdd supply: %d\n", ret); + return ret; + } - ret = regulator_enable(ctx->iovcc); - if (ret < 0) { - dev_err(ctx->dev, "Failed to enable iovcc supply: %d\n", ret); - goto disable_vdd; - } + ret = regulator_enable(ctx->iovcc); + if (ret < 0) { + dev_err(ctx->dev, "Failed to enable iovcc supply: %d\n", ret); + goto disable_vdd; + } - msleep(ctx->delays.prepare); + msleep(ctx->delays.prepare); - gpiod_set_value_cansleep(ctx->reset_gpio, 1); - msleep(ctx->delays.reset); - gpiod_set_value_cansleep(ctx->reset_gpio, 0); + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + msleep(ctx->delays.reset); + gpiod_set_value_cansleep(ctx->reset_gpio, 0); - msleep(ctx->delays.init); + msleep(ctx->delays.init); - ret = generic_panel_init_sequence(ctx); - if (ret < 0) { - dev_err(ctx->dev, "Panel init sequence failed: %d\n", ret); - goto disable_iovcc; - } + ret = generic_panel_init_sequence(ctx); + if (ret < 0) { + dev_err(ctx->dev, "Panel init sequence failed: %d\n", ret); + goto disable_iovcc; + } - ret = mipi_dsi_dcs_set_display_on(dsi); - if (ret < 0) { - dev_err(ctx->dev, "Failed to set display on: %d\n", ret); - goto disable_iovcc; - } + ret = mipi_dsi_dcs_set_display_on(dsi); + if (ret < 0) { + dev_err(ctx->dev, "Failed to set display on: %d\n", ret); + goto disable_iovcc; + } - ret = mipi_dsi_dcs_exit_sleep_mode(dsi); - if (ret < 0) { - dev_err(ctx->dev, "Failed to exit sleep mode: %d\n", ret); - goto disable_iovcc; - } + ret = mipi_dsi_dcs_exit_sleep_mode(dsi); + if (ret < 0) { + dev_err(ctx->dev, "Failed to exit sleep mode: %d\n", ret); + goto disable_iovcc; + } - msleep(ctx->delays.enable); + msleep(ctx->delays.enable); - //msleep(ctx->delays.ready); + //msleep(ctx->delays.ready); - ctx->prepared = true; + ctx->prepared = true; - return 0; + return 0; disable_iovcc: - regulator_disable(ctx->iovcc); + regulator_disable(ctx->iovcc); disable_vdd: - regulator_disable(ctx->vdd); - return ret; + regulator_disable(ctx->vdd); + return ret; } /* drm_display_mode template without clock as it is variable */ @@ -462,17 +482,17 @@ static const struct drm_display_mode mode_template = { }; static int generic_panel_get_modes(struct drm_panel *panel, - struct drm_connector *connector) + struct drm_connector *connector) { - struct generic_panel *ctx = panel_to_generic_panel(panel); - struct drm_display_mode mode_tmp; - struct drm_display_mode *mode; + struct generic_panel *ctx = panel_to_generic_panel(panel); + struct drm_display_mode mode_tmp; + struct drm_display_mode *mode; struct generic_panel_mode *genmode = ctx->modes; while (genmode) { dev_dbg(ctx->dev, "gen mode %d %dx%d\n", genmode->clock, genmode->horizontal[1], genmode->vertical[1]); - mode_tmp = mode_template; + mode_tmp = mode_template; mode_tmp.clock = genmode->clock; @@ -494,18 +514,18 @@ static int generic_panel_get_modes(struct drm_panel *panel, // TODO: pass drm flags in mode line if some future panel requires that mode_tmp.flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC; - mode = drm_mode_duplicate(connector->dev, &mode_tmp); - if (!mode) { - dev_err(ctx->dev, "Failed to add mode %u\n", - drm_mode_vrefresh(mode)); - return -ENOMEM; - } - drm_mode_set_name(mode); + mode = drm_mode_duplicate(connector->dev, &mode_tmp); + if (!mode) { + dev_err(ctx->dev, "Failed to add mode %u\n", + drm_mode_vrefresh(mode)); + return -ENOMEM; + } + drm_mode_set_name(mode); - mode->type = DRM_MODE_TYPE_DRIVER; + mode->type = DRM_MODE_TYPE_DRIVER; if (genmode->is_default) { mode->type |= DRM_MODE_TYPE_PREFERRED; }; - drm_mode_probed_add(connector, mode); + drm_mode_probed_add(connector, mode); genmode = genmode->prev; } @@ -514,149 +534,149 @@ static int generic_panel_get_modes(struct drm_panel *panel, connector->display_info.height_mm = ctx->size.height; - /* - * TODO: Remove once all drm drivers call - * drm_connector_set_orientation_from_panel() - */ - drm_connector_set_panel_orientation(connector, ctx->orientation); + /* + * TODO: Remove once all drm drivers call + * drm_connector_set_orientation_from_panel() + */ + drm_connector_set_panel_orientation(connector, ctx->orientation); - return 1; + return 1; } static enum drm_panel_orientation generic_panel_get_orientation(struct drm_panel *panel) { - struct generic_panel *ctx = panel_to_generic_panel(panel); + struct generic_panel *ctx = panel_to_generic_panel(panel); - return ctx->orientation; + return ctx->orientation; } static const struct drm_panel_funcs generic_panel_funcs = { - .unprepare = generic_panel_unprepare, - .prepare = generic_panel_prepare, - .get_modes = generic_panel_get_modes, - .get_orientation = generic_panel_get_orientation, + .unprepare = generic_panel_unprepare, + .prepare = generic_panel_prepare, + .get_modes = generic_panel_get_modes, + .get_orientation = generic_panel_get_orientation, }; static int generic_panel_probe(struct mipi_dsi_device *dsi) { - struct device *dev = &dsi->dev; - struct generic_panel *ctx; - int ret; - - ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); - if (!ctx) - return -ENOMEM; - - ctx->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); - if (IS_ERR(ctx->reset_gpio)) { - dev_err(dev, "cannot get reset gpio\n"); - return PTR_ERR(ctx->reset_gpio); - } - - ctx->vdd = devm_regulator_get(dev, "vdd"); - if (IS_ERR(ctx->vdd)) { - ret = PTR_ERR(ctx->vdd); - if (ret != -EPROBE_DEFER) - dev_err(dev, "Failed to request vdd regulator: %d\n", ret); - return ret; - } - - ctx->iovcc = devm_regulator_get(dev, "iovcc"); - if (IS_ERR(ctx->iovcc)) { - ret = PTR_ERR(ctx->iovcc); - if (ret != -EPROBE_DEFER) - dev_err(dev, "Failed to request iovcc regulator: %d\n", ret); - return ret; - } - - ret = of_drm_get_panel_orientation(dev->of_node, &ctx->orientation); - if (ret < 0) { - dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, ret); - return ret; - } - - mipi_dsi_set_drvdata(dsi, ctx); - - ctx->dev = dev; + struct device *dev = &dsi->dev; + struct generic_panel *ctx; + int ret; + + ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) + return -ENOMEM; + + ctx->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); + if (IS_ERR(ctx->reset_gpio)) { + dev_err(dev, "cannot get reset gpio\n"); + return PTR_ERR(ctx->reset_gpio); + } + + ctx->vdd = devm_regulator_get(dev, "vdd"); + if (IS_ERR(ctx->vdd)) { + ret = PTR_ERR(ctx->vdd); + if (ret != -EPROBE_DEFER) + dev_err(dev, "Failed to request vdd regulator: %d\n", ret); + return ret; + } + + ctx->iovcc = devm_regulator_get(dev, "iovcc"); + if (IS_ERR(ctx->iovcc)) { + ret = PTR_ERR(ctx->iovcc); + if (ret != -EPROBE_DEFER) + dev_err(dev, "Failed to request iovcc regulator: %d\n", ret); + return ret; + } + + ret = of_drm_get_panel_orientation(dev->of_node, &ctx->orientation); + if (ret < 0) { + dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, ret); + return ret; + } + + mipi_dsi_set_drvdata(dsi, ctx); + + ctx->dev = dev; // Some defaults - dsi->lanes = 1; - dsi->format = MIPI_DSI_FMT_RGB888; - dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | - MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET | - MIPI_DSI_CLOCK_NON_CONTINUOUS; + dsi->lanes = 1; + dsi->format = MIPI_DSI_FMT_RGB888; + dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | + MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET | + MIPI_DSI_CLOCK_NON_CONTINUOUS; ret = load_panel_description(dsi, ctx); if (ret < 0) { - dev_err(dev, "Failed to load panel description\n"); - return ret; + dev_err(dev, "Failed to load panel description\n"); + return ret; } - mipi_dsi_set_drvdata(dsi, ctx); + mipi_dsi_set_drvdata(dsi, ctx); dev_info(dev, "lanes %d, format %d, mode %lx\n", dsi->lanes, dsi->format, dsi->mode_flags); - drm_panel_init(&ctx->panel, &dsi->dev, &generic_panel_funcs, - DRM_MODE_CONNECTOR_DSI); + drm_panel_init(&ctx->panel, &dsi->dev, &generic_panel_funcs, + DRM_MODE_CONNECTOR_DSI); - ret = drm_panel_of_backlight(&ctx->panel); - if (ret) - return ret; + ret = drm_panel_of_backlight(&ctx->panel); + if (ret) + return ret; - drm_panel_add(&ctx->panel); + drm_panel_add(&ctx->panel); - ret = mipi_dsi_attach(dsi); - if (ret < 0) { - dev_err(dev, "mipi_dsi_attach failed: %d\n", ret); - drm_panel_remove(&ctx->panel); - return ret; - } + ret = mipi_dsi_attach(dsi); + if (ret < 0) { + dev_err(dev, "mipi_dsi_attach failed: %d\n", ret); + drm_panel_remove(&ctx->panel); + return ret; + } - return 0; + return 0; } static void generic_panel_shutdown(struct mipi_dsi_device *dsi) { - struct generic_panel *ctx = mipi_dsi_get_drvdata(dsi); - int ret; + struct generic_panel *ctx = mipi_dsi_get_drvdata(dsi); + int ret; - ret = drm_panel_unprepare(&ctx->panel); - if (ret < 0) - dev_err(&dsi->dev, "Failed to unprepare panel: %d\n", ret); + ret = drm_panel_unprepare(&ctx->panel); + if (ret < 0) + dev_err(&dsi->dev, "Failed to unprepare panel: %d\n", ret); - ret = drm_panel_disable(&ctx->panel); - if (ret < 0) - dev_err(&dsi->dev, "Failed to disable panel: %d\n", ret); + ret = drm_panel_disable(&ctx->panel); + if (ret < 0) + dev_err(&dsi->dev, "Failed to disable panel: %d\n", ret); } static void generic_panel_remove(struct mipi_dsi_device *dsi) { - struct generic_panel *ctx = mipi_dsi_get_drvdata(dsi); - int ret; + struct generic_panel *ctx = mipi_dsi_get_drvdata(dsi); + int ret; - generic_panel_shutdown(dsi); + generic_panel_shutdown(dsi); - ret = mipi_dsi_detach(dsi); - if (ret < 0) - dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); + ret = mipi_dsi_detach(dsi); + if (ret < 0) + dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); - drm_panel_remove(&ctx->panel); + drm_panel_remove(&ctx->panel); } static const struct of_device_id generic_panel_of_match[] = { - { .compatible = "rocknix,generic-dsi" }, - { /* sentinel */ } + { .compatible = "rocknix,generic-dsi" }, + { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, generic_panel_of_match); static struct mipi_dsi_driver generic_panel_driver = { - .driver = { - .name = "panel-generic-dsi", - .of_match_table = generic_panel_of_match, - }, - .probe = generic_panel_probe, - .remove = generic_panel_remove, - .shutdown = generic_panel_shutdown, + .driver = { + .name = DRIVER_NAME, + .of_match_table = generic_panel_of_match, + }, + .probe = generic_panel_probe, + .remove = generic_panel_remove, + .shutdown = generic_panel_shutdown, }; module_mipi_dsi_driver(generic_panel_driver); diff --git a/packages/kernel/drivers/mali-bifrost/patches/0001-include-vmalloc.patch b/packages/kernel/drivers/mali-bifrost/patches/0001-include-vmalloc.patch new file mode 100644 index 000000000..bf0bf749e --- /dev/null +++ b/packages/kernel/drivers/mali-bifrost/patches/0001-include-vmalloc.patch @@ -0,0 +1,10 @@ +--- mali-bifrost-r50p0-00eac0/product/kernel/drivers/gpu/arm/midgard/mali_kbase_mem.h.orig 2024-07-04 20:05:04.046675083 +0000 ++++ mali-bifrost-r50p0-00eac0/product/kernel/drivers/gpu/arm/midgard/mali_kbase_mem.h 2024-07-04 20:06:12.857657030 +0000 +@@ -43,6 +43,7 @@ + #include + #include + #include ++#include + + static inline void kbase_process_page_usage_inc(struct kbase_context *kctx, int pages); + diff --git a/packages/kernel/linux/package.mk b/packages/kernel/linux/package.mk index a7c0d9a01..2db33b01b 100644 --- a/packages/kernel/linux/package.mk +++ b/packages/kernel/linux/package.mk @@ -30,11 +30,12 @@ case ${DEVICE} in PKG_GIT_CLONE_BRANCH="rk-5.10-rkr6" ;; H700) - PKG_VERSION="6c522e1c85a07e2e0db113a979c0a404eb692de1" + PKG_VERSION="e3c121d666583f4cf32883b123ef84166b4998f6" PKG_URL="https://git.sr.ht/~tokyovigilante/linux/archive/${PKG_VERSION}.tar.gz" + PKG_PATCH_DIRS+=" mainline" ;; *) - PKG_VERSION="6.9.7" + PKG_VERSION="6.10.4" PKG_URL="https://www.kernel.org/pub/linux/kernel/v${PKG_VERSION/.*/}.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" PKG_PATCH_DIRS+=" mainline" ;; diff --git a/packages/kernel/linux/patches/AMD64/002-display-quirks.patch b/packages/kernel/linux/patches/AMD64/002-display-quirks.patch index 1cb6b6bb8..3490aaa40 100755 --- a/packages/kernel/linux/patches/AMD64/002-display-quirks.patch +++ b/packages/kernel/linux/patches/AMD64/002-display-quirks.patch @@ -1,6 +1,6 @@ -diff -rupN linux-6.8.6.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux-6.8.6/drivers/gpu/drm/drm_panel_orientation_quirks.c ---- linux-6.8.6.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-04-13 20:10:12.000000000 +0900 -+++ linux-6.8.6/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-04-18 03:04:59.815912789 +0900 +diff -rupN linux.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux/drivers/gpu/drm/drm_panel_orientation_quirks.c +--- linux.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-07-12 04:43:00.348961579 +0000 ++++ linux/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-07-12 04:51:29.466639476 +0000 @@ -147,6 +147,12 @@ static const struct drm_dmi_panel_orient .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, }; @@ -31,7 +31,7 @@ diff -rupN linux-6.8.6.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AYANEO"), DMI_MATCH(DMI_PRODUCT_NAME, "AIR"), -@@ -202,6 +208,30 @@ static const struct dmi_system_id orient +@@ -202,6 +208,36 @@ static const struct dmi_system_id orient DMI_MATCH(DMI_BOARD_NAME, "NEXT"), }, .driver_data = (void *)&lcd800x1280_rightside_up, @@ -47,6 +47,12 @@ diff -rupN linux-6.8.6.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux + DMI_MATCH(DMI_PRODUCT_NAME, "AYANEO 2"), + }, + .driver_data = (void *)&lcd1200x1920_rightside_up, ++ }, { /* AYANEO AYANEO FLIP DS */ ++ .matches = { ++ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AYANEO"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "FLIP DS"), ++ }, ++ .driver_data = (void *)&lcd1080x1920_leftside_up, + }, { /* AOKZOE A1 Pro */ + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AOKZOE"), @@ -62,7 +68,7 @@ diff -rupN linux-6.8.6.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux }, { /* Chuwi HiBook (CWI514) */ .matches = { DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"), -@@ -351,6 +381,7 @@ static const struct dmi_system_id orient +@@ -351,6 +387,7 @@ static const struct dmi_system_id orient }, { /* Lenovo Legion Go 8APU1 */ .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"), @@ -70,7 +76,7 @@ diff -rupN linux-6.8.6.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Legion Go 8APU1"), }, .driver_data = (void *)&lcd1600x2560_leftside_up, -@@ -408,6 +439,12 @@ static const struct dmi_system_id orient +@@ -408,6 +445,12 @@ static const struct dmi_system_id orient DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ONE XPLAYER"), }, .driver_data = (void *)&lcd1600x2560_leftside_up, diff --git a/packages/lang/gcc/package.mk b/packages/lang/gcc/package.mk index de9c60d9c..ffb8f8a32 100644 --- a/packages/lang/gcc/package.mk +++ b/packages/lang/gcc/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="gcc" -PKG_VERSION="12.3.0" +PKG_VERSION="14.1.0" PKG_LICENSE="GPL-2.0-or-later" PKG_SITE="https://gcc.gnu.org/" PKG_URL="https://ftp.gnu.org/gnu/gcc/${PKG_NAME}-${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.xz" diff --git a/packages/lang/gcc/patches/gcc-allow-newer-autoconf.patch b/packages/lang/gcc/patches/gcc-allow-newer-autoconf.patch deleted file mode 100644 index f0c991926..000000000 --- a/packages/lang/gcc/patches/gcc-allow-newer-autoconf.patch +++ /dev/null @@ -1,32 +0,0 @@ -From c611cd5416ff1042a4adec0e1b12c71e307b508d Mon Sep 17 00:00:00 2001 -From: Stefan Saraev -Date: Thu, 24 Apr 2014 22:33:27 +0300 -Subject: [PATCH] allow newer autoconf - ---- - config/override.m4 | 9 --------- - 1 files changed, 0 insertions(+), 9 deletions(-) - -diff --git a/config/override.m4 b/config/override.m4 -index 52bd1c3..6c39656 100644 ---- a/config/override.m4 -+++ b/config/override.m4 -@@ -38,15 +38,6 @@ dnl m4_define([_GCC_AUTOCONF_VERSION], [X.Y]) - dnl in configure.ac before AC_INIT, - dnl without rewriting this file. - dnl Or for updating the whole tree at once with the definition above. --AC_DEFUN([_GCC_AUTOCONF_VERSION_CHECK], --[m4_if(m4_defn([_GCC_AUTOCONF_VERSION]), -- m4_defn([m4_PACKAGE_VERSION]), [], -- [m4_fatal([Please use exactly Autoconf ]_GCC_AUTOCONF_VERSION[ instead of ]m4_defn([m4_PACKAGE_VERSION])[.])]) --]) --m4_define([AC_INIT], m4_defn([AC_INIT])[ --_GCC_AUTOCONF_VERSION_CHECK --]) -- - - dnl Ensure we do not use a buggy M4. - m4_if(m4_index([..wi.d.], [.d.]), [-1], --- -1.7.2.5 - diff --git a/packages/lang/gcc/patches/gcc-sync-to-12.3.1-01032024.patch b/packages/lang/gcc/patches/gcc-sync-to-12.3.1-01032024.patch deleted file mode 100644 index 91ff0a978..000000000 --- a/packages/lang/gcc/patches/gcc-sync-to-12.3.1-01032024.patch +++ /dev/null @@ -1,180005 +0,0 @@ -diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog -index d02624f669f..e7afc3fa00e 100644 ---- a/fixincludes/ChangeLog -+++ b/fixincludes/ChangeLog -@@ -1,3 +1,10 @@ -+2023-12-11 Rainer Orth -+ -+ * inclhack.def (darwin_flt_eval_method): Handle macOS 14 guard -+ variant. -+ * fixincl.x: Regenerate. -+ * tests/base/math.h [DARWIN_FLT_EVAL_METHOD_CHECK]: Update test. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x -index bad490453b7..b314506f00d 100644 ---- a/fixincludes/fixincl.x -+++ b/fixincludes/fixincl.x -@@ -2,11 +2,11 @@ - * - * DO NOT EDIT THIS FILE (fixincl.x) - * -- * It has been AutoGen-ed February 27, 2022 at 07:47:03 PM by AutoGen 5.18.16 -+ * It has been AutoGen-ed December 11, 2023 at 06:14:06 PM by AutoGen 5.18.16 - * From the definitions inclhack.def - * and the template file fixincl - */ --/* DO NOT SVN-MERGE THIS FILE, EITHER Sun Feb 27 19:47:03 UTC 2022 -+/* DO NOT SVN-MERGE THIS FILE, EITHER Mon Dec 11 18:14:06 CET 2023 - * - * You must regenerate it. Use the ./genfixes script. - * -@@ -3587,7 +3587,7 @@ tSCC* apzDarwin_Flt_Eval_MethodMachs[] = { - * content selection pattern - do fix if pattern found - */ - tSCC zDarwin_Flt_Eval_MethodSelect0[] = -- "^#if __FLT_EVAL_METHOD__ == 0$"; -+ "^#if __FLT_EVAL_METHOD__ == 0( \\|\\| __FLT_EVAL_METHOD__ == -1)?$"; - - #define DARWIN_FLT_EVAL_METHOD_TEST_CT 1 - static tTestDesc aDarwin_Flt_Eval_MethodTests[] = { -@@ -3598,7 +3598,7 @@ static tTestDesc aDarwin_Flt_Eval_MethodTests[] = { - */ - static const char* apzDarwin_Flt_Eval_MethodPatch[] = { - "format", -- "#if __FLT_EVAL_METHOD__ == 0 || __FLT_EVAL_METHOD__ == 16", -+ "%0 || __FLT_EVAL_METHOD__ == 16", - (char*)NULL }; - - /* * * * * * * * * * * * * * * * * * * * * * * * * * -diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def -index 7605ac89aa2..5cdd52a8de8 100644 ---- a/fixincludes/inclhack.def -+++ b/fixincludes/inclhack.def -@@ -1772,10 +1772,11 @@ fix = { - hackname = darwin_flt_eval_method; - mach = "*-*-darwin*"; - files = math.h; -- select = "^#if __FLT_EVAL_METHOD__ == 0$"; -+ select = "^#if __FLT_EVAL_METHOD__ == 0( \\|\\| __FLT_EVAL_METHOD__ == -1)?$"; - c_fix = format; -- c_fix_arg = "#if __FLT_EVAL_METHOD__ == 0 || __FLT_EVAL_METHOD__ == 16"; -- test_text = "#if __FLT_EVAL_METHOD__ == 0"; -+ c_fix_arg = "%0 || __FLT_EVAL_METHOD__ == 16"; -+ test_text = "#if __FLT_EVAL_METHOD__ == 0\n" -+ "#if __FLT_EVAL_METHOD__ == 0 || __FLT_EVAL_METHOD__ == -1"; - }; - - /* -diff --git a/fixincludes/tests/base/math.h b/fixincludes/tests/base/math.h -index 29b67579748..7b92f29a409 100644 ---- a/fixincludes/tests/base/math.h -+++ b/fixincludes/tests/base/math.h -@@ -32,6 +32,7 @@ - - #if defined( DARWIN_FLT_EVAL_METHOD_CHECK ) - #if __FLT_EVAL_METHOD__ == 0 || __FLT_EVAL_METHOD__ == 16 -+#if __FLT_EVAL_METHOD__ == 0 || __FLT_EVAL_METHOD__ == -1 || __FLT_EVAL_METHOD__ == 16 - #endif /* DARWIN_FLT_EVAL_METHOD_CHECK */ - - -diff --git a/gcc/BASE-VER b/gcc/BASE-VER -index 4d23cb8e0bd..9c028e25d40 100644 ---- a/gcc/BASE-VER -+++ b/gcc/BASE-VER -@@ -1 +1 @@ --12.3.0 -+12.3.1 -diff --git a/gcc/ChangeLog b/gcc/ChangeLog -index 07376405660..54316b78f1a 100644 ---- a/gcc/ChangeLog -+++ b/gcc/ChangeLog -@@ -1,3 +1,1696 @@ -+2023-12-19 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-19 Jakub Jelinek -+ -+ PR target/112816 -+ * config/i386/mmx.md (signbitv2sf2): Force operands[1] into a REG. -+ -+2023-12-18 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-18 Jakub Jelinek -+ -+ PR tree-optimization/113013 -+ * tree-object-size.cc (alloc_object_size): Return size_unknown if -+ corresponding argument(s) don't have integral type or have integral -+ type with higher precision than sizetype. Don't check arg1 >= 0 -+ uselessly. Compare argument indexes against gimple_call_num_args -+ in unsigned type rather than int. Formatting fixes. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-11-29 Jakub Jelinek -+ -+ PR middle-end/112733 -+ * fold-const.cc (multiple_of_p): Pass SIGNED rather than -+ UNSIGNED for wi::multiple_of_p on widest_int arguments. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-05 Jakub Jelinek -+ -+ PR target/112845 -+ * config/i386/i386.md (movabsq $(i32 << shift), r64 peephole2): FAIL -+ if the new immediate is ix86_endbr_immediate_operand. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-04 Jakub Jelinek -+ -+ PR target/112837 -+ * config/i386/i386.cc (ix86_elim_entry_set_got): Before checking -+ for UNSPEC_SET_GOT check that SET_SRC is UNSPEC. Use SET_SRC and -+ SET_DEST macros instead of XEXP, rename vec variable to set. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-04 Jakub Jelinek -+ -+ PR target/112816 -+ * config/i386/sse.md (signbit2): Force operands[1] into a REG. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-11-25 Jakub Jelinek -+ -+ PR target/111408 -+ * config/i386/i386.md (*jcc_bt_mask): Add (const_int 0) as -+ expected second operand of bt_comparison_operator. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-11-13 Jakub Jelinek -+ -+ PR tree-optimization/111967 -+ * gimple-range-cache.cc (block_range_cache::set_bb_range): Grow -+ m_ssa_ranges to num_ssa_names rather than num_ssa_names + 1. -+ (block_range_cache::dump): Iterate from 1 rather than 0. Don't use -+ ssa_name (x) unless m_ssa_ranges[x] is non-NULL. Iterate to -+ m_ssa_ranges.length () rather than num_ssa_names. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-11-09 Jakub Jelinek -+ -+ PR c/112339 -+ * attribs.cc (attribute_ignored_p): Only return true for -+ attr_namespace_ignored_p if as is NULL. -+ (decl_attributes): Never add ignored attributes. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-07-19 Jakub Jelinek -+ -+ PR tree-optimization/110731 -+ * wide-int.cc (wi::divmod_internal): Always unpack dividend and -+ divisor as UNSIGNED regardless of sgn. -+ -+2023-12-15 Richard Biener -+ -+ Backported from master: -+ 2023-08-24 Richard Biener -+ -+ PR debug/111080 -+ * dwarf2out.cc (prune_unused_types_walk): Handle -+ DW_TAG_restrict_type, DW_TAG_shared_type, DW_TAG_atomic_type, -+ DW_TAG_immutable_type, DW_TAG_coarray_type, DW_TAG_unspecified_type -+ and DW_TAG_dynamic_type as to only output them when referenced. -+ -+2023-12-15 Richard Biener -+ -+ Backported from master: -+ 2023-08-25 Richard Biener -+ -+ PR tree-optimization/111137 -+ * tree-vect-data-refs.cc (vect_slp_analyze_load_dependences): -+ Properly handle grouped stores from other SLP instances. -+ -+2023-12-15 Richard Biener -+ -+ Backported from master: -+ 2023-08-25 Richard Biener -+ -+ * tree-vect-data-refs.cc (vect_slp_analyze_store_dependences): -+ Split out from vect_slp_analyze_node_dependences, remove -+ dead code. -+ (vect_slp_analyze_load_dependences): Split out from -+ vect_slp_analyze_node_dependences, adjust comments. Process -+ queued stores before any disambiguation. -+ (vect_slp_analyze_node_dependences): Remove. -+ (vect_slp_analyze_instance_dependence): Adjust. -+ -+2023-12-12 liuhongt -+ -+ Backported from master: -+ 2023-12-12 liuhongt -+ -+ PR target/112891 -+ * config/i386/i386.cc (ix86_avx_u128_mode_after): Return -+ AVX_U128_ANY if callee_abi doesn't clobber all_sse_regs to -+ align with ix86_avx_u128_mode_needed. -+ (ix86_avx_u128_mode_needed): Return AVX_U128_ClEAN for -+ sibling_call. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-10-23 Richard Biener -+ -+ PR tree-optimization/111917 -+ * tree-ssa-loop-unswitch.cc (hoist_guard): Always insert -+ new conditional after last stmt. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-10-17 Richard Biener -+ -+ PR middle-end/111818 -+ * tree-ssa.cc (maybe_optimize_var): When clearing -+ DECL_NOT_GIMPLE_REG_P always rewrite into SSA. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-09-28 Richard Biener -+ -+ PR tree-optimization/111614 -+ * tree-ssa-reassoc.cc (undistribute_bitref_for_vector): Properly -+ convert the first vector when required. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-10-12 Richard Biener -+ -+ PR tree-optimization/111764 -+ * tree-vect-loop.cc (check_reduction_path): Remove the attempt -+ to allow x + x via special-casing of assigns. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-10-20 Richard Biener -+ -+ PR tree-optimization/111445 -+ * tree-scalar-evolution.cc (simple_iv_with_niters): -+ Add missing check for a sign-conversion. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-08-18 Richard Biener -+ -+ PR tree-optimization/111019 -+ * tree-ssa-loop-im.cc (gather_mem_refs_stmt): When canonicalizing -+ also scrap base and offset in case the ref is indirect. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-08-03 Richard Biener -+ -+ PR tree-optimization/110702 -+ * tree-ssa-loop-ivopts.cc (rewrite_use_address): When -+ we created a NULL pointer based access rewrite that to -+ a LEA. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-07-06 Richard Biener -+ -+ PR tree-optimization/110556 -+ * tree-ssa-tail-merge.cc (gimple_equal_p): Check -+ assign code and all operands of non-stores. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-07-06 Richard Biener -+ -+ PR tree-optimization/110515 -+ * tree-ssa-pre.cc (compute_avail): Make code dealing -+ with hoisting loads with different alias-sets more -+ robust. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-06-20 Richard Biener -+ -+ PR debug/110295 -+ * dwarf2out.cc (process_scope_var): Continue processing -+ the decl after setting a parent in case the existing DIE -+ was in limbo. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-05-31 Richard Biener -+ -+ PR ipa/109983 -+ PR tree-optimization/109143 -+ * tree-ssa-structalias.cc (struct topo_info): Remove. -+ (init_topo_info): Likewise. -+ (free_topo_info): Likewise. -+ (compute_topo_order): Simplify API, put the component -+ with ESCAPED last so it's processed first. -+ (topo_visit): Adjust. -+ (solve_graph): Likewise. -+ -+2023-11-24 Uros Bizjak -+ -+ Backported from master: -+ 2023-11-23 Uros Bizjak -+ -+ PR target/112672 -+ * config/i386/i386.md (parityhi2): -+ Use temporary register in the call to gen_parityhi2_cmp. -+ -+2023-11-22 Maciej W. Rozycki -+ -+ Backported from master: -+ 2023-11-22 Maciej W. Rozycki -+ -+ PR target/111815 -+ * config/vax/vax.cc (index_term_p): Only accept the index scaler -+ as the RHS operand to ASHIFT. -+ -+2023-11-20 Lulu Cheng -+ -+ Backported from master: -+ 2023-11-20 Lulu Cheng -+ -+ * config/loongarch/gnu-user.h (MUSL_ABI_SPEC): Modify suffix. -+ -+2023-11-20 Peng Fan -+ -+ Backported from master: -+ 2023-04-21 Peng Fan -+ -+ * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine. -+ -+2023-11-16 Xi Ruoyao -+ -+ Backported from master: -+ 2023-11-15 Xi Ruoyao -+ -+ * config/loongarch/loongarch.cc -+ (loongarch_memmodel_needs_release_fence): Remove. -+ (loongarch_cas_failure_memorder_needs_acquire): New static -+ function. -+ (loongarch_print_operand): Redefine 'G' for the barrier on CAS -+ failure. -+ * config/loongarch/sync.md (atomic_cas_value_strong): -+ Remove the redundant barrier before the LL instruction, and -+ emit an acquire barrier on failure if needed by -+ failure_memorder. -+ (atomic_cas_value_cmp_and_7_): Likewise. -+ (atomic_cas_value_add_7_): Remove the unnecessary barrier -+ before the LL instruction. -+ (atomic_cas_value_sub_7_): Likewise. -+ (atomic_cas_value_and_7_): Likewise. -+ (atomic_cas_value_xor_7_): Likewise. -+ (atomic_cas_value_or_7_): Likewise. -+ (atomic_cas_value_nand_7_): Likewise. -+ (atomic_cas_value_exchange_7_): Likewise. -+ -+2023-11-15 Kewen Lin -+ -+ Backported from master: -+ 2023-11-06 Kewen Lin -+ -+ PR target/111828 -+ * config.in: Regenerate. -+ * config/rs6000/rs6000.cc (rs6000_update_ipa_fn_target_info): Guard -+ inline asm handling under !HAVE_AS_POWER10_HTM. -+ * configure: Regenerate. -+ * configure.ac: Detect assembler support for HTM insns at power10. -+ -+2023-11-10 liuhongt -+ -+ Backported from master: -+ 2023-11-10 liuhongt -+ -+ PR target/112443 -+ * config/i386/sse.md (*avx2_pcmp3_4): Fix swap condition -+ from LT to GT since there's not in the pattern. -+ (*avx2_pcmp3_5): Ditto. -+ -+2023-11-06 John David Anglin -+ -+ * config/pa/pa.cc (pa_asm_trampoline_template): Fix typo. -+ -+2023-10-26 Lulu Cheng -+ -+ Backported from master: -+ 2023-10-23 Lulu Cheng -+ -+ * config/loongarch/loongarch.h (CLEAR_INSN_CACHE): New definition. -+ -+2023-10-26 chenxiaolong -+ -+ Backported from master: -+ 2023-10-25 chenxiaolong -+ -+ * config/loongarch/loongarch.md (get_thread_pointer):Adds the -+ instruction template corresponding to the __builtin_thread_pointer -+ function. -+ * doc/extend.texi:Add the __builtin_thread_pointer function support -+ description to the documentation. -+ -+2023-10-26 liuhongt -+ -+ Backported from master: -+ 2023-07-06 liuhongt -+ -+ PR target/110170 -+ * config/i386/i386.md (movdf_internal): Disparage slightly for -+ 2 alternatives (r,v) and (v,r) by adding constraint modifier -+ '?'. -+ -+2023-10-23 Oleg Endo -+ -+ PR target/111001 -+ * config/sh/sh_treg_combine.cc (sh_treg_combine::record_set_of_reg): -+ Skip over nop move insns. -+ -+2023-10-23 Kewen Lin -+ -+ Backported from master: -+ 2023-10-12 Kewen Lin -+ -+ PR target/111367 -+ * config/rs6000/rs6000.md (stack_protect_setsi): Support prefixed -+ instruction emission and incorporate to stack_protect_set. -+ (stack_protect_setdi): Rename to ... -+ (stack_protect_set): ... this, adjust constraint. -+ (stack_protect_testsi): Support prefixed instruction emission and -+ incorporate to stack_protect_test. -+ (stack_protect_testdi): Rename to ... -+ (stack_protect_test): ... this, adjust constraint. -+ -+2023-10-20 Oleg Endo -+ -+ PR target/101177 -+ * config/sh/sh.md (unnamed split pattern): Fix comparison of -+ find_regno_note result. -+ -+2023-10-19 Richard Sandiford -+ -+ Backported from master: -+ 2023-09-07 Richard Sandiford -+ -+ PR target/111528 -+ * lra-eliminations.cc (lra_eliminate_regs_1): Use simplify_gen_binary -+ rather than gen_rtx_PLUS. -+ -+2023-10-16 Kewen Lin -+ -+ Backported from master: -+ 2023-09-25 Kewen Lin -+ -+ PR target/111380 -+ * config/rs6000/rs6000.cc (rs6000_can_inline_p): Adopt -+ target_option_default_node when the callee has no option -+ attributes, also simplify the existing code accordingly. -+ -+2023-10-16 Kewen Lin -+ -+ Backported from master: -+ 2023-09-25 Kewen Lin -+ -+ PR target/111366 -+ * config/rs6000/rs6000.cc (rs6000_update_ipa_fn_target_info): Skip -+ empty inline asm. -+ -+2023-10-07 Andrew Pinski -+ -+ Backported from master: -+ 2023-10-06 Andrew Pinski -+ -+ PR middle-end/111699 -+ * match.pd ((c ? a : b) op d, (c ? a : b) op (c ? d : e), -+ (v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): Enable only for GIMPLE. -+ -+2023-10-02 Pat Haugen -+ -+ Backported from master: -+ 2023-09-19 Pat Haugen -+ -+ * config/rs6000/rs6000.cc (rs6000_rtx_costs): Check whether the -+ modulo instruction is disabled. -+ * config/rs6000/rs6000.h (RS6000_DISABLE_SCALAR_MODULO): New. -+ * config/rs6000/rs6000.md (mod3, *mod3): Check it. -+ (define_expand umod3): New. -+ (define_insn umod3): Rename to *umod3 and check if the modulo -+ instruction is disabled. -+ (umodti3, modti3): Check if the modulo instruction is disabled. -+ -+2023-09-29 Wilco Dijkstra -+ -+ Backported from master: -+ 2023-09-28 Wilco Dijkstra -+ -+ PR target/111121 -+ * config/aarch64/aarch64.md (aarch64_movmemdi): Add new expander. -+ (movmemdi): Call aarch64_expand_cpymem_mops for correct expansion. -+ * config/aarch64/aarch64.cc (aarch64_expand_cpymem_mops): Add support -+ for memmove. -+ * config/aarch64/aarch64-protos.h (aarch64_expand_cpymem_mops): Add new -+ function. -+ -+2023-09-26 Eric Botcazou -+ -+ * gimple-range-gori.cc (gori_compute::logical_combine): Add missing -+ return statement in the varying case. -+ -+2023-09-20 Richard Sandiford -+ -+ Backported from master: -+ 2023-09-15 Richard Sandiford -+ -+ PR target/111411 -+ * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp): Require -+ the lower memory access to a mem-pair operand. -+ -+2023-09-20 Richard Sandiford -+ -+ Backported from master: -+ 2023-08-31 Richard Sandiford -+ -+ * config/aarch64/aarch64.md (untyped_call): Emit a call_value -+ rather than a call. List each possible destination register -+ in the call pattern. -+ -+2023-09-12 Uros Bizjak -+ -+ PR target/111340 -+ * config/i386/i386.cc (output_pic_addr_const): Handle CONST_WIDE_INT. -+ Call output_addr_const for CASE_CONST_SCALAR_INT. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.cc (aarch64_save_regs_above_locals_p): -+ New function. -+ (aarch64_layout_frame): Use it to decide whether locals should -+ go above or below the saved registers. -+ (aarch64_expand_prologue): Update stack layout comment. -+ Emit a stack tie after the final adjustment. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.h (aarch64_frame::saved_regs_size) -+ (aarch64_frame::below_hard_fp_saved_regs_size): Delete. -+ * config/aarch64/aarch64.cc (aarch64_layout_frame): Update accordingly. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.h (aarch64_frame::sve_save_and_probe) -+ (aarch64_frame::hard_fp_save_and_probe): New fields. -+ * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize them. -+ Rather than asserting that a leaf function saves LR, instead assert -+ that a leaf function saves something. -+ (aarch64_get_separate_components): Prevent the chosen probe -+ registers from being individually shrink-wrapped. -+ (aarch64_allocate_and_probe_stack_space): Remove workaround for -+ probe registers that aren't at the bottom of the previous allocation. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.cc (aarch64_allocate_and_probe_stack_space): -+ Always probe the residual allocation at offset 1024, asserting -+ that that is in range. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.cc (aarch64_layout_frame): Ensure that -+ the LR save slot is in the first 16 bytes of the register save area. -+ Only form STP/LDP push/pop candidates if both registers are valid. -+ (aarch64_allocate_and_probe_stack_space): Remove workaround for -+ when LR was not in the first 16 bytes. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.cc (aarch64_allocate_and_probe_stack_space): -+ Don't probe final allocations that are exactly 1KiB in size (after -+ unprobed space above the final allocation has been deducted). -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.cc (aarch64_layout_frame): Tweak -+ calculation of initial_adjust for frames in which all saves -+ are SVE saves. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.cc (aarch64_layout_frame): Simplify -+ the allocation of the top of the frame. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.h (aarch64_frame): Add comment above -+ reg_offset. -+ * config/aarch64/aarch64.cc (aarch64_layout_frame): Walk offsets -+ from the bottom of the frame, rather than the bottom of the saved -+ register area. Measure reg_offset from the bottom of the frame -+ rather than the bottom of the saved register area. -+ (aarch64_save_callee_saves): Update accordingly. -+ (aarch64_restore_callee_saves): Likewise. -+ (aarch64_get_separate_components): Likewise. -+ (aarch64_process_components): Likewise. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.h (aarch64_frame::frame_size): Tweak comment. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.h (aarch64_frame::hard_fp_offset): Rename -+ to... -+ (aarch64_frame::bytes_above_hard_fp): ...this. -+ * config/aarch64/aarch64.cc (aarch64_layout_frame) -+ (aarch64_expand_prologue): Update accordingly. -+ (aarch64_initial_elimination_offset): Likewise. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.h (aarch64_frame::locals_offset): Rename to... -+ (aarch64_frame::bytes_above_locals): ...this. -+ * config/aarch64/aarch64.cc (aarch64_layout_frame) -+ (aarch64_initial_elimination_offset): Update accordingly. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.cc (aarch64_expand_prologue): Move the -+ calculation of chain_offset into the emit_frame_chain block. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.h (aarch64_frame::callee_offset): Delete. -+ * config/aarch64/aarch64.cc (aarch64_layout_frame): Remove -+ callee_offset handling. -+ (aarch64_save_callee_saves): Replace the start_offset parameter -+ with a bytes_below_sp parameter. -+ (aarch64_restore_callee_saves): Likewise. -+ (aarch64_expand_prologue): Update accordingly. -+ (aarch64_expand_epilogue): Likewise. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.h (aarch64_frame::bytes_below_hard_fp): New -+ field. -+ * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize it. -+ (aarch64_expand_epilogue): Use it instead of -+ below_hard_fp_saved_regs_size. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.h (aarch64_frame::bytes_below_saved_regs): New -+ field. -+ * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize it, -+ and use it instead of crtl->outgoing_args_size. -+ (aarch64_get_separate_components): Use bytes_below_saved_regs instead -+ of outgoing_args_size. -+ (aarch64_process_components): Likewise. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.cc (aarch64_layout_frame): Explicitly -+ allocate the frame in one go if there are no saved registers. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.cc (aarch64_expand_prologue): Use -+ chain_offset rather than callee_offset. -+ -+2023-09-12 Richard Sandiford -+ -+ * config/aarch64/aarch64.cc (aarch64_save_callee_saves): Use -+ a local shorthand for cfun->machine->frame. -+ (aarch64_restore_callee_saves, aarch64_get_separate_components): -+ (aarch64_process_components): Likewise. -+ (aarch64_allocate_and_probe_stack_space): Likewise. -+ (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise. -+ (aarch64_layout_frame): Use existing shorthand for one more case. -+ -+2023-09-12 Haochen Gui -+ -+ Backported from master: -+ 2023-08-31 Haochen Gui -+ -+ PR target/96762 -+ * config/rs6000/rs6000-string.cc (expand_block_move): Call vector -+ load/store with length only on 64-bit Power10. -+ -+2023-09-11 liuhongt -+ -+ Backported from master: -+ 2023-09-11 liuhongt -+ -+ PR target/111306 -+ PR target/111335 -+ * config/i386/sse.md (int_comm): New int_attr. -+ (fma__): -+ Remove % for Complex conjugate operations since they're not -+ commutative. -+ (fma___pair): Ditto. -+ (___mask): Ditto. -+ (cmul3): Ditto. -+ -+2023-09-01 Tobias Burnus -+ -+ Backported from master: -+ 2023-08-19 Tobias Burnus -+ -+ PR middle-end/111017 -+ * omp-expand.cc (expand_omp_for_init_vars): Pass after=true -+ to expand_omp_build_cond for 'factor != 0' condition, resulting -+ in pre-r12-5295-g47de0b56ee455e code for the gimple insert. -+ -+2023-09-01 Lulu Cheng -+ -+ Backported from master: -+ 2023-09-01 Lulu Cheng -+ Guo Jie -+ -+ PR target/110484 -+ * config/loongarch/loongarch.cc (loongarch_emit_stack_tie): Use the -+ frame_pointer_needed to determine whether to use the $fp register. -+ -+2023-08-30 Jakub Jelinek -+ -+ Backported from master: -+ 2023-08-30 Jakub Jelinek -+ -+ PR tree-optimization/110914 -+ * tree-ssa-strlen.cc (strlen_pass::handle_builtin_memcpy): Don't call -+ adjust_last_stmt unless len is known constant. -+ -+2023-08-30 Jakub Jelinek -+ -+ Backported from master: -+ 2023-08-30 Jakub Jelinek -+ -+ PR tree-optimization/111015 -+ * gimple-ssa-store-merging.cc -+ (imm_store_chain_info::output_merged_store): Use wi::mask and -+ wide_int_to_tree instead of unsigned HOST_WIDE_INT shift and -+ build_int_cst to build BIT_AND_EXPR mask. -+ -+2023-08-19 Guo Jie -+ -+ Backported from master: -+ 2023-08-19 Guo Jie -+ Lulu Cheng -+ -+ * config/loongarch/t-loongarch: Add loongarch-driver.h into -+ TM_H. Add loongarch-def.h and loongarch-tune.h into -+ OPTIONS_H_EXTRA. -+ -+2023-08-16 liuhongt -+ -+ Backported from master: -+ 2023-08-16 liuhongt -+ -+ * config/i386/i386-builtins.cc -+ (ix86_vectorize_builtin_gather): Adjust for use_gather_8parts. -+ * config/i386/i386-options.cc (parse_mtune_ctrl_str): -+ Set/Clear tune features use_{gather,scatter}_{2parts, 4parts, -+ 8parts} for -mtune-crtl={,^}{use_gather,use_scatter}. -+ * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Adjust -+ for use_scatter_8parts -+ * config/i386/i386.h (TARGET_USE_GATHER): Rename to .. -+ (TARGET_USE_GATHER_8PARTS): .. this. -+ (TARGET_USE_SCATTER): Rename to .. -+ (TARGET_USE_SCATTER_8PARTS): .. this. -+ * config/i386/x86-tune.def (X86_TUNE_USE_GATHER): Rename to -+ (X86_TUNE_USE_GATHER_8PARTS): .. this. -+ (X86_TUNE_USE_SCATTER): Rename to -+ (X86_TUNE_USE_SCATTER_8PARTS): .. this. -+ * config/i386/i386.opt: Add new options mgather, mscatter. -+ -+2023-08-16 liuhongt -+ -+ Backported from master: -+ 2023-08-16 liuhongt -+ -+ * config/i386/i386-options.cc (m_GDS): New macro. -+ * config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Don't -+ enable for m_GDS. -+ (X86_TUNE_USE_GATHER_4PARTS): Ditto. -+ (X86_TUNE_USE_GATHER): Ditto. -+ -+2023-08-09 liuhongt -+ -+ * common/config/i386/cpuinfo.h (get_available_features): Check -+ max_subleaf_level for valid subleaf before use CPUID. -+ -+2023-08-01 Kewen Lin -+ -+ Backported from master: -+ 2023-07-26 Kewen Lin -+ -+ PR target/110741 -+ * config/rs6000/vsx.md (define_insn xxeval): Correct vsx -+ operands output with "x". -+ -+2023-07-14 Uros Bizjak -+ -+ Backported from master: -+ 2023-07-14 Uros Bizjak -+ -+ PR target/110206 -+ * fwprop.cc (contains_paradoxical_subreg_p): Move to ... -+ * rtlanal.cc (contains_paradoxical_subreg_p): ... here. -+ * rtlanal.h (contains_paradoxical_subreg_p): Add prototype. -+ * cprop.cc (try_replace_reg): Do not set REG_EQUAL note -+ when the original source contains a paradoxical subreg. -+ -+2023-07-14 Oleg Endo -+ -+ PR target/101469 -+ * config/sh/sh.md (peephole2): Handle case where eliminated reg -+ is also used by the address of the following memory operand. -+ -+2023-07-13 Uros Bizjak -+ -+ Backported from master: -+ 2023-07-13 Uros Bizjak -+ -+ PR target/106966 -+ * config/alpha/alpha.cc (alpha_emit_set_long_const): -+ Always use DImode when constructing long const. -+ -+2023-07-08 Jonathan Wakely -+ -+ Backported from master: -+ 2023-07-08 Jonathan Wakely -+ -+ PR c++/110595 -+ * doc/invoke.texi (Warning Options): Fix typo. -+ -+2023-07-05 Michael Meissner -+ -+ Backported from master: -+ 2023-06-23 Michael Meissner -+ Aaron Sawdey -+ -+ PR target/105325 -+ * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that -+ allowed prefixed lwa to be generated. -+ * config/rs6000/fusion.md: Regenerate. -+ * config/rs6000/predicates.md (ds_form_mem_operand): Delete. -+ * config/rs6000/rs6000.md (prefixed attribute): Add support for load -+ plus compare immediate fused insns. -+ (maybe_prefixed): Likewise. -+ -+2023-07-05 Segher Boessenkool -+ -+ Backported from master: -+ 2023-06-06 Segher Boessenkool -+ -+ * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and -+ split out from... -+ (gen_ld_cmpi_p10): ... this. -+ -+2023-07-04 Cui, Lili -+ -+ * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8 -+ from Rocketlake, remove model value 0xbf from Alderlake. -+ -+2023-06-30 Eric Botcazou -+ -+ * gimple-fold.cc (fold_array_ctor_reference): Fix head comment. -+ (fold_nonarray_ctor_reference): Likewise. Specifically deal -+ with integral bit-fields. -+ (fold_ctor_reference): Make sure that the constructor uses the -+ native storage order. -+ -+2023-06-29 liuhongt -+ -+ PR rtl-optimization/110237 -+ * config/i386/sse.md (_store_mask): Refine with -+ UNSPEC_MASKMOV. -+ (maskstore_store_mask): New define_insn, it's renamed -+ from original _store_mask. -+ -+2023-06-29 liuhongt -+ -+ PR target/110309 -+ * config/i386/sse.md (maskload): -+ Refine pattern with UNSPEC_MASKLOAD. -+ (maskload): Ditto. -+ (*_load_mask): Extend mode iterator to -+ VI12HF_AVX512VL. -+ (*_load): Ditto. -+ -+2023-06-29 Hongyu Wang -+ -+ Backported from master: -+ 2023-06-26 Hongyu Wang -+ -+ * config/i386/i386-options.cc (ix86_valid_target_attribute_tree): -+ Override tune_string with arch_string if tune_string is not -+ explicitly specified. -+ -+2023-06-28 Thomas Schwinge -+ -+ Backported from master: -+ 2023-06-02 Thomas Schwinge -+ -+ PR testsuite/66005 -+ * doc/install.texi: Document (optional) Perl usage for parallel -+ testing of libgomp. -+ -+2023-06-28 liuhongt -+ -+ * config/i386/i386-features.cc (pass_insert_vzeroupper:gate): -+ Move flag_expensive_optimizations && !optimize_size to .. -+ * config/i386/i386-options.cc (ix86_option_override_internal): -+ .. this, it makes -mvzeroupper independent of optimization -+ level, but still keeps the behavior of architecture -+ tuning(emit_vzeroupper) unchanged. -+ -+2023-06-27 Andrew Pinski -+ -+ Backported from master: -+ 2023-06-27 Andrew Pinski -+ -+ PR middle-end/110420 -+ PR middle-end/103979 -+ PR middle-end/98619 -+ * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile. -+ -+2023-06-23 Richard Biener -+ -+ Backported from master: -+ 2023-06-19 Richard Biener -+ -+ PR tree-optimization/110298 -+ * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely): -+ Clear number of iterations info before cleaning up the CFG. -+ -+2023-06-23 Richard Biener -+ -+ Backported from master: -+ 2023-06-09 Richard Biener -+ -+ PR middle-end/110182 -+ * match.pd (two conversions in a row): Use element_precision -+ to DTRT for VECTOR_TYPE. -+ -+2023-06-22 Alex Coplan -+ -+ Backported from master: -+ 2023-06-07 Alex Coplan -+ -+ PR target/110132 -+ * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin): -+ New. Use it ... -+ (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE -+ names for builtins. -+ (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h -+ setup if in_lto_p, just like we do for SVE. -+ * config/aarch64/arm_acle.h: (__arm_ld64b): Delete. -+ (__arm_st64b): Delete. -+ (__arm_st64bv): Delete. -+ (__arm_st64bv0): Delete. -+ -+2023-06-22 Alex Coplan -+ -+ Backported from master: -+ 2023-06-07 Alex Coplan -+ -+ PR target/110100 -+ * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64): -+ Use input operand for the destination address. -+ * config/aarch64/aarch64.md (st64b): Fix constraint on address -+ operand. -+ -+2023-06-22 Alex Coplan -+ -+ Backported from master: -+ 2023-06-07 Alex Coplan -+ -+ PR target/110100 -+ * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types): -+ Replace eight consecutive spaces with tabs. -+ (aarch64_init_ls64_builtins): Likewise. -+ (aarch64_expand_builtin_ls64): Likewise. -+ * config/aarch64/aarch64.md (ld64b): Likewise. -+ (st64b): Likewise. -+ (st64bv): Likewise -+ (st64bv0): Likewise. -+ -+2023-06-20 Kewen Lin -+ -+ Backported from master: -+ 2023-06-12 Kewen Lin -+ -+ PR target/109932 -+ * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128, -+ __builtin_unpack_vector_int128): Move from stanza power7 to vsx. -+ -+2023-06-20 Kewen Lin -+ -+ Backported from master: -+ 2023-06-12 Kewen Lin -+ -+ PR target/110011 -+ * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit -+ floating constant itself for real_to_target call. -+ -+2023-06-15 Lulu Cheng -+ -+ Backported from master: -+ 2023-06-15 Lulu Cheng -+ Andrew Pinski -+ -+ PR target/110136 -+ * config/loongarch/loongarch.md: Modify the register constraints for template -+ "jumptable" and "indirect_jump" from "r" to "e". -+ -+2023-06-12 Richard Biener -+ -+ Backported from master: -+ 2023-06-12 Richard Biener -+ -+ PR middle-end/110200 -+ * genmatch.cc (expr::gen_transform): Put braces around -+ the if arm for the (convert ...) short-cut. -+ -+2023-06-10 Georg-Johann Lay -+ -+ PR target/109650 -+ PR target/92729 -+ Backport from 2023-05-10 master r14-1688. -+ * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass. -+ * config/avr/avr.cc (avr_pass_ifelse): New RTL pass. -+ (avr_pass_data_ifelse): New pass_data for it. -+ (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost) -+ (avr_canonicalize_comparison, avr_out_plus_set_ZN) -+ (avr_out_cmp_ext): New functions. -+ (compare_condtition): Make sure REG_CC dies in the branch insn. -+ (avr_rtx_costs_1): Add computation of cbranch costs. -+ (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]: -+ [ADJUST_LEN_CMP_SEXT]Handle them. -+ (TARGET_CANONICALIZE_COMPARISON): New define. -+ (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern) -+ (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions. -+ (TARGET_MACHINE_DEPENDENT_REORG): Remove define. -+ * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto. -+ (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx) -+ (avr_out_cmp_zext): New Protos -+ * config/avr/avr.md (branch, difficult_branch): Don't split insns. -+ (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1") -+ (*swapped_tst, *add.for.eqne.): New insns. -+ (*cbranch4): Rename to cbranch4_insn. -+ (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed. -+ (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed. -+ Add new RTL peepholes for decrement-and-branch and *swapped_tst. -+ Rework signtest-and-branch peepholes for *sbrx_branch. -+ (adjust_len) [add_set_ZN, cmp_zext]: New. -+ (QIPSI): New mode iterator. -+ (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators. -+ (gelt): New code iterator. -+ (gelt_eqne): New code attribute. -+ (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch) -+ (branch_unspec, *negated_tst, *reversed_tst) -+ (*cmpqi_sign_extend): Remove insns. -+ (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove. -+ * config/avr/avr-dimode.md (cbranch4): Canonicalize comparisons. -+ * config/avr/predicates.md (scratch_or_d_register_operand): New. -+ * config/avr/constraints.md (Yxx): New constraint. -+ -+2023-06-09 Jeevitha Palanisamy -+ -+ Backported from master: -+ 2023-06-06 Jeevitha Palanisamy -+ -+ PR target/106907 -+ * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove -+ duplicate expression. -+ -+2023-06-09 Iain Sandoe -+ -+ Backported from master: -+ 2023-06-02 Iain Sandoe -+ -+ PR target/110044 -+ * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align): -+ Make sure that we do not have a cap on field alignment before altering -+ the struct layout based on the type alignment of the first entry. -+ -+2023-06-09 liuhongt -+ -+ PR target/110108 -+ * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly -+ view_convert_expr mask to signed type when folding pblendvb -+ builtins. -+ -+2023-06-08 Alex Coplan -+ -+ Backported from master: -+ 2023-05-25 Alex Coplan -+ -+ PR target/109800 -+ * config/arm/arm.md (movdf): Generate temporary pseudo in DImode -+ instead of DFmode. -+ * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an -+ lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into -+ DFmode as an rvalue. -+ -+2023-06-08 Kyrylo Tkachov -+ -+ Backported from master: -+ 2023-05-24 Kyrylo Tkachov -+ -+ PR target/109939 -+ * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use -+ qualifier_none for the return operand. -+ -+2023-06-02 Georg-Johann Lay -+ -+ PR target/110088 -+ * config/avr/avr.md: Add an RTL peephole to optimize operations on -+ non-LD_REGS after a move from LD_REGS. -+ (piaop): New code iterator. -+ -+2023-06-01 Jonathan Wakely -+ -+ Backported from master: -+ 2023-06-01 Jonathan Wakely -+ -+ PR target/109954 -+ * doc/invoke.texi (x86 Options): Fix description of -m32 option. -+ -+2023-05-30 Andreas Schwab -+ -+ PR target/110036 -+ * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to -+ match libsanitizer. -+ -+2023-05-25 Georg-Johann Lay -+ -+ PR target/104327 -+ * config/avr/avr.cc (avr_can_inline_p): New static function. -+ (TARGET_CAN_INLINE_P): Define to that function. -+ -+2023-05-25 Georg-Johann Lay -+ -+ PR target/82931 -+ * config/avr/avr.md (*movbitqi.0): Rename to *movbit.0-6. -+ Handle any bit position and use mode QISI. -+ * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost -+ of 2 insns for bit-transfer of respective style. -+ -+2023-05-23 Georg-Johann Lay -+ -+ * config/avr/avr.cc (avr_insn_cost): New static function. -+ (TARGET_INSN_COST): Define to that function. -+ -+2023-05-22 Michael Meissner -+ -+ PR target/70243 -+ * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp. -+ (vsx_nfmsv4sf4): Do not generate vnmsubfp. Back port from master -+ 04/10/2023 change. -+ -+2023-05-22 Jakub Jelinek -+ -+ Backported from master: -+ 2023-05-21 Jakub Jelinek -+ -+ PR tree-optimization/109505 -+ * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2), -+ Combine successive equal operations with constants, -+ (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A, -+ CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P -+ operands. -+ -+2023-05-22 Kewen Lin -+ -+ Backported from master: -+ 2023-05-17 Kewen Lin -+ -+ * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with -+ suggested unroll factor once the previous analysis fails. -+ -+2023-05-20 Triffid Hunter -+ -+ PR target/105753 -+ Backport from 2023-05-20 https://gcc.gnu.org/r14-1016 -+ * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi): -+ Remove superfluous "parallel" in insn pattern. -+ ([u]divmod4): Tidy code. Use gcc_unreachable() instead of -+ printing error text to assembly. -+ -+2023-05-18 Alexandre Oliva -+ -+ * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab -+ after vmsr and vmrs, and lower the case of P0. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types. -+ (__ARM_mve_coerce1): Remove. -+ (__ARM_mve_coerce2): Remove. -+ (__ARM_mve_coerce3): Remove. -+ (__ARM_mve_coerce_i_scalar): New. -+ (__ARM_mve_coerce_s8_ptr): New. -+ (__ARM_mve_coerce_u8_ptr): New. -+ (__ARM_mve_coerce_s16_ptr): New. -+ (__ARM_mve_coerce_u16_ptr): New. -+ (__ARM_mve_coerce_s32_ptr): New. -+ (__ARM_mve_coerce_u32_ptr): New. -+ (__ARM_mve_coerce_s64_ptr): New. -+ (__ARM_mve_coerce_u64_ptr): New. -+ (__ARM_mve_coerce_f_scalar): New. -+ (__ARM_mve_coerce_f16_ptr): New. -+ (__ARM_mve_coerce_f32_ptr): New. -+ (__arm_vst4q): Change _coerce_ overloads. -+ (__arm_vbicq): Change _coerce_ overloads. -+ (__arm_vmulq): Change _coerce_ overloads. -+ (__arm_vcmpeqq): Change _coerce_ overloads. -+ (__arm_vcmpneq): Change _coerce_ overloads. -+ (__arm_vmaxnmavq): Change _coerce_ overloads. -+ (__arm_vmaxnmvq): Change _coerce_ overloads. -+ (__arm_vminnmavq): Change _coerce_ overloads. -+ (__arm_vsubq): Change _coerce_ overloads. -+ (__arm_vminnmvq): Change _coerce_ overloads. -+ (__arm_vrshlq): Change _coerce_ overloads. -+ (__arm_vqsubq): Change _coerce_ overloads. -+ (__arm_vqdmulltq): Change _coerce_ overloads. -+ (__arm_vqdmullbq): Change _coerce_ overloads. -+ (__arm_vqdmulhq): Change _coerce_ overloads. -+ (__arm_vqaddq): Change _coerce_ overloads. -+ (__arm_vhaddq): Change _coerce_ overloads. -+ (__arm_vhsubq): Change _coerce_ overloads. -+ (__arm_vqdmlashq): Change _coerce_ overloads. -+ (__arm_vqrdmlahq): Change _coerce_ overloads. -+ (__arm_vmlasq): Change _coerce_ overloads. -+ (__arm_vqdmlahq): Change _coerce_ overloads. -+ (__arm_vmaxnmavq_p): Change _coerce_ overloads. -+ (__arm_vmaxnmvq_p): Change _coerce_ overloads. -+ (__arm_vminnmavq_p): Change _coerce_ overloads. -+ (__arm_vminnmvq_p): Change _coerce_ overloads. -+ (__arm_vfmasq_m): Change _coerce_ overloads. -+ (__arm_vld1q): Change _coerce_ overloads. -+ (__arm_vld1q_z): Change _coerce_ overloads. -+ (__arm_vld2q): Change _coerce_ overloads. -+ (__arm_vld4q): Change _coerce_ overloads. -+ (__arm_vldrhq_gather_offset): Change _coerce_ overloads. -+ (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads. -+ (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads. -+ (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads. -+ (__arm_vldrwq_gather_offset): Change _coerce_ overloads. -+ (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads. -+ (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads. -+ (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads. -+ (__arm_vst1q_p): Change _coerce_ overloads. -+ (__arm_vst2q): Change _coerce_ overloads. -+ (__arm_vst1q): Change _coerce_ overloads. -+ (__arm_vstrhq): Change _coerce_ overloads. -+ (__arm_vstrhq_p): Change _coerce_ overloads. -+ (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads. -+ (__arm_vstrhq_scatter_offset): Change _coerce_ overloads. -+ (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads. -+ (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads. -+ (__arm_vstrwq_p): Change _coerce_ overloads. -+ (__arm_vstrwq): Change _coerce_ overloads. -+ (__arm_vstrwq_scatter_offset): Change _coerce_ overloads. -+ (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads. -+ (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads. -+ (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads. -+ (__arm_vsetq_lane): Change _coerce_ overloads. -+ (__arm_vcmpneq_m): Change _coerce_ overloads. -+ (__arm_vldrbq_gather_offset): Change _coerce_ overloads. -+ (__arm_vdwdupq_x_u8): Change _coerce_ overloads. -+ (__arm_vdwdupq_x_u16): Change _coerce_ overloads. -+ (__arm_vdwdupq_x_u32): Change _coerce_ overloads. -+ (__arm_viwdupq_x_u8): Change _coerce_ overloads. -+ (__arm_viwdupq_x_u16): Change _coerce_ overloads. -+ (__arm_viwdupq_x_u32): Change _coerce_ overloads. -+ (__arm_vidupq_x_u8): Change _coerce_ overloads. -+ (__arm_vddupq_x_u8): Change _coerce_ overloads. -+ (__arm_vidupq_x_u16): Change _coerce_ overloads. -+ (__arm_vddupq_x_u16): Change _coerce_ overloads. -+ (__arm_vidupq_x_u32): Change _coerce_ overloads. -+ (__arm_vddupq_x_u32): Change _coerce_ overloads. -+ (__arm_vhaddq_x): Change _coerce_ overloads. -+ (__arm_vhsubq_x): Change _coerce_ overloads. -+ (__arm_vldrdq_gather_offset): Change _coerce_ overloads. -+ (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads. -+ (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads. -+ (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads. -+ (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads. -+ (__arm_vqrdmlahq_m): Change _coerce_ overloads. -+ (__arm_vqrdmlashq_m): Change _coerce_ overloads. -+ (__arm_vqdmlashq_m): Change _coerce_ overloads. -+ (__arm_vmlaldavaxq_p): Change _coerce_ overloads. -+ (__arm_vmlasq_m): Change _coerce_ overloads. -+ (__arm_vqdmulhq_m): Change _coerce_ overloads. -+ (__arm_vqdmulltq_m): Change _coerce_ overloads. -+ (__arm_vidupq_u16): Change _coerce_ overloads. -+ (__arm_vidupq_u32): Change _coerce_ overloads. -+ (__arm_vidupq_u8): Change _coerce_ overloads. -+ (__arm_vddupq_u16): Change _coerce_ overloads. -+ (__arm_vddupq_u32): Change _coerce_ overloads. -+ (__arm_vddupq_u8): Change _coerce_ overloads. -+ (__arm_viwdupq_m): Change _coerce_ overloads. -+ (__arm_viwdupq_u16): Change _coerce_ overloads. -+ (__arm_viwdupq_u32): Change _coerce_ overloads. -+ (__arm_viwdupq_u8): Change _coerce_ overloads. -+ (__arm_vdwdupq_m): Change _coerce_ overloads. -+ (__arm_vdwdupq_u16): Change _coerce_ overloads. -+ (__arm_vdwdupq_u32): Change _coerce_ overloads. -+ (__arm_vdwdupq_u8): Change _coerce_ overloads. -+ (__arm_vaddlvaq): Change _coerce_ overloads. -+ (__arm_vaddlvaq_p): Change _coerce_ overloads. -+ (__arm_vaddvaq): Change _coerce_ overloads. -+ (__arm_vaddvaq_p): Change _coerce_ overloads. -+ (__arm_vcmphiq_m): Change _coerce_ overloads. -+ (__arm_vmladavaq_p): Change _coerce_ overloads. -+ (__arm_vmladavaxq): Change _coerce_ overloads. -+ (__arm_vmlaldavaxq): Change _coerce_ overloads. -+ (__arm_vstrbq): Change _coerce_ overloads. -+ (__arm_vstrbq_p): Change _coerce_ overloads. -+ (__arm_vrmlaldavhaq_p): Change _coerce_ overloads. -+ (__arm_vstrbq_scatter_offset): Change _coerce_ overloads. -+ (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads. -+ (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads. -+ (__arm_vstrdq_scatter_offset): Change _coerce_ overloads. -+ (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads. -+ (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ * config/arm/arm_mve.h (__arm_vbicq): Change coerce on -+ scalar constant. -+ (__arm_vmvnq_m): Likewise. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ * config/arm/arm_mve.h (__arm_vorrq): Add _n variant. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ Backported from master: -+ 2023-05-18 Stam Markianos-Wright -+ -+ * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic. -+ (__arm_vadcq_u32): Likewise. -+ (__arm_vadcq_m_s32): Likewise. -+ (__arm_vadcq_m_u32): Likewise. -+ (__arm_vsbcq_s32): Likewise. -+ (__arm_vsbcq_u32): Likewise. -+ (__arm_vsbcq_m_s32): Likewise. -+ (__arm_vsbcq_m_u32): Likewise. -+ * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile. -+ -+2023-05-18 Andrea Corallo -+ -+ * config/arm/mve.md (mve_vrndq_m_f, mve_vrev64q_f) -+ (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf) -+ (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_) -+ (mve_vrev64q_, mve_vcvtq_from_f_) -+ (mve_vmovltq_, mve_vmovlbq_) -+ (mve_vcvtpq_, mve_vcvtnq_) -+ (mve_vcvtmq_, mve_vcvtaq_) -+ (mve_vmvnq_n_, mve_vrev16q_v16qi) -+ (mve_vctpqhi, mve_vbrsrq_n_f) -+ (mve_vbrsrq_n_, mve_vandq_f, mve_vbicq_f) -+ (mve_vbicq_n_, mve_vctpq_mhi) -+ (mve_vcvtbq_f16_f32v8hf, mve_vcvttq_f16_f32v8hf) -+ (mve_veorq_f, mve_vmlaldavxq_s, mve_vmlsldavq_s) -+ (mve_vmlsldavxq_s, mve_vornq_f, mve_vorrq_f) -+ (mve_vrmlaldavhxq_sv4si, mve_vbicq_m_n_) -+ (mve_vcvtq_m_to_f_, mve_vshlcq_) -+ (mve_vmvnq_m_, mve_vpselq_) -+ (mve_vcvtbq_m_f16_f32v8hf, mve_vcvtbq_m_f32_f16v4sf) -+ (mve_vcvttq_m_f16_f32v8hf, mve_vcvttq_m_f32_f16v4sf) -+ (mve_vmlaldavq_p_, mve_vmlsldavaq_s) -+ (mve_vmlsldavaxq_s, mve_vmlsldavq_p_s) -+ (mve_vmlsldavxq_p_s, mve_vmvnq_m_n_) -+ (mve_vorrq_m_n_, mve_vpselq_f) -+ (mve_vrev32q_m_fv8hf, mve_vrev32q_m_) -+ (mve_vrev64q_m_f, mve_vrmlaldavhaxq_sv4si) -+ (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhaxq_sv4si) -+ (mve_vrmlsldavhq_p_sv4si, mve_vrmlsldavhxq_p_sv4si) -+ (mve_vrev16q_m_v16qi, mve_vrmlaldavhq_p_v4si) -+ (mve_vrmlsldavhaq_sv4si, mve_vandq_m_) -+ (mve_vbicq_m_, mve_veorq_m_) -+ (mve_vornq_m_, mve_vorrq_m_) -+ (mve_vandq_m_f, mve_vbicq_m_f, mve_veorq_m_f) -+ (mve_vornq_m_f, mve_vorrq_m_f) -+ (mve_vstrdq_scatter_shifted_offset_p_v2di_insn) -+ (mve_vstrdq_scatter_shifted_offset_v2di_insn) -+ (mve_vstrdq_scatter_base_wb_p_v2di) : Fix spacing and -+ capitalization in the emitted asm. -+ -+2023-05-18 Andrea Corallo -+ -+ * config/arm/constraints.md (mve_vldrd_immediate): Move it to -+ predicates.md. -+ (Ri): Move constraint definition from predicates.md. -+ (Rl): Define new constraint. -+ * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_v4si): Add -+ missing constraint. -+ (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint -+ for op 1, use mve_vstrw_immediate predicate and Rl constraint for -+ op 2. Fix asm output spacing. -+ (mve_vstrdq_scatter_base_wb_p_v2di): Add missing constraint. -+ * config/arm/predicates.md (Ri) Move constraint to constraints.md -+ (mve_vldrd_immediate): Move it from -+ constraints.md. -+ (mve_vstrw_immediate): New predicate. -+ -+2023-05-18 Murray Steele -+ -+ Backported from master: -+ 2023-01-18 Murray Steele -+ -+ PR target/108442 -+ * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic -+ function. -+ (__arm_vst1q_p_s8): Likewise. -+ (__arm_vld1q_z_u8): Likewise. -+ (__arm_vld1q_z_s8): Likewise. -+ (__arm_vst1q_p_u16): Likewise. -+ (__arm_vst1q_p_s16): Likewise. -+ (__arm_vld1q_z_u16): Likewise. -+ (__arm_vld1q_z_s16): Likewise. -+ (__arm_vst1q_p_u32): Likewise. -+ (__arm_vst1q_p_s32): Likewise. -+ (__arm_vld1q_z_u32): Likewise. -+ (__arm_vld1q_z_s32): Likewise. -+ (__arm_vld1q_z_f16): Likewise. -+ (__arm_vst1q_p_f16): Likewise. -+ (__arm_vld1q_z_f32): Likewise. -+ (__arm_vst1q_p_f32): Likewise. -+ -+2023-05-18 Andre Vieira -+ -+ Backported from master: -+ 2023-01-24 Andre Vieira -+ -+ PR target/108177 -+ * config/arm/mve.md (mve_vstrbq_p_, mve_vstrhq_p_fv8hf, -+ mve_vstrhq_p_, mve_vstrwq_p_v4si): Add memory operand -+ as input operand. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ Backported from master: -+ 2023-04-04 Stam Markianos-Wright -+ -+ * config/arm/mve.md (mve_vcvtq_n_to_f_): Swap operands. -+ (mve_vcreateq_f): Swap operands. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ Backported from master: -+ 2023-01-16 Stam Markianos-Wright -+ -+ PR target/96795 -+ PR target/107515 -+ * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types. -+ (__ARM_mve_coerce3): Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * config/arm/mve.md (mve_vqnegq_s): Fix spacing. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * config/arm/mve.md (mve_vqabsq_s): Fix spacing. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * config/arm/mve.md (mve_vnegq_f, mve_vnegq_s): -+ Fix spacing. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * config/arm/mve.md (@mve_vclzq_s): Fix spacing. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * config/arm/mve.md (mve_vclsq_s): Fix spacing. -+ -+2023-05-18 Christophe Lyon -+ -+ Backported from master: -+ 2023-02-03 Christophe Lyon -+ -+ * config/arm/mve.md (mve_vabavq_p_): Add length -+ attribute. -+ (mve_vqshluq_m_n_s): Likewise. -+ (mve_vshlq_m_): Likewise. -+ (mve_vsriq_m_n_): Likewise. -+ (mve_vsubq_m_): Likewise. -+ -+2023-05-18 Christophe Lyon -+ -+ Backported from master: -+ 2022-10-03 Christophe Lyon -+ -+ * config/arm/mve.md (mve_vrev64q_m_): Add early -+ clobber. -+ (mve_vrev64q_m_f): Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * config/arm/mve.md (mve_vrmlaldavhq_v4si, -+ mve_vrmlaldavhaq_v4si): Fix spacing vs tabs. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * config/arm/mve.md (mve_vmlaldavaq_) -+ (mve_vmlaldavaxq_s, mve_vmlaldavaxq_p_): Fix -+ spacing vs tabs. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * config/arm/mve.md (mve_vsubq_n_f): Fix spacing. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * config/arm/mve.md (mve_vaddlvq_p_v4si) -+ (mve_vaddq_n_, mve_vaddvaq_) -+ (mve_vaddlvaq_v4si, mve_vaddq_n_f) -+ (mve_vaddlvaq_p_v4si, mve_vaddq, mve_vaddq_f): -+ Fix spacing. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ Backported from master: -+ 2022-11-28 Stam Markianos-Wright -+ -+ * config/arm/arm_mve.h (__arm_vsubq_x FP): New overloads. -+ (__arm_vsubq_x Integer): New. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ Backported from master: -+ 2022-11-28 Stam Markianos-Wright -+ -+ PR target/107515 -+ * config/arm/arm_mve.h (__ARM_mve_typeid): Add float types. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ Backported from master: -+ 2022-11-28 Stam Markianos-Wright -+ -+ PR target/96795 -+ * config/arm/arm_mve.h (__arm_vaddq): Fix Overloading. -+ (__arm_vmulq): Likewise. -+ (__arm_vcmpeqq): Likewise. -+ (__arm_vcmpneq): Likewise. -+ (__arm_vmaxnmavq): Likewise. -+ (__arm_vmaxnmvq): Likewise. -+ (__arm_vminnmavq): Likewise. -+ (__arm_vsubq): Likewise. -+ (__arm_vminnmvq): Likewise. -+ (__arm_vrshlq): Likewise. -+ (__arm_vqsubq): Likewise. -+ (__arm_vqdmulltq): Likewise. -+ (__arm_vqdmullbq): Likewise. -+ (__arm_vqdmulhq): Likewise. -+ (__arm_vqaddq): Likewise. -+ (__arm_vhaddq): Likewise. -+ (__arm_vhsubq): Likewise. -+ (__arm_vqdmlashq): Likewise. -+ (__arm_vqrdmlahq): Likewise. -+ (__arm_vmlasq): Likewise. -+ (__arm_vqdmlahq): Likewise. -+ (__arm_vmaxnmavq_p): Likewise. -+ (__arm_vmaxnmvq_p): Likewise. -+ (__arm_vminnmavq_p): Likewise. -+ (__arm_vminnmvq_p): Likewise. -+ (__arm_vfmasq_m): Likewise. -+ (__arm_vsetq_lane): Likewise. -+ (__arm_vcmpneq_m): Likewise. -+ (__arm_vhaddq_x): Likewise. -+ (__arm_vhsubq_x): Likewise. -+ (__arm_vqrdmlashq_m): Likewise. -+ (__arm_vqdmlashq_m): Likewise. -+ (__arm_vmlaldavaxq_p): Likewise. -+ (__arm_vmlasq_m): Likewise. -+ (__arm_vqdmulhq_m): Likewise. -+ (__arm_vqdmulltq_m): Likewise. -+ (__arm_viwdupq_m): Likewise. -+ (__arm_viwdupq_u16): Likewise. -+ (__arm_viwdupq_u32): Likewise. -+ (__arm_viwdupq_u8): Likewise. -+ (__arm_vdwdupq_m): Likewise. -+ (__arm_vdwdupq_u16): Likewise. -+ (__arm_vdwdupq_u32): Likewise. -+ (__arm_vdwdupq_u8): Likewise. -+ (__arm_vaddlvaq): Likewise. -+ (__arm_vaddlvaq_p): Likewise. -+ (__arm_vaddvaq): Likewise. -+ (__arm_vaddvaq_p): Likewise. -+ (__arm_vcmphiq_m): Likewise. -+ (__arm_vmladavaq_p): Likewise. -+ (__arm_vmladavaxq): Likewise. -+ (__arm_vmlaldavaxq): Likewise. -+ (__arm_vrmlaldavhaq_p): Likewise. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ Backported from master: -+ 2022-11-28 Stam Markianos-Wright -+ -+ PR target/96795 -+ * config/arm/arm_mve.h (__arm_vaddq_m_n_s8): Change types. -+ (__arm_vaddq_m_n_s32): Likewise. -+ (__arm_vaddq_m_n_s16): Likewise. -+ (__arm_vaddq_m_n_u8): Likewise. -+ (__arm_vaddq_m_n_u32): Likewise. -+ (__arm_vaddq_m_n_u16): Likewise. -+ (__arm_vaddq_m): Fix Overloading. -+ (__ARM_mve_coerce3): New. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * config/arm/mve.md (mve_vabsq_f): Fix spacing. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * config/arm/mve.md (@mve_vcmpq_): Fix -+ spacing. -+ * config/arm/arm_mve.h (__arm_vcmpgtq_m, __arm_vcmpleq_m) -+ (__arm_vcmpltq_m, __arm_vcmpneq_m): Add missing defines. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * config/arm/mve.md (mve_vdupq_n_f) -+ (mve_vdupq_n_, mve_vdupq_m_n_) -+ (mve_vdupq_m_n_f): Fix spacing. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * config/arm/mve.md (mve_vdwdupq_m_wb_u_insn): Fix spacing. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * config/arm/mve.md (mve_vddupq_u_insn): Fix 'vddup.u' -+ spacing. -+ (mve_vddupq_m_wb_u_insn): Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Fix -+ 'vmsr' spacing and reg capitalization. -+ -+2023-05-15 liuhongt -+ -+ * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o -+ whenever -mdaz-ftz is specified. Don't link crtfastmath.o -+ when -mno-daz-ftz is specified. -+ * config/i386/darwin.h (ENDFILE_SPEC): Ditto. -+ * config/i386/gnu-user-common.h -+ (GNU_USER_TARGET_MATHFILE_SPEC): Ditto. -+ * config/i386/mingw32.h (ENDFILE_SPEC): Ditto. -+ * config/i386/i386.opt (mdaz-ftz): New option. -+ * doc/invoke.texi (x86 options): Document mftz-daz. -+ -+2023-05-09 Jakub Jelinek -+ -+ Backported from master: -+ 2023-05-09 Jakub Jelinek -+ -+ PR tree-optimization/109778 -+ * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on -+ wi::zext (x, width) rather than x if width != precision, rather -+ than using wi::zext (right, width) after the shift. -+ * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results -+ of wi::lrotate or wi::rrotate. -+ -+2023-05-09 Kewen Lin -+ -+ Backported from master: -+ 2023-04-26 Kewen Lin -+ -+ PR target/108758 -+ * config/rs6000/rs6000-builtins.def -+ (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt -+ __builtin_vsx_scalar_cmp_exp_qp_lt, -+ __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw -+ to power9-vector. -+ -+2023-05-09 Kewen Lin -+ -+ Backported from master: -+ 2023-04-26 Kewen Lin -+ -+ PR target/109069 -+ * config/rs6000/altivec.md (sldoi_to_mov): Replace predicate -+ easy_vector_constant with const_vector_each_byte_same, add -+ handlings in preparation for !easy_vector_constant, and update -+ VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P. -+ * config/rs6000/predicates.md (const_vector_each_byte_same): New -+ predicate. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP -index e50dc5212d2..53df0019683 100644 ---- a/gcc/DATESTAMP -+++ b/gcc/DATESTAMP -@@ -1 +1 @@ --20230508 -+20240103 -diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog -index 442fec8c8c8..fa3ef826d32 100644 ---- a/gcc/ada/ChangeLog -+++ b/gcc/ada/ChangeLog -@@ -1,3 +1,8 @@ -+2023-11-16 Eric Botcazou -+ -+ * gcc-interface/decl.cc (gnat_to_gnu_subprog_type): Also create a -+ TYPE_DECL for the return type built for the CI/CO mechanism. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/gcc/ada/gcc-interface/decl.cc b/gcc/ada/gcc-interface/decl.cc -index 1c7a716840e..606c2fd0a76 100644 ---- a/gcc/ada/gcc-interface/decl.cc -+++ b/gcc/ada/gcc-interface/decl.cc -@@ -6207,6 +6207,12 @@ gnat_to_gnu_subprog_type (Entity_Id gnat_subprog, bool definition, - - if (debug_info_p) - rest_of_record_type_compilation (gnu_cico_return_type); -+ -+ /* Declare it now since it will never be declared otherwise. This -+ is necessary to ensure that its subtrees are properly marked. */ -+ create_type_decl (TYPE_NAME (gnu_cico_return_type), -+ gnu_cico_return_type, -+ true, debug_info_p, gnat_subprog); - } - - gnu_return_type = gnu_cico_return_type; -diff --git a/gcc/attribs.cc b/gcc/attribs.cc -index b219f878042..876277dd5b3 100644 ---- a/gcc/attribs.cc -+++ b/gcc/attribs.cc -@@ -578,9 +578,9 @@ attribute_ignored_p (tree attr) - return false; - if (tree ns = get_attribute_namespace (attr)) - { -- if (attr_namespace_ignored_p (ns)) -- return true; - const attribute_spec *as = lookup_attribute_spec (TREE_PURPOSE (attr)); -+ if (as == NULL && attr_namespace_ignored_p (ns)) -+ return true; - if (as && as->max_length == -2) - return true; - } -@@ -851,7 +851,10 @@ decl_attributes (tree *node, tree attributes, int flags, - } - } - -- if (no_add_attrs) -+ if (no_add_attrs -+ /* Don't add attributes registered just for -Wno-attributes=foo::bar -+ purposes. */ -+ || attribute_ignored_p (attr)) - continue; - - if (spec->handler != NULL) -diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog -index 054a5330ac6..c95461dc065 100644 ---- a/gcc/c-family/ChangeLog -+++ b/gcc/c-family/ChangeLog -@@ -1,3 +1,31 @@ -+2023-12-15 Richard Biener -+ -+ Backported from master: -+ 2023-08-31 Richard Biener -+ -+ PR middle-end/111253 -+ * c-pretty-print.cc (c_pretty_printer::primary_expression): -+ Only dump gimple_assign_single_p SSA def RHS. -+ -+2023-05-19 Patrick Palka -+ -+ Backported from master: -+ 2023-05-15 Patrick Palka -+ -+ * c-cppbuiltin.cc (c_cpp_builtins): Predefine __cpp_auto_cast -+ for C++23. -+ -+2023-05-09 Martin Uecker -+ -+ Backported from master: -+ 2023-02-18 Martin Uecker -+ -+ PR c/105660 -+ * c-attribs.cc (append_access_attr): Use order of arguments when -+ construction string. -+ (append_access_attr_idxs): Rename and make static. -+ * c-warn.cc (warn_parm_array_mismatch): Add assertion. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/gcc/c-family/c-attribs.cc b/gcc/c-family/c-attribs.cc -index 111a33f405a..8221733613e 100644 ---- a/gcc/c-family/c-attribs.cc -+++ b/gcc/c-family/c-attribs.cc -@@ -4624,22 +4624,27 @@ append_access_attr (tree node[3], tree attrs, const char *attrstr, - rdwr_map cur_idxs; - init_attr_rdwr_indices (&cur_idxs, attrs); - -+ tree args = TYPE_ARG_TYPES (node[0]); -+ int argpos = 0; - std::string spec; -- for (auto it = new_idxs.begin (); it != new_idxs.end (); ++it) -+ for (tree arg = args; arg; arg = TREE_CHAIN (arg), argpos++) - { -- const auto &newaxsref = *it; -+ const attr_access* const newa = new_idxs.get (argpos); -+ -+ if (!newa) -+ continue; - - /* The map has two equal entries for each pointer argument that - has an associated size argument. Process just the entry for - the former. */ -- if ((unsigned)newaxsref.first != newaxsref.second.ptrarg) -+ if ((unsigned)argpos != newa->ptrarg) - continue; - -- const attr_access* const cura = cur_idxs.get (newaxsref.first); -+ const attr_access* const cura = cur_idxs.get (argpos); - if (!cura) - { - /* The new attribute needs to be added. */ -- tree str = newaxsref.second.to_internal_string (); -+ tree str = newa->to_internal_string (); - spec += TREE_STRING_POINTER (str); - continue; - } -@@ -4647,7 +4652,6 @@ append_access_attr (tree node[3], tree attrs, const char *attrstr, - /* The new access spec refers to an array/pointer argument for - which an access spec already exists. Check and diagnose any - conflicts. If no conflicts are found, merge the two. */ -- const attr_access* const newa = &newaxsref.second; - - if (!attrstr) - { -@@ -4782,7 +4786,7 @@ append_access_attr (tree node[3], tree attrs, const char *attrstr, - continue; - - /* Merge the CURA and NEWA. */ -- attr_access merged = newaxsref.second; -+ attr_access merged = *newa; - - /* VLA seen in a declaration takes precedence. */ - if (cura->minsize == HOST_WIDE_INT_M1U) -@@ -4808,9 +4812,9 @@ append_access_attr (tree node[3], tree attrs, const char *attrstr, - - /* Convenience wrapper for the above. */ - --tree --append_access_attr (tree node[3], tree attrs, const char *attrstr, -- char code, HOST_WIDE_INT idxs[2]) -+static tree -+append_access_attr_idxs (tree node[3], tree attrs, const char *attrstr, -+ char code, HOST_WIDE_INT idxs[2]) - { - char attrspec[80]; - int n = sprintf (attrspec, "%c%u", code, (unsigned) idxs[0] - 1); -@@ -5101,7 +5105,7 @@ handle_access_attribute (tree node[3], tree name, tree args, int flags, - attributes specified on previous declarations of the same type - and if not, concatenate the two. */ - const char code = attr_access::mode_chars[mode]; -- tree new_attrs = append_access_attr (node, attrs, attrstr, code, idxs); -+ tree new_attrs = append_access_attr_idxs (node, attrs, attrstr, code, idxs); - if (!new_attrs) - return NULL_TREE; - -@@ -5114,7 +5118,7 @@ handle_access_attribute (tree node[3], tree name, tree args, int flags, - { - /* Repeat for the previously declared type. */ - attrs = TYPE_ATTRIBUTES (TREE_TYPE (node[1])); -- new_attrs = append_access_attr (node, attrs, attrstr, code, idxs); -+ new_attrs = append_access_attr_idxs (node, attrs, attrstr, code, idxs); - if (!new_attrs) - return NULL_TREE; - -diff --git a/gcc/c-family/c-cppbuiltin.cc b/gcc/c-family/c-cppbuiltin.cc -index 4672ae8486a..c1b86c1fac0 100644 ---- a/gcc/c-family/c-cppbuiltin.cc -+++ b/gcc/c-family/c-cppbuiltin.cc -@@ -1080,6 +1080,7 @@ c_cpp_builtins (cpp_reader *pfile) - cpp_define (pfile, "__cpp_if_consteval=202106L"); - cpp_define (pfile, "__cpp_constexpr=202110L"); - cpp_define (pfile, "__cpp_multidimensional_subscript=202110L"); -+ cpp_define (pfile, "__cpp_auto_cast=202110L"); - } - if (flag_concepts) - { -diff --git a/gcc/c-family/c-pretty-print.cc b/gcc/c-family/c-pretty-print.cc -index 71a0cb51093..0c679c12d83 100644 ---- a/gcc/c-family/c-pretty-print.cc -+++ b/gcc/c-family/c-pretty-print.cc -@@ -33,6 +33,9 @@ along with GCC; see the file COPYING3. If not see - #include "langhooks.h" - #include "options.h" - #include "internal-fn.h" -+#include "function.h" -+#include "basic-block.h" -+#include "gimple.h" - - /* The pretty-printer code is primarily designed to closely follow - (GNU) C and C++ grammars. That is to be contrasted with spaghetti -@@ -1363,12 +1366,14 @@ c_pretty_printer::primary_expression (tree e) - else - primary_expression (var); - } -- else -+ else if (gimple_assign_single_p (SSA_NAME_DEF_STMT (e))) - { - /* Print only the right side of the GIMPLE assignment. */ - gimple *def_stmt = SSA_NAME_DEF_STMT (e); - pp_gimple_stmt_1 (this, def_stmt, 0, TDF_RHS_ONLY); - } -+ else -+ expression (e); - break; - - default: -diff --git a/gcc/c-family/c-warn.cc b/gcc/c-family/c-warn.cc -index 1e5a64260a3..9634351a4d3 100644 ---- a/gcc/c-family/c-warn.cc -+++ b/gcc/c-family/c-warn.cc -@@ -3628,6 +3628,8 @@ warn_parm_array_mismatch (location_t origloc, tree fndecl, tree newparms) - for (tree newvbl = newa->size, curvbl = cura->size; newvbl; - newvbl = TREE_CHAIN (newvbl), curvbl = TREE_CHAIN (curvbl)) - { -+ gcc_assert (curvbl); -+ - tree newpos = TREE_PURPOSE (newvbl); - tree curpos = TREE_PURPOSE (curvbl); - -diff --git a/gcc/common/config/i386/cpuinfo.h b/gcc/common/config/i386/cpuinfo.h -index 0333da56ba5..316ad3cb3e9 100644 ---- a/gcc/common/config/i386/cpuinfo.h -+++ b/gcc/common/config/i386/cpuinfo.h -@@ -435,7 +435,6 @@ get_intel_cpu (struct __processor_model *cpu_model, - cpu_model->__cpu_subtype = INTEL_COREI7_SKYLAKE; - break; - case 0xa7: -- case 0xa8: - /* Rocket Lake. */ - cpu = "rocketlake"; - CHECK___builtin_cpu_is ("corei7"); -@@ -508,7 +507,6 @@ get_intel_cpu (struct __processor_model *cpu_model, - break; - case 0x97: - case 0x9a: -- case 0xbf: - /* Alder Lake. */ - cpu = "alderlake"; - CHECK___builtin_cpu_is ("corei7"); -@@ -649,7 +647,9 @@ get_available_features (struct __processor_model *cpu_model, - /* Get Advanced Features at level 7 (eax = 7, ecx = 0/1). */ - if (max_cpuid_level >= 7) - { -- __cpuid_count (7, 0, eax, ebx, ecx, edx); -+ unsigned int max_subleaf_level; -+ -+ __cpuid_count (7, 0, max_subleaf_level, ebx, ecx, edx); - if (ebx & bit_BMI) - set_feature (FEATURE_BMI); - if (ebx & bit_SGX) -@@ -761,18 +761,21 @@ get_available_features (struct __processor_model *cpu_model, - set_feature (FEATURE_AVX512FP16); - } - -- __cpuid_count (7, 1, eax, ebx, ecx, edx); -- if (eax & bit_HRESET) -- set_feature (FEATURE_HRESET); -- if (avx_usable) -- { -- if (eax & bit_AVXVNNI) -- set_feature (FEATURE_AVXVNNI); -- } -- if (avx512_usable) -+ if (max_subleaf_level >= 1) - { -- if (eax & bit_AVX512BF16) -- set_feature (FEATURE_AVX512BF16); -+ __cpuid_count (7, 1, eax, ebx, ecx, edx); -+ if (eax & bit_HRESET) -+ set_feature (FEATURE_HRESET); -+ if (avx_usable) -+ { -+ if (eax & bit_AVXVNNI) -+ set_feature (FEATURE_AVXVNNI); -+ } -+ if (avx512_usable) -+ { -+ if (eax & bit_AVX512BF16) -+ set_feature (FEATURE_AVX512BF16); -+ } - } - } - -diff --git a/gcc/config.in b/gcc/config.in -index 64c27c9cfac..cc638759a40 100644 ---- a/gcc/config.in -+++ b/gcc/config.in -@@ -672,6 +672,12 @@ - #endif - - -+/* Define if your assembler supports htm insns on power10. */ -+#ifndef USED_FOR_TARGET -+#undef HAVE_AS_POWER10_HTM -+#endif -+ -+ - /* Define if your assembler supports .ref */ - #ifndef USED_FOR_TARGET - #undef HAVE_AS_REF -diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc -index 42276e7caf7..197b763658c 100644 ---- a/gcc/config/aarch64/aarch64-builtins.cc -+++ b/gcc/config/aarch64/aarch64-builtins.cc -@@ -751,6 +751,16 @@ aarch64_general_add_builtin (const char *name, tree type, unsigned int code, - NULL, attrs); - } - -+static tree -+aarch64_general_simulate_builtin (const char *name, tree fntype, -+ unsigned int code, -+ tree attrs = NULL_TREE) -+{ -+ code = (code << AARCH64_BUILTIN_SHIFT) | AARCH64_BUILTIN_GENERAL; -+ return simulate_builtin_function_decl (input_location, name, fntype, -+ code, NULL, attrs); -+} -+ - static const char * - aarch64_mangle_builtin_scalar_type (const_tree type) - { -@@ -1634,11 +1644,11 @@ aarch64_init_ls64_builtins_types (void) - gcc_assert (TYPE_ALIGN (array_type) == 64); - - tree field = build_decl (input_location, FIELD_DECL, -- get_identifier ("val"), array_type); -+ get_identifier ("val"), array_type); - - ls64_arm_data_t = lang_hooks.types.simulate_record_decl (input_location, -- tuple_type_name, -- make_array_slice (&field, 1)); -+ tuple_type_name, -+ make_array_slice (&field, 1)); - - gcc_assert (TYPE_MODE (ls64_arm_data_t) == V8DImode); - gcc_assert (TYPE_MODE_RAW (ls64_arm_data_t) == TYPE_MODE (ls64_arm_data_t)); -@@ -1651,23 +1661,24 @@ aarch64_init_ls64_builtins (void) - aarch64_init_ls64_builtins_types (); - - ls64_builtins_data data[4] = { -- {"__builtin_aarch64_ld64b", AARCH64_LS64_BUILTIN_LD64B, -+ {"__arm_ld64b", AARCH64_LS64_BUILTIN_LD64B, - build_function_type_list (ls64_arm_data_t, -- const_ptr_type_node, NULL_TREE)}, -- {"__builtin_aarch64_st64b", AARCH64_LS64_BUILTIN_ST64B, -+ const_ptr_type_node, NULL_TREE)}, -+ {"__arm_st64b", AARCH64_LS64_BUILTIN_ST64B, - build_function_type_list (void_type_node, ptr_type_node, -- ls64_arm_data_t, NULL_TREE)}, -- {"__builtin_aarch64_st64bv", AARCH64_LS64_BUILTIN_ST64BV, -+ ls64_arm_data_t, NULL_TREE)}, -+ {"__arm_st64bv", AARCH64_LS64_BUILTIN_ST64BV, - build_function_type_list (uint64_type_node, ptr_type_node, -- ls64_arm_data_t, NULL_TREE)}, -- {"__builtin_aarch64_st64bv0", AARCH64_LS64_BUILTIN_ST64BV0, -+ ls64_arm_data_t, NULL_TREE)}, -+ {"__arm_st64bv0", AARCH64_LS64_BUILTIN_ST64BV0, - build_function_type_list (uint64_type_node, ptr_type_node, -- ls64_arm_data_t, NULL_TREE)}, -+ ls64_arm_data_t, NULL_TREE)}, - }; - - for (size_t i = 0; i < ARRAY_SIZE (data); ++i) - aarch64_builtin_decls[data[i].code] -- = aarch64_general_add_builtin (data[i].name, data[i].type, data[i].code); -+ = aarch64_general_simulate_builtin (data[i].name, data[i].type, -+ data[i].code); - } - - static void -@@ -1800,6 +1811,9 @@ aarch64_general_init_builtins (void) - - if (TARGET_MEMTAG) - aarch64_init_memtag_builtins (); -+ -+ if (in_lto_p) -+ handle_arm_acle_h (); - } - - /* Implement TARGET_BUILTIN_DECL for the AARCH64_BUILTIN_GENERAL group. */ -@@ -2281,40 +2295,40 @@ aarch64_expand_builtin_ls64 (int fcode, tree exp, rtx target) - { - case AARCH64_LS64_BUILTIN_LD64B: - { -- rtx op0 = expand_normal (CALL_EXPR_ARG (exp, 0)); -- create_output_operand (&ops[0], target, V8DImode); -- create_input_operand (&ops[1], op0, DImode); -- expand_insn (CODE_FOR_ld64b, 2, ops); -- return ops[0].value; -+ rtx op0 = expand_normal (CALL_EXPR_ARG (exp, 0)); -+ create_output_operand (&ops[0], target, V8DImode); -+ create_input_operand (&ops[1], op0, DImode); -+ expand_insn (CODE_FOR_ld64b, 2, ops); -+ return ops[0].value; - } - case AARCH64_LS64_BUILTIN_ST64B: - { -- rtx op0 = expand_normal (CALL_EXPR_ARG (exp, 0)); -- rtx op1 = expand_normal (CALL_EXPR_ARG (exp, 1)); -- create_output_operand (&ops[0], op0, DImode); -- create_input_operand (&ops[1], op1, V8DImode); -- expand_insn (CODE_FOR_st64b, 2, ops); -- return const0_rtx; -+ rtx op0 = expand_normal (CALL_EXPR_ARG (exp, 0)); -+ rtx op1 = expand_normal (CALL_EXPR_ARG (exp, 1)); -+ create_input_operand (&ops[0], op0, DImode); -+ create_input_operand (&ops[1], op1, V8DImode); -+ expand_insn (CODE_FOR_st64b, 2, ops); -+ return const0_rtx; - } - case AARCH64_LS64_BUILTIN_ST64BV: - { -- rtx op0 = expand_normal (CALL_EXPR_ARG (exp, 0)); -- rtx op1 = expand_normal (CALL_EXPR_ARG (exp, 1)); -- create_output_operand (&ops[0], target, DImode); -- create_input_operand (&ops[1], op0, DImode); -- create_input_operand (&ops[2], op1, V8DImode); -- expand_insn (CODE_FOR_st64bv, 3, ops); -- return ops[0].value; -+ rtx op0 = expand_normal (CALL_EXPR_ARG (exp, 0)); -+ rtx op1 = expand_normal (CALL_EXPR_ARG (exp, 1)); -+ create_output_operand (&ops[0], target, DImode); -+ create_input_operand (&ops[1], op0, DImode); -+ create_input_operand (&ops[2], op1, V8DImode); -+ expand_insn (CODE_FOR_st64bv, 3, ops); -+ return ops[0].value; - } - case AARCH64_LS64_BUILTIN_ST64BV0: - { -- rtx op0 = expand_normal (CALL_EXPR_ARG (exp, 0)); -- rtx op1 = expand_normal (CALL_EXPR_ARG (exp, 1)); -- create_output_operand (&ops[0], target, DImode); -- create_input_operand (&ops[1], op0, DImode); -- create_input_operand (&ops[2], op1, V8DImode); -- expand_insn (CODE_FOR_st64bv0, 3, ops); -- return ops[0].value; -+ rtx op0 = expand_normal (CALL_EXPR_ARG (exp, 0)); -+ rtx op1 = expand_normal (CALL_EXPR_ARG (exp, 1)); -+ create_output_operand (&ops[0], target, DImode); -+ create_input_operand (&ops[1], op0, DImode); -+ create_input_operand (&ops[2], op1, V8DImode); -+ expand_insn (CODE_FOR_st64bv0, 3, ops); -+ return ops[0].value; - } - } - -diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h -index 475d174dd39..9d99a021379 100644 ---- a/gcc/config/aarch64/aarch64-protos.h -+++ b/gcc/config/aarch64/aarch64-protos.h -@@ -781,6 +781,7 @@ bool aarch64_emit_approx_div (rtx, rtx, rtx); - bool aarch64_emit_approx_sqrt (rtx, rtx, bool); - tree aarch64_vector_load_decl (tree); - void aarch64_expand_call (rtx, rtx, rtx, bool); -+bool aarch64_expand_cpymem_mops (rtx *, bool); - bool aarch64_expand_cpymem (rtx *); - bool aarch64_expand_setmem (rtx *); - bool aarch64_float_const_zero_rtx_p (rtx); -diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc -index 226dc9dffd4..3bccd96a23d 100644 ---- a/gcc/config/aarch64/aarch64.cc -+++ b/gcc/config/aarch64/aarch64.cc -@@ -8133,18 +8133,32 @@ aarch64_needs_frame_chain (void) - return aarch64_use_frame_pointer; - } - -+/* Return true if the current function should save registers above -+ the locals area, rather than below it. */ -+ -+static bool -+aarch64_save_regs_above_locals_p () -+{ -+ /* When using stack smash protection, make sure that the canary slot -+ comes between the locals and the saved registers. Otherwise, -+ it would be possible for a carefully sized smash attack to change -+ the saved registers (particularly LR and FP) without reaching the -+ canary. */ -+ return crtl->stack_protect_guard; -+} -+ - /* Mark the registers that need to be saved by the callee and calculate - the size of the callee-saved registers area and frame record (both FP - and LR may be omitted). */ - static void - aarch64_layout_frame (void) - { -- poly_int64 offset = 0; - int regno, last_fp_reg = INVALID_REGNUM; - machine_mode vector_save_mode = aarch64_reg_save_mode (V8_REGNUM); - poly_int64 vector_save_size = GET_MODE_SIZE (vector_save_mode); - bool frame_related_fp_reg_p = false; - aarch64_frame &frame = cfun->machine->frame; -+ poly_int64 top_of_locals = -1; - - frame.emit_frame_chain = aarch64_needs_frame_chain (); - -@@ -8211,11 +8225,18 @@ aarch64_layout_frame (void) - && !crtl->abi->clobbers_full_reg_p (regno)) - frame.reg_offset[regno] = SLOT_REQUIRED; - -- /* With stack-clash, LR must be saved in non-leaf functions. The saving of -- LR counts as an implicit probe which allows us to maintain the invariant -- described in the comment at expand_prologue. */ -- gcc_assert (crtl->is_leaf -- || maybe_ne (frame.reg_offset[R30_REGNUM], SLOT_NOT_REQUIRED)); -+ bool regs_at_top_p = aarch64_save_regs_above_locals_p (); -+ -+ poly_int64 offset = crtl->outgoing_args_size; -+ gcc_assert (multiple_p (offset, STACK_BOUNDARY / BITS_PER_UNIT)); -+ if (regs_at_top_p) -+ { -+ offset += get_frame_size (); -+ offset = aligned_upper_bound (offset, STACK_BOUNDARY / BITS_PER_UNIT); -+ top_of_locals = offset; -+ } -+ frame.bytes_below_saved_regs = offset; -+ frame.sve_save_and_probe = INVALID_REGNUM; - - /* Now assign stack slots for the registers. Start with the predicate - registers, since predicate LDR and STR have a relatively small -@@ -8223,11 +8244,14 @@ aarch64_layout_frame (void) - for (regno = P0_REGNUM; regno <= P15_REGNUM; regno++) - if (known_eq (frame.reg_offset[regno], SLOT_REQUIRED)) - { -+ if (frame.sve_save_and_probe == INVALID_REGNUM) -+ frame.sve_save_and_probe = regno; - frame.reg_offset[regno] = offset; - offset += BYTES_PER_SVE_PRED; - } - -- if (maybe_ne (offset, 0)) -+ poly_int64 saved_prs_size = offset - frame.bytes_below_saved_regs; -+ if (maybe_ne (saved_prs_size, 0)) - { - /* If we have any vector registers to save above the predicate registers, - the offset of the vector register save slots need to be a multiple -@@ -8245,10 +8269,10 @@ aarch64_layout_frame (void) - offset = aligned_upper_bound (offset, STACK_BOUNDARY / BITS_PER_UNIT); - else - { -- if (known_le (offset, vector_save_size)) -- offset = vector_save_size; -- else if (known_le (offset, vector_save_size * 2)) -- offset = vector_save_size * 2; -+ if (known_le (saved_prs_size, vector_save_size)) -+ offset = frame.bytes_below_saved_regs + vector_save_size; -+ else if (known_le (saved_prs_size, vector_save_size * 2)) -+ offset = frame.bytes_below_saved_regs + vector_save_size * 2; - else - gcc_unreachable (); - } -@@ -8259,34 +8283,53 @@ aarch64_layout_frame (void) - for (regno = V0_REGNUM; regno <= V31_REGNUM; regno++) - if (known_eq (frame.reg_offset[regno], SLOT_REQUIRED)) - { -+ if (frame.sve_save_and_probe == INVALID_REGNUM) -+ frame.sve_save_and_probe = regno; - frame.reg_offset[regno] = offset; - offset += vector_save_size; - } - - /* OFFSET is now the offset of the hard frame pointer from the bottom - of the callee save area. */ -- bool saves_below_hard_fp_p = maybe_ne (offset, 0); -- frame.below_hard_fp_saved_regs_size = offset; -+ auto below_hard_fp_saved_regs_size = offset - frame.bytes_below_saved_regs; -+ bool saves_below_hard_fp_p = maybe_ne (below_hard_fp_saved_regs_size, 0); -+ gcc_assert (!saves_below_hard_fp_p -+ || (frame.sve_save_and_probe != INVALID_REGNUM -+ && known_eq (frame.reg_offset[frame.sve_save_and_probe], -+ frame.bytes_below_saved_regs))); -+ -+ frame.bytes_below_hard_fp = offset; -+ frame.hard_fp_save_and_probe = INVALID_REGNUM; -+ -+ auto allocate_gpr_slot = [&](unsigned int regno) -+ { -+ if (frame.hard_fp_save_and_probe == INVALID_REGNUM) -+ frame.hard_fp_save_and_probe = regno; -+ frame.reg_offset[regno] = offset; -+ if (frame.wb_push_candidate1 == INVALID_REGNUM) -+ frame.wb_push_candidate1 = regno; -+ else if (frame.wb_push_candidate2 == INVALID_REGNUM) -+ frame.wb_push_candidate2 = regno; -+ offset += UNITS_PER_WORD; -+ }; -+ - if (frame.emit_frame_chain) - { - /* FP and LR are placed in the linkage record. */ -- frame.reg_offset[R29_REGNUM] = offset; -- frame.wb_push_candidate1 = R29_REGNUM; -- frame.reg_offset[R30_REGNUM] = offset + UNITS_PER_WORD; -- frame.wb_push_candidate2 = R30_REGNUM; -- offset += 2 * UNITS_PER_WORD; -+ allocate_gpr_slot (R29_REGNUM); -+ allocate_gpr_slot (R30_REGNUM); - } -+ else if (flag_stack_clash_protection -+ && known_eq (frame.reg_offset[R30_REGNUM], SLOT_REQUIRED)) -+ /* Put the LR save slot first, since it makes a good choice of probe -+ for stack clash purposes. The idea is that the link register usually -+ has to be saved before a call anyway, and so we lose little by -+ stopping it from being individually shrink-wrapped. */ -+ allocate_gpr_slot (R30_REGNUM); - - for (regno = R0_REGNUM; regno <= R30_REGNUM; regno++) - if (known_eq (frame.reg_offset[regno], SLOT_REQUIRED)) -- { -- frame.reg_offset[regno] = offset; -- if (frame.wb_push_candidate1 == INVALID_REGNUM) -- frame.wb_push_candidate1 = regno; -- else if (frame.wb_push_candidate2 == INVALID_REGNUM) -- frame.wb_push_candidate2 = regno; -- offset += UNITS_PER_WORD; -- } -+ allocate_gpr_slot (regno); - - poly_int64 max_int_offset = offset; - offset = aligned_upper_bound (offset, STACK_BOUNDARY / BITS_PER_UNIT); -@@ -8295,6 +8338,8 @@ aarch64_layout_frame (void) - for (regno = V0_REGNUM; regno <= V31_REGNUM; regno++) - if (known_eq (frame.reg_offset[regno], SLOT_REQUIRED)) - { -+ if (frame.hard_fp_save_and_probe == INVALID_REGNUM) -+ frame.hard_fp_save_and_probe = regno; - /* If there is an alignment gap between integer and fp callee-saves, - allocate the last fp register to it if possible. */ - if (regno == last_fp_reg -@@ -8317,30 +8362,36 @@ aarch64_layout_frame (void) - - offset = aligned_upper_bound (offset, STACK_BOUNDARY / BITS_PER_UNIT); - -- frame.saved_regs_size = offset; -- -- poly_int64 varargs_and_saved_regs_size = offset + frame.saved_varargs_size; -+ auto saved_regs_size = offset - frame.bytes_below_saved_regs; -+ gcc_assert (known_eq (saved_regs_size, below_hard_fp_saved_regs_size) -+ || (frame.hard_fp_save_and_probe != INVALID_REGNUM -+ && known_eq (frame.reg_offset[frame.hard_fp_save_and_probe], -+ frame.bytes_below_hard_fp))); - -- poly_int64 above_outgoing_args -- = aligned_upper_bound (varargs_and_saved_regs_size -- + get_frame_size (), -- STACK_BOUNDARY / BITS_PER_UNIT); -- -- frame.hard_fp_offset -- = above_outgoing_args - frame.below_hard_fp_saved_regs_size; -+ /* With stack-clash, a register must be saved in non-leaf functions. -+ The saving of the bottommost register counts as an implicit probe, -+ which allows us to maintain the invariant described in the comment -+ at expand_prologue. */ -+ gcc_assert (crtl->is_leaf || maybe_ne (saved_regs_size, 0)); - -- /* Both these values are already aligned. */ -- gcc_assert (multiple_p (crtl->outgoing_args_size, -- STACK_BOUNDARY / BITS_PER_UNIT)); -- frame.frame_size = above_outgoing_args + crtl->outgoing_args_size; -+ if (!regs_at_top_p) -+ { -+ offset += get_frame_size (); -+ offset = aligned_upper_bound (offset, STACK_BOUNDARY / BITS_PER_UNIT); -+ top_of_locals = offset; -+ } -+ offset += frame.saved_varargs_size; -+ gcc_assert (multiple_p (offset, STACK_BOUNDARY / BITS_PER_UNIT)); -+ frame.frame_size = offset; - -- frame.locals_offset = frame.saved_varargs_size; -+ frame.bytes_above_hard_fp = frame.frame_size - frame.bytes_below_hard_fp; -+ gcc_assert (known_ge (top_of_locals, 0)); -+ frame.bytes_above_locals = frame.frame_size - top_of_locals; - - frame.initial_adjust = 0; - frame.final_adjust = 0; - frame.callee_adjust = 0; - frame.sve_callee_adjust = 0; -- frame.callee_offset = 0; - - frame.wb_pop_candidate1 = frame.wb_push_candidate1; - frame.wb_pop_candidate2 = frame.wb_push_candidate2; -@@ -8351,7 +8402,7 @@ aarch64_layout_frame (void) - frame.is_scs_enabled - = (!crtl->calls_eh_return - && sanitize_flags_p (SANITIZE_SHADOW_CALL_STACK) -- && known_ge (cfun->machine->frame.reg_offset[LR_REGNUM], 0)); -+ && known_ge (frame.reg_offset[LR_REGNUM], 0)); - - /* When shadow call stack is enabled, the scs_pop in the epilogue will - restore x30, and we don't need to pop x30 again in the traditional -@@ -8371,75 +8422,76 @@ aarch64_layout_frame (void) - max_push_offset to 0, because no registers are popped at this time, - so callee_adjust cannot be adjusted. */ - HOST_WIDE_INT max_push_offset = 0; -- if (frame.wb_pop_candidate2 != INVALID_REGNUM) -- max_push_offset = 512; -- else if (frame.wb_pop_candidate1 != INVALID_REGNUM) -- max_push_offset = 256; -+ if (frame.wb_pop_candidate1 != INVALID_REGNUM) -+ { -+ if (frame.wb_pop_candidate2 != INVALID_REGNUM) -+ max_push_offset = 512; -+ else -+ max_push_offset = 256; -+ } - -- HOST_WIDE_INT const_size, const_outgoing_args_size, const_fp_offset; -+ HOST_WIDE_INT const_size, const_below_saved_regs, const_above_fp; - HOST_WIDE_INT const_saved_regs_size; -- if (frame.frame_size.is_constant (&const_size) -- && const_size < max_push_offset -- && known_eq (frame.hard_fp_offset, const_size)) -+ if (known_eq (saved_regs_size, 0)) -+ frame.initial_adjust = frame.frame_size; -+ else if (frame.frame_size.is_constant (&const_size) -+ && const_size < max_push_offset -+ && known_eq (frame.bytes_above_hard_fp, const_size)) - { -- /* Simple, small frame with no outgoing arguments: -+ /* Simple, small frame with no data below the saved registers. - - stp reg1, reg2, [sp, -frame_size]! - stp reg3, reg4, [sp, 16] */ - frame.callee_adjust = const_size; - } -- else if (crtl->outgoing_args_size.is_constant (&const_outgoing_args_size) -- && frame.saved_regs_size.is_constant (&const_saved_regs_size) -- && const_outgoing_args_size + const_saved_regs_size < 512 -- /* We could handle this case even with outgoing args, provided -- that the number of args left us with valid offsets for all -- predicate and vector save slots. It's such a rare case that -- it hardly seems worth the effort though. */ -- && (!saves_below_hard_fp_p || const_outgoing_args_size == 0) -+ else if (frame.bytes_below_saved_regs.is_constant (&const_below_saved_regs) -+ && saved_regs_size.is_constant (&const_saved_regs_size) -+ && const_below_saved_regs + const_saved_regs_size < 512 -+ /* We could handle this case even with data below the saved -+ registers, provided that that data left us with valid offsets -+ for all predicate and vector save slots. It's such a rare -+ case that it hardly seems worth the effort though. */ -+ && (!saves_below_hard_fp_p || const_below_saved_regs == 0) - && !(cfun->calls_alloca -- && frame.hard_fp_offset.is_constant (&const_fp_offset) -- && const_fp_offset < max_push_offset)) -+ && frame.bytes_above_hard_fp.is_constant (&const_above_fp) -+ && const_above_fp < max_push_offset)) - { -- /* Frame with small outgoing arguments: -+ /* Frame with small area below the saved registers: - - sub sp, sp, frame_size -- stp reg1, reg2, [sp, outgoing_args_size] -- stp reg3, reg4, [sp, outgoing_args_size + 16] */ -+ stp reg1, reg2, [sp, bytes_below_saved_regs] -+ stp reg3, reg4, [sp, bytes_below_saved_regs + 16] */ - frame.initial_adjust = frame.frame_size; -- frame.callee_offset = const_outgoing_args_size; - } - else if (saves_below_hard_fp_p -- && known_eq (frame.saved_regs_size, -- frame.below_hard_fp_saved_regs_size)) -+ && known_eq (saved_regs_size, below_hard_fp_saved_regs_size)) - { - /* Frame in which all saves are SVE saves: - -- sub sp, sp, hard_fp_offset + below_hard_fp_saved_regs_size -+ sub sp, sp, frame_size - bytes_below_saved_regs - save SVE registers relative to SP -- sub sp, sp, outgoing_args_size */ -- frame.initial_adjust = (frame.hard_fp_offset -- + frame.below_hard_fp_saved_regs_size); -- frame.final_adjust = crtl->outgoing_args_size; -+ sub sp, sp, bytes_below_saved_regs */ -+ frame.initial_adjust = frame.frame_size - frame.bytes_below_saved_regs; -+ frame.final_adjust = frame.bytes_below_saved_regs; - } -- else if (frame.hard_fp_offset.is_constant (&const_fp_offset) -- && const_fp_offset < max_push_offset) -+ else if (frame.bytes_above_hard_fp.is_constant (&const_above_fp) -+ && const_above_fp < max_push_offset) - { -- /* Frame with large outgoing arguments or SVE saves, but with -- a small local area: -+ /* Frame with large area below the saved registers, or with SVE saves, -+ but with a small area above: - - stp reg1, reg2, [sp, -hard_fp_offset]! - stp reg3, reg4, [sp, 16] - [sub sp, sp, below_hard_fp_saved_regs_size] - [save SVE registers relative to SP] -- sub sp, sp, outgoing_args_size */ -- frame.callee_adjust = const_fp_offset; -- frame.sve_callee_adjust = frame.below_hard_fp_saved_regs_size; -- frame.final_adjust = crtl->outgoing_args_size; -+ sub sp, sp, bytes_below_saved_regs */ -+ frame.callee_adjust = const_above_fp; -+ frame.sve_callee_adjust = below_hard_fp_saved_regs_size; -+ frame.final_adjust = frame.bytes_below_saved_regs; - } - else - { -- /* Frame with large local area and outgoing arguments or SVE saves, -- using frame pointer: -+ /* General case: - - sub sp, sp, hard_fp_offset - stp x29, x30, [sp, 0] -@@ -8447,10 +8499,29 @@ aarch64_layout_frame (void) - stp reg3, reg4, [sp, 16] - [sub sp, sp, below_hard_fp_saved_regs_size] - [save SVE registers relative to SP] -- sub sp, sp, outgoing_args_size */ -- frame.initial_adjust = frame.hard_fp_offset; -- frame.sve_callee_adjust = frame.below_hard_fp_saved_regs_size; -- frame.final_adjust = crtl->outgoing_args_size; -+ sub sp, sp, bytes_below_saved_regs */ -+ frame.initial_adjust = frame.bytes_above_hard_fp; -+ frame.sve_callee_adjust = below_hard_fp_saved_regs_size; -+ frame.final_adjust = frame.bytes_below_saved_regs; -+ } -+ -+ /* The frame is allocated in pieces, with each non-final piece -+ including a register save at offset 0 that acts as a probe for -+ the following piece. In addition, the save of the bottommost register -+ acts as a probe for callees and allocas. Roll back any probes that -+ aren't needed. -+ -+ A probe isn't needed if it is associated with the final allocation -+ (including callees and allocas) that happens before the epilogue is -+ executed. */ -+ if (crtl->is_leaf -+ && !cfun->calls_alloca -+ && known_eq (frame.final_adjust, 0)) -+ { -+ if (maybe_ne (frame.sve_callee_adjust, 0)) -+ frame.sve_save_and_probe = INVALID_REGNUM; -+ else -+ frame.hard_fp_save_and_probe = INVALID_REGNUM; - } - - /* Make sure the individual adjustments add up to the full frame size. */ -@@ -8754,15 +8825,17 @@ aarch64_add_cfa_expression (rtx_insn *insn, rtx reg, - } - - /* Emit code to save the callee-saved registers from register number START -- to LIMIT to the stack at the location starting at offset START_OFFSET, -- skipping any write-back candidates if SKIP_WB is true. HARD_FP_VALID_P -- is true if the hard frame pointer has been set up. */ -+ to LIMIT to the stack. The stack pointer is currently BYTES_BELOW_SP -+ bytes above the bottom of the static frame. Skip any write-back -+ candidates if SKIP_WB is true. HARD_FP_VALID_P is true if the hard -+ frame pointer has been set up. */ - - static void --aarch64_save_callee_saves (poly_int64 start_offset, -+aarch64_save_callee_saves (poly_int64 bytes_below_sp, - unsigned start, unsigned limit, bool skip_wb, - bool hard_fp_valid_p) - { -+ aarch64_frame &frame = cfun->machine->frame; - rtx_insn *insn; - unsigned regno; - unsigned regno2; -@@ -8777,8 +8850,8 @@ aarch64_save_callee_saves (poly_int64 start_offset, - bool frame_related_p = aarch64_emit_cfi_for_reg_p (regno); - - if (skip_wb -- && (regno == cfun->machine->frame.wb_push_candidate1 -- || regno == cfun->machine->frame.wb_push_candidate2)) -+ && (regno == frame.wb_push_candidate1 -+ || regno == frame.wb_push_candidate2)) - continue; - - if (cfun->machine->reg_is_wrapped_separately[regno]) -@@ -8786,7 +8859,7 @@ aarch64_save_callee_saves (poly_int64 start_offset, - - machine_mode mode = aarch64_reg_save_mode (regno); - reg = gen_rtx_REG (mode, regno); -- offset = start_offset + cfun->machine->frame.reg_offset[regno]; -+ offset = frame.reg_offset[regno] - bytes_below_sp; - rtx base_rtx = stack_pointer_rtx; - poly_int64 sp_offset = offset; - -@@ -8797,9 +8870,7 @@ aarch64_save_callee_saves (poly_int64 start_offset, - else if (GP_REGNUM_P (regno) - && (!offset.is_constant (&const_offset) || const_offset >= 512)) - { -- gcc_assert (known_eq (start_offset, 0)); -- poly_int64 fp_offset -- = cfun->machine->frame.below_hard_fp_saved_regs_size; -+ poly_int64 fp_offset = frame.bytes_below_hard_fp - bytes_below_sp; - if (hard_fp_valid_p) - base_rtx = hard_frame_pointer_rtx; - else -@@ -8821,8 +8892,7 @@ aarch64_save_callee_saves (poly_int64 start_offset, - && (regno2 = aarch64_next_callee_save (regno + 1, limit)) <= limit - && !cfun->machine->reg_is_wrapped_separately[regno2] - && known_eq (GET_MODE_SIZE (mode), -- cfun->machine->frame.reg_offset[regno2] -- - cfun->machine->frame.reg_offset[regno])) -+ frame.reg_offset[regno2] - frame.reg_offset[regno])) - { - rtx reg2 = gen_rtx_REG (mode, regno2); - rtx mem2; -@@ -8864,14 +8934,16 @@ aarch64_save_callee_saves (poly_int64 start_offset, - } - - /* Emit code to restore the callee registers from register number START -- up to and including LIMIT. Restore from the stack offset START_OFFSET, -- skipping any write-back candidates if SKIP_WB is true. Write the -- appropriate REG_CFA_RESTORE notes into CFI_OPS. */ -+ up to and including LIMIT. The stack pointer is currently BYTES_BELOW_SP -+ bytes above the bottom of the static frame. Skip any write-back -+ candidates if SKIP_WB is true. Write the appropriate REG_CFA_RESTORE -+ notes into CFI_OPS. */ - - static void --aarch64_restore_callee_saves (poly_int64 start_offset, unsigned start, -+aarch64_restore_callee_saves (poly_int64 bytes_below_sp, unsigned start, - unsigned limit, bool skip_wb, rtx *cfi_ops) - { -+ aarch64_frame &frame = cfun->machine->frame; - unsigned regno; - unsigned regno2; - poly_int64 offset; -@@ -8888,13 +8960,13 @@ aarch64_restore_callee_saves (poly_int64 start_offset, unsigned start, - rtx reg, mem; - - if (skip_wb -- && (regno == cfun->machine->frame.wb_pop_candidate1 -- || regno == cfun->machine->frame.wb_pop_candidate2)) -+ && (regno == frame.wb_pop_candidate1 -+ || regno == frame.wb_pop_candidate2)) - continue; - - machine_mode mode = aarch64_reg_save_mode (regno); - reg = gen_rtx_REG (mode, regno); -- offset = start_offset + cfun->machine->frame.reg_offset[regno]; -+ offset = frame.reg_offset[regno] - bytes_below_sp; - rtx base_rtx = stack_pointer_rtx; - if (mode == VNx2DImode && BYTES_BIG_ENDIAN) - aarch64_adjust_sve_callee_save_base (mode, base_rtx, anchor_reg, -@@ -8905,8 +8977,7 @@ aarch64_restore_callee_saves (poly_int64 start_offset, unsigned start, - && (regno2 = aarch64_next_callee_save (regno + 1, limit)) <= limit - && !cfun->machine->reg_is_wrapped_separately[regno2] - && known_eq (GET_MODE_SIZE (mode), -- cfun->machine->frame.reg_offset[regno2] -- - cfun->machine->frame.reg_offset[regno])) -+ frame.reg_offset[regno2] - frame.reg_offset[regno])) - { - rtx reg2 = gen_rtx_REG (mode, regno2); - rtx mem2; -@@ -9011,6 +9082,7 @@ offset_12bit_unsigned_scaled_p (machine_mode mode, poly_int64 offset) - static sbitmap - aarch64_get_separate_components (void) - { -+ aarch64_frame &frame = cfun->machine->frame; - sbitmap components = sbitmap_alloc (LAST_SAVED_REGNUM + 1); - bitmap_clear (components); - -@@ -9027,20 +9099,11 @@ aarch64_get_separate_components (void) - if (mode == VNx2DImode && BYTES_BIG_ENDIAN) - continue; - -- poly_int64 offset = cfun->machine->frame.reg_offset[regno]; -- -- /* If the register is saved in the first SVE save slot, we use -- it as a stack probe for -fstack-clash-protection. */ -- if (flag_stack_clash_protection -- && maybe_ne (cfun->machine->frame.below_hard_fp_saved_regs_size, 0) -- && known_eq (offset, 0)) -- continue; -+ poly_int64 offset = frame.reg_offset[regno]; - - /* Get the offset relative to the register we'll use. */ - if (frame_pointer_needed) -- offset -= cfun->machine->frame.below_hard_fp_saved_regs_size; -- else -- offset += crtl->outgoing_args_size; -+ offset -= frame.bytes_below_hard_fp; - - /* Check that we can access the stack slot of the register with one - direct load with no adjustments needed. */ -@@ -9057,11 +9120,11 @@ aarch64_get_separate_components (void) - /* If the spare predicate register used by big-endian SVE code - is call-preserved, it must be saved in the main prologue - before any saves that use it. */ -- if (cfun->machine->frame.spare_pred_reg != INVALID_REGNUM) -- bitmap_clear_bit (components, cfun->machine->frame.spare_pred_reg); -+ if (frame.spare_pred_reg != INVALID_REGNUM) -+ bitmap_clear_bit (components, frame.spare_pred_reg); - -- unsigned reg1 = cfun->machine->frame.wb_push_candidate1; -- unsigned reg2 = cfun->machine->frame.wb_push_candidate2; -+ unsigned reg1 = frame.wb_push_candidate1; -+ unsigned reg2 = frame.wb_push_candidate2; - /* If registers have been chosen to be stored/restored with - writeback don't interfere with them to avoid having to output explicit - stack adjustment instructions. */ -@@ -9072,6 +9135,13 @@ aarch64_get_separate_components (void) - - bitmap_clear_bit (components, LR_REGNUM); - bitmap_clear_bit (components, SP_REGNUM); -+ if (flag_stack_clash_protection) -+ { -+ if (frame.sve_save_and_probe != INVALID_REGNUM) -+ bitmap_clear_bit (components, frame.sve_save_and_probe); -+ if (frame.hard_fp_save_and_probe != INVALID_REGNUM) -+ bitmap_clear_bit (components, frame.hard_fp_save_and_probe); -+ } - - return components; - } -@@ -9170,6 +9240,7 @@ aarch64_get_next_set_bit (sbitmap bmp, unsigned int start) - static void - aarch64_process_components (sbitmap components, bool prologue_p) - { -+ aarch64_frame &frame = cfun->machine->frame; - rtx ptr_reg = gen_rtx_REG (Pmode, frame_pointer_needed - ? HARD_FRAME_POINTER_REGNUM - : STACK_POINTER_REGNUM); -@@ -9184,11 +9255,9 @@ aarch64_process_components (sbitmap components, bool prologue_p) - machine_mode mode = aarch64_reg_save_mode (regno); - - rtx reg = gen_rtx_REG (mode, regno); -- poly_int64 offset = cfun->machine->frame.reg_offset[regno]; -+ poly_int64 offset = frame.reg_offset[regno]; - if (frame_pointer_needed) -- offset -= cfun->machine->frame.below_hard_fp_saved_regs_size; -- else -- offset += crtl->outgoing_args_size; -+ offset -= frame.bytes_below_hard_fp; - - rtx addr = plus_constant (Pmode, ptr_reg, offset); - rtx mem = gen_frame_mem (mode, addr); -@@ -9211,14 +9280,14 @@ aarch64_process_components (sbitmap components, bool prologue_p) - break; - } - -- poly_int64 offset2 = cfun->machine->frame.reg_offset[regno2]; -+ poly_int64 offset2 = frame.reg_offset[regno2]; - /* The next register is not of the same class or its offset is not - mergeable with the current one into a pair. */ - if (aarch64_sve_mode_p (mode) - || !satisfies_constraint_Ump (mem) - || GP_REGNUM_P (regno) != GP_REGNUM_P (regno2) - || (crtl->abi->id () == ARM_PCS_SIMD && FP_REGNUM_P (regno)) -- || maybe_ne ((offset2 - cfun->machine->frame.reg_offset[regno]), -+ || maybe_ne ((offset2 - frame.reg_offset[regno]), - GET_MODE_SIZE (mode))) - { - insn = emit_insn (set); -@@ -9240,9 +9309,7 @@ aarch64_process_components (sbitmap components, bool prologue_p) - /* REGNO2 can be saved/restored in a pair with REGNO. */ - rtx reg2 = gen_rtx_REG (mode, regno2); - if (frame_pointer_needed) -- offset2 -= cfun->machine->frame.below_hard_fp_saved_regs_size; -- else -- offset2 += crtl->outgoing_args_size; -+ offset2 -= frame.bytes_below_hard_fp; - rtx addr2 = plus_constant (Pmode, ptr_reg, offset2); - rtx mem2 = gen_frame_mem (mode, addr2); - rtx set2 = prologue_p ? gen_rtx_SET (mem2, reg2) -@@ -9316,10 +9383,10 @@ aarch64_stack_clash_protection_alloca_probe_range (void) - registers. If POLY_SIZE is not large enough to require a probe this function - will only adjust the stack. When allocating the stack space - FRAME_RELATED_P is then used to indicate if the allocation is frame related. -- FINAL_ADJUSTMENT_P indicates whether we are allocating the outgoing -- arguments. If we are then we ensure that any allocation larger than the ABI -- defined buffer needs a probe so that the invariant of having a 1KB buffer is -- maintained. -+ FINAL_ADJUSTMENT_P indicates whether we are allocating the area below -+ the saved registers. If we are then we ensure that any allocation -+ larger than the ABI defined buffer needs a probe so that the -+ invariant of having a 1KB buffer is maintained. - - We emit barriers after each stack adjustment to prevent optimizations from - breaking the invariant that we never drop the stack more than a page. This -@@ -9335,45 +9402,26 @@ aarch64_allocate_and_probe_stack_space (rtx temp1, rtx temp2, - bool frame_related_p, - bool final_adjustment_p) - { -+ aarch64_frame &frame = cfun->machine->frame; - HOST_WIDE_INT guard_size - = 1 << param_stack_clash_protection_guard_size; - HOST_WIDE_INT guard_used_by_caller = STACK_CLASH_CALLER_GUARD; -+ HOST_WIDE_INT byte_sp_alignment = STACK_BOUNDARY / BITS_PER_UNIT; -+ gcc_assert (multiple_p (poly_size, byte_sp_alignment)); - HOST_WIDE_INT min_probe_threshold - = (final_adjustment_p -- ? guard_used_by_caller -+ ? guard_used_by_caller + byte_sp_alignment - : guard_size - guard_used_by_caller); -- /* When doing the final adjustment for the outgoing arguments, take into -- account any unprobed space there is above the current SP. There are -- two cases: -- -- - When saving SVE registers below the hard frame pointer, we force -- the lowest save to take place in the prologue before doing the final -- adjustment (i.e. we don't allow the save to be shrink-wrapped). -- This acts as a probe at SP, so there is no unprobed space. -- -- - When there are no SVE register saves, we use the store of the link -- register as a probe. We can't assume that LR was saved at position 0 -- though, so treat any space below it as unprobed. */ -- if (final_adjustment_p -- && known_eq (cfun->machine->frame.below_hard_fp_saved_regs_size, 0)) -- { -- poly_int64 lr_offset = cfun->machine->frame.reg_offset[LR_REGNUM]; -- if (known_ge (lr_offset, 0)) -- min_probe_threshold -= lr_offset.to_constant (); -- else -- gcc_assert (!flag_stack_clash_protection || known_eq (poly_size, 0)); -- } -- -- poly_int64 frame_size = cfun->machine->frame.frame_size; -+ poly_int64 frame_size = frame.frame_size; - - /* We should always have a positive probe threshold. */ - gcc_assert (min_probe_threshold > 0); - - if (flag_stack_clash_protection && !final_adjustment_p) - { -- poly_int64 initial_adjust = cfun->machine->frame.initial_adjust; -- poly_int64 sve_callee_adjust = cfun->machine->frame.sve_callee_adjust; -- poly_int64 final_adjust = cfun->machine->frame.final_adjust; -+ poly_int64 initial_adjust = frame.initial_adjust; -+ poly_int64 sve_callee_adjust = frame.sve_callee_adjust; -+ poly_int64 final_adjust = frame.final_adjust; - - if (known_eq (frame_size, 0)) - { -@@ -9527,7 +9575,7 @@ aarch64_allocate_and_probe_stack_space (rtx temp1, rtx temp2, - /* Handle any residuals. Residuals of at least MIN_PROBE_THRESHOLD have to - be probed. This maintains the requirement that each page is probed at - least once. For initial probing we probe only if the allocation is -- more than GUARD_SIZE - buffer, and for the outgoing arguments we probe -+ more than GUARD_SIZE - buffer, and below the saved registers we probe - if the amount is larger than buffer. GUARD_SIZE - buffer + buffer == - GUARD_SIZE. This works that for any allocation that is large enough to - trigger a probe here, we'll have at least one, and if they're not large -@@ -9537,16 +9585,12 @@ aarch64_allocate_and_probe_stack_space (rtx temp1, rtx temp2, - are still safe. */ - if (residual) - { -- HOST_WIDE_INT residual_probe_offset = guard_used_by_caller; -+ gcc_assert (guard_used_by_caller + byte_sp_alignment <= size); -+ - /* If we're doing final adjustments, and we've done any full page - allocations then any residual needs to be probed. */ - if (final_adjustment_p && rounded_size != 0) - min_probe_threshold = 0; -- /* If doing a small final adjustment, we always probe at offset 0. -- This is done to avoid issues when LR is not at position 0 or when -- the final adjustment is smaller than the probing offset. */ -- else if (final_adjustment_p && rounded_size == 0) -- residual_probe_offset = 0; - - aarch64_sub_sp (temp1, temp2, residual, frame_related_p); - if (residual >= min_probe_threshold) -@@ -9557,8 +9601,8 @@ aarch64_allocate_and_probe_stack_space (rtx temp1, rtx temp2, - HOST_WIDE_INT_PRINT_DEC " bytes, probing will be required." - "\n", residual); - -- emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx, -- residual_probe_offset)); -+ emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx, -+ guard_used_by_caller)); - emit_insn (gen_blockage ()); - } - } -@@ -9596,20 +9640,24 @@ aarch64_epilogue_uses (int regno) - | for register varargs | - | | - +-------------------------------+ -- | local variables | <-- frame_pointer_rtx -+ | local variables (1) | <-- frame_pointer_rtx - | | - +-------------------------------+ -- | padding | \ -- +-------------------------------+ | -- | callee-saved registers | | frame.saved_regs_size -- +-------------------------------+ | -- | LR' | | -- +-------------------------------+ | -- | FP' | | -- +-------------------------------+ |<- hard_frame_pointer_rtx (aligned) -- | SVE vector registers | | \ -- +-------------------------------+ | | below_hard_fp_saved_regs_size -- | SVE predicate registers | / / -+ | padding (1) | -+ +-------------------------------+ -+ | callee-saved registers | -+ +-------------------------------+ -+ | LR' | -+ +-------------------------------+ -+ | FP' | -+ +-------------------------------+ <-- hard_frame_pointer_rtx (aligned) -+ | SVE vector registers | -+ +-------------------------------+ -+ | SVE predicate registers | -+ +-------------------------------+ -+ | local variables (2) | -+ +-------------------------------+ -+ | padding (2) | - +-------------------------------+ - | dynamic allocation | - +-------------------------------+ -@@ -9620,6 +9668,9 @@ aarch64_epilogue_uses (int regno) - +-------------------------------+ - | | <-- stack_pointer_rtx (aligned) - -+ The regions marked (1) and (2) are mutually exclusive. (2) is used -+ when aarch64_save_regs_above_locals_p is true. -+ - Dynamic stack allocations via alloca() decrease stack_pointer_rtx - but leave frame_pointer_rtx and hard_frame_pointer_rtx - unchanged. -@@ -9634,8 +9685,8 @@ aarch64_epilogue_uses (int regno) - When probing is needed, we emit a probe at the start of the prologue - and every PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE bytes thereafter. - -- We have to track how much space has been allocated and the only stores -- to the stack we track as implicit probes are the FP/LR stores. -+ We can also use register saves as probes. These are stored in -+ sve_save_and_probe and hard_fp_save_and_probe. - - For outgoing arguments we probe if the size is larger than 1KB, such that - the ABI specified buffer is maintained for the next callee. -@@ -9662,17 +9713,15 @@ aarch64_epilogue_uses (int regno) - void - aarch64_expand_prologue (void) - { -- poly_int64 frame_size = cfun->machine->frame.frame_size; -- poly_int64 initial_adjust = cfun->machine->frame.initial_adjust; -- HOST_WIDE_INT callee_adjust = cfun->machine->frame.callee_adjust; -- poly_int64 final_adjust = cfun->machine->frame.final_adjust; -- poly_int64 callee_offset = cfun->machine->frame.callee_offset; -- poly_int64 sve_callee_adjust = cfun->machine->frame.sve_callee_adjust; -- poly_int64 below_hard_fp_saved_regs_size -- = cfun->machine->frame.below_hard_fp_saved_regs_size; -- unsigned reg1 = cfun->machine->frame.wb_push_candidate1; -- unsigned reg2 = cfun->machine->frame.wb_push_candidate2; -- bool emit_frame_chain = cfun->machine->frame.emit_frame_chain; -+ aarch64_frame &frame = cfun->machine->frame; -+ poly_int64 frame_size = frame.frame_size; -+ poly_int64 initial_adjust = frame.initial_adjust; -+ HOST_WIDE_INT callee_adjust = frame.callee_adjust; -+ poly_int64 final_adjust = frame.final_adjust; -+ poly_int64 sve_callee_adjust = frame.sve_callee_adjust; -+ unsigned reg1 = frame.wb_push_candidate1; -+ unsigned reg2 = frame.wb_push_candidate2; -+ bool emit_frame_chain = frame.emit_frame_chain; - rtx_insn *insn; - - if (flag_stack_clash_protection && known_eq (callee_adjust, 0)) -@@ -9703,7 +9752,7 @@ aarch64_expand_prologue (void) - } - - /* Push return address to shadow call stack. */ -- if (cfun->machine->frame.is_scs_enabled) -+ if (frame.is_scs_enabled) - emit_insn (gen_scs_push ()); - - if (flag_stack_usage_info) -@@ -9740,21 +9789,21 @@ aarch64_expand_prologue (void) - if (callee_adjust != 0) - aarch64_push_regs (reg1, reg2, callee_adjust); - -- /* The offset of the frame chain record (if any) from the current SP. */ -- poly_int64 chain_offset = (initial_adjust + callee_adjust -- - cfun->machine->frame.hard_fp_offset); -- gcc_assert (known_ge (chain_offset, 0)); -- -- /* The offset of the bottom of the save area from the current SP. */ -- poly_int64 saved_regs_offset = chain_offset - below_hard_fp_saved_regs_size; -+ /* The offset of the current SP from the bottom of the static frame. */ -+ poly_int64 bytes_below_sp = frame_size - initial_adjust - callee_adjust; - - if (emit_frame_chain) - { -+ /* The offset of the frame chain record (if any) from the current SP. */ -+ poly_int64 chain_offset = (initial_adjust + callee_adjust -+ - frame.bytes_above_hard_fp); -+ gcc_assert (known_ge (chain_offset, 0)); -+ - if (callee_adjust == 0) - { - reg1 = R29_REGNUM; - reg2 = R30_REGNUM; -- aarch64_save_callee_saves (saved_regs_offset, reg1, reg2, -+ aarch64_save_callee_saves (bytes_below_sp, reg1, reg2, - false, false); - } - else -@@ -9779,8 +9828,7 @@ aarch64_expand_prologue (void) - implicit. */ - if (!find_reg_note (insn, REG_CFA_ADJUST_CFA, NULL_RTX)) - { -- rtx src = plus_constant (Pmode, stack_pointer_rtx, -- callee_offset); -+ rtx src = plus_constant (Pmode, stack_pointer_rtx, chain_offset); - add_reg_note (insn, REG_CFA_ADJUST_CFA, - gen_rtx_SET (hard_frame_pointer_rtx, src)); - } -@@ -9795,7 +9843,7 @@ aarch64_expand_prologue (void) - emit_insn (gen_stack_tie (stack_pointer_rtx, hard_frame_pointer_rtx)); - } - -- aarch64_save_callee_saves (saved_regs_offset, R0_REGNUM, R30_REGNUM, -+ aarch64_save_callee_saves (bytes_below_sp, R0_REGNUM, R30_REGNUM, - callee_adjust != 0 || emit_frame_chain, - emit_frame_chain); - if (maybe_ne (sve_callee_adjust, 0)) -@@ -9805,18 +9853,21 @@ aarch64_expand_prologue (void) - aarch64_allocate_and_probe_stack_space (tmp1_rtx, tmp0_rtx, - sve_callee_adjust, - !frame_pointer_needed, false); -- saved_regs_offset += sve_callee_adjust; -+ bytes_below_sp -= sve_callee_adjust; - } -- aarch64_save_callee_saves (saved_regs_offset, P0_REGNUM, P15_REGNUM, -+ aarch64_save_callee_saves (bytes_below_sp, P0_REGNUM, P15_REGNUM, - false, emit_frame_chain); -- aarch64_save_callee_saves (saved_regs_offset, V0_REGNUM, V31_REGNUM, -+ aarch64_save_callee_saves (bytes_below_sp, V0_REGNUM, V31_REGNUM, - callee_adjust != 0 || emit_frame_chain, - emit_frame_chain); - - /* We may need to probe the final adjustment if it is larger than the guard - that is assumed by the called. */ -+ gcc_assert (known_eq (bytes_below_sp, final_adjust)); - aarch64_allocate_and_probe_stack_space (tmp1_rtx, tmp0_rtx, final_adjust, - !frame_pointer_needed, true); -+ if (emit_frame_chain && maybe_ne (final_adjust, 0)) -+ emit_insn (gen_stack_tie (stack_pointer_rtx, hard_frame_pointer_rtx)); - } - - /* Return TRUE if we can use a simple_return insn. -@@ -9845,16 +9896,15 @@ aarch64_use_return_insn_p (void) - void - aarch64_expand_epilogue (bool for_sibcall) - { -- poly_int64 initial_adjust = cfun->machine->frame.initial_adjust; -- HOST_WIDE_INT callee_adjust = cfun->machine->frame.callee_adjust; -- poly_int64 final_adjust = cfun->machine->frame.final_adjust; -- poly_int64 callee_offset = cfun->machine->frame.callee_offset; -- poly_int64 sve_callee_adjust = cfun->machine->frame.sve_callee_adjust; -- poly_int64 below_hard_fp_saved_regs_size -- = cfun->machine->frame.below_hard_fp_saved_regs_size; -- unsigned reg1 = cfun->machine->frame.wb_pop_candidate1; -- unsigned reg2 = cfun->machine->frame.wb_pop_candidate2; -- unsigned int last_gpr = (cfun->machine->frame.is_scs_enabled -+ aarch64_frame &frame = cfun->machine->frame; -+ poly_int64 initial_adjust = frame.initial_adjust; -+ HOST_WIDE_INT callee_adjust = frame.callee_adjust; -+ poly_int64 final_adjust = frame.final_adjust; -+ poly_int64 sve_callee_adjust = frame.sve_callee_adjust; -+ poly_int64 bytes_below_hard_fp = frame.bytes_below_hard_fp; -+ unsigned reg1 = frame.wb_pop_candidate1; -+ unsigned reg2 = frame.wb_pop_candidate2; -+ unsigned int last_gpr = (frame.is_scs_enabled - ? R29_REGNUM : R30_REGNUM); - rtx cfi_ops = NULL; - rtx_insn *insn; -@@ -9888,7 +9938,7 @@ aarch64_expand_epilogue (bool for_sibcall) - /* We need to add memory barrier to prevent read from deallocated stack. */ - bool need_barrier_p - = maybe_ne (get_frame_size () -- + cfun->machine->frame.saved_varargs_size, 0); -+ + frame.saved_varargs_size, 0); - - /* Emit a barrier to prevent loads from a deallocated stack. */ - if (maybe_gt (final_adjust, crtl->outgoing_args_size) -@@ -9909,7 +9959,7 @@ aarch64_expand_epilogue (bool for_sibcall) - is restored on the instruction doing the writeback. */ - aarch64_add_offset (Pmode, stack_pointer_rtx, - hard_frame_pointer_rtx, -- -callee_offset - below_hard_fp_saved_regs_size, -+ -bytes_below_hard_fp + final_adjust, - tmp1_rtx, tmp0_rtx, callee_adjust == 0); - else - /* The case where we need to re-use the register here is very rare, so -@@ -9919,9 +9969,9 @@ aarch64_expand_epilogue (bool for_sibcall) - - /* Restore the vector registers before the predicate registers, - so that we can use P4 as a temporary for big-endian SVE frames. */ -- aarch64_restore_callee_saves (callee_offset, V0_REGNUM, V31_REGNUM, -+ aarch64_restore_callee_saves (final_adjust, V0_REGNUM, V31_REGNUM, - callee_adjust != 0, &cfi_ops); -- aarch64_restore_callee_saves (callee_offset, P0_REGNUM, P15_REGNUM, -+ aarch64_restore_callee_saves (final_adjust, P0_REGNUM, P15_REGNUM, - false, &cfi_ops); - if (maybe_ne (sve_callee_adjust, 0)) - aarch64_add_sp (NULL_RTX, NULL_RTX, sve_callee_adjust, true); -@@ -9929,7 +9979,7 @@ aarch64_expand_epilogue (bool for_sibcall) - /* When shadow call stack is enabled, the scs_pop in the epilogue will - restore x30, we don't need to restore x30 again in the traditional - way. */ -- aarch64_restore_callee_saves (callee_offset - sve_callee_adjust, -+ aarch64_restore_callee_saves (final_adjust + sve_callee_adjust, - R0_REGNUM, last_gpr, - callee_adjust != 0, &cfi_ops); - -@@ -9969,7 +10019,7 @@ aarch64_expand_epilogue (bool for_sibcall) - } - - /* Pop return address from shadow call stack. */ -- if (cfun->machine->frame.is_scs_enabled) -+ if (frame.is_scs_enabled) - { - machine_mode mode = aarch64_reg_save_mode (R30_REGNUM); - rtx reg = gen_rtx_REG (mode, R30_REGNUM); -@@ -12564,24 +12614,24 @@ aarch64_can_eliminate (const int from ATTRIBUTE_UNUSED, const int to) - poly_int64 - aarch64_initial_elimination_offset (unsigned from, unsigned to) - { -+ aarch64_frame &frame = cfun->machine->frame; -+ - if (to == HARD_FRAME_POINTER_REGNUM) - { - if (from == ARG_POINTER_REGNUM) -- return cfun->machine->frame.hard_fp_offset; -+ return frame.bytes_above_hard_fp; - - if (from == FRAME_POINTER_REGNUM) -- return cfun->machine->frame.hard_fp_offset -- - cfun->machine->frame.locals_offset; -+ return frame.bytes_above_hard_fp - frame.bytes_above_locals; - } - - if (to == STACK_POINTER_REGNUM) - { - if (from == FRAME_POINTER_REGNUM) -- return cfun->machine->frame.frame_size -- - cfun->machine->frame.locals_offset; -+ return frame.frame_size - frame.bytes_above_locals; - } - -- return cfun->machine->frame.frame_size; -+ return frame.frame_size; - } - - -@@ -24686,10 +24736,11 @@ aarch64_copy_one_block_and_progress_pointers (rtx *src, rtx *dst, - *dst = aarch64_progress_pointer (*dst); - } - --/* Expand a cpymem using the MOPS extension. OPERANDS are taken -- from the cpymem pattern. Return true iff we succeeded. */ --static bool --aarch64_expand_cpymem_mops (rtx *operands) -+/* Expand a cpymem/movmem using the MOPS extension. OPERANDS are taken -+ from the cpymem/movmem pattern. IS_MEMMOVE is true if this is a memmove -+ rather than memcpy. Return true iff we succeeded. */ -+bool -+aarch64_expand_cpymem_mops (rtx *operands, bool is_memmove = false) - { - if (!TARGET_MOPS) - return false; -@@ -24701,8 +24752,10 @@ aarch64_expand_cpymem_mops (rtx *operands) - rtx dst_mem = replace_equiv_address (operands[0], dst_addr); - rtx src_mem = replace_equiv_address (operands[1], src_addr); - rtx sz_reg = copy_to_mode_reg (DImode, operands[2]); -- emit_insn (gen_aarch64_cpymemdi (dst_mem, src_mem, sz_reg)); -- -+ if (is_memmove) -+ emit_insn (gen_aarch64_movmemdi (dst_mem, src_mem, sz_reg)); -+ else -+ emit_insn (gen_aarch64_cpymemdi (dst_mem, src_mem, sz_reg)); - return true; - } - -@@ -25981,11 +26034,9 @@ aarch64_operands_ok_for_ldpstp (rtx *operands, bool load, - gcc_assert (known_eq (GET_MODE_SIZE (GET_MODE (mem_1)), - GET_MODE_SIZE (GET_MODE (mem_2)))); - -- /* One of the memory accesses must be a mempair operand. -- If it is not the first one, they need to be swapped by the -- peephole. */ -- if (!aarch64_mem_pair_operand (mem_1, GET_MODE (mem_1)) -- && !aarch64_mem_pair_operand (mem_2, GET_MODE (mem_2))) -+ /* The lower memory access must be a mem-pair operand. */ -+ rtx lower_mem = reversed ? mem_2 : mem_1; -+ if (!aarch64_mem_pair_operand (lower_mem, GET_MODE (lower_mem))) - return false; - - if (REG_P (reg_1) && FP_REGNUM_P (REGNO (reg_1))) -diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h -index 6834c3e9922..01f7751bc78 100644 ---- a/gcc/config/aarch64/aarch64.h -+++ b/gcc/config/aarch64/aarch64.h -@@ -860,6 +860,9 @@ extern enum aarch64_processor aarch64_tune; - #ifdef HAVE_POLY_INT_H - struct GTY (()) aarch64_frame - { -+ /* The offset from the bottom of the static frame (the bottom of the -+ outgoing arguments) of each register save slot, or -2 if no save is -+ needed. */ - poly_int64 reg_offset[LAST_SAVED_REGNUM + 1]; - - /* The number of extra stack bytes taken up by register varargs. -@@ -868,25 +871,28 @@ struct GTY (()) aarch64_frame - STACK_BOUNDARY. */ - HOST_WIDE_INT saved_varargs_size; - -- /* The size of the callee-save registers with a slot in REG_OFFSET. */ -- poly_int64 saved_regs_size; -+ /* The number of bytes between the bottom of the static frame (the bottom -+ of the outgoing arguments) and the bottom of the register save area. -+ This value is always a multiple of STACK_BOUNDARY. */ -+ poly_int64 bytes_below_saved_regs; - -- /* The size of the callee-save registers with a slot in REG_OFFSET that -- are saved below the hard frame pointer. */ -- poly_int64 below_hard_fp_saved_regs_size; -+ /* The number of bytes between the bottom of the static frame (the bottom -+ of the outgoing arguments) and the hard frame pointer. This value is -+ always a multiple of STACK_BOUNDARY. */ -+ poly_int64 bytes_below_hard_fp; - -- /* Offset from the base of the frame (incomming SP) to the -- top of the locals area. This value is always a multiple of -+ /* The number of bytes between the top of the locals area and the top -+ of the frame (the incomming SP). This value is always a multiple of - STACK_BOUNDARY. */ -- poly_int64 locals_offset; -+ poly_int64 bytes_above_locals; - -- /* Offset from the base of the frame (incomming SP) to the -- hard_frame_pointer. This value is always a multiple of -+ /* The number of bytes between the hard_frame_pointer and the top of -+ the frame (the incomming SP). This value is always a multiple of - STACK_BOUNDARY. */ -- poly_int64 hard_fp_offset; -+ poly_int64 bytes_above_hard_fp; - -- /* The size of the frame. This value is the offset from base of the -- frame (incomming SP) to the stack_pointer. This value is always -+ /* The size of the frame, i.e. the number of bytes between the bottom -+ of the outgoing arguments and the incoming SP. This value is always - a multiple of STACK_BOUNDARY. */ - poly_int64 frame_size; - -@@ -897,10 +903,6 @@ struct GTY (()) aarch64_frame - It is zero when no push is used. */ - HOST_WIDE_INT callee_adjust; - -- /* The offset from SP to the callee-save registers after initial_adjust. -- It may be non-zero if no push is used (ie. callee_adjust == 0). */ -- poly_int64 callee_offset; -- - /* The size of the stack adjustment before saving or after restoring - SVE registers. */ - poly_int64 sve_callee_adjust; -@@ -948,6 +950,14 @@ struct GTY (()) aarch64_frame - This is the register they should use. */ - unsigned spare_pred_reg; - -+ /* An SVE register that is saved below the hard frame pointer and that acts -+ as a probe for later allocations, or INVALID_REGNUM if none. */ -+ unsigned sve_save_and_probe; -+ -+ /* A register that is saved at the hard frame pointer and that acts -+ as a probe for later allocations, or INVALID_REGNUM if none. */ -+ unsigned hard_fp_save_and_probe; -+ - bool laid_out; - - /* True if shadow call stack should be enabled for the current function. */ -diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md -index d24c8afcfa6..fb100bdf6b3 100644 ---- a/gcc/config/aarch64/aarch64.md -+++ b/gcc/config/aarch64/aarch64.md -@@ -1159,9 +1159,27 @@ - { - int i; - -+ /* Generate a PARALLEL that contains all of the register results. -+ The offsets are somewhat arbitrary, since we don't know the -+ actual return type. The main thing we need to avoid is having -+ overlapping byte ranges, since those might give the impression -+ that two registers are known to have data in common. */ -+ rtvec rets = rtvec_alloc (XVECLEN (operands[2], 0)); -+ poly_int64 offset = 0; -+ for (i = 0; i < XVECLEN (operands[2], 0); i++) -+ { -+ rtx reg = SET_SRC (XVECEXP (operands[2], 0, i)); -+ gcc_assert (REG_P (reg)); -+ rtx offset_rtx = gen_int_mode (offset, Pmode); -+ rtx piece = gen_rtx_EXPR_LIST (VOIDmode, reg, offset_rtx); -+ RTVEC_ELT (rets, i) = piece; -+ offset += GET_MODE_SIZE (GET_MODE (reg)); -+ } -+ rtx ret = gen_rtx_PARALLEL (VOIDmode, rets); -+ - /* Untyped calls always use the default ABI. It's only possible to use - ABI variants if we know the type of the target function. */ -- emit_call_insn (gen_call (operands[0], const0_rtx, const0_rtx)); -+ emit_call_insn (gen_call_value (ret, operands[0], const0_rtx, const0_rtx)); - - for (i = 0; i < XVECLEN (operands[2], 0); i++) - { -@@ -1627,7 +1645,22 @@ - } - ) - --(define_insn "aarch64_movmemdi" -+(define_expand "aarch64_movmemdi" -+ [(parallel -+ [(set (match_operand 2) (const_int 0)) -+ (clobber (match_dup 3)) -+ (clobber (match_dup 4)) -+ (clobber (reg:CC CC_REGNUM)) -+ (set (match_operand 0) -+ (unspec:BLK [(match_operand 1) (match_dup 2)] UNSPEC_MOVMEM))])] -+ "TARGET_MOPS" -+ { -+ operands[3] = XEXP (operands[0], 0); -+ operands[4] = XEXP (operands[1], 0); -+ } -+) -+ -+(define_insn "*aarch64_movmemdi" - [(parallel [ - (set (match_operand:DI 2 "register_operand" "+&r") (const_int 0)) - (clobber (match_operand:DI 0 "register_operand" "+&r")) -@@ -1660,17 +1693,9 @@ - && INTVAL (sz_reg) < aarch64_mops_memmove_size_threshold) - FAIL; - -- rtx addr_dst = XEXP (operands[0], 0); -- rtx addr_src = XEXP (operands[1], 0); -- -- if (!REG_P (sz_reg)) -- sz_reg = force_reg (DImode, sz_reg); -- if (!REG_P (addr_dst)) -- addr_dst = force_reg (DImode, addr_dst); -- if (!REG_P (addr_src)) -- addr_src = force_reg (DImode, addr_src); -- emit_insn (gen_aarch64_movmemdi (addr_dst, addr_src, sz_reg)); -- DONE; -+ if (aarch64_expand_cpymem_mops (operands, true)) -+ DONE; -+ FAIL; - } - ) - -@@ -7668,9 +7693,9 @@ - ;; Load/Store 64-bit (LS64) instructions. - (define_insn "ld64b" - [(set (match_operand:V8DI 0 "register_operand" "=r") -- (unspec_volatile:V8DI -- [(mem:V8DI (match_operand:DI 1 "register_operand" "r"))] -- UNSPEC_LD64B) -+ (unspec_volatile:V8DI -+ [(mem:V8DI (match_operand:DI 1 "register_operand" "r"))] -+ UNSPEC_LD64B) - )] - "TARGET_LS64" - "ld64b\\t%0, [%1]" -@@ -7678,9 +7703,9 @@ - ) - - (define_insn "st64b" -- [(set (mem:V8DI (match_operand:DI 0 "register_operand" "=r")) -- (unspec_volatile:V8DI [(match_operand:V8DI 1 "register_operand" "r")] -- UNSPEC_ST64B) -+ [(set (mem:V8DI (match_operand:DI 0 "register_operand" "r")) -+ (unspec_volatile:V8DI [(match_operand:V8DI 1 "register_operand" "r")] -+ UNSPEC_ST64B) - )] - "TARGET_LS64" - "st64b\\t%1, [%0]" -@@ -7689,10 +7714,10 @@ - - (define_insn "st64bv" - [(set (match_operand:DI 0 "register_operand" "=r") -- (unspec_volatile:DI [(const_int 0)] UNSPEC_ST64BV_RET)) -+ (unspec_volatile:DI [(const_int 0)] UNSPEC_ST64BV_RET)) - (set (mem:V8DI (match_operand:DI 1 "register_operand" "r")) -- (unspec_volatile:V8DI [(match_operand:V8DI 2 "register_operand" "r")] -- UNSPEC_ST64BV) -+ (unspec_volatile:V8DI [(match_operand:V8DI 2 "register_operand" "r")] -+ UNSPEC_ST64BV) - )] - "TARGET_LS64" - "st64bv\\t%0, %2, [%1]" -@@ -7701,10 +7726,10 @@ - - (define_insn "st64bv0" - [(set (match_operand:DI 0 "register_operand" "=r") -- (unspec_volatile:DI [(const_int 0)] UNSPEC_ST64BV0_RET)) -+ (unspec_volatile:DI [(const_int 0)] UNSPEC_ST64BV0_RET)) - (set (mem:V8DI (match_operand:DI 1 "register_operand" "r")) -- (unspec_volatile:V8DI [(match_operand:V8DI 2 "register_operand" "r")] -- UNSPEC_ST64BV0) -+ (unspec_volatile:V8DI [(match_operand:V8DI 2 "register_operand" "r")] -+ UNSPEC_ST64BV0) - )] - "TARGET_LS64" - "st64bv0\\t%0, %2, [%1]" -diff --git a/gcc/config/aarch64/arm_acle.h b/gcc/config/aarch64/arm_acle.h -index d26e269cb84..24c02d4fdf3 100644 ---- a/gcc/config/aarch64/arm_acle.h -+++ b/gcc/config/aarch64/arm_acle.h -@@ -270,40 +270,7 @@ __ttest (void) - #endif - - #ifdef __ARM_FEATURE_LS64 --#pragma GCC push_options --#pragma GCC target ("+nothing+ls64") -- - typedef __arm_data512_t data512_t; -- --__extension__ extern __inline data512_t --__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_ld64b (const void *__addr) --{ -- return __builtin_aarch64_ld64b (__addr); --} -- --__extension__ extern __inline void --__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_st64b (void *__addr, data512_t __value) --{ -- __builtin_aarch64_st64b (__addr, __value); --} -- --__extension__ extern __inline uint64_t --__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_st64bv (void *__addr, data512_t __value) --{ -- return __builtin_aarch64_st64bv (__addr, __value); --} -- --__extension__ extern __inline uint64_t --__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_st64bv0 (void *__addr, data512_t __value) --{ -- return __builtin_aarch64_st64bv0 (__addr, __value); --} -- --#pragma GCC pop_options - #endif - - #pragma GCC push_options -diff --git a/gcc/config/alpha/alpha.cc b/gcc/config/alpha/alpha.cc -index 0a85e66fa89..06c8356fc4e 100644 ---- a/gcc/config/alpha/alpha.cc -+++ b/gcc/config/alpha/alpha.cc -@@ -2070,6 +2070,8 @@ static rtx - alpha_emit_set_long_const (rtx target, HOST_WIDE_INT c1) - { - HOST_WIDE_INT d1, d2, d3, d4; -+ machine_mode mode = GET_MODE (target); -+ rtx orig_target = target; - - /* Decompose the entire word */ - -@@ -2082,6 +2084,9 @@ alpha_emit_set_long_const (rtx target, HOST_WIDE_INT c1) - d4 = ((c1 & 0xffffffff) ^ 0x80000000) - 0x80000000; - gcc_assert (c1 == d4); - -+ if (mode != DImode) -+ target = gen_lowpart (DImode, target); -+ - /* Construct the high word */ - if (d4) - { -@@ -2101,7 +2106,7 @@ alpha_emit_set_long_const (rtx target, HOST_WIDE_INT c1) - if (d1) - emit_move_insn (target, gen_rtx_PLUS (DImode, target, GEN_INT (d1))); - -- return target; -+ return orig_target; - } - - /* Given an integral CONST_INT or CONST_VECTOR, return the low 64 bits. */ -diff --git a/gcc/config/arm/arm-builtins.cc b/gcc/config/arm/arm-builtins.cc -index 36a40a1dc80..557d6f68fd1 100644 ---- a/gcc/config/arm/arm-builtins.cc -+++ b/gcc/config/arm/arm-builtins.cc -@@ -97,7 +97,7 @@ arm_binop_imm_qualifiers[SIMD_MAX_BUILTIN_ARGS] - /* T (T, unsigned immediate). */ - static enum arm_type_qualifiers - arm_sat_binop_imm_qualifiers[SIMD_MAX_BUILTIN_ARGS] -- = { qualifier_unsigned, qualifier_none, qualifier_unsigned_immediate }; -+ = { qualifier_none, qualifier_none, qualifier_unsigned_immediate }; - #define SAT_BINOP_UNSIGNED_IMM_QUALIFIERS \ - (arm_sat_binop_imm_qualifiers) - -diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md -index 60468f6182c..912b939f886 100644 ---- a/gcc/config/arm/arm.md -+++ b/gcc/config/arm/arm.md -@@ -7466,7 +7466,7 @@ - && !arm_const_double_rtx (operands[1]) - && !(TARGET_VFP_DOUBLE && vfp3_const_double_rtx (operands[1]))) - { -- rtx clobreg = gen_reg_rtx (DFmode); -+ rtx clobreg = gen_reg_rtx (DImode); - emit_insn (gen_no_literal_pool_df_immediate (operands[0], operands[1], - clobreg)); - DONE; -diff --git a/gcc/config/arm/arm_mve.h b/gcc/config/arm/arm_mve.h -index 073e3711623..c359e9c6336 100644 ---- a/gcc/config/arm/arm_mve.h -+++ b/gcc/config/arm/arm_mve.h -@@ -9675,42 +9675,42 @@ __arm_vabdq_m_u16 (uint16x8_t __inactive, uint16x8_t __a, uint16x8_t __b, mve_pr - - __extension__ extern __inline int8x16_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_vaddq_m_n_s8 (int8x16_t __inactive, int8x16_t __a, int __b, mve_pred16_t __p) -+__arm_vaddq_m_n_s8 (int8x16_t __inactive, int8x16_t __a, int8_t __b, mve_pred16_t __p) - { - return __builtin_mve_vaddq_m_n_sv16qi (__inactive, __a, __b, __p); - } - - __extension__ extern __inline int32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_vaddq_m_n_s32 (int32x4_t __inactive, int32x4_t __a, int __b, mve_pred16_t __p) -+__arm_vaddq_m_n_s32 (int32x4_t __inactive, int32x4_t __a, int32_t __b, mve_pred16_t __p) - { - return __builtin_mve_vaddq_m_n_sv4si (__inactive, __a, __b, __p); - } - - __extension__ extern __inline int16x8_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_vaddq_m_n_s16 (int16x8_t __inactive, int16x8_t __a, int __b, mve_pred16_t __p) -+__arm_vaddq_m_n_s16 (int16x8_t __inactive, int16x8_t __a, int16_t __b, mve_pred16_t __p) - { - return __builtin_mve_vaddq_m_n_sv8hi (__inactive, __a, __b, __p); - } - - __extension__ extern __inline uint8x16_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_vaddq_m_n_u8 (uint8x16_t __inactive, uint8x16_t __a, int __b, mve_pred16_t __p) -+__arm_vaddq_m_n_u8 (uint8x16_t __inactive, uint8x16_t __a, uint8_t __b, mve_pred16_t __p) - { - return __builtin_mve_vaddq_m_n_uv16qi (__inactive, __a, __b, __p); - } - - __extension__ extern __inline uint32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_vaddq_m_n_u32 (uint32x4_t __inactive, uint32x4_t __a, int __b, mve_pred16_t __p) -+__arm_vaddq_m_n_u32 (uint32x4_t __inactive, uint32x4_t __a, uint32_t __b, mve_pred16_t __p) - { - return __builtin_mve_vaddq_m_n_uv4si (__inactive, __a, __b, __p); - } - - __extension__ extern __inline uint16x8_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_vaddq_m_n_u16 (uint16x8_t __inactive, uint16x8_t __a, int __b, mve_pred16_t __p) -+__arm_vaddq_m_n_u16 (uint16x8_t __inactive, uint16x8_t __a, uint16_t __b, mve_pred16_t __p) - { - return __builtin_mve_vaddq_m_n_uv8hi (__inactive, __a, __b, __p); - } -@@ -16055,7 +16055,7 @@ __extension__ extern __inline int32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vadcq_s32 (int32x4_t __a, int32x4_t __b, unsigned * __carry) - { -- __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | (*__carry << 29)); -+ __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | ((*__carry & 0x1u) << 29)); - int32x4_t __res = __builtin_mve_vadcq_sv4si (__a, __b); - *__carry = (__builtin_arm_get_fpscr_nzcvqc () >> 29) & 0x1u; - return __res; -@@ -16065,7 +16065,7 @@ __extension__ extern __inline uint32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vadcq_u32 (uint32x4_t __a, uint32x4_t __b, unsigned * __carry) - { -- __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | (*__carry << 29)); -+ __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | ((*__carry & 0x1u) << 29)); - uint32x4_t __res = __builtin_mve_vadcq_uv4si (__a, __b); - *__carry = (__builtin_arm_get_fpscr_nzcvqc () >> 29) & 0x1u; - return __res; -@@ -16075,7 +16075,7 @@ __extension__ extern __inline int32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vadcq_m_s32 (int32x4_t __inactive, int32x4_t __a, int32x4_t __b, unsigned * __carry, mve_pred16_t __p) - { -- __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | (*__carry << 29)); -+ __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | ((*__carry & 0x1u) << 29)); - int32x4_t __res = __builtin_mve_vadcq_m_sv4si (__inactive, __a, __b, __p); - *__carry = (__builtin_arm_get_fpscr_nzcvqc () >> 29) & 0x1u; - return __res; -@@ -16085,7 +16085,7 @@ __extension__ extern __inline uint32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vadcq_m_u32 (uint32x4_t __inactive, uint32x4_t __a, uint32x4_t __b, unsigned * __carry, mve_pred16_t __p) - { -- __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | (*__carry << 29)); -+ __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | ((*__carry & 0x1u) << 29)); - uint32x4_t __res = __builtin_mve_vadcq_m_uv4si (__inactive, __a, __b, __p); - *__carry = (__builtin_arm_get_fpscr_nzcvqc () >> 29) & 0x1u; - return __res; -@@ -16131,7 +16131,7 @@ __extension__ extern __inline int32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vsbcq_s32 (int32x4_t __a, int32x4_t __b, unsigned * __carry) - { -- __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | (*__carry << 29)); -+ __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | ((*__carry & 0x1u) << 29)); - int32x4_t __res = __builtin_mve_vsbcq_sv4si (__a, __b); - *__carry = (__builtin_arm_get_fpscr_nzcvqc () >> 29) & 0x1u; - return __res; -@@ -16141,7 +16141,7 @@ __extension__ extern __inline uint32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vsbcq_u32 (uint32x4_t __a, uint32x4_t __b, unsigned * __carry) - { -- __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | (*__carry << 29)); -+ __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | ((*__carry & 0x1u) << 29)); - uint32x4_t __res = __builtin_mve_vsbcq_uv4si (__a, __b); - *__carry = (__builtin_arm_get_fpscr_nzcvqc () >> 29) & 0x1u; - return __res; -@@ -16151,7 +16151,7 @@ __extension__ extern __inline int32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vsbcq_m_s32 (int32x4_t __inactive, int32x4_t __a, int32x4_t __b, unsigned * __carry, mve_pred16_t __p) - { -- __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | (*__carry << 29)); -+ __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | ((*__carry & 0x1u) << 29)); - int32x4_t __res = __builtin_mve_vsbcq_m_sv4si (__inactive, __a, __b, __p); - *__carry = (__builtin_arm_get_fpscr_nzcvqc () >> 29) & 0x1u; - return __res; -@@ -16161,7 +16161,7 @@ __extension__ extern __inline uint32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vsbcq_m_u32 (uint32x4_t __inactive, uint32x4_t __a, uint32x4_t __b, unsigned * __carry, mve_pred16_t __p) - { -- __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | (*__carry << 29)); -+ __builtin_arm_set_fpscr_nzcvqc((__builtin_arm_get_fpscr_nzcvqc () & ~0x20000000u) | ((*__carry & 0x1u) << 29)); - uint32x4_t __res = __builtin_mve_vsbcq_m_uv4si (__inactive, __a, __b, __p); - *__carry = (__builtin_arm_get_fpscr_nzcvqc () >> 29) & 0x1u; - return __res; -@@ -16171,14 +16171,14 @@ __extension__ extern __inline void - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vst1q_p_u8 (uint8_t * __addr, uint8x16_t __value, mve_pred16_t __p) - { -- return vstrbq_p_u8 (__addr, __value, __p); -+ return __arm_vstrbq_p_u8 (__addr, __value, __p); - } - - __extension__ extern __inline void - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vst1q_p_s8 (int8_t * __addr, int8x16_t __value, mve_pred16_t __p) - { -- return vstrbq_p_s8 (__addr, __value, __p); -+ return __arm_vstrbq_p_s8 (__addr, __value, __p); - } - - __extension__ extern __inline void -@@ -16203,14 +16203,14 @@ __extension__ extern __inline uint8x16_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vld1q_z_u8 (uint8_t const *__base, mve_pred16_t __p) - { -- return vldrbq_z_u8 ( __base, __p); -+ return __arm_vldrbq_z_u8 ( __base, __p); - } - - __extension__ extern __inline int8x16_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vld1q_z_s8 (int8_t const *__base, mve_pred16_t __p) - { -- return vldrbq_z_s8 ( __base, __p); -+ return __arm_vldrbq_z_s8 ( __base, __p); - } - - __extension__ extern __inline int8x16x2_t -@@ -16253,14 +16253,14 @@ __extension__ extern __inline void - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vst1q_p_u16 (uint16_t * __addr, uint16x8_t __value, mve_pred16_t __p) - { -- return vstrhq_p_u16 (__addr, __value, __p); -+ return __arm_vstrhq_p_u16 (__addr, __value, __p); - } - - __extension__ extern __inline void - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vst1q_p_s16 (int16_t * __addr, int16x8_t __value, mve_pred16_t __p) - { -- return vstrhq_p_s16 (__addr, __value, __p); -+ return __arm_vstrhq_p_s16 (__addr, __value, __p); - } - - __extension__ extern __inline void -@@ -16285,14 +16285,14 @@ __extension__ extern __inline uint16x8_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vld1q_z_u16 (uint16_t const *__base, mve_pred16_t __p) - { -- return vldrhq_z_u16 ( __base, __p); -+ return __arm_vldrhq_z_u16 ( __base, __p); - } - - __extension__ extern __inline int16x8_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vld1q_z_s16 (int16_t const *__base, mve_pred16_t __p) - { -- return vldrhq_z_s16 ( __base, __p); -+ return __arm_vldrhq_z_s16 ( __base, __p); - } - - __extension__ extern __inline int16x8x2_t -@@ -16335,14 +16335,14 @@ __extension__ extern __inline void - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vst1q_p_u32 (uint32_t * __addr, uint32x4_t __value, mve_pred16_t __p) - { -- return vstrwq_p_u32 (__addr, __value, __p); -+ return __arm_vstrwq_p_u32 (__addr, __value, __p); - } - - __extension__ extern __inline void - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vst1q_p_s32 (int32_t * __addr, int32x4_t __value, mve_pred16_t __p) - { -- return vstrwq_p_s32 (__addr, __value, __p); -+ return __arm_vstrwq_p_s32 (__addr, __value, __p); - } - - __extension__ extern __inline void -@@ -16367,14 +16367,14 @@ __extension__ extern __inline uint32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vld1q_z_u32 (uint32_t const *__base, mve_pred16_t __p) - { -- return vldrwq_z_u32 ( __base, __p); -+ return __arm_vldrwq_z_u32 ( __base, __p); - } - - __extension__ extern __inline int32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vld1q_z_s32 (int32_t const *__base, mve_pred16_t __p) - { -- return vldrwq_z_s32 ( __base, __p); -+ return __arm_vldrwq_z_s32 ( __base, __p); - } - - __extension__ extern __inline int32x4x2_t -@@ -19837,7 +19837,7 @@ __extension__ extern __inline float16x8_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vld1q_z_f16 (float16_t const *__base, mve_pred16_t __p) - { -- return vldrhq_z_f16 (__base, __p); -+ return __arm_vldrhq_z_f16 (__base, __p); - } - - __extension__ extern __inline void -@@ -19853,7 +19853,7 @@ __extension__ extern __inline void - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vst1q_p_f16 (float16_t * __addr, float16x8_t __value, mve_pred16_t __p) - { -- return vstrhq_p_f16 (__addr, __value, __p); -+ return __arm_vstrhq_p_f16 (__addr, __value, __p); - } - - __extension__ extern __inline float32x4x4_t -@@ -19878,7 +19878,7 @@ __extension__ extern __inline float32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vld1q_z_f32 (float32_t const *__base, mve_pred16_t __p) - { -- return vldrwq_z_f32 (__base, __p); -+ return __arm_vldrwq_z_f32 (__base, __p); - } - - __extension__ extern __inline void -@@ -19894,7 +19894,7 @@ __extension__ extern __inline void - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) - __arm_vst1q_p_f32 (float32_t * __addr, float32x4_t __value, mve_pred16_t __p) - { -- return vstrwq_p_f32 (__addr, __value, __p); -+ return __arm_vstrwq_p_f32 (__addr, __value, __p); - } - - __extension__ extern __inline float16x8_t -@@ -26417,42 +26417,42 @@ __arm_vabdq_m (uint16x8_t __inactive, uint16x8_t __a, uint16x8_t __b, mve_pred16 - - __extension__ extern __inline int8x16_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_vaddq_m (int8x16_t __inactive, int8x16_t __a, int __b, mve_pred16_t __p) -+__arm_vaddq_m (int8x16_t __inactive, int8x16_t __a, int8_t __b, mve_pred16_t __p) - { - return __arm_vaddq_m_n_s8 (__inactive, __a, __b, __p); - } - - __extension__ extern __inline int32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_vaddq_m (int32x4_t __inactive, int32x4_t __a, int __b, mve_pred16_t __p) -+__arm_vaddq_m (int32x4_t __inactive, int32x4_t __a, int32_t __b, mve_pred16_t __p) - { - return __arm_vaddq_m_n_s32 (__inactive, __a, __b, __p); - } - - __extension__ extern __inline int16x8_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_vaddq_m (int16x8_t __inactive, int16x8_t __a, int __b, mve_pred16_t __p) -+__arm_vaddq_m (int16x8_t __inactive, int16x8_t __a, int16_t __b, mve_pred16_t __p) - { - return __arm_vaddq_m_n_s16 (__inactive, __a, __b, __p); - } - - __extension__ extern __inline uint8x16_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_vaddq_m (uint8x16_t __inactive, uint8x16_t __a, int __b, mve_pred16_t __p) -+__arm_vaddq_m (uint8x16_t __inactive, uint8x16_t __a, uint8_t __b, mve_pred16_t __p) - { - return __arm_vaddq_m_n_u8 (__inactive, __a, __b, __p); - } - - __extension__ extern __inline uint32x4_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_vaddq_m (uint32x4_t __inactive, uint32x4_t __a, int __b, mve_pred16_t __p) -+__arm_vaddq_m (uint32x4_t __inactive, uint32x4_t __a, uint32_t __b, mve_pred16_t __p) - { - return __arm_vaddq_m_n_u32 (__inactive, __a, __b, __p); - } - - __extension__ extern __inline uint16x8_t - __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) --__arm_vaddq_m (uint16x8_t __inactive, uint16x8_t __a, int __b, mve_pred16_t __p) -+__arm_vaddq_m (uint16x8_t __inactive, uint16x8_t __a, uint16_t __b, mve_pred16_t __p) - { - return __arm_vaddq_m_n_u16 (__inactive, __a, __b, __p); - } -@@ -35582,13 +35582,29 @@ enum { - short: __ARM_mve_type_int_n, \ - int: __ARM_mve_type_int_n, \ - long: __ARM_mve_type_int_n, \ -- double: __ARM_mve_type_fp_n, \ - long long: __ARM_mve_type_int_n, \ -+ _Float16: __ARM_mve_type_fp_n, \ -+ __fp16: __ARM_mve_type_fp_n, \ -+ float: __ARM_mve_type_fp_n, \ -+ double: __ARM_mve_type_fp_n, \ - unsigned char: __ARM_mve_type_int_n, \ - unsigned short: __ARM_mve_type_int_n, \ - unsigned int: __ARM_mve_type_int_n, \ - unsigned long: __ARM_mve_type_int_n, \ - unsigned long long: __ARM_mve_type_int_n, \ -+ signed char*: __ARM_mve_type_int8_t_ptr, \ -+ short*: __ARM_mve_type_int16_t_ptr, \ -+ int*: __ARM_mve_type_int32_t_ptr, \ -+ long*: __ARM_mve_type_int32_t_ptr, \ -+ long long*: __ARM_mve_type_int64_t_ptr, \ -+ _Float16*: __ARM_mve_type_float16_t_ptr, \ -+ __fp16*: __ARM_mve_type_float16_t_ptr, \ -+ float*: __ARM_mve_type_float32_t_ptr, \ -+ unsigned char*: __ARM_mve_type_uint8_t_ptr, \ -+ unsigned short*: __ARM_mve_type_uint16_t_ptr, \ -+ unsigned int*: __ARM_mve_type_uint32_t_ptr, \ -+ unsigned long*: __ARM_mve_type_uint32_t_ptr, \ -+ unsigned long long*: __ARM_mve_type_uint64_t_ptr, \ - default: __ARM_mve_unsupported_type)) - #else - #define __ARM_mve_typeid(x) _Generic(x, \ -@@ -35647,30 +35663,67 @@ enum { - unsigned int: __ARM_mve_type_int_n, \ - unsigned long: __ARM_mve_type_int_n, \ - unsigned long long: __ARM_mve_type_int_n, \ -+ signed char*: __ARM_mve_type_int8_t_ptr, \ -+ short*: __ARM_mve_type_int16_t_ptr, \ -+ int*: __ARM_mve_type_int32_t_ptr, \ -+ long*: __ARM_mve_type_int32_t_ptr, \ -+ long long*: __ARM_mve_type_int64_t_ptr, \ -+ unsigned char*: __ARM_mve_type_uint8_t_ptr, \ -+ unsigned short*: __ARM_mve_type_uint16_t_ptr, \ -+ unsigned int*: __ARM_mve_type_uint32_t_ptr, \ -+ unsigned long*: __ARM_mve_type_uint32_t_ptr, \ -+ unsigned long long*: __ARM_mve_type_uint64_t_ptr, \ - default: __ARM_mve_unsupported_type)) - #endif /* MVE Floating point. */ - - extern void *__ARM_undef; - #define __ARM_mve_coerce(param, type) \ - _Generic(param, type: param, default: *(type *)__ARM_undef) --#define __ARM_mve_coerce1(param, type) \ -- _Generic(param, type: param, const type: param, default: *(type *)__ARM_undef) --#define __ARM_mve_coerce2(param, type) \ -- _Generic(param, type: param, float16_t: param, float32_t: param, default: *(type *)__ARM_undef) -+#define __ARM_mve_coerce_i_scalar(param, type) \ -+ _Generic(param, type: param, const type: param, default: _Generic (param, int8_t: param, int16_t: param, int32_t: param, int64_t: param, uint8_t: param, uint16_t: param, uint32_t: param, uint64_t: param, default: *(type *)__ARM_undef)) -+ -+#define __ARM_mve_coerce_s8_ptr(param, type) \ -+ _Generic(param, type: param, const type: param, default: _Generic (param, signed char*: param, default: *(type *)__ARM_undef)) -+#define __ARM_mve_coerce_u8_ptr(param, type) \ -+ _Generic(param, type: param, const type: param, default: _Generic (param, unsigned char*: param, default: *(type *)__ARM_undef)) -+ -+#define __ARM_mve_coerce_s16_ptr(param, type) \ -+ _Generic(param, type: param, const type: param, default: _Generic (param, short*: param, default: *(type *)__ARM_undef)) -+#define __ARM_mve_coerce_u16_ptr(param, type) \ -+ _Generic(param, type: param, const type: param, default: _Generic (param, unsigned short*: param, default: *(type *)__ARM_undef)) -+ -+#define __ARM_mve_coerce_s32_ptr(param, type) \ -+ _Generic(param, type: param, const type: param, default: _Generic (param, int*: param, long*: param, default: *(type *)__ARM_undef)) -+#define __ARM_mve_coerce_u32_ptr(param, type) \ -+ _Generic(param, type: param, const type: param, default: _Generic (param, unsigned int*: param, unsigned long*: param, default: *(type *)__ARM_undef)) -+ -+#define __ARM_mve_coerce_s64_ptr(param, type) \ -+ _Generic(param, type: param, const type: param, default: _Generic (param, long long*: param, default: *(type *)__ARM_undef)) -+#define __ARM_mve_coerce_u64_ptr(param, type) \ -+ _Generic(param, type: param, const type: param, default: _Generic (param, unsigned long long*: param, default: *(type *)__ARM_undef)) -+ -+#if (__ARM_FEATURE_MVE & 2) /* MVE Floating point. */ -+#define __ARM_mve_coerce_f_scalar(param, type) \ -+ _Generic(param, type: param, const type: param, __fp16: param, default: _Generic (param, _Float16: param, float16_t: param, float32_t: param, default: *(type *)__ARM_undef)) -+#define __ARM_mve_coerce_f16_ptr(param, type) \ -+ _Generic(param, type: param, const type: param, default: _Generic (param, __fp16*: param, _Float16*: param, default: *(type *)__ARM_undef)) -+#define __ARM_mve_coerce_f32_ptr(param, type) \ -+ _Generic(param, type: param, const type: param, default: _Generic (param, float*: param, default: *(type *)__ARM_undef)) -+#endif - - #if (__ARM_FEATURE_MVE & 2) /* MVE Floating point. */ - - #define __arm_vst4q(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16x4_t]: __arm_vst4q_s8 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, int8x16x4_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8x4_t]: __arm_vst4q_s16 (__ARM_mve_coerce(__p0, int16_t *), __ARM_mve_coerce(__p1, int16x8x4_t)), \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4x4_t]: __arm_vst4q_s32 (__ARM_mve_coerce(__p0, int32_t *), __ARM_mve_coerce(__p1, int32x4x4_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16x4_t]: __arm_vst4q_u8 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8x4_t]: __arm_vst4q_u16 (__ARM_mve_coerce(__p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8x4_t)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4x4_t]: __arm_vst4q_u32 (__ARM_mve_coerce(__p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4x4_t)), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_float16x8x4_t]: __arm_vst4q_f16 (__ARM_mve_coerce(__p0, float16_t *), __ARM_mve_coerce(__p1, float16x8x4_t)), \ -- int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4x4_t]: __arm_vst4q_f32 (__ARM_mve_coerce(__p0, float32_t *), __ARM_mve_coerce(__p1, float32x4x4_t)));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16x4_t]: __arm_vst4q_s8 (__ARM_mve_coerce_s8_ptr(__p0, int8_t *), __ARM_mve_coerce(__p1, int8x16x4_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8x4_t]: __arm_vst4q_s16 (__ARM_mve_coerce_s16_ptr(__p0, int16_t *), __ARM_mve_coerce(__p1, int16x8x4_t)), \ -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4x4_t]: __arm_vst4q_s32 (__ARM_mve_coerce_s32_ptr(__p0, int32_t *), __ARM_mve_coerce(__p1, int32x4x4_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16x4_t]: __arm_vst4q_u8 (__ARM_mve_coerce_u8_ptr(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8x4_t]: __arm_vst4q_u16 (__ARM_mve_coerce_u16_ptr(__p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8x4_t)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4x4_t]: __arm_vst4q_u32 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4x4_t)), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_float16x8x4_t]: __arm_vst4q_f16 (__ARM_mve_coerce_f16_ptr(__p0, float16_t *), __ARM_mve_coerce(__p1, float16x8x4_t)), \ -+ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4x4_t]: __arm_vst4q_f32 (__ARM_mve_coerce_f32_ptr(__p0, float32_t *), __ARM_mve_coerce(__p1, float32x4x4_t)));}) - - #define __arm_vrndxq(p0) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -@@ -35847,6 +35900,10 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vorrq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vorrq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vorrq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vorrq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vorrq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vorrq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vorrq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vorrq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vorrq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)));}) - -@@ -35871,16 +35928,16 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vaddq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vaddq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vaddq_f16 (__ARM_mve_coerce(p0, float16x8_t), __ARM_mve_coerce(p1, float16x8_t)), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vaddq_f32 (__ARM_mve_coerce(p0, float32x4_t), __ARM_mve_coerce(p1, float32x4_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int)), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vaddq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vaddq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)));}) -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vaddq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vaddq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vaddq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double)), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vaddq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double)));}) - - #define __arm_vandq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -35897,10 +35954,10 @@ extern void *__ARM_undef; - #define __arm_vbicq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce1 (__p1, int)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce1 (__p1, int)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce1 (__p1, int)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce1 (__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar (__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar (__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar (__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar (__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vbicq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vbicq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vbicq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -35925,14 +35982,14 @@ extern void *__ARM_undef; - #define __arm_vmulq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vmulq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vmulq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vmulq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double)), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vmulq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -35957,14 +36014,14 @@ extern void *__ARM_undef; - #define __arm_vcmpeqq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double)), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpeqq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpeqq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpeqq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -35995,16 +36052,16 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpeqq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpeqq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpeqq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t), p2), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t), p2), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpeqq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpeqq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double), p2), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double), p2));}) -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double), p2), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double), p2));}) - - #define __arm_vcmpgtq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -36012,13 +36069,13 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgtq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgtq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgtq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpgtq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpgtq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)));}) -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double)), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double)));}) - - #define __arm_vcmpleq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -36028,11 +36085,11 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpleq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpleq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpleq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double)), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double)));}) - - #define __arm_vcmpltq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -36040,25 +36097,25 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpltq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpltq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpltq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpltq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpltq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)));}) -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double)), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double)));}) - - #define __arm_vcmpneq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double)), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -36113,8 +36170,8 @@ extern void *__ARM_undef; - #define __arm_vmaxnmavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmavq_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmavq_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));}) -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmavq_f16 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \ -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmavq_f32 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));}) - - #define __arm_vmaxnmq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -36125,14 +36182,14 @@ extern void *__ARM_undef; - #define __arm_vmaxnmvq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmvq_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmvq_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));}) -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmvq_f16 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \ -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmvq_f32 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));}) - - #define __arm_vmaxnmvq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmvq_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmvq_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));}) -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmvq_f16 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \ -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmvq_f32 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));}) - - #define __arm_vminnmaq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -36143,8 +36200,8 @@ extern void *__ARM_undef; - #define __arm_vminnmavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmavq_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmavq_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));}) -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmavq_f16 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \ -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmavq_f32 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));}) - - #define __arm_vbrsrq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -@@ -36166,14 +36223,14 @@ extern void *__ARM_undef; - #define __arm_vsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vsubq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vsubq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vsubq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double)), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vsubq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -36186,8 +36243,8 @@ extern void *__ARM_undef; - #define __arm_vminnmvq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmvq_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmvq_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));}) -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmvq_f16 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \ -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmvq_f32 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));}) - - #define __arm_vshlq_r(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -@@ -36242,12 +36299,12 @@ extern void *__ARM_undef; - #define __arm_vrshlq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vrshlq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vrshlq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrshlq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -36278,12 +36335,12 @@ extern void *__ARM_undef; - #define __arm_vqsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -36334,12 +36391,12 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrshlq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrshlq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrshlq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vqrdmulhq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -36347,9 +36404,9 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrdmulhq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrdmulhq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrdmulhq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vmlaldavxq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -36382,8 +36439,8 @@ extern void *__ARM_undef; - #define __arm_vqdmulltq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulltq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulltq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));}) - -@@ -36396,17 +36453,17 @@ extern void *__ARM_undef; - #define __arm_vqdmullbq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmullbq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmullbq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));}) - - #define __arm_vqdmulhq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqdmulhq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulhq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulhq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));}) -@@ -36414,12 +36471,12 @@ extern void *__ARM_undef; - #define __arm_vqaddq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqaddq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqaddq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqaddq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -36452,12 +36509,12 @@ extern void *__ARM_undef; - #define __arm_vhaddq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhaddq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhaddq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhaddq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -36482,12 +36539,12 @@ extern void *__ARM_undef; - #define __arm_vhsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -36630,12 +36687,12 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)));}) - - #define __arm_vsriq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -36714,44 +36771,44 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)));}) - - #define __arm_vqdmlashq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)));}) - - #define __arm_vqrdmlahq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)));}) - - #define __arm_vmlasq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)));}) - - #define __arm_vqdmlahq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)));}) - - #define __arm_vqrdmladhxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -36941,11 +36998,11 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgtq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgtq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgtq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double), p2), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double), p2), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double), p2), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double), p2), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpgtq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpgtq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2));}) - -@@ -36957,11 +37014,11 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpleq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpleq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpleq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double), p2), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double), p2));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double), p2), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double), p2));}) - - #define __arm_vcmpltq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -36971,11 +37028,11 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpltq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpltq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpltq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double), p2), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double), p2));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double), p2), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double), p2));}) - - #define __arm_vcmpneq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -36988,14 +37045,14 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpneq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpneq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpneq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t), p2), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t), p2), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double), p2), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double), p2));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double), p2), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double), p2));}) - - #define __arm_vcvtbq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -37049,8 +37106,8 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmaq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double)), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmaq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double)), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmaq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce_f_scalar(__p2, double)), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmaq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce_f_scalar(__p2, double)), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vfmaq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t)), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vfmaq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t)));}) - -@@ -37065,8 +37122,8 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmasq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double)), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmasq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double)));}) -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmasq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce_f_scalar(__p2, double)), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmasq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce_f_scalar(__p2, double)));}) - - #define __arm_vmaxnmaq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -37089,14 +37146,14 @@ extern void *__ARM_undef; - #define __arm_vmaxnmavq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmavq_p_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmavq_p_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));}) -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmavq_p_f16 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \ -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmavq_p_f32 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));}) - - #define __arm_vmaxnmvq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmvq_p_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmvq_p_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));}) -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmvq_p_f16 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \ -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmvq_p_f32 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));}) - - #define __arm_vminnmaq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -37107,14 +37164,14 @@ extern void *__ARM_undef; - #define __arm_vminnmavq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmavq_p_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmavq_p_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));}) -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmavq_p_f16 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \ -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmavq_p_f32 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));}) - - #define __arm_vminnmvq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmvq_p_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmvq_p_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));}) -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmvq_p_f16 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \ -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmvq_p_f32 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));}) - - #define __arm_vrndnq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -37176,13 +37233,13 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgeq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgeq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgeq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpgeq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpgeq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)));}) -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double)), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double)));}) - - #define __arm_vrshrnbq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -37283,11 +37340,11 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgeq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgeq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgeq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double), p2), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double), p2), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce_f_scalar(__p1, double), p2), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce_f_scalar(__p1, double), p2), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpgeq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpgeq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2));}) - -@@ -37316,14 +37373,14 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vaddq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vaddq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int), p3), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vaddq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vaddq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vaddq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce_f_scalar(__p2, double), p3), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vaddq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce_f_scalar(__p2, double), p3));}) - - #define __arm_vandq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -37464,15 +37521,15 @@ extern void *__ARM_undef; - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vfmaq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vfmaq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmaq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmaq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));}) -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmaq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce_f_scalar(__p2, double), p3), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmaq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce_f_scalar(__p2, double), p3));}) - - #define __arm_vfmasq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmasq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmasq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));}) -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmasq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce_f_scalar(__p2, double), p3), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmasq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce_f_scalar(__p2, double), p3));}) - - #define __arm_vfmsq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -37507,14 +37564,14 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmulq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vmulq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vmulq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vmulq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vmulq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vmulq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce_f_scalar(__p2, double), p3), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vmulq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce_f_scalar(__p2, double), p3));}) - - #define __arm_vornq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -37541,14 +37598,14 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vsubq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vsubq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vsubq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vsubq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vsubq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vsubq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce_f_scalar(__p2, double), p3), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vsubq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce_f_scalar(__p2, double), p3));}) - - #define __arm_vorrq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -37565,236 +37622,236 @@ extern void *__ARM_undef; - - #define __arm_vld1q(p0) (\ - _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \ -- int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_u32 (__ARM_mve_coerce1(p0, uint32_t *)), \ -- int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld1q_f16 (__ARM_mve_coerce1(p0, float16_t *)), \ -- int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld1q_f32 (__ARM_mve_coerce1(p0, float32_t *)))) -+ int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *)), \ -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *)), \ -+ int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld1q_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *)), \ -+ int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld1q_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *)))) - - #define __arm_vld1q_z(p0,p1) ( \ - _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_z_s8 (__ARM_mve_coerce1(p0, int8_t *), p1), \ -- int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_z_s16 (__ARM_mve_coerce1(p0, int16_t *), p1), \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_z_s32 (__ARM_mve_coerce1(p0, int32_t *), p1), \ -- int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_z_u8 (__ARM_mve_coerce1(p0, uint8_t *), p1), \ -- int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_z_u16 (__ARM_mve_coerce1(p0, uint16_t *), p1), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_z_u32 (__ARM_mve_coerce1(p0, uint32_t *), p1), \ -- int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld1q_z_f16 (__ARM_mve_coerce1(p0, float16_t *), p1), \ -- int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld1q_z_f32 (__ARM_mve_coerce1(p0, float32_t *), p1))) -+ int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_z_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), p1), \ -+ int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_z_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), p1), \ -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_z_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), p1), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_z_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), p1), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_z_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), p1), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_z_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), p1), \ -+ int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld1q_z_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), p1), \ -+ int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld1q_z_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), p1))) - - #define __arm_vld2q(p0) ( \ - _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld2q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \ -- int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld2q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld2q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld2q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld2q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld2q_u32 (__ARM_mve_coerce1(p0, uint32_t *)), \ -- int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld2q_f16 (__ARM_mve_coerce1(p0, float16_t *)), \ -- int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld2q_f32 (__ARM_mve_coerce1(p0, float32_t *)))) -+ int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld2q_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld2q_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *)), \ -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld2q_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld2q_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld2q_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld2q_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *)), \ -+ int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld2q_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *)), \ -+ int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld2q_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *)))) - - #define __arm_vld4q(p0) ( \ - _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld4q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \ -- int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld4q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld4q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld4q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld4q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld4q_u32 (__ARM_mve_coerce1(p0, uint32_t *)), \ -- int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld4q_f16 (__ARM_mve_coerce1(p0, float16_t *)), \ -- int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld4q_f32 (__ARM_mve_coerce1(p0, float32_t *)))) -+ int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld4q_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld4q_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *)), \ -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld4q_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld4q_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld4q_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld4q_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *)), \ -+ int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld4q_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *)), \ -+ int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld4q_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *)))) - - #define __arm_vldrhq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_s16 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_s32 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_u16 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_u32 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_f16 (__ARM_mve_coerce1(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t)));}) - - #define __arm_vldrhq_gather_offset_z(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_z_s16 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_z_s32 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_z_u16 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_z_u32 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_z_f16 (__ARM_mve_coerce1(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_z_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_z_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_z_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_z_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_z_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2));}) - - #define __arm_vldrhq_gather_shifted_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_s16 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_s32 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_u16 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_u32 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_f16 (__ARM_mve_coerce1(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t)));}) - - #define __arm_vldrhq_gather_shifted_offset_z(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_z_s16 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_z_s32 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_z_u16 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_z_u32 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_z_f16 (__ARM_mve_coerce1(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_z_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_z_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_z_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_z_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_z_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2));}) - - #define __arm_vldrwq_gather_offset(p0,p1) ( \ - _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_offset_s32 (__ARM_mve_coerce1(p0, int32_t *), p1), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_offset_u32 (__ARM_mve_coerce1(p0, uint32_t *), p1), \ -- int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vldrwq_gather_offset_f32 (__ARM_mve_coerce1(p0, float32_t *), p1))) -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_offset_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), p1), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_offset_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), p1), \ -+ int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vldrwq_gather_offset_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), p1))) - - #define __arm_vldrwq_gather_offset_z(p0,p1,p2) ( \ - _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_offset_z_s32 (__ARM_mve_coerce1(p0, int32_t *), p1, p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_offset_z_u32 (__ARM_mve_coerce1(p0, uint32_t *), p1, p2), \ -- int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vldrwq_gather_offset_z_f32 (__ARM_mve_coerce1(p0, float32_t *), p1, p2))) -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_offset_z_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), p1, p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_offset_z_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), p1, p2), \ -+ int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vldrwq_gather_offset_z_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), p1, p2))) - - #define __arm_vldrwq_gather_shifted_offset(p0,p1) ( \ - _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_shifted_offset_s32 (__ARM_mve_coerce1(p0, int32_t *), p1), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_shifted_offset_u32 (__ARM_mve_coerce1(p0, uint32_t *), p1), \ -- int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vldrwq_gather_shifted_offset_f32 (__ARM_mve_coerce1(p0, float32_t *), p1))) -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_shifted_offset_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), p1), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_shifted_offset_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), p1), \ -+ int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vldrwq_gather_shifted_offset_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), p1))) - - #define __arm_vldrwq_gather_shifted_offset_z(p0,p1,p2) ( \ - _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_shifted_offset_z_s32 (__ARM_mve_coerce1(p0, int32_t *), p1, p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_shifted_offset_z_u32 (__ARM_mve_coerce1(p0, uint32_t *), p1, p2), \ -- int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vldrwq_gather_shifted_offset_z_f32 (__ARM_mve_coerce1(p0, float32_t *), p1, p2))) -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_shifted_offset_z_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), p1, p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_shifted_offset_z_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), p1, p2), \ -+ int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vldrwq_gather_shifted_offset_z_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), p1, p2))) - - #define __arm_vst1q_p(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vst1q_p_s8 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vst1q_p_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vst1q_p_s32 (__ARM_mve_coerce(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vst1q_p_u8 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vst1q_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vst1q_p_u32 (__ARM_mve_coerce(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_float16x8_t]: __arm_vst1q_p_f16 (__ARM_mve_coerce(p0, float16_t *), __ARM_mve_coerce(__p1, float16x8_t), p2), \ -- int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vst1q_p_f32 (__ARM_mve_coerce(p0, float32_t *), __ARM_mve_coerce(__p1, float32x4_t), p2));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vst1q_p_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vst1q_p_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vst1q_p_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vst1q_p_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vst1q_p_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vst1q_p_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_float16x8_t]: __arm_vst1q_p_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, float16x8_t), p2), \ -+ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vst1q_p_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), __ARM_mve_coerce(__p1, float32x4_t), p2));}) - - #define __arm_vst2q(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16x2_t]: __arm_vst2q_s8 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16x2_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8x2_t]: __arm_vst2q_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8x2_t)), \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4x2_t]: __arm_vst2q_s32 (__ARM_mve_coerce(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4x2_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16x2_t]: __arm_vst2q_u8 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16x2_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8x2_t]: __arm_vst2q_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8x2_t)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4x2_t]: __arm_vst2q_u32 (__ARM_mve_coerce(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4x2_t)), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_float16x8x2_t]: __arm_vst2q_f16 (__ARM_mve_coerce(p0, float16_t *), __ARM_mve_coerce(__p1, float16x8x2_t)), \ -- int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4x2_t]: __arm_vst2q_f32 (__ARM_mve_coerce(p0, float32_t *), __ARM_mve_coerce(__p1, float32x4x2_t)));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16x2_t]: __arm_vst2q_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16x2_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8x2_t]: __arm_vst2q_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8x2_t)), \ -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4x2_t]: __arm_vst2q_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4x2_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16x2_t]: __arm_vst2q_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16x2_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8x2_t]: __arm_vst2q_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8x2_t)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4x2_t]: __arm_vst2q_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4x2_t)), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_float16x8x2_t]: __arm_vst2q_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, float16x8x2_t)), \ -+ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4x2_t]: __arm_vst2q_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), __ARM_mve_coerce(__p1, float32x4x2_t)));}) - - #define __arm_vst1q(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vst1q_s8 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vst1q_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t)), \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vst1q_s32 (__ARM_mve_coerce(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vst1q_u8 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vst1q_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vst1q_u32 (__ARM_mve_coerce(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_float16x8_t]: __arm_vst1q_f16 (__ARM_mve_coerce(p0, float16_t *), __ARM_mve_coerce(__p1, float16x8_t)), \ -- int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vst1q_f32 (__ARM_mve_coerce(p0, float32_t *), __ARM_mve_coerce(__p1, float32x4_t)));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vst1q_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vst1q_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vst1q_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vst1q_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vst1q_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vst1q_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_float16x8_t]: __arm_vst1q_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, float16x8_t)), \ -+ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vst1q_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), __ARM_mve_coerce(__p1, float32x4_t)));}) - - #define __arm_vstrhq(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrhq_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrhq_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_float16x8_t]: __arm_vstrhq_f16 (__ARM_mve_coerce(p0, float16_t *), __ARM_mve_coerce(__p1, float16x8_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrhq_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrhq_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_float16x8_t]: __arm_vstrhq_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, float16x8_t)));}) - - #define __arm_vstrhq_p(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrhq_p_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrhq_p_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_p_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_float16x8_t]: __arm_vstrhq_p_f16 (__ARM_mve_coerce(p0, float16_t *), __ARM_mve_coerce(__p1, float16x8_t), p2));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrhq_p_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrhq_p_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_p_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_p_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_float16x8_t]: __arm_vstrhq_p_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, float16x8_t), p2));}) - - #define __arm_vstrhq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_p_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_p_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_p_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_offset_p_f16 (__ARM_mve_coerce(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_p_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_p_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_p_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_p_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_offset_p_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3));}) - - #define __arm_vstrhq_scatter_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_offset_f16 (__ARM_mve_coerce(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_offset_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t)));}) - - #define __arm_vstrhq_scatter_shifted_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_f16 (__ARM_mve_coerce(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3));}) - - #define __arm_vstrhq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_shifted_offset_f16 (__ARM_mve_coerce(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_shifted_offset_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t)));}) - - #define __arm_vstrwq_p(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_p_s32 (__ARM_mve_coerce(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_p_u32 (__ARM_mve_coerce(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_p_f32 (__ARM_mve_coerce(p0, float32_t *), __ARM_mve_coerce(__p1, float32x4_t), p2));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_p_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_p_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -+ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_p_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), __ARM_mve_coerce(__p1, float32x4_t), p2));}) - - #define __arm_vstrwq(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_s32 (__ARM_mve_coerce(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_u32 (__ARM_mve_coerce(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_f32 (__ARM_mve_coerce(p0, float32_t *), __ARM_mve_coerce(__p1, float32x4_t)));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), __ARM_mve_coerce(__p1, float32x4_t)));}) - - #define __arm_vstrhq_scatter_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_offset_f16 (__ARM_mve_coerce(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_offset_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t)));}) - - #define __arm_vstrhq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_p_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_p_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_p_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_offset_p_f16 (__ARM_mve_coerce(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_p_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_p_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_p_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_p_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_offset_p_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3));}) - - #define __arm_vstrhq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_shifted_offset_f16 (__ARM_mve_coerce(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_shifted_offset_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t)));}) - - #define __arm_vstrhq_scatter_shifted_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -- int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_f16 (__ARM_mve_coerce(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -+ int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_f16 (__ARM_mve_coerce_f16_ptr(p0, float16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3));}) - - #define __arm_vstrwq_scatter_base(p0,p1,p2) ({ __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p2)])0, \ -@@ -37811,44 +37868,44 @@ extern void *__ARM_undef; - #define __arm_vstrwq_scatter_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_s32 (__ARM_mve_coerce(__p0, int32_t *), p1, __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, __ARM_mve_coerce(__p2, uint32x4_t)), \ -- int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_offset_f32 (__ARM_mve_coerce(__p0, float32_t *), p1, __ARM_mve_coerce(__p2, float32x4_t)));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_s32 (__ARM_mve_coerce_s32_ptr(__p0, int32_t *), p1, __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_u32 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1, __ARM_mve_coerce(__p2, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_offset_f32 (__ARM_mve_coerce_f32_ptr(__p0, float32_t *), p1, __ARM_mve_coerce(__p2, float32x4_t)));}) - - #define __arm_vstrwq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_p_s32 (__ARM_mve_coerce(__p0, int32_t *), p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_p_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -- int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_offset_p_f32 (__ARM_mve_coerce(__p0, float32_t *), p1, __ARM_mve_coerce(__p2, float32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_p_s32 (__ARM_mve_coerce_s32_ptr(__p0, int32_t *), p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_p_u32 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1, __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -+ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_offset_p_f32 (__ARM_mve_coerce_f32_ptr(__p0, float32_t *), p1, __ARM_mve_coerce(__p2, float32x4_t), p3));}) - - #define __arm_vstrwq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_shifted_offset_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t)), \ -- int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_shifted_offset_f32 (__ARM_mve_coerce(p0, float32_t *), __p1, __ARM_mve_coerce(__p2, float32x4_t)));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_shifted_offset_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_shifted_offset_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), __p1, __ARM_mve_coerce(__p2, float32x4_t)));}) - - #define __arm_vstrwq_scatter_shifted_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -- int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_f32 (__ARM_mve_coerce(p0, float32_t *), __p1, __ARM_mve_coerce(__p2, float32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -+ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), __p1, __ARM_mve_coerce(__p2, float32x4_t), p3));}) - - #define __arm_vstrwq_scatter_shifted_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -- int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_f32 (__ARM_mve_coerce(p0, float32_t *), __p1, __ARM_mve_coerce(__p2, float32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -+ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), __p1, __ARM_mve_coerce(__p2, float32x4_t), p3));}) - - #define __arm_vstrwq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_shifted_offset_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t)), \ -- int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_shifted_offset_f32 (__ARM_mve_coerce(p0, float32_t *), __p1, __ARM_mve_coerce(__p2, float32x4_t)));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_shifted_offset_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_shifted_offset_f32 (__ARM_mve_coerce_f32_ptr(p0, float32_t *), __p1, __ARM_mve_coerce(__p2, float32x4_t)));}) - - #define __arm_vuninitializedq(p0) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -@@ -38021,19 +38078,19 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vaddq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vaddq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vaddq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vaddq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vaddq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vaddq_x_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vaddq_x_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vaddq_x_n_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vaddq_x_n_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));}) -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vaddq_x_n_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce_f_scalar(__p2, double), p3), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vaddq_x_n_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce_f_scalar(__p2, double), p3));}) - - #define __arm_vandq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ -@@ -38156,19 +38213,19 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmulq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmulq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmulq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vmulq_x_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vmulq_x_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vmulq_x_n_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vmulq_x_n_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));}) -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vmulq_x_n_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce_f_scalar(__p2, double), p3), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vmulq_x_n_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce_f_scalar(__p2, double), p3));}) - - #define __arm_vnegq_x(p1,p2) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ -@@ -38254,10 +38311,22 @@ extern void *__ARM_undef; - #define __arm_vsubq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vsubq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vsubq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vsubq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vsubq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vsubq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vsubq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vsubq_x_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vsubq_x_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \ -- int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vsubq_x_n_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \ -- int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vsubq_x_n_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));}) -+ int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vsubq_x_n_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce_f_scalar(__p2, double), p3), \ -+ int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vsubq_x_n_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce_f_scalar(__p2, double), p3));}) - - #define __arm_vcmulq_rot90_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ -@@ -38281,16 +38350,16 @@ extern void *__ARM_undef; - #define __arm_vsetq_lane(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vsetq_lane_s8 (__ARM_mve_coerce(__p0, int8_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vsetq_lane_s16 (__ARM_mve_coerce(__p0, int16_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vsetq_lane_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int64x2_t]: __arm_vsetq_lane_s64 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int64x2_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vsetq_lane_u8 (__ARM_mve_coerce(__p0, uint8_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vsetq_lane_u16 (__ARM_mve_coerce(__p0, uint16_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vsetq_lane_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint64x2_t]: __arm_vsetq_lane_u64 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint64x2_t), p2), \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vsetq_lane_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \ -- int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vsetq_lane_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vsetq_lane_s8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vsetq_lane_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vsetq_lane_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int64x2_t]: __arm_vsetq_lane_s64 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int64x2_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vsetq_lane_u8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vsetq_lane_u16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vsetq_lane_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint64x2_t]: __arm_vsetq_lane_u64 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint64x2_t), p2), \ -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vsetq_lane_f16 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \ -+ int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vsetq_lane_f32 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));}) - - #else /* MVE Integer. */ - -@@ -38306,12 +38375,12 @@ extern void *__ARM_undef; - - #define __arm_vst4q(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16x4_t]: __arm_vst4q_s8 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16x4_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8x4_t]: __arm_vst4q_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8x4_t)), \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4x4_t]: __arm_vst4q_s32 (__ARM_mve_coerce(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4x4_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16x4_t]: __arm_vst4q_u8 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8x4_t]: __arm_vst4q_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8x4_t)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4x4_t]: __arm_vst4q_u32 (__ARM_mve_coerce(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4x4_t)));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16x4_t]: __arm_vst4q_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16x4_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8x4_t]: __arm_vst4q_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8x4_t)), \ -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4x4_t]: __arm_vst4q_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4x4_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16x4_t]: __arm_vst4q_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8x4_t]: __arm_vst4q_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8x4_t)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4x4_t]: __arm_vst4q_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4x4_t)));}) - - #define __arm_vabsq(p0) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -@@ -38408,12 +38477,12 @@ extern void *__ARM_undef; - #define __arm_vcmpneq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -38440,12 +38509,12 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vsubq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vsubq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vsubq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vshlq_r(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -@@ -38459,12 +38528,12 @@ extern void *__ARM_undef; - #define __arm_vrshlq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vrshlq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vrshlq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrshlq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -38495,12 +38564,12 @@ extern void *__ARM_undef; - #define __arm_vqsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -38569,12 +38638,12 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrshlq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrshlq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrshlq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vqrdmulhq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -38582,16 +38651,16 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrdmulhq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrdmulhq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrdmulhq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vqdmulhq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqdmulhq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulhq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulhq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));}) -@@ -38599,12 +38668,12 @@ extern void *__ARM_undef; - #define __arm_vqaddq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqaddq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqaddq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqaddq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -38620,7 +38689,11 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vorrq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vorrq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vorrq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vorrq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vorrq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vorrq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vorrq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vorrq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vorrq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vornq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -38635,12 +38708,12 @@ extern void *__ARM_undef; - #define __arm_vmulq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -38715,12 +38788,12 @@ extern void *__ARM_undef; - #define __arm_vhsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -38745,12 +38818,12 @@ extern void *__ARM_undef; - #define __arm_vhaddq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhaddq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhaddq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhaddq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -38800,10 +38873,10 @@ extern void *__ARM_undef; - #define __arm_vbicq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce1 (__p1, int)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce1 (__p1, int)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce1 (__p1, int)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce1 (__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar (__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar (__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar (__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar (__p1, int)), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vbicq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vbicq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vbicq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -@@ -38820,12 +38893,12 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vaddq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vaddq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int)));}) -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vandq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -38856,12 +38929,12 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpeqq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpeqq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpeqq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vqmovntq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -38942,16 +39015,16 @@ extern void *__ARM_undef; - #define __arm_vqdmulltq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulltq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulltq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));}) - - #define __arm_vqdmullbq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmullbq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmullbq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));}) - -@@ -38961,9 +39034,9 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgeq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgeq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgeq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vcmpgtq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -38971,9 +39044,9 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgtq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgtq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgtq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vcmpleq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -38981,9 +39054,9 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpleq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpleq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpleq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vcmpltq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -38991,20 +39064,20 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpltq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpltq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpltq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vcmpneq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t), p2), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t), p2), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpneq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -@@ -39029,12 +39102,12 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpeqq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpeqq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpeqq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t), p2), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t), p2), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2));}) - - #define __arm_vbicq_m_n(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -@@ -39144,25 +39217,25 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)));}) - - #define __arm_vqdmlashq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)));}) - - #define __arm_vqrdmlahq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)));}) - - #define __arm_vqrdmladhxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -39225,9 +39298,56 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgeq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgeq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgeq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2));}) -+ -+ -+#define __arm_vcmpgtq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ -+ __typeof(p1) __p1 = (p1); \ -+ _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgtq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgtq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgtq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2));}) -+ -+#define __arm_vcmpleq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ -+ __typeof(p1) __p1 = (p1); \ -+ _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpleq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpleq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpleq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2));}) -+ -+#define __arm_vcmpltq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ -+ __typeof(p1) __p1 = (p1); \ -+ _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpltq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpltq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpltq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2));}) -+ -+#define __arm_vcmpneq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ -+ __typeof(p1) __p1 = (p1); \ -+ _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpneq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpneq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpneq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2));}) - - #define __arm_vdupq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -39250,23 +39370,23 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)));}) - - #define __arm_vmlasq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)));}) - - #define __arm_vnegq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -39291,9 +39411,9 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int)), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int)));}) - - #define __arm_vqdmlsdhq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -39456,12 +39576,12 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vsubq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vsubq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vsubq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -@@ -39561,12 +39681,12 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaq_p_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaq_p_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaq_p_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaq_p_u8 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaq_p_u16 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaq_p_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaq_p_s8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaq_p_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaq_p_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaq_p_u8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaq_p_u16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaq_p_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) - - #define __arm_vornq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -39594,12 +39714,12 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vaddq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vaddq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vaddq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -@@ -39611,12 +39731,12 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -@@ -39631,12 +39751,12 @@ extern void *__ARM_undef; - - #define __arm_vldrbq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_s8 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_s16 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_s32 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_u8 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_u16 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_u32 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_s16 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_s32 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_u16 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_u32 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) - - #define __arm_vstrwq_scatter_base_p(p0,p1,p2,p3) ({ __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p2)])0, \ -@@ -39645,144 +39765,144 @@ extern void *__ARM_undef; - - #define __arm_vld1q(p0) (\ - _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \ -- int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_u32 (__ARM_mve_coerce1(p0, uint32_t *)))) -+ int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *)), \ -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *)))) - - #define __arm_vldrhq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_s16 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_s32 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_u16 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_u32 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) - - #define __arm_vldrhq_gather_offset_z(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_z_s16 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_z_s32 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_z_u16 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_z_u32 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_z_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_z_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_offset_z_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_offset_z_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) - - #define __arm_vldrhq_gather_shifted_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_s16 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_s32 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_u16 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_u32 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) - - #define __arm_vldrhq_gather_shifted_offset_z(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_z_s16 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_z_s32 (__ARM_mve_coerce1(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_z_u16 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_z_u32 (__ARM_mve_coerce1(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_z_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_z_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrhq_gather_shifted_offset_z_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrhq_gather_shifted_offset_z_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) - - #define __arm_vldrwq_gather_offset(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_offset_s32 (__ARM_mve_coerce1(__p0, int32_t *), p1), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_offset_u32 (__ARM_mve_coerce1(__p0, uint32_t *), p1));}) -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_offset_s32 (__ARM_mve_coerce_s32_ptr(__p0, int32_t *), p1), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_offset_u32 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1));}) - - #define __arm_vldrwq_gather_offset_z(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_offset_z_s32 (__ARM_mve_coerce1(__p0, int32_t *), p1, p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_offset_z_u32 (__ARM_mve_coerce1(__p0, uint32_t *), p1, p2));}) -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_offset_z_s32 (__ARM_mve_coerce_s32_ptr(__p0, int32_t *), p1, p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_offset_z_u32 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1, p2));}) - - #define __arm_vldrwq_gather_shifted_offset(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_shifted_offset_s32 (__ARM_mve_coerce1(__p0, int32_t *), p1), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_shifted_offset_u32 (__ARM_mve_coerce1(__p0, uint32_t *), p1));}) -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_shifted_offset_s32 (__ARM_mve_coerce_s32_ptr(__p0, int32_t *), p1), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_shifted_offset_u32 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1));}) - - #define __arm_vldrwq_gather_shifted_offset_z(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_shifted_offset_z_s32 (__ARM_mve_coerce1(__p0, int32_t *), p1, p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_shifted_offset_z_u32 (__ARM_mve_coerce1(__p0, uint32_t *), p1, p2));}) -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vldrwq_gather_shifted_offset_z_s32 (__ARM_mve_coerce_s32_ptr(__p0, int32_t *), p1, p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vldrwq_gather_shifted_offset_z_u32 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1, p2));}) - - #define __arm_vst1q(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vst1q_s8 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vst1q_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t)), \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vst1q_s32 (__ARM_mve_coerce(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vst1q_u8 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vst1q_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vst1q_u32 (__ARM_mve_coerce(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vst1q_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vst1q_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vst1q_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vst1q_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vst1q_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vst1q_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) - - #define __arm_vst1q_p(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vst1q_p_s8 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vst1q_p_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vst1q_p_s32 (__ARM_mve_coerce(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vst1q_p_u8 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vst1q_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vst1q_p_u32 (__ARM_mve_coerce(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vst1q_p_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vst1q_p_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vst1q_p_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vst1q_p_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vst1q_p_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vst1q_p_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) - - #define __arm_vst2q(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16x2_t]: __arm_vst2q_s8 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16x2_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8x2_t]: __arm_vst2q_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8x2_t)), \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4x2_t]: __arm_vst2q_s32 (__ARM_mve_coerce(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4x2_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16x2_t]: __arm_vst2q_u8 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16x2_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8x2_t]: __arm_vst2q_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8x2_t)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4x2_t]: __arm_vst2q_u32 (__ARM_mve_coerce(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4x2_t)));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16x2_t]: __arm_vst2q_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16x2_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8x2_t]: __arm_vst2q_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8x2_t)), \ -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4x2_t]: __arm_vst2q_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4x2_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16x2_t]: __arm_vst2q_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16x2_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8x2_t]: __arm_vst2q_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8x2_t)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4x2_t]: __arm_vst2q_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4x2_t)));}) - - #define __arm_vstrhq(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrhq_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrhq_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrhq_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrhq_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) - - #define __arm_vstrhq_p(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrhq_p_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrhq_p_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_p_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrhq_p_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrhq_p_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_p_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_p_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) - - #define __arm_vstrhq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_p_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_p_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_p_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_p_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_p_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_p_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_p_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) - - #define __arm_vstrhq_scatter_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) - - #define __arm_vstrhq_scatter_shifted_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) - - #define __arm_vstrhq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) - - - #define __arm_vstrwq(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_s32 (__ARM_mve_coerce(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_u32 (__ARM_mve_coerce(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) - - #define __arm_vstrwq_p(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_p_s32 (__ARM_mve_coerce(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_p_u32 (__ARM_mve_coerce(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_p_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_p_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) - - #define __arm_vstrdq_scatter_base_p(p0,p1,p2,p3) ({ __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p2)])0, \ -@@ -39797,58 +39917,58 @@ extern void *__ARM_undef; - #define __arm_vstrhq_scatter_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) - - #define __arm_vstrhq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_p_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_p_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_p_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_offset_p_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_offset_p_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_offset_p_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_offset_p_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) - - #define __arm_vstrhq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) - - #define __arm_vstrhq_scatter_shifted_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_s16 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -- int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) - - #define __arm_vstrwq_scatter_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_s32 (__ARM_mve_coerce(__p0, int32_t *), p1, __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, __ARM_mve_coerce(__p2, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_s32 (__ARM_mve_coerce_s32_ptr(__p0, int32_t *), p1, __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_u32 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1, __ARM_mve_coerce(__p2, uint32x4_t)));}) - - #define __arm_vstrwq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_p_s32 (__ARM_mve_coerce(__p0, int32_t *), p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_p_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, __ARM_mve_coerce(__p2, uint32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_p_s32 (__ARM_mve_coerce_s32_ptr(__p0, int32_t *), p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_p_u32 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1, __ARM_mve_coerce(__p2, uint32x4_t), p3));}) - - #define __arm_vstrwq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_shifted_offset_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_shifted_offset_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t)));}) - - #define __arm_vstrwq_scatter_shifted_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t), p3));}) - - #define __arm_vuninitializedq(p0) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -@@ -39953,15 +40073,15 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vaddq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vaddq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vaddq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vaddq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vaddq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3));}) -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3));}) - - #define __arm_vcaddq_rot270_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ -@@ -40055,15 +40175,15 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmulq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmulq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmulq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3));}) -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3));}) - - #define __arm_vnegq_x(p1,p2) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ -@@ -40147,29 +40267,45 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint32x4_t]: __arm_vbrsrq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), p2, p3));}) - - #define __arm_vld1q_z(p0,p1) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_z_s8 (__ARM_mve_coerce1(p0, int8_t *), p1), \ -- int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_z_s16 (__ARM_mve_coerce1(p0, int16_t *), p1), \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_z_s32 (__ARM_mve_coerce1(p0, int32_t *), p1), \ -- int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_z_u8 (__ARM_mve_coerce1(p0, uint8_t *), p1), \ -- int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_z_u16 (__ARM_mve_coerce1(p0, uint16_t *), p1), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_z_u32 (__ARM_mve_coerce1(p0, uint32_t *), p1))) -+ int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_z_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), p1), \ -+ int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_z_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *), p1), \ -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_z_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *), p1), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_z_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), p1), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_z_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *), p1), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_z_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *), p1))) - - #define __arm_vld2q(p0) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld2q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \ -- int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld2q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld2q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld2q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld2q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld2q_u32 (__ARM_mve_coerce1(p0, uint32_t *)))) -+ int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld2q_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld2q_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *)), \ -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld2q_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld2q_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld2q_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld2q_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *)))) - - - #define __arm_vld4q(p0) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld4q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \ -- int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld4q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \ -- int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld4q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld4q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \ -- int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld4q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld4q_u32 (__ARM_mve_coerce1(p0, uint32_t *)))) -+ int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld4q_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *)), \ -+ int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld4q_s16 (__ARM_mve_coerce_s16_ptr(p0, int16_t *)), \ -+ int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld4q_s32 (__ARM_mve_coerce_s32_ptr(p0, int32_t *)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld4q_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *)), \ -+ int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld4q_u16 (__ARM_mve_coerce_u16_ptr(p0, uint16_t *)), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld4q_u32 (__ARM_mve_coerce_u32_ptr(p0, uint32_t *)))) -+ -+#define __arm_vsubq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ -+ __typeof(p2) __p2 = (p2); \ -+ _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vsubq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vsubq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vsubq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vsubq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vsubq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vsubq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3));}) - - #define __arm_vgetq_lane(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -@@ -40185,14 +40321,14 @@ extern void *__ARM_undef; - #define __arm_vsetq_lane(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vsetq_lane_s8 (__ARM_mve_coerce(__p0, int8_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vsetq_lane_s16 (__ARM_mve_coerce(__p0, int16_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vsetq_lane_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int64x2_t]: __arm_vsetq_lane_s64 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int64x2_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vsetq_lane_u8 (__ARM_mve_coerce(__p0, uint8_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vsetq_lane_u16 (__ARM_mve_coerce(__p0, uint16_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vsetq_lane_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint64x2_t]: __arm_vsetq_lane_u64 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint64x2_t), p2));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vsetq_lane_s8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vsetq_lane_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vsetq_lane_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int64x2_t]: __arm_vsetq_lane_s64 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int64x2_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vsetq_lane_u8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vsetq_lane_u16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vsetq_lane_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint64x2_t]: __arm_vsetq_lane_u64 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint64x2_t), p2));}) - - #endif /* MVE Integer. */ - -@@ -40303,62 +40439,62 @@ extern void *__ARM_undef; - #define __arm_vdwdupq_x_u8(p1,p2,p3,p4) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_x_n_u8 ((uint32_t) __p1, p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_x_wb_u8 (__ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_x_wb_u8 (__ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3, p4));}) - - #define __arm_vdwdupq_x_u16(p1,p2,p3,p4) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_x_n_u16 ((uint32_t) __p1, p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_x_wb_u16 (__ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_x_wb_u16 (__ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3, p4));}) - - #define __arm_vdwdupq_x_u32(p1,p2,p3,p4) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_x_n_u32 ((uint32_t) __p1, p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_x_wb_u32 (__ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_x_wb_u32 (__ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3, p4));}) - - #define __arm_viwdupq_x_u8(p1,p2,p3,p4) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_x_n_u8 ((uint32_t) __p1, p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_x_wb_u8 (__ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_x_wb_u8 (__ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3, p4));}) - - #define __arm_viwdupq_x_u16(p1,p2,p3,p4) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_x_n_u16 ((uint32_t) __p1, p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_x_wb_u16 (__ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_x_wb_u16 (__ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3, p4));}) - - #define __arm_viwdupq_x_u32(p1,p2,p3,p4) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_x_n_u32 ((uint32_t) __p1, p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_x_wb_u32 (__ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_x_wb_u32 (__ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3, p4));}) - - #define __arm_vidupq_x_u8(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vidupq_x_n_u8 ((uint32_t) __p1, p2, p3), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_x_wb_u8 (__ARM_mve_coerce(__p1, uint32_t *), p2, p3));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_x_wb_u8 (__ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3));}) - - #define __arm_vddupq_x_u8(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vddupq_x_n_u8 ((uint32_t) __p1, p2, p3), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_x_wb_u8 (__ARM_mve_coerce(__p1, uint32_t *), p2, p3));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_x_wb_u8 (__ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3));}) - - #define __arm_vidupq_x_u16(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vidupq_x_n_u16 ((uint32_t) __p1, p2, p3), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_x_wb_u16 (__ARM_mve_coerce(__p1, uint32_t *), p2, p3));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_x_wb_u16 (__ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3));}) - - #define __arm_vddupq_x_u16(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vddupq_x_n_u16 ((uint32_t) __p1, p2, p3), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_x_wb_u16 (__ARM_mve_coerce(__p1, uint32_t *), p2, p3));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_x_wb_u16 (__ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3));}) - - #define __arm_vidupq_x_u32(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vidupq_x_n_u32 ((uint32_t) __p1, p2, p3), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_x_wb_u32 (__ARM_mve_coerce(__p1, uint32_t *), p2, p3));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_x_wb_u32 (__ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3));}) - - #define __arm_vddupq_x_u32(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vddupq_x_n_u32 ((uint32_t) __p1, p2, p3), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_x_wb_u32 (__ARM_mve_coerce(__p1, uint32_t *), p2, p3));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_x_wb_u32 (__ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3));}) - - #define __arm_vshrq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \ -@@ -40372,12 +40508,12 @@ extern void *__ARM_undef; - #define __arm_vhaddq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_u8( __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_u16( __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_u32( __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_u8( __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_u16( __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_u32( __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhaddq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhaddq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhaddq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -@@ -40402,12 +40538,12 @@ extern void *__ARM_undef; - #define __arm_vhsubq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhsubq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhsubq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhsubq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -@@ -40447,20 +40583,20 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_base_wb_u64 (p0, p1, __ARM_mve_coerce(__p2, uint64x2_t)));}) - - #define __arm_vldrdq_gather_offset(p0,p1) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int64_t_ptr]: __arm_vldrdq_gather_offset_s64 (__ARM_mve_coerce1(p0, int64_t *), p1), \ -- int (*)[__ARM_mve_type_uint64_t_ptr]: __arm_vldrdq_gather_offset_u64 (__ARM_mve_coerce1(p0, uint64_t *), p1))) -+ int (*)[__ARM_mve_type_int64_t_ptr]: __arm_vldrdq_gather_offset_s64 (__ARM_mve_coerce_s64_ptr(p0, int64_t *), p1), \ -+ int (*)[__ARM_mve_type_uint64_t_ptr]: __arm_vldrdq_gather_offset_u64 (__ARM_mve_coerce_u64_ptr(p0, uint64_t *), p1))) - - #define __arm_vldrdq_gather_offset_z(p0,p1,p2) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int64_t_ptr]: __arm_vldrdq_gather_offset_z_s64 (__ARM_mve_coerce1(p0, int64_t *), p1, p2), \ -- int (*)[__ARM_mve_type_uint64_t_ptr]: __arm_vldrdq_gather_offset_z_u64 (__ARM_mve_coerce1(p0, uint64_t *), p1, p2))) -+ int (*)[__ARM_mve_type_int64_t_ptr]: __arm_vldrdq_gather_offset_z_s64 (__ARM_mve_coerce_s64_ptr(p0, int64_t *), p1, p2), \ -+ int (*)[__ARM_mve_type_uint64_t_ptr]: __arm_vldrdq_gather_offset_z_u64 (__ARM_mve_coerce_u64_ptr(p0, uint64_t *), p1, p2))) - - #define __arm_vldrdq_gather_shifted_offset(p0,p1) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int64_t_ptr]: __arm_vldrdq_gather_shifted_offset_s64 (__ARM_mve_coerce1(p0, int64_t *), p1), \ -- int (*)[__ARM_mve_type_uint64_t_ptr]: __arm_vldrdq_gather_shifted_offset_u64 (__ARM_mve_coerce1(p0, uint64_t *), p1))) -+ int (*)[__ARM_mve_type_int64_t_ptr]: __arm_vldrdq_gather_shifted_offset_s64 (__ARM_mve_coerce_s64_ptr(p0, int64_t *), p1), \ -+ int (*)[__ARM_mve_type_uint64_t_ptr]: __arm_vldrdq_gather_shifted_offset_u64 (__ARM_mve_coerce_u64_ptr(p0, uint64_t *), p1))) - - #define __arm_vldrdq_gather_shifted_offset_z(p0,p1,p2) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ -- int (*)[__ARM_mve_type_int64_t_ptr]: __arm_vldrdq_gather_shifted_offset_z_s64 (__ARM_mve_coerce1(p0, int64_t *), p1, p2), \ -- int (*)[__ARM_mve_type_uint64_t_ptr]: __arm_vldrdq_gather_shifted_offset_z_u64 (__ARM_mve_coerce1(p0, uint64_t *), p1, p2))) -+ int (*)[__ARM_mve_type_int64_t_ptr]: __arm_vldrdq_gather_shifted_offset_z_s64 (__ARM_mve_coerce_s64_ptr(p0, int64_t *), p1, p2), \ -+ int (*)[__ARM_mve_type_uint64_t_ptr]: __arm_vldrdq_gather_shifted_offset_z_u64 (__ARM_mve_coerce_u64_ptr(p0, uint64_t *), p1, p2))) - - #define __arm_vadciq_m(p0,p1,p2,p3,p4) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -40516,36 +40652,36 @@ extern void *__ARM_undef; - - #define __arm_vldrbq_gather_offset_z(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_z_s8 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_z_s16 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_z_s32 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_z_u8 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_z_u16 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_z_u32 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_z_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_z_s16 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_z_s32 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_z_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_z_u16 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_z_u32 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) - - #define __arm_vqrdmlahq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3));}) - - #define __arm_vqrdmlashq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3));}) - - #define __arm_vqdmlashq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3));}) - - #define __arm_vqrshlq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -40646,12 +40782,12 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqsubq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqsubq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqsubq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -@@ -40666,9 +40802,9 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrdmulhq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrdmulhq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrdmulhq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3));}) - - #define __arm_vqrdmlsdhxq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -40794,17 +40930,17 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaq_p_s16 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaq_p_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmlaldavaq_p_u16 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmlaldavaq_p_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaq_p_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaq_p_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmlaldavaq_p_u16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmlaldavaq_p_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) - - #define __arm_vmlaldavaxq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaxq_p_s16 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaxq_p_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaxq_p_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaxq_p_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));}) - - #define __arm_vmlsldavaq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -40874,10 +41010,10 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmvnq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmvnq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmvnq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmvnq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce1(__p1, int) , p2), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmvnq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce1(__p1, int) , p2), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmvnq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce1(__p1, int) , p2), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmvnq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce1(__p1, int) , p2));}) -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmvnq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce_i_scalar(__p1, int) , p2), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmvnq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce_i_scalar(__p1, int) , p2), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmvnq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int) , p2), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmvnq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int) , p2));}) - - #define __arm_vorrq_m_n(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -@@ -40943,12 +41079,12 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhaddq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhaddq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhaddq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -@@ -40982,12 +41118,12 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vhsubq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vhsubq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vhsubq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3));}) - - #define __arm_vmaxq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -41015,23 +41151,23 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3));}) - - #define __arm_vmlasq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3));}) - - #define __arm_vmulhq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -41077,12 +41213,12 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqaddq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqaddq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqaddq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -@@ -41094,17 +41230,17 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3));}) -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3));}) - - #define __arm_vqdmulhq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \ -- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -+ int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqdmulhq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulhq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulhq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));}) -@@ -41115,15 +41251,15 @@ extern void *__ARM_undef; - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmullbq_m_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmullbq_m_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_m_n_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_m_n_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3));}) -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_m_n_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_m_n_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3));}) - - #define __arm_vqdmulltq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_m_n_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \ -- int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_m_n_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \ -+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_m_n_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ -+ int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_m_n_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce_i_scalar(__p2, int), p3), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulltq_m_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ - int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulltq_m_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));}) - -@@ -41189,9 +41325,9 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaxq_p_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaxq_p_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaxq_p_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaxq_p_s8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaxq_p_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaxq_p_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));}) - - #define __arm_vmullbq_poly_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -41202,12 +41338,12 @@ extern void *__ARM_undef; - - #define __arm_vldrbq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_s8(__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_s16(__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_s32(__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_u8(__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_u16(__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_u32(__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_s8(__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_s16(__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_s32(__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_u8(__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_u16(__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_u32(__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) - - #define __arm_vidupq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -41215,9 +41351,9 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vidupq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), (uint32_t) __p1, p2, p3), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vidupq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), (uint32_t) __p1, p2, p3), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vidupq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), (uint32_t) __p1, p2, p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_m_wb_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_m_wb_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_m_wb_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3));}) -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_m_wb_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_m_wb_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_m_wb_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3));}) - - #define __arm_vddupq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -41225,89 +41361,89 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vddupq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), (uint32_t) __p1, p2, p3), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vddupq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), (uint32_t) __p1, p2, p3), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vddupq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), (uint32_t) __p1, p2, p3), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_m_wb_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_m_wb_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_m_wb_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3));}) -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_m_wb_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_m_wb_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_m_wb_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3));}) - - #define __arm_vidupq_u16(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vidupq_n_u16 ((uint32_t) __p0, p1), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_wb_u16 (__ARM_mve_coerce(__p0, uint32_t *), p1));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_wb_u16 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1));}) - - #define __arm_vidupq_u32(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vidupq_n_u32 ((uint32_t) __p0, p1), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_wb_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_wb_u32 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1));}) - - #define __arm_vidupq_u8(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vidupq_n_u8 ((uint32_t) __p0, p1), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_wb_u8 (__ARM_mve_coerce(__p0, uint32_t *), p1));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vidupq_wb_u8 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1));}) - - #define __arm_vddupq_u16(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vddupq_n_u16 ((uint32_t) __p0, p1), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_wb_u16 (__ARM_mve_coerce(__p0, uint32_t *), p1));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_wb_u16 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1));}) - - #define __arm_vddupq_u32(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vddupq_n_u32 ((uint32_t) __p0, p1), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_wb_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_wb_u32 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1));}) - - #define __arm_vddupq_u8(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ - int (*)[__ARM_mve_type_int_n]: __arm_vddupq_n_u8 ((uint32_t) __p0, p1), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_wb_u8 (__ARM_mve_coerce(__p0, uint32_t *), p1));}) -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vddupq_wb_u8 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1));}) - - #define __arm_viwdupq_m(p0,p1,p2,p3,p4) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_viwdupq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint32_t), p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_viwdupq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32_t), p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_viwdupq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_m_wb_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_m_wb_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_m_wb_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4));}) -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_viwdupq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2, p3, p4), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_viwdupq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2, p3, p4), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_viwdupq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2, p3, p4), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_m_wb_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3, p4), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_m_wb_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3, p4), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_m_wb_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3, p4));}) - - #define __arm_viwdupq_u16(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -- int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u16 (__ARM_mve_coerce(__p0, uint32_t), p1, (const int) p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u16 (__ARM_mve_coerce(__p0, uint32_t *), p1, (const int) p2));}) -+ int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u16 (__ARM_mve_coerce_i_scalar(__p0, int), p1, (const int) p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u16 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1, (const int) p2));}) - - #define __arm_viwdupq_u32(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -- int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u32 (__ARM_mve_coerce(__p0, uint32_t), p1, p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));}) -+ int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u32 (__ARM_mve_coerce_i_scalar(__p0, int), p1, p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u32 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1, p2));}) - - #define __arm_viwdupq_u8(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -- int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u8 (__ARM_mve_coerce(__p0, uint32_t), p1, p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u8 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));}) -+ int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u8 (__ARM_mve_coerce_i_scalar(__p0, int), p1, p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u8 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1, p2));}) - - #define __arm_vdwdupq_m(p0,p1,p2,p3,p4) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vdwdupq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint32_t), p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vdwdupq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32_t), p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vdwdupq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_m_wb_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_m_wb_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_m_wb_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4));}) -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vdwdupq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2, p3, p4), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vdwdupq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2, p3, p4), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vdwdupq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2, p3, p4), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_m_wb_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3, p4), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_m_wb_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3, p4), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_m_wb_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_u32_ptr(__p1, uint32_t *), p2, p3, p4));}) - - #define __arm_vdwdupq_u16(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -- int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_n_u16 (__ARM_mve_coerce(__p0, uint32_t), p1, p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_wb_u16 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));}) -+ int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_n_u16 (__ARM_mve_coerce_i_scalar(__p0, int), p1, p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_wb_u16 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1, p2));}) - - #define __arm_vdwdupq_u32(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -- int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_n_u32 (__ARM_mve_coerce(__p0, uint32_t), p1, p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_wb_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));}) -+ int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_n_u32 (__ARM_mve_coerce_i_scalar(__p0, int), p1, p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_wb_u32 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1, p2));}) - - #define __arm_vdwdupq_u8(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -- int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_n_u8 (__ARM_mve_coerce(__p0, uint32_t), p1, p2), \ -- int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_wb_u8 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));}) -+ int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_n_u8 (__ARM_mve_coerce_i_scalar(__p0, int), p1, p2), \ -+ int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_wb_u8 (__ARM_mve_coerce_u32_ptr(__p0, uint32_t *), p1, p2));}) - - #define __arm_vshlcq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -@@ -41343,14 +41479,14 @@ extern void *__ARM_undef; - #define __arm_vaddlvaq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddlvaq_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddlvaq_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddlvaq_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddlvaq_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t)));}) - - #define __arm_vaddlvaq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddlvaq_p_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddlvaq_p_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddlvaq_p_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddlvaq_p_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) - - #define __arm_vaddlvq(p0) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -@@ -41365,22 +41501,22 @@ extern void *__ARM_undef; - #define __arm_vaddvaq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vaddvaq_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vaddvaq_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddvaq_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vaddvaq_u8 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint8x16_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vaddvaq_u16 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddvaq_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vaddvaq_s8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int8x16_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vaddvaq_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddvaq_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vaddvaq_u8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint8x16_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vaddvaq_u16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddvaq_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t)));}) - - #define __arm_vaddvaq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vaddvaq_p_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vaddvaq_p_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddvaq_p_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vaddvaq_p_u8 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vaddvaq_p_u16 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddvaq_p_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vaddvaq_p_s8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vaddvaq_p_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddvaq_p_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vaddvaq_p_u8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vaddvaq_p_u16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddvaq_p_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) - - #define __arm_vaddvq(p0) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ -@@ -41406,9 +41542,9 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpcsq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpcsq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpcsq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)));}) -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vcmpcsq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -41416,9 +41552,9 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpcsq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpcsq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpcsq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t), p2), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t), p2), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2));}) -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2));}) - - #define __arm_vcmphiq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -41426,16 +41562,16 @@ extern void *__ARM_undef; - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmphiq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmphiq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmphiq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmphiq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmphiq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmphiq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)));}) -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmphiq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmphiq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int)), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmphiq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int)));}) - - #define __arm_vcmphiq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmphiq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t), p2), \ -- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmphiq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t), p2), \ -- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmphiq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2), \ -+ int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmphiq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmphiq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ -+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmphiq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce_i_scalar(__p1, int), p2), \ - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmphiq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmphiq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmphiq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) -@@ -41532,34 +41668,34 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaq_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaq_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaq_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaq_u8 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaq_u16 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaq_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaq_s8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaq_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaq_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaq_u8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaq_u16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaq_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) - - #define __arm_vmladavaq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaq_p_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaq_p_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaq_p_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaq_p_u8 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaq_p_u16 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaq_p_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaq_p_s8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaq_p_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaq_p_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaq_p_u8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaq_p_u16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaq_p_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) - - #define __arm_vmladavaxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaxq_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaxq_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaxq_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaxq_u8 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaxq_u16 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaxq_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaxq_s8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaxq_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaxq_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaxq_u8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaxq_u16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaxq_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) - - #define __arm_vmladavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -41602,17 +41738,17 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaq_s16 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaq_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmlaldavaq_u16 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmlaldavaq_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaq_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaq_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmlaldavaq_u16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmlaldavaq_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) - - #define __arm_vmlaldavaxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaxq_s16 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaxq_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaxq_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaxq_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)));}) - - #define __arm_vmlaldavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ -@@ -41776,22 +41912,22 @@ extern void *__ARM_undef; - - #define __arm_vstrbq(p0,p1) ({ __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vstrbq_s8 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t)), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrbq_s16 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int16x8_t)), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrbq_s32 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_u8 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_u16 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_u32 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vstrbq_s8 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t)), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrbq_s16 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrbq_s32 (__ARM_mve_coerce_s8_ptr(p0, int8_t *), __ARM_mve_coerce(__p1, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_u8 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_u16 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_u32 (__ARM_mve_coerce_u8_ptr(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) - - #define __arm_vstrbq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vstrbq_p_s8 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrbq_p_s16 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrbq_p_s32 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_p_u8 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_p_u16 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_p_u32 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vstrbq_p_s8 (__ARM_mve_coerce_s8_ptr(__p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t), p2), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrbq_p_s16 (__ARM_mve_coerce_s8_ptr(__p0, int8_t *), __ARM_mve_coerce(__p1, int16x8_t), p2), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrbq_p_s32 (__ARM_mve_coerce_s8_ptr(__p0, int8_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_p_u8 (__ARM_mve_coerce_u8_ptr(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_p_u16 (__ARM_mve_coerce_u8_ptr(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_p_u32 (__ARM_mve_coerce_u8_ptr(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) - - #define __arm_vstrdq_scatter_base(p0,p1,p2) ({ __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p2)])0, \ -@@ -41807,61 +41943,61 @@ extern void *__ARM_undef; - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) - - #define __arm_vrmlaldavhaq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_p_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_p_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_p_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_p_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) - - #define __arm_vstrbq_scatter_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vstrbq_scatter_offset_s8 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrbq_scatter_offset_s16 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrbq_scatter_offset_s32 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_scatter_offset_u8 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_scatter_offset_u16 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_scatter_offset_u32 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vstrbq_scatter_offset_s8 (__ARM_mve_coerce_s8_ptr(__p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrbq_scatter_offset_s16 (__ARM_mve_coerce_s8_ptr(__p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrbq_scatter_offset_s32 (__ARM_mve_coerce_s8_ptr(__p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_scatter_offset_u8 (__ARM_mve_coerce_u8_ptr(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_scatter_offset_u16 (__ARM_mve_coerce_u8_ptr(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_scatter_offset_u32 (__ARM_mve_coerce_u8_ptr(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) - - #define __arm_vstrbq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vstrbq_scatter_offset_p_s8 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrbq_scatter_offset_p_s16 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -- int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrbq_scatter_offset_p_s32 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_scatter_offset_p_u8 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_scatter_offset_p_u16 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -- int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_scatter_offset_p_u32 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vstrbq_scatter_offset_p_s8 (__ARM_mve_coerce_s8_ptr(__p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrbq_scatter_offset_p_s16 (__ARM_mve_coerce_s8_ptr(__p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \ -+ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrbq_scatter_offset_p_s32 (__ARM_mve_coerce_s8_ptr(__p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_scatter_offset_p_u8 (__ARM_mve_coerce_u8_ptr(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_scatter_offset_p_u16 (__ARM_mve_coerce_u8_ptr(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \ -+ int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_scatter_offset_p_u32 (__ARM_mve_coerce_u8_ptr(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) - - #define __arm_vstrdq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_offset_p_s64 (__ARM_mve_coerce(__p0, int64_t *), p1, __ARM_mve_coerce(__p2, int64x2_t), p3), \ -- int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_offset_p_u64 (__ARM_mve_coerce(__p0, uint64_t *), p1, __ARM_mve_coerce(__p2, uint64x2_t), p3));}) -+ int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_offset_p_s64 (__ARM_mve_coerce_s64_ptr(__p0, int64_t *), p1, __ARM_mve_coerce(__p2, int64x2_t), p3), \ -+ int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_offset_p_u64 (__ARM_mve_coerce_u64_ptr(__p0, uint64_t *), p1, __ARM_mve_coerce(__p2, uint64x2_t), p3));}) - - #define __arm_vstrdq_scatter_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_offset_s64 (__ARM_mve_coerce(__p0, int64_t *), p1, __ARM_mve_coerce(__p2, int64x2_t)), \ -- int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_offset_u64 (__ARM_mve_coerce(__p0, uint64_t *), p1, __ARM_mve_coerce(__p2, uint64x2_t)));}) -+ int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_offset_s64 (__ARM_mve_coerce_s64_ptr(__p0, int64_t *), p1, __ARM_mve_coerce(__p2, int64x2_t)), \ -+ int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_offset_u64 (__ARM_mve_coerce_u64_ptr(__p0, uint64_t *), p1, __ARM_mve_coerce(__p2, uint64x2_t)));}) - - #define __arm_vstrdq_scatter_shifted_offset_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_shifted_offset_p_s64 (__ARM_mve_coerce(__p0, int64_t *), p1, __ARM_mve_coerce(__p2, int64x2_t), p3), \ -- int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_shifted_offset_p_u64 (__ARM_mve_coerce(__p0, uint64_t *), p1, __ARM_mve_coerce(__p2, uint64x2_t), p3));}) -+ int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_shifted_offset_p_s64 (__ARM_mve_coerce_s64_ptr(__p0, int64_t *), p1, __ARM_mve_coerce(__p2, int64x2_t), p3), \ -+ int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_shifted_offset_p_u64 (__ARM_mve_coerce_u64_ptr(__p0, uint64_t *), p1, __ARM_mve_coerce(__p2, uint64x2_t), p3));}) - - #define __arm_vstrdq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \ -- int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_shifted_offset_s64 (__ARM_mve_coerce(__p0, int64_t *), p1, __ARM_mve_coerce(__p2, int64x2_t)), \ -- int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_shifted_offset_u64 (__ARM_mve_coerce(__p0, uint64_t *), p1, __ARM_mve_coerce(__p2, uint64x2_t)));}) -+ int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_shifted_offset_s64 (__ARM_mve_coerce_s64_ptr(__p0, int64_t *), p1, __ARM_mve_coerce(__p2, int64x2_t)), \ -+ int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_shifted_offset_u64 (__ARM_mve_coerce_u64_ptr(__p0, uint64_t *), p1, __ARM_mve_coerce(__p2, uint64x2_t)));}) - - #endif /* __cplusplus */ - #endif /* __ARM_FEATURE_MVE */ -diff --git a/gcc/config/arm/constraints.md b/gcc/config/arm/constraints.md -index db316d81dcc..10e7c9b9c32 100644 ---- a/gcc/config/arm/constraints.md -+++ b/gcc/config/arm/constraints.md -@@ -102,10 +102,6 @@ - (match_test "TARGET_HAVE_MVE && ((ival == 1) || (ival == 2) - || (ival == 4) || (ival == 8))"))) - --;; True if the immediate is multiple of 8 and in range of -/+ 1016 for MVE. --(define_predicate "mve_vldrd_immediate" -- (match_test "satisfies_constraint_Ri (op)")) -- - (define_register_constraint "t" "TARGET_32BIT ? VFP_LO_REGS : NO_REGS" - "The VFP registers @code{s0}-@code{s31}.") - -@@ -566,6 +562,22 @@ - (match_code "symbol_ref") - ) - -+;; True if the immediate is the range +/- 1016 and multiple of 8 for MVE. -+(define_constraint "Ri" -+ "@internal In Thumb-2 state a constant is multiple of 8 and in range -+ of -/+ 1016 for MVE" -+ (and (match_code "const_int") -+ (match_test "TARGET_HAVE_MVE && (-1016 <= ival) && (ival <= 1016) -+ && ((ival % 8) == 0)"))) -+ -+;; True if the immediate is multiple of 2 and in range of -/+ 252 for MVE. -+(define_constraint "Rl" -+ "@internal In Thumb-2 state a constant is multiple of 2 and in range -+ of -/+ 252 for MVE" -+ (and (match_code "const_int") -+ (match_test "TARGET_HAVE_MVE && (-252 <= ival) && (ival <= 252) -+ && ((ival % 2) == 0)"))) -+ - (define_memory_constraint "Uz" - "@internal - A memory access that is accessible as an LDC/STC operand" -diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md -index 1d957dd2539..860d734b9a1 100644 ---- a/gcc/config/arm/mve.md -+++ b/gcc/config/arm/mve.md -@@ -134,7 +134,7 @@ - VRNDQ_M_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;vrintzt.f%# %q0, %q2" -+ "vpst\;vrintzt.f%#\t%q0, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -232,7 +232,7 @@ - VREV64Q_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vrev64.%# %q0, %q1" -+ "vrev64.%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -245,7 +245,7 @@ - (neg:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w"))) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vneg.f%# %q0, %q1" -+ "vneg.f%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -259,7 +259,7 @@ - VDUPQ_N_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vdup.%# %q0, %1" -+ "vdup.%#\t%q0, %1" - [(set_attr "type" "mve_move") - ]) - -@@ -272,7 +272,7 @@ - (abs:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w"))) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vabs.f%# %q0, %q1" -+ "vabs.f%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -286,7 +286,7 @@ - VREV32Q_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vrev32.16 %q0, %q1" -+ "vrev32.16\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - ;; -@@ -299,7 +299,7 @@ - VCVTTQ_F32_F16)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vcvtt.f32.f16 %q0, %q1" -+ "vcvtt.f32.f16\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -313,7 +313,7 @@ - VCVTBQ_F32_F16)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vcvtb.f32.f16 %q0, %q1" -+ "vcvtb.f32.f16\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -327,7 +327,7 @@ - VCVTQ_TO_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vcvt.f%#.%# %q0, %q1" -+ "vcvt.f%#.%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -341,7 +341,7 @@ - VREV64Q)) - ] - "TARGET_HAVE_MVE" -- "vrev64.%# %q0, %q1" -+ "vrev64.%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -355,7 +355,7 @@ - VCVTQ_FROM_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vcvt.%#.f%# %q0, %q1" -+ "vcvt.%#.f%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - ;; [vqnegq_s]) -@@ -367,7 +367,7 @@ - VQNEGQ_S)) - ] - "TARGET_HAVE_MVE" -- "vqneg.s%# %q0, %q1" -+ "vqneg.s%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -381,7 +381,7 @@ - VQABSQ_S)) - ] - "TARGET_HAVE_MVE" -- "vqabs.s%# %q0, %q1" -+ "vqabs.s%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -394,7 +394,7 @@ - (neg:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w"))) - ] - "TARGET_HAVE_MVE" -- "vneg.s%# %q0, %q1" -+ "vneg.s%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -428,7 +428,7 @@ - VDUPQ_N)) - ] - "TARGET_HAVE_MVE" -- "vdup.%# %q0, %1" -+ "vdup.%#\t%q0, %1" - [(set_attr "type" "mve_move") - ]) - -@@ -441,7 +441,7 @@ - (clz:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w"))) - ] - "TARGET_HAVE_MVE" -- "vclz.i%# %q0, %q1" -+ "vclz.i%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - (define_expand "mve_vclzq_u" -@@ -462,7 +462,7 @@ - VCLSQ_S)) - ] - "TARGET_HAVE_MVE" -- "vcls.s%# %q0, %q1" -+ "vcls.s%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -517,7 +517,7 @@ - VMOVLTQ)) - ] - "TARGET_HAVE_MVE" -- "vmovlt.%# %q0, %q1" -+ "vmovlt.%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -531,7 +531,7 @@ - VMOVLBQ)) - ] - "TARGET_HAVE_MVE" -- "vmovlb.%# %q0, %q1" -+ "vmovlb.%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -545,7 +545,7 @@ - VCVTPQ)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vcvtp.%#.f%# %q0, %q1" -+ "vcvtp.%#.f%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -559,7 +559,7 @@ - VCVTNQ)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vcvtn.%#.f%# %q0, %q1" -+ "vcvtn.%#.f%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -573,7 +573,7 @@ - VCVTMQ)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vcvtm.%#.f%# %q0, %q1" -+ "vcvtm.%#.f%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -587,7 +587,7 @@ - VCVTAQ)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vcvta.%#.f%# %q0, %q1" -+ "vcvta.%#.f%#\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -601,7 +601,7 @@ - VMVNQ_N)) - ] - "TARGET_HAVE_MVE" -- "vmvn.i%# %q0, %1" -+ "vmvn.i%#\t%q0, %1" - [(set_attr "type" "mve_move") - ]) - -@@ -615,7 +615,7 @@ - VREV16Q)) - ] - "TARGET_HAVE_MVE" -- "vrev16.8 %q0, %q1" -+ "vrev16.8\t%q0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -629,7 +629,7 @@ - VADDLVQ)) - ] - "TARGET_HAVE_MVE" -- "vaddlv.32 %Q0, %R0, %q1" -+ "vaddlv.32\t%Q0, %R0, %q1" - [(set_attr "type" "mve_move") - ]) - -@@ -643,7 +643,7 @@ - VCTPQ)) - ] - "TARGET_HAVE_MVE" -- "vctp. %1" -+ "vctp.\t%1" - [(set_attr "type" "mve_move") - ]) - -@@ -672,7 +672,7 @@ - VSUBQ_N_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vsub.f %q0, %q1, %2" -+ "vsub.f\t%q0, %q1, %2" - [(set_attr "type" "mve_move") - ]) - -@@ -687,7 +687,7 @@ - VBRSRQ_N_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vbrsr. %q0, %q1, %2" -+ "vbrsr.\t%q0, %q1, %2" - [(set_attr "type" "mve_move") - ]) - -@@ -716,7 +716,7 @@ - VCREATEQ_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vmov %q0[2], %q0[0], %Q2, %Q1\;vmov %q0[3], %q0[1], %R2, %R1" -+ "vmov %q0[2], %q0[0], %Q1, %Q2\;vmov %q0[3], %q0[1], %R1, %R2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -731,7 +731,7 @@ - VCREATEQ)) - ] - "TARGET_HAVE_MVE" -- "vmov %q0[2], %q0[0], %Q2, %Q1\;vmov %q0[3], %q0[1], %R2, %R1" -+ "vmov %q0[2], %q0[0], %Q1, %Q2\;vmov %q0[3], %q0[1], %R1, %R2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -810,7 +810,7 @@ - VADDLVQ_P)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vaddlvt.32 %Q0, %R0, %q1" -+ "vpst\;vaddlvt.32\t%Q0, %R0, %q1" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -824,7 +824,7 @@ - (match_operand:MVE_2 2 "s_register_operand" "w"))) - ] - "TARGET_HAVE_MVE" -- "vcmp.%# , %q1, %q2" -+ "vcmp.%#\t, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -873,7 +873,7 @@ - VADDQ_N)) - ] - "TARGET_HAVE_MVE" -- "vadd.i%# %q0, %q1, %2" -+ "vadd.i%#\t%q0, %q1, %2" - [(set_attr "type" "mve_move") - ]) - -@@ -888,7 +888,7 @@ - VADDVAQ)) - ] - "TARGET_HAVE_MVE" -- "vaddva.%# %0, %q2" -+ "vaddva.%#\t%0, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -969,7 +969,7 @@ - VBRSRQ_N)) - ] - "TARGET_HAVE_MVE" -- "vbrsr.%# %q0, %q1, %2" -+ "vbrsr.%#\t%q0, %q1, %2" - [(set_attr "type" "mve_move") - ]) - -@@ -1828,7 +1828,7 @@ - VADDLVAQ)) - ] - "TARGET_HAVE_MVE" -- "vaddlva.32 %Q0, %R0, %q2" -+ "vaddlva.32\t%Q0, %R0, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -1843,7 +1843,7 @@ - VADDQ_N_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vadd.f%# %q0, %q1, %2" -+ "vadd.f%#\t%q0, %q1, %2" - [(set_attr "type" "mve_move") - ]) - -@@ -1857,7 +1857,7 @@ - (match_operand:MVE_0 2 "s_register_operand" "w"))) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vand %q0, %q1, %q2" -+ "vand\t%q0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -1871,7 +1871,7 @@ - (match_operand:MVE_0 2 "s_register_operand" "w"))) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vbic %q0, %q1, %q2" -+ "vbic\t%q0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -1886,7 +1886,7 @@ - VBICQ_N)) - ] - "TARGET_HAVE_MVE" -- "vbic.i%# %q0, %2" -+ "vbic.i%#\t%q0, %2" - [(set_attr "type" "mve_move") - ]) - -@@ -1960,7 +1960,7 @@ - VCTPQ_M)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vctpt. %1" -+ "vpst\;vctpt.\t%1" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -1975,7 +1975,7 @@ - VCVTBQ_F16_F32)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vcvtb.f16.f32 %q0, %q2" -+ "vcvtb.f16.f32\t%q0, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -1990,7 +1990,7 @@ - VCVTTQ_F16_F32)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vcvtt.f16.f32 %q0, %q2" -+ "vcvtt.f16.f32\t%q0, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -2004,7 +2004,7 @@ - (match_operand:MVE_0 2 "s_register_operand" "w"))) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "veor %q0, %q1, %q2" -+ "veor\t%q0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -2152,7 +2152,7 @@ - VMLALDAVXQ_S)) - ] - "TARGET_HAVE_MVE" -- "vmlaldavx.s%# %Q0, %R0, %q1, %q2" -+ "vmlaldavx.s%#\t%Q0, %R0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -2167,7 +2167,7 @@ - VMLSLDAVQ_S)) - ] - "TARGET_HAVE_MVE" -- "vmlsldav.s%# %Q0, %R0, %q1, %q2" -+ "vmlsldav.s%#\t%Q0, %R0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -2182,7 +2182,7 @@ - VMLSLDAVXQ_S)) - ] - "TARGET_HAVE_MVE" -- "vmlsldavx.s%# %Q0, %R0, %q1, %q2" -+ "vmlsldavx.s%#\t%Q0, %R0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -2255,7 +2255,7 @@ - (match_operand:MVE_0 1 "s_register_operand" "w"))) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vorn %q0, %q1, %q2" -+ "vorn\t%q0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -2269,7 +2269,7 @@ - (match_operand:MVE_0 2 "s_register_operand" "w"))) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vorr %q0, %q1, %q2" -+ "vorr\t%q0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -2419,7 +2419,7 @@ - VRMLALDAVHXQ_S)) - ] - "TARGET_HAVE_MVE" -- "vrmlaldavhx.s32 %Q0, %R0, %q1, %q2" -+ "vrmlaldavhx.s32\t%Q0, %R0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -2538,7 +2538,7 @@ - VRMLALDAVHQ)) - ] - "TARGET_HAVE_MVE" -- "vrmlaldavh.32 %Q0, %R0, %q1, %q2" -+ "vrmlaldavh.32\t%Q0, %R0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -2554,7 +2554,7 @@ - VBICQ_M_N)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vbict.i%# %q0, %2" -+ "vpst\;vbict.i%#\t%q0, %2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; -@@ -2599,7 +2599,7 @@ - VCVTQ_M_TO_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;vcvtt.f%#.%# %q0, %q2" -+ "vpst\;vcvtt.f%#.%#\t%q0, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; -@@ -2644,7 +2644,7 @@ - VRMLALDAVHAQ)) - ] - "TARGET_HAVE_MVE" -- "vrmlaldavha.32 %Q0, %R0, %q2, %q3" -+ "vrmlaldavha.32\t%Q0, %R0, %q2, %q3" - [(set_attr "type" "mve_move") - ]) - -@@ -2707,7 +2707,7 @@ - (match_dup 4)] - VSHLCQ))] - "TARGET_HAVE_MVE" -- "vshlc %q0, %1, %4") -+ "vshlc\t%q0, %1, %4") - - ;; - ;; [vabsq_m_s]) -@@ -3041,7 +3041,7 @@ - VDUPQ_M_N)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vdupt.%# %q0, %2" -+ "vpst\;vdupt.%#\t%q0, %2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -3265,7 +3265,7 @@ - VMVNQ_M)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vmvnt %q0, %q2" -+ "vpst\;vmvnt\t%q0, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -3297,7 +3297,7 @@ - VPSELQ)) - ] - "TARGET_HAVE_MVE" -- "vpsel %q0, %q1, %q2" -+ "vpsel\t%q0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -3498,7 +3498,7 @@ - ;; - (define_insn "mve_vrev64q_m_" - [ -- (set (match_operand:MVE_2 0 "s_register_operand" "=w") -+ (set (match_operand:MVE_2 0 "s_register_operand" "=&w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand: 3 "vpr_register_operand" "Up")] -@@ -3712,7 +3712,7 @@ - VADDLVAQ_P)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vaddlvat.32 %Q0, %R0, %q2" -+ "vpst\;vaddlvat.32\t%Q0, %R0, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; -@@ -3922,7 +3922,7 @@ - VCVTBQ_M_F16_F32)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;vcvtbt.f16.f32 %q0, %q2" -+ "vpst\;vcvtbt.f16.f32\t%q0, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -3938,7 +3938,7 @@ - VCVTBQ_M_F32_F16)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;vcvtbt.f32.f16 %q0, %q2" -+ "vpst\;vcvtbt.f32.f16\t%q0, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -3954,7 +3954,7 @@ - VCVTTQ_M_F16_F32)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;vcvttt.f16.f32 %q0, %q2" -+ "vpst\;vcvttt.f16.f32\t%q0, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -3970,7 +3970,7 @@ - VCVTTQ_M_F32_F16)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;vcvttt.f32.f16 %q0, %q2" -+ "vpst\;vcvttt.f32.f16\t%q0, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -3986,7 +3986,7 @@ - VDUPQ_M_N_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;vdupt.%# %q0, %2" -+ "vpst\;vdupt.%#\t%q0, %2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -4158,7 +4158,7 @@ - VMLALDAVAQ)) - ] - "TARGET_HAVE_MVE" -- "vmlaldava.%# %Q0, %R0, %q2, %q3" -+ "vmlaldava.%#\t%Q0, %R0, %q2, %q3" - [(set_attr "type" "mve_move") - ]) - -@@ -4174,7 +4174,7 @@ - VMLALDAVAXQ_S)) - ] - "TARGET_HAVE_MVE" -- "vmlaldavax.s%# %Q0, %R0, %q2, %q3" -+ "vmlaldavax.s%#\t%Q0, %R0, %q2, %q3" - [(set_attr "type" "mve_move") - ]) - -@@ -4190,7 +4190,7 @@ - VMLALDAVQ_P)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vmlaldavt.%# %Q0, %R0, %q1, %q2" -+ "vpst\;vmlaldavt.%#\t%Q0, %R0, %q1, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -4221,7 +4221,7 @@ - VMLSLDAVAQ_S)) - ] - "TARGET_HAVE_MVE" -- "vmlsldava.s%# %Q0, %R0, %q2, %q3" -+ "vmlsldava.s%#\t%Q0, %R0, %q2, %q3" - [(set_attr "type" "mve_move") - ]) - -@@ -4237,7 +4237,7 @@ - VMLSLDAVAXQ_S)) - ] - "TARGET_HAVE_MVE" -- "vmlsldavax.s%# %Q0, %R0, %q2, %q3" -+ "vmlsldavax.s%#\t%Q0, %R0, %q2, %q3" - [(set_attr "type" "mve_move") - ]) - -@@ -4253,7 +4253,7 @@ - VMLSLDAVQ_P_S)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vmlsldavt.s%# %Q0, %R0, %q1, %q2" -+ "vpst\;vmlsldavt.s%#\t%Q0, %R0, %q1, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -4269,7 +4269,7 @@ - VMLSLDAVXQ_P_S)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vmlsldavxt.s%# %Q0, %R0, %q1, %q2" -+ "vpst\;vmlsldavxt.s%#\t%Q0, %R0, %q1, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; -@@ -4346,7 +4346,7 @@ - VMVNQ_M_N)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vmvnt.i%# %q0, %2" -+ "vpst\;vmvnt.i%#\t%q0, %2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; -@@ -4377,7 +4377,7 @@ - VORRQ_M_N)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vorrt.i%# %q0, %2" -+ "vpst\;vorrt.i%#\t%q0, %2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; -@@ -4392,7 +4392,7 @@ - VPSELQ_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpsel %q0, %q1, %q2" -+ "vpsel\t%q0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -4568,7 +4568,7 @@ - VREV32Q_M_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;vrev32t.16 %q0, %q2" -+ "vpst\;vrev32t.16\t%q0, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -4584,7 +4584,7 @@ - VREV32Q_M)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vrev32t.%# %q0, %q2" -+ "vpst\;vrev32t.%#\t%q0, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -4593,14 +4593,14 @@ - ;; - (define_insn "mve_vrev64q_m_f" - [ -- (set (match_operand:MVE_0 0 "s_register_operand" "=w") -+ (set (match_operand:MVE_0 0 "s_register_operand" "=&w") - (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") - (match_operand:MVE_0 2 "s_register_operand" "w") - (match_operand: 3 "vpr_register_operand" "Up")] - VREV64Q_M_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;vrev64t.%# %q0, %q2" -+ "vpst\;vrev64t.%#\t%q0, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -4616,7 +4616,7 @@ - VRMLALDAVHAXQ_S)) - ] - "TARGET_HAVE_MVE" -- "vrmlaldavhax.s32 %Q0, %R0, %q2, %q3" -+ "vrmlaldavhax.s32\t%Q0, %R0, %q2, %q3" - [(set_attr "type" "mve_move") - ]) - -@@ -4632,7 +4632,7 @@ - VRMLALDAVHXQ_P_S)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vrmlaldavhxt.s32 %Q0, %R0, %q1, %q2" -+ "vpst\;vrmlaldavhxt.s32\t%Q0, %R0, %q1, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -4648,7 +4648,7 @@ - VRMLSLDAVHAXQ_S)) - ] - "TARGET_HAVE_MVE" -- "vrmlsldavhax.s32 %Q0, %R0, %q2, %q3" -+ "vrmlsldavhax.s32\t%Q0, %R0, %q2, %q3" - [(set_attr "type" "mve_move") - ]) - -@@ -4664,7 +4664,7 @@ - VRMLSLDAVHQ_P_S)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vrmlsldavht.s32 %Q0, %R0, %q1, %q2" -+ "vpst\;vrmlsldavht.s32\t%Q0, %R0, %q1, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -4680,7 +4680,7 @@ - VRMLSLDAVHXQ_P_S)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vrmlsldavhxt.s32 %Q0, %R0, %q1, %q2" -+ "vpst\;vrmlsldavhxt.s32\t%Q0, %R0, %q1, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -4905,7 +4905,7 @@ - VREV16Q_M)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vrev16t.8 %q0, %q2" -+ "vpst\;vrev16t.8\t%q0, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -4937,7 +4937,7 @@ - VRMLALDAVHQ_P)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vrmlaldavht.32 %Q0, %R0, %q1, %q2" -+ "vpst\;vrmlaldavht.32\t%Q0, %R0, %q1, %q2" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -4953,7 +4953,7 @@ - VRMLSLDAVHAQ_S)) - ] - "TARGET_HAVE_MVE" -- "vrmlsldavha.s32 %Q0, %R0, %q2, %q3" -+ "vrmlsldavha.s32\t%Q0, %R0, %q2, %q3" - [(set_attr "type" "mve_move") - ]) - -@@ -4972,7 +4972,7 @@ - "TARGET_HAVE_MVE" - "vpst\;vabavt.%#\t%0, %q2, %q3" - [(set_attr "type" "mve_move") --]) -+ (set_attr "length" "8")]) - - ;; - ;; [vqshluq_m_n_s]) -@@ -4988,7 +4988,8 @@ - ] - "TARGET_HAVE_MVE" - "vpst\n\tvqshlut.s%#\t%q0, %q2, %3" -- [(set_attr "type" "mve_move")]) -+ [(set_attr "type" "mve_move") -+ (set_attr "length" "8")]) - - ;; - ;; [vshlq_m_s, vshlq_m_u]) -@@ -5004,7 +5005,8 @@ - ] - "TARGET_HAVE_MVE" - "vpst\;vshlt.%#\t%q0, %q2, %q3" -- [(set_attr "type" "mve_move")]) -+ [(set_attr "type" "mve_move") -+ (set_attr "length" "8")]) - - ;; - ;; [vsriq_m_n_s, vsriq_m_n_u]) -@@ -5020,7 +5022,8 @@ - ] - "TARGET_HAVE_MVE" - "vpst\;vsrit.%#\t%q0, %q2, %3" -- [(set_attr "type" "mve_move")]) -+ [(set_attr "type" "mve_move") -+ (set_attr "length" "8")]) - - ;; - ;; [vsubq_m_u, vsubq_m_s]) -@@ -5036,7 +5039,8 @@ - ] - "TARGET_HAVE_MVE" - "vpst\;vsubt.i%#\t%q0, %q2, %q3" -- [(set_attr "type" "mve_move")]) -+ [(set_attr "type" "mve_move") -+ (set_attr "length" "8")]) - - ;; - ;; [vcvtq_m_n_to_f_u, vcvtq_m_n_to_f_s]) -@@ -5118,7 +5122,7 @@ - VANDQ_M)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vandt %q0, %q2, %q3" -+ "vpst\;vandt\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -5135,7 +5139,7 @@ - VBICQ_M)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vbict %q0, %q2, %q3" -+ "vpst\;vbict\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -5203,7 +5207,7 @@ - VEORQ_M)) - ] - "TARGET_HAVE_MVE" -- "vpst\;veort %q0, %q2, %q3" -+ "vpst\;veort\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -5458,7 +5462,7 @@ - VORNQ_M)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vornt %q0, %q2, %q3" -+ "vpst\;vornt\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -5475,7 +5479,7 @@ - VORRQ_M)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vorrt %q0, %q2, %q3" -+ "vpst\;vorrt\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -6121,7 +6125,7 @@ - VMLALDAVAXQ_P)) - ] - "TARGET_HAVE_MVE" -- "vpst\;vmlaldavaxt.%# %Q0, %R0, %q2, %q3" -+ "vpst\;vmlaldavaxt.%#\t%Q0, %R0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -6647,7 +6651,7 @@ - VANDQ_M_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;vandt %q0, %q2, %q3" -+ "vpst\;vandt\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -6664,7 +6668,7 @@ - VBICQ_M_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;vbict %q0, %q2, %q3" -+ "vpst\;vbict\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -6868,7 +6872,7 @@ - VEORQ_M_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;veort %q0, %q2, %q3" -+ "vpst\;veort\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -7021,7 +7025,7 @@ - VORNQ_M_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;vornt %q0, %q2, %q3" -+ "vpst\;vornt\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -7038,7 +7042,7 @@ - VORRQ_M_F)) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vpst\;vorrt %q0, %q2, %q3" -+ "vpst\;vorrt\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -7265,15 +7269,13 @@ - } - [(set_attr "length" "8")]) - --;; --;; [vstrbq_p_s vstrbq_p_u] --;; - (define_insn "mve_vstrbq_p_" - [(set (match_operand: 0 "mve_memory_operand" "=Ux") -- (unspec: [(match_operand:MVE_2 1 "s_register_operand" "w") -- (match_operand: 2 "vpr_register_operand" "Up")] -- VSTRBQ)) -- ] -+ (unspec: -+ [(match_operand:MVE_2 1 "s_register_operand" "w") -+ (match_operand: 2 "vpr_register_operand" "Up") -+ (match_dup 0)] -+ VSTRBQ))] - "TARGET_HAVE_MVE" - { - rtx ops[2]; -@@ -8072,10 +8074,11 @@ - ;; - (define_insn "mve_vstrhq_p_fv8hf" - [(set (match_operand:V8HI 0 "mve_memory_operand" "=Ux") -- (unspec:V8HI [(match_operand:V8HF 1 "s_register_operand" "w") -- (match_operand:V8BI 2 "vpr_register_operand" "Up")] -- VSTRHQ_F)) -- ] -+ (unspec:V8HI -+ [(match_operand:V8HF 1 "s_register_operand" "w") -+ (match_operand:V8BI 2 "vpr_register_operand" "Up") -+ (match_dup 0)] -+ VSTRHQ_F))] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" - { - rtx ops[2]; -@@ -8092,8 +8095,10 @@ - ;; - (define_insn "mve_vstrhq_p_" - [(set (match_operand: 0 "mve_memory_operand" "=Ux") -- (unspec: [(match_operand:MVE_6 1 "s_register_operand" "w") -- (match_operand: 2 "vpr_register_operand" "Up")] -+ (unspec: -+ [(match_operand:MVE_6 1 "s_register_operand" "w") -+ (match_operand: 2 "vpr_register_operand" "Up") -+ (match_dup 0)] - VSTRHQ)) - ] - "TARGET_HAVE_MVE" -@@ -8271,10 +8276,11 @@ - ;; - (define_insn "mve_vstrwq_p_fv4sf" - [(set (match_operand:V4SI 0 "mve_memory_operand" "=Ux") -- (unspec:V4SI [(match_operand:V4SF 1 "s_register_operand" "w") -- (match_operand: 2 "vpr_register_operand" "Up")] -- VSTRWQ_F)) -- ] -+ (unspec:V4SI -+ [(match_operand:V4SF 1 "s_register_operand" "w") -+ (match_operand: 2 "vpr_register_operand" "Up") -+ (match_dup 0)] -+ VSTRWQ_F))] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" - { - rtx ops[2]; -@@ -8291,10 +8297,11 @@ - ;; - (define_insn "mve_vstrwq_p_v4si" - [(set (match_operand:V4SI 0 "mve_memory_operand" "=Ux") -- (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w") -- (match_operand:V4BI 2 "vpr_register_operand" "Up")] -- VSTRWQ)) -- ] -+ (unspec:V4SI -+ [(match_operand:V4SI 1 "s_register_operand" "w") -+ (match_operand:V4BI 2 "vpr_register_operand" "Up") -+ (match_dup 0)] -+ VSTRWQ))] - "TARGET_HAVE_MVE" - { - rtx ops[2]; -@@ -8478,7 +8485,7 @@ - (match_operand:HI 3 "vpr_register_operand" "Up")] - VSTRDSSOQ))] - "TARGET_HAVE_MVE" -- "vpst\;vstrdt.64\t%q2, [%0, %q1, UXTW #3]" -+ "vpst\;vstrdt.64\t%q2, [%0, %q1, uxtw #3]" - [(set_attr "length" "8")]) - - ;; -@@ -8507,7 +8514,7 @@ - (match_operand:V2DI 2 "s_register_operand" "w")] - VSTRDSSOQ))] - "TARGET_HAVE_MVE" -- "vstrd.64\t%q2, [%0, %q1, UXTW #3]" -+ "vstrd.64\t%q2, [%0, %q1, uxtw #3]" - [(set_attr "length" "4")]) - - ;; -@@ -8923,7 +8930,7 @@ - (match_operand:MVE_2 2 "s_register_operand" "w"))) - ] - "TARGET_HAVE_MVE" -- "vadd.i%# %q0, %q1, %q2" -+ "vadd.i%#\t%q0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -8937,7 +8944,7 @@ - (match_operand:MVE_0 2 "s_register_operand" "w"))) - ] - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" -- "vadd.f%# %q0, %q1, %q2" -+ "vadd.f%#\t%q0, %q1, %q2" - [(set_attr "type" "mve_move") - ]) - -@@ -9038,7 +9045,7 @@ - (minus:SI (match_dup 2) - (match_operand:SI 4 "immediate_operand" "i")))] - "TARGET_HAVE_MVE" -- "vddup.u%# %q0, %1, %3") -+ "vddup.u%#\t%q0, %1, %3") - - ;; - ;; [vddupq_m_n_u]) -@@ -9074,7 +9081,7 @@ - (minus:SI (match_dup 3) - (match_operand:SI 6 "immediate_operand" "i")))] - "TARGET_HAVE_MVE" -- "vpst\;\tvddupt.u%#\t%q0, %2, %4" -+ "vpst\;vddupt.u%#\t%q0, %2, %4" - [(set_attr "length""8")]) - - ;; -@@ -9190,7 +9197,7 @@ - VDWDUPQ_M)) - ] - "TARGET_HAVE_MVE" -- "vpst\;\tvdwdupt.u%#\t%q2, %3, %R4, %5" -+ "vpst\;vdwdupt.u%#\t%q2, %3, %R4, %5" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -@@ -9345,7 +9352,7 @@ - [(match_operand:V4SI 1 "s_register_operand" "0") - (match_operand:SI 2 "mve_vldrd_immediate" "Ri") - (match_operand:V4SI 3 "s_register_operand" "w") -- (match_operand:V4BI 4 "vpr_register_operand")] -+ (match_operand:V4BI 4 "vpr_register_operand" "Up")] - VSTRWSBWBQ)) - (set (match_operand:V4SI 0 "s_register_operand" "=w") - (unspec:V4SI [(match_dup 1) (match_dup 2)] -@@ -9394,9 +9401,9 @@ - [(set (mem:BLK (scratch)) - (unspec:BLK - [(match_operand:V4SI 1 "s_register_operand" "0") -- (match_operand:SI 2 "mve_vldrd_immediate" "Ri") -+ (match_operand:SI 2 "mve_vstrw_immediate" "Rl") - (match_operand:V4SF 3 "s_register_operand" "w") -- (match_operand:V4BI 4 "vpr_register_operand")] -+ (match_operand:V4BI 4 "vpr_register_operand" "Up")] - VSTRWQSBWB_F)) - (set (match_operand:V4SI 0 "s_register_operand" "=w") - (unspec:V4SI [(match_dup 1) (match_dup 2)] -@@ -9408,7 +9415,7 @@ - ops[0] = operands[1]; - ops[1] = operands[2]; - ops[2] = operands[3]; -- output_asm_insn ("vpst\;\tvstrwt.u32\t%q2, [%q0, %1]!",ops); -+ output_asm_insn ("vpst\;vstrwt.u32\t%q2, [%q0, %1]!",ops); - return ""; - } - [(set_attr "length" "8")]) -@@ -9447,7 +9454,7 @@ - [(match_operand:V2DI 1 "s_register_operand" "0") - (match_operand:SI 2 "mve_vldrd_immediate" "Ri") - (match_operand:V2DI 3 "s_register_operand" "w") -- (match_operand:HI 4 "vpr_register_operand")] -+ (match_operand:HI 4 "vpr_register_operand" "Up")] - VSTRDSBWBQ)) - (set (match_operand:V2DI 0 "s_register_operand" "=w") - (unspec:V2DI [(match_dup 1) (match_dup 2)] -@@ -9459,7 +9466,7 @@ - ops[0] = operands[1]; - ops[1] = operands[2]; - ops[2] = operands[3]; -- output_asm_insn ("vpst;vstrdt.u64\t%q2, [%q0, %1]!",ops); -+ output_asm_insn ("vpst\;vstrdt.u64\t%q2, [%q0, %1]!",ops); - return ""; - } - [(set_attr "length" "8")]) -@@ -9768,7 +9775,7 @@ - - (define_insn "get_fpscr_nzcvqc" - [(set (match_operand:SI 0 "register_operand" "=r") -- (unspec:SI [(reg:SI VFPCC_REGNUM)] UNSPEC_GET_FPSCR_NZCVQC))] -+ (unspec_volatile:SI [(reg:SI VFPCC_REGNUM)] UNSPEC_GET_FPSCR_NZCVQC))] - "TARGET_HAVE_MVE" - "vmrs\\t%0, FPSCR_nzcvqc" - [(set_attr "type" "mve_move")]) -diff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md -index 67f2fdb4f8f..b6eb12632d4 100644 ---- a/gcc/config/arm/predicates.md -+++ b/gcc/config/arm/predicates.md -@@ -73,13 +73,13 @@ - (define_predicate "mve_imm_selective_upto_8" - (match_test "satisfies_constraint_Rg (op)")) - --;; True if the immediate is the range +/- 1016 and multiple of 8 for MVE. --(define_constraint "Ri" -- "@internal In Thumb-2 state a constant is multiple of 8 and in range -- of -/+ 1016 for MVE" -- (and (match_code "const_int") -- (match_test "TARGET_HAVE_MVE && (-1016 <= ival) && (ival <= 1016) -- && ((ival % 8) == 0)"))) -+;; True if the immediate is multiple of 8 and in range of -/+ 1016 for MVE. -+(define_predicate "mve_vldrd_immediate" -+ (match_test "satisfies_constraint_Ri (op)")) -+ -+;; True if the immediate is multiple of 2 and in range of -/+ 252 for MVE. -+(define_predicate "mve_vstrw_immediate" -+ (match_test "satisfies_constraint_Rl (op)")) - - ; Predicate for stack protector guard's address in - ; stack_protect_combined_set_insn and stack_protect_combined_test_insn patterns -diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md -index d0f423cc3c5..31e5818d4e3 100644 ---- a/gcc/config/arm/vfp.md -+++ b/gcc/config/arm/vfp.md -@@ -105,9 +105,9 @@ - case 8: - return "vmov%?.f32\t%0, %1\t%@ int"; - case 9: -- return "vmsr%?\t P0, %1\t@ movhi"; -+ return "vmsr%?\tp0, %1\t@ movhi"; - case 10: -- return "vmrs%?\t %0, P0\t@ movhi"; -+ return "vmrs%?\t%0, p0\t@ movhi"; - default: - gcc_unreachable (); - } -@@ -209,9 +209,9 @@ - case 8: - return "vmov%?.f32\t%0, %1\t%@ int"; - case 9: -- return "vmsr%?\t P0, %1\t%@ movhi"; -+ return "vmsr%?\tp0, %1\t%@ movhi"; - case 10: -- return "vmrs%?\t%0, P0\t%@ movhi"; -+ return "vmrs%?\t%0, p0\t%@ movhi"; - default: - gcc_unreachable (); - } -@@ -312,9 +312,9 @@ - case 12: case 13: - return output_move_vfp (operands); - case 14: -- return \"vmsr\\t P0, %1\"; -+ return \"vmsr\\tp0, %1\"; - case 15: -- return \"vmrs\\t %0, P0\"; -+ return \"vmrs\\t%0, p0\"; - case 16: - return \"mcr\\tp10, 7, %1, cr1, cr0, 0\\t @SET_FPSCR\"; - case 17: -@@ -2138,7 +2138,7 @@ - (define_insn_and_split "no_literal_pool_df_immediate" - [(set (match_operand:DF 0 "s_register_operand" "=w") - (match_operand:DF 1 "const_double_operand" "F")) -- (clobber (match_operand:DF 2 "s_register_operand" "=r"))] -+ (clobber (match_operand:DI 2 "s_register_operand" "=r"))] - "arm_disable_literal_pool - && TARGET_VFP_BASE - && !arm_const_double_rtx (operands[1]) -@@ -2153,8 +2153,9 @@ - unsigned HOST_WIDE_INT ival = zext_hwi (buf[order], 32); - ival |= (zext_hwi (buf[1 - order], 32) << 32); - rtx cst = gen_int_mode (ival, DImode); -- emit_move_insn (simplify_gen_subreg (DImode, operands[2], DFmode, 0), cst); -- emit_move_insn (operands[0], operands[2]); -+ emit_move_insn (operands[2], cst); -+ emit_move_insn (operands[0], -+ simplify_gen_subreg (DFmode, operands[2], DImode, 0)); - DONE; - } - ) -diff --git a/gcc/config/avr/avr-dimode.md b/gcc/config/avr/avr-dimode.md -index 6e491336915..28e97da0516 100644 ---- a/gcc/config/avr/avr-dimode.md -+++ b/gcc/config/avr/avr-dimode.md -@@ -455,12 +455,18 @@ - (define_expand "cbranch4" - [(set (pc) - (if_then_else (match_operator 0 "ordered_comparison_operator" -- [(match_operand:ALL8 1 "register_operand" "") -- (match_operand:ALL8 2 "nonmemory_operand" "")]) -- (label_ref (match_operand 3 "" "")) -- (pc)))] -+ [(match_operand:ALL8 1 "register_operand") -+ (match_operand:ALL8 2 "nonmemory_operand")]) -+ (label_ref (match_operand 3)) -+ (pc)))] - "avr_have_dimode" - { -+ int icode = (int) GET_CODE (operands[0]); -+ -+ targetm.canonicalize_comparison (&icode, &operands[1], &operands[2], false); -+ operands[0] = gen_rtx_fmt_ee ((enum rtx_code) icode, -+ VOIDmode, operands[1], operands[2]); -+ - rtx acc_a = gen_rtx_REG (mode, ACC_A); - - avr_fix_inputs (operands, 1 << 2, regmask (mode, ACC_A)); -@@ -490,8 +496,8 @@ - (if_then_else (match_operator 0 "ordered_comparison_operator" - [(reg:ALL8 ACC_A) - (reg:ALL8 ACC_B)]) -- (label_ref (match_operand 1 "" "")) -- (pc)))] -+ (label_ref (match_operand 1)) -+ (pc)))] - "avr_have_dimode" - "#" - "&& reload_completed" -@@ -544,8 +550,8 @@ - (if_then_else (match_operator 0 "ordered_comparison_operator" - [(reg:ALL8 ACC_A) - (match_operand:ALL8 1 "const_operand" "n Ynn")]) -- (label_ref (match_operand 2 "" "")) -- (pc))) -+ (label_ref (match_operand 2 "" "")) -+ (pc))) - (clobber (match_scratch:QI 3 "=&d"))] - "avr_have_dimode - && !s8_operand (operands[1], VOIDmode)" -diff --git a/gcc/config/avr/avr-passes.def b/gcc/config/avr/avr-passes.def -index d8630151090..ba0c3f10972 100644 ---- a/gcc/config/avr/avr-passes.def -+++ b/gcc/config/avr/avr-passes.def -@@ -43,3 +43,23 @@ INSERT_PASS_BEFORE (pass_free_cfg, 1, avr_pass_recompute_notes); - insns withaout any insns in between. */ - - INSERT_PASS_AFTER (pass_expand, 1, avr_pass_casesi); -+ -+/* If-else decision trees generated for switch / case may produce sequences -+ like -+ -+ SREG = compare (reg, val); -+ if (SREG == 0) goto label1; -+ SREG = compare (reg, 1 + val); -+ if (SREG >= 0) goto label2; -+ -+ which can be optimized to -+ -+ SREG = compare (reg, val); -+ if (SREG == 0) goto label1; -+ if (SREG >= 0) goto label2; -+ -+ The optimal place for such a pass would be directly after expand, but -+ it's not possible for a jump insn to target more than one code label. -+ Hence, run a mini pass right before split2 which introduces REG_CC. */ -+ -+INSERT_PASS_BEFORE (pass_split_after_reload, 1, avr_pass_ifelse); -diff --git a/gcc/config/avr/avr-protos.h b/gcc/config/avr/avr-protos.h -index 6023b33bcfe..e164967038f 100644 ---- a/gcc/config/avr/avr-protos.h -+++ b/gcc/config/avr/avr-protos.h -@@ -58,6 +58,8 @@ extern const char *ret_cond_branch (rtx x, int len, int reverse); - extern const char *avr_out_movpsi (rtx_insn *, rtx*, int*); - extern const char *avr_out_sign_extend (rtx_insn *, rtx*, int*); - extern const char *avr_out_insert_notbit (rtx_insn *, rtx*, rtx, int*); -+extern const char *avr_out_plus_set_ZN (rtx*, int*); -+extern const char *avr_out_cmp_ext (rtx*, enum rtx_code, int*); - - extern const char *ashlqi3_out (rtx_insn *insn, rtx operands[], int *len); - extern const char *ashlhi3_out (rtx_insn *insn, rtx operands[], int *len); -@@ -112,8 +114,6 @@ extern int jump_over_one_insn_p (rtx_insn *insn, rtx dest); - - extern void avr_final_prescan_insn (rtx_insn *insn, rtx *operand, - int num_operands); --extern int avr_simplify_comparison_p (machine_mode mode, -- RTX_CODE op, rtx x); - extern RTX_CODE avr_normalize_condition (RTX_CODE condition); - extern void out_shift_with_cnt (const char *templ, rtx_insn *insn, - rtx operands[], int *len, int t_len); -@@ -145,6 +145,7 @@ extern rtx tmp_reg_rtx; - extern rtx zero_reg_rtx; - extern rtx all_regs_rtx[32]; - extern rtx rampz_rtx; -+extern rtx cc_reg_rtx; - - #endif /* RTX_CODE */ - -@@ -160,6 +161,7 @@ class rtl_opt_pass; - extern rtl_opt_pass *make_avr_pass_pre_proep (gcc::context *); - extern rtl_opt_pass *make_avr_pass_recompute_notes (gcc::context *); - extern rtl_opt_pass *make_avr_pass_casesi (gcc::context *); -+extern rtl_opt_pass *make_avr_pass_ifelse (gcc::context *); - - /* From avr-log.cc */ - -diff --git a/gcc/config/avr/avr.cc b/gcc/config/avr/avr.cc -index 4ed390e4cf9..c286acabf2c 100644 ---- a/gcc/config/avr/avr.cc -+++ b/gcc/config/avr/avr.cc -@@ -359,6 +359,41 @@ public: - } - }; // avr_pass_casesi - -+ -+static const pass_data avr_pass_data_ifelse = -+{ -+ RTL_PASS, // type -+ "", // name (will be patched) -+ OPTGROUP_NONE, // optinfo_flags -+ TV_DF_SCAN, // tv_id -+ 0, // properties_required -+ 0, // properties_provided -+ 0, // properties_destroyed -+ 0, // todo_flags_start -+ TODO_df_finish | TODO_df_verify // todo_flags_finish -+}; -+ -+class avr_pass_ifelse : public rtl_opt_pass -+{ -+public: -+ avr_pass_ifelse (gcc::context *ctxt, const char *name) -+ : rtl_opt_pass (avr_pass_data_ifelse, ctxt) -+ { -+ this->name = name; -+ } -+ -+ void avr_rest_of_handle_ifelse (function*); -+ -+ virtual bool gate (function*) { return optimize > 0; } -+ -+ virtual unsigned int execute (function *func) -+ { -+ avr_rest_of_handle_ifelse (func); -+ -+ return 0; -+ } -+}; // avr_pass_ifelse -+ - } // anon namespace - - rtl_opt_pass* -@@ -373,6 +408,12 @@ make_avr_pass_casesi (gcc::context *ctxt) - return new avr_pass_casesi (ctxt, "avr-casesi"); - } - -+rtl_opt_pass* -+make_avr_pass_ifelse (gcc::context *ctxt) -+{ -+ return new avr_pass_ifelse (ctxt, "avr-ifelse"); -+} -+ - - /* Make one parallel insn with all the patterns from insns i[0]..i[5]. */ - -@@ -686,6 +727,304 @@ avr_pass_casesi::avr_rest_of_handle_casesi (function *func) - } - - -+/* A helper for the next method. Suppose we have two conditional branches -+ -+ if (reg xval1) goto label1; -+ if (reg xval2) goto label2; -+ -+ If the second comparison is redundant and there is a code such -+ that the sequence can be performed as -+ -+ REG_CC = compare (reg, xval1); -+ if (REG_CC 0) goto label1; -+ if (REG_CC 0) goto label2; -+ -+ then return . Otherwise, return UNKNOWN. -+ xval1 and xval2 are CONST_INT, and mode is the scalar int mode in which -+ the comparison will be carried out. reverse_cond1 can be set to reverse -+ condition cond1. This is useful if the second comparison does not follow -+ the first one, but is located after label1 like in: -+ -+ if (reg xval1) goto label1; -+ ... -+ label1: -+ if (reg xval2) goto label2; */ -+ -+static enum rtx_code -+avr_redundant_compare (enum rtx_code cond1, rtx xval1, -+ enum rtx_code cond2, rtx xval2, -+ machine_mode mode, bool reverse_cond1) -+{ -+ HOST_WIDE_INT ival1 = INTVAL (xval1); -+ HOST_WIDE_INT ival2 = INTVAL (xval2); -+ -+ unsigned HOST_WIDE_INT mask = GET_MODE_MASK (mode); -+ unsigned HOST_WIDE_INT uval1 = mask & UINTVAL (xval1); -+ unsigned HOST_WIDE_INT uval2 = mask & UINTVAL (xval2); -+ -+ if (reverse_cond1) -+ cond1 = reverse_condition (cond1); -+ -+ if (cond1 == EQ) -+ { -+ //////////////////////////////////////////////// -+ // A sequence like -+ // if (reg == val) goto label1; -+ // if (reg > val) goto label2; -+ // can be re-written using the same, simple comparison like in: -+ // REG_CC = compare (reg, val) -+ // if (REG_CC == 0) goto label1; -+ // if (REG_CC >= 0) goto label2; -+ if (ival1 == ival2 -+ && (cond2 == GT || cond2 == GTU)) -+ return avr_normalize_condition (cond2); -+ -+ // Similar, but the input sequence is like -+ // if (reg == val) goto label1; -+ // if (reg >= val) goto label2; -+ if (ival1 == ival2 -+ && (cond2 == GE || cond2 == GEU)) -+ return cond2; -+ -+ // Similar, but the input sequence is like -+ // if (reg == val) goto label1; -+ // if (reg >= val + 1) goto label2; -+ if ((cond2 == GE && ival2 == 1 + ival1) -+ || (cond2 == GEU && uval2 == 1 + uval1)) -+ return cond2; -+ -+ // Similar, but the input sequence is like -+ // if (reg == val) goto label1; -+ // if (reg > val - 1) goto label2; -+ if ((cond2 == GT && ival2 == ival1 - 1) -+ || (cond2 == GTU && uval2 == uval1 - 1)) -+ return avr_normalize_condition (cond2); -+ -+ ///////////////////////////////////////////////////////// -+ // A sequence like -+ // if (reg == val) goto label1; -+ // if (reg < 1 + val) goto label2; -+ // can be re-written as -+ // REG_CC = compare (reg, val) -+ // if (REG_CC == 0) goto label1; -+ // if (REG_CC < 0) goto label2; -+ if ((cond2 == LT && ival2 == 1 + ival1) -+ || (cond2 == LTU && uval2 == 1 + uval1)) -+ return cond2; -+ -+ // Similar, but with an input sequence like -+ // if (reg == val) goto label1; -+ // if (reg <= val) goto label2; -+ if (ival1 == ival2 -+ && (cond2 == LE || cond2 == LEU)) -+ return avr_normalize_condition (cond2); -+ -+ // Similar, but with an input sequence like -+ // if (reg == val) goto label1; -+ // if (reg < val) goto label2; -+ if (ival1 == ival2 -+ && (cond2 == LT || cond2 == LTU)) -+ return cond2; -+ -+ // Similar, but with an input sequence like -+ // if (reg == val) goto label1; -+ // if (reg <= val - 1) goto label2; -+ if ((cond2 == LE && ival2 == ival1 - 1) -+ || (cond2 == LEU && uval2 == uval1 - 1)) -+ return avr_normalize_condition (cond2); -+ -+ } // cond1 == EQ -+ -+ return UNKNOWN; -+} -+ -+ -+/* If-else decision trees generated for switch / case may produce sequences -+ like -+ -+ SREG = compare (reg, val); -+ if (SREG == 0) goto label1; -+ SREG = compare (reg, 1 + val); -+ if (SREG >= 0) goto label2; -+ -+ which can be optimized to -+ -+ SREG = compare (reg, val); -+ if (SREG == 0) goto label1; -+ if (SREG >= 0) goto label2; -+ -+ The optimal place for such a pass would be directly after expand, but -+ it's not possible for a jump insn to target more than one code label. -+ Hence, run a mini pass right before split2 which introduces REG_CC. */ -+ -+void -+avr_pass_ifelse::avr_rest_of_handle_ifelse (function*) -+{ -+ rtx_insn *next_insn; -+ -+ for (rtx_insn *insn = get_insns(); insn; insn = next_insn) -+ { -+ next_insn = next_nonnote_nondebug_insn (insn); -+ -+ if (! next_insn) -+ break; -+ -+ // Search for two cbranch insns. The first one is a cbranch. -+ // Filter for "cbranch4_insn" with mode in QI, HI, PSI, SI. -+ -+ if (! JUMP_P (insn)) -+ continue; -+ -+ int icode1 = recog_memoized (insn); -+ -+ if (icode1 != CODE_FOR_cbranchqi4_insn -+ && icode1 != CODE_FOR_cbranchhi4_insn -+ && icode1 != CODE_FOR_cbranchpsi4_insn -+ && icode1 != CODE_FOR_cbranchsi4_insn) -+ continue; -+ -+ rtx_jump_insn *insn1 = as_a (insn); -+ rtx_jump_insn *insn2 = nullptr; -+ bool follow_label1 = false; -+ -+ // Extract the operands of the first insn: -+ // $0 = comparison operator ($1, $2) -+ // $1 = reg -+ // $2 = reg or const_int -+ // $3 = code_label -+ // $4 = optional SCRATCH for HI, PSI, SI cases. -+ -+ const auto &op = recog_data.operand; -+ -+ extract_insn (insn1); -+ rtx xop1[5] = { op[0], op[1], op[2], op[3], op[4] }; -+ int n_operands = recog_data.n_operands; -+ -+ // For now, we can optimize cbranches that follow an EQ cbranch, -+ // and cbranches that follow the label of a NE cbranch. -+ -+ if (GET_CODE (xop1[0]) == EQ -+ && JUMP_P (next_insn) -+ && recog_memoized (next_insn) == icode1) -+ { -+ // The 2nd cbranch insn follows insn1, i.e. is located in the -+ // fallthrough path of insn1. -+ -+ insn2 = as_a (next_insn); -+ } -+ else if (GET_CODE (xop1[0]) == NE) -+ { -+ // insn1 might branch to a label followed by a cbranch. -+ -+ rtx target1 = JUMP_LABEL (insn1); -+ rtx_insn *code_label1 = JUMP_LABEL_AS_INSN (insn1); -+ rtx_insn *next = next_nonnote_nondebug_insn (code_label1); -+ rtx_insn *barrier = prev_nonnote_nondebug_insn (code_label1); -+ -+ if (// Target label of insn1 is used exactly once and -+ // is not a fallthru, i.e. is preceded by a barrier. -+ LABEL_NUSES (target1) == 1 -+ && barrier -+ && BARRIER_P (barrier) -+ // Following the target label is a cbranch of the same kind. -+ && next -+ && JUMP_P (next) -+ && recog_memoized (next) == icode1) -+ { -+ follow_label1 = true; -+ insn2 = as_a (next); -+ } -+ } -+ -+ if (! insn2) -+ continue; -+ -+ // Also extract operands of insn2, and filter for REG + CONST_INT -+ // comparsons against the same register. -+ -+ extract_insn (insn2); -+ rtx xop2[5] = { op[0], op[1], op[2], op[3], op[4] }; -+ -+ if (! rtx_equal_p (xop1[1], xop2[1]) -+ || ! CONST_INT_P (xop1[2]) -+ || ! CONST_INT_P (xop2[2])) -+ continue; -+ -+ machine_mode mode = GET_MODE (xop1[1]); -+ enum rtx_code code1 = GET_CODE (xop1[0]); -+ enum rtx_code code2 = GET_CODE (xop2[0]); -+ -+ code2 = avr_redundant_compare (code1, xop1[2], code2, xop2[2], -+ mode, follow_label1); -+ if (code2 == UNKNOWN) -+ continue; -+ -+ ////////////////////////////////////////////////////// -+ // Found a replacement. -+ -+ if (dump_file) -+ { -+ fprintf (dump_file, "\n;; Found chain of jump_insn %d and" -+ " jump_insn %d, follow_label1=%d:\n", -+ INSN_UID (insn1), INSN_UID (insn2), follow_label1); -+ print_rtl_single (dump_file, PATTERN (insn1)); -+ print_rtl_single (dump_file, PATTERN (insn2)); -+ } -+ -+ if (! follow_label1) -+ next_insn = next_nonnote_nondebug_insn (insn2); -+ -+ // Pop the new branch conditions and the new comparison. -+ // Prematurely split into compare + branch so that we can drop -+ // the 2nd comparison. The following pass, split2, splits all -+ // insns for REG_CC, and it should still work as usual even when -+ // there are already some REG_CC insns around. -+ -+ rtx xcond1 = gen_rtx_fmt_ee (code1, VOIDmode, cc_reg_rtx, const0_rtx); -+ rtx xcond2 = gen_rtx_fmt_ee (code2, VOIDmode, cc_reg_rtx, const0_rtx); -+ rtx xpat1 = gen_branch (xop1[3], xcond1); -+ rtx xpat2 = gen_branch (xop2[3], xcond2); -+ rtx xcompare = NULL_RTX; -+ -+ if (mode == QImode) -+ { -+ gcc_assert (n_operands == 4); -+ xcompare = gen_cmpqi3 (xop1[1], xop1[2]); -+ } -+ else -+ { -+ gcc_assert (n_operands == 5); -+ rtx (*gen_cmp)(rtx,rtx,rtx) -+ = mode == HImode ? gen_gen_comparehi -+ : mode == PSImode ? gen_gen_comparepsi -+ : gen_gen_comparesi; // SImode -+ xcompare = gen_cmp (xop1[1], xop1[2], xop1[4]); -+ } -+ -+ // Emit that stuff. -+ -+ rtx_insn *cmp = emit_insn_before (xcompare, insn1); -+ rtx_jump_insn *branch1 = emit_jump_insn_before (xpat1, insn1); -+ rtx_jump_insn *branch2 = emit_jump_insn_before (xpat2, insn2); -+ -+ JUMP_LABEL (branch1) = xop1[3]; -+ JUMP_LABEL (branch2) = xop2[3]; -+ // delete_insn() decrements LABEL_NUSES when deleting a JUMP_INSN, but -+ // when we pop a new JUMP_INSN, do it by hand. -+ ++LABEL_NUSES (xop1[3]); -+ ++LABEL_NUSES (xop2[3]); -+ -+ delete_insn (insn1); -+ delete_insn (insn2); -+ -+ // As a side effect, also recog the new insns. -+ gcc_assert (valid_insn_p (cmp)); -+ gcc_assert (valid_insn_p (branch1)); -+ gcc_assert (valid_insn_p (branch2)); -+ } // loop insns -+} -+ -+ - /* Set `avr_arch' as specified by `-mmcu='. - Return true on success. */ - -@@ -1019,6 +1358,19 @@ avr_no_gccisr_function_p (tree func) - return avr_lookup_function_attribute1 (func, "no_gccisr"); - } - -+ -+/* Implement `TARGET_CAN_INLINE_P'. */ -+/* Some options like -mgas_isr_prologues depend on optimization level, -+ and the inliner might think that due to different options, inlining -+ is not permitted; see PR104327. */ -+ -+static bool -+avr_can_inline_p (tree /* caller */, tree /* callee */) -+{ -+ // No restrictions whatsoever. -+ return true; -+} -+ - /* Implement `TARGET_SET_CURRENT_FUNCTION'. */ - /* Sanity cheching for above function attributes. */ - -@@ -3173,28 +3525,6 @@ avr_asm_final_postscan_insn (FILE *stream, rtx_insn *insn, rtx*, int) - } - - --/* Return 0 if undefined, 1 if always true or always false. */ -- --int --avr_simplify_comparison_p (machine_mode mode, RTX_CODE op, rtx x) --{ -- unsigned int max = (mode == QImode ? 0xff : -- mode == HImode ? 0xffff : -- mode == PSImode ? 0xffffff : -- mode == SImode ? 0xffffffff : 0); -- if (max && op && CONST_INT_P (x)) -- { -- if (unsigned_condition (op) != op) -- max >>= 1; -- -- if (max != (INTVAL (x) & max) -- && INTVAL (x) != 0xff) -- return 1; -- } -- return 0; --} -- -- - /* Worker function for `FUNCTION_ARG_REGNO_P'. */ - /* Returns nonzero if REGNO is the number of a hard - register in which function arguments are sometimes passed. */ -@@ -5677,29 +6007,36 @@ avr_frame_pointer_required_p (void) - || get_frame_size () > 0); - } - --/* Returns the condition of compare insn INSN, or UNKNOWN. */ -+ -+/* Returns the condition of the branch following INSN, where INSN is some -+ comparison. If the next insn is not a branch or the condition code set -+ by INSN might be used by more insns than the next one, return UNKNOWN. -+ For now, just look at the next insn, which misses some opportunities like -+ following jumps. */ - - static RTX_CODE - compare_condition (rtx_insn *insn) - { -- rtx_insn *next = next_real_insn (insn); -+ rtx set; -+ rtx_insn *next = next_real_nondebug_insn (insn); - -- if (next && JUMP_P (next)) -+ if (next -+ && JUMP_P (next) -+ // If SREG does not die in the next insn, it is used in more than one -+ // branch. This can happen due to pass .avr-ifelse optimizations. -+ && dead_or_set_regno_p (next, REG_CC) -+ // Branches are (set (pc) (if_then_else (COND (...)))). -+ && (set = single_set (next)) -+ && GET_CODE (SET_SRC (set)) == IF_THEN_ELSE) - { -- rtx pat = PATTERN (next); -- if (GET_CODE (pat) == PARALLEL) -- pat = XVECEXP (pat, 0, 0); -- rtx src = SET_SRC (pat); -- -- if (IF_THEN_ELSE == GET_CODE (src)) -- return GET_CODE (XEXP (src, 0)); -+ return GET_CODE (XEXP (SET_SRC (set), 0)); - } - - return UNKNOWN; - } - - --/* Returns true iff INSN is a tst insn that only tests the sign. */ -+/* Returns true if INSN is a tst insn that only tests the sign. */ - - static bool - compare_sign_p (rtx_insn *insn) -@@ -5709,23 +6046,95 @@ compare_sign_p (rtx_insn *insn) - } - - --/* Returns true iff the next insn is a JUMP_INSN with a condition -- that needs to be swapped (GT, GTU, LE, LEU). */ -+/* Returns true if INSN is a compare insn with the EQ or NE condition. */ - - static bool --compare_diff_p (rtx_insn *insn) -+compare_eq_p (rtx_insn *insn) - { - RTX_CODE cond = compare_condition (insn); -- return (cond == GT || cond == GTU || cond == LE || cond == LEU) ? cond : 0; -+ return (cond == EQ || cond == NE); - } - --/* Returns true iff INSN is a compare insn with the EQ or NE condition. */ - --static bool --compare_eq_p (rtx_insn *insn) -+/* Implement `TARGET_CANONICALIZE_COMPARISON'. */ -+/* Basically tries to convert "difficult" comparisons like GT[U] -+ and LE[U] to simple ones. Some asymmetric comparisons can be -+ transformed to EQ or NE against zero. */ -+ -+static void -+avr_canonicalize_comparison (int *icode, rtx *op0, rtx *op1, bool op0_fixed) - { -- RTX_CODE cond = compare_condition (insn); -- return (cond == EQ || cond == NE); -+ enum rtx_code code = (enum rtx_code) *icode; -+ machine_mode mode = GET_MODE (*op0); -+ -+ bool signed_p = code == GT || code == LE; -+ bool unsigned_p = code == GTU || code == LEU; -+ bool difficult_p = signed_p || unsigned_p; -+ -+ if (// Only do integers and fixed-points. -+ (! SCALAR_INT_MODE_P (mode) -+ && ! ALL_SCALAR_FIXED_POINT_MODE_P (mode)) -+ // Only do comparisons against a register. -+ || ! register_operand (*op0, mode)) -+ return; -+ -+ // Canonicalize "difficult" reg-reg comparisons. -+ -+ if (! op0_fixed -+ && difficult_p -+ && register_operand (*op1, mode)) -+ { -+ std::swap (*op0, *op1); -+ *icode = (int) swap_condition (code); -+ return; -+ } -+ -+ // Canonicalize comparisons against compile-time constants. -+ -+ if (CONST_INT_P (*op1) -+ || CONST_FIXED_P (*op1)) -+ { -+ // INT_MODE of the same size. -+ scalar_int_mode imode = int_mode_for_mode (mode).require (); -+ -+ unsigned HOST_WIDE_INT mask = GET_MODE_MASK (imode); -+ unsigned HOST_WIDE_INT maxval = signed_p ? mask >> 1 : mask; -+ -+ // Convert value *op1 to imode. -+ rtx xval = simplify_gen_subreg (imode, *op1, mode, 0); -+ -+ // Canonicalize difficult comparisons against const. -+ if (difficult_p -+ && (UINTVAL (xval) & mask) != maxval) -+ { -+ // Convert *op0 > *op1 to *op0 >= 1 + *op1. -+ // Convert *op0 <= *op1 to *op0 < 1 + *op1. -+ xval = simplify_binary_operation (PLUS, imode, xval, const1_rtx); -+ -+ // Convert value back to its original mode. -+ *op1 = simplify_gen_subreg (mode, xval, imode, 0); -+ -+ // Map > to >= and <= to <. -+ *icode = (int) avr_normalize_condition (code); -+ -+ return; -+ } -+ -+ // Some asymmetric comparisons can be turned into EQ or NE. -+ if (code == LTU && xval == const1_rtx) -+ { -+ *icode = (int) EQ; -+ *op1 = CONST0_RTX (mode); -+ return; -+ } -+ -+ if (code == GEU && xval == const1_rtx) -+ { -+ *icode = (int) NE; -+ *op1 = CONST0_RTX (mode); -+ return; -+ } -+ } - } - - -@@ -6018,6 +6427,68 @@ avr_out_tstsi (rtx_insn *insn, rtx *op, int *plen) - } - - -+/* Output a comparison of a zero- or sign-extended register against a -+ plain register. CODE is SIGN_EXTEND or ZERO_EXTEND. Return "". -+ -+ PLEN != 0: Set *PLEN to the code length in words. Don't output anything. -+ PLEN == 0: Print instructions. */ -+ -+const char* -+avr_out_cmp_ext (rtx xop[], enum rtx_code code, int *plen) -+{ -+ // The smaller reg is the one that's to be extended. Get its index as z. -+ int z = GET_MODE_SIZE (GET_MODE (xop[1])) < GET_MODE_SIZE (GET_MODE (xop[0])); -+ rtx zreg = xop[z]; -+ rtx reg = xop[1 - z]; -+ machine_mode mode = GET_MODE (reg); -+ machine_mode zmode = GET_MODE (zreg); -+ rtx zex; -+ -+ if (plen) -+ *plen = 0; -+ -+ // zex holds the extended bytes above zreg. This is 0 for ZERO_EXTEND, -+ // and 0 or -1 for SIGN_EXTEND. -+ -+ if (code == SIGN_EXTEND) -+ { -+ // Sign-extend the high-byte of zreg to tmp_reg. -+ int zmsb = GET_MODE_SIZE (zmode) - 1; -+ rtx xzmsb = simplify_gen_subreg (QImode, zreg, zmode, zmsb); -+ -+ avr_asm_len ("mov __tmp_reg__,%0" CR_TAB -+ "rol __tmp_reg__" CR_TAB -+ "sbc __tmp_reg__,__tmp_reg__", &xzmsb, plen, 3); -+ zex = tmp_reg_rtx; -+ } -+ else if (code == ZERO_EXTEND) -+ { -+ zex = zero_reg_rtx; -+ } -+ else -+ gcc_unreachable(); -+ -+ // Now output n_bytes bytes of the very comparison. -+ -+ int n_bytes = GET_MODE_SIZE (mode); -+ -+ avr_asm_len ("cp %0,%1", xop, plen, 1); -+ -+ for (int b = 1; b < n_bytes; ++b) -+ { -+ rtx regs[2]; -+ regs[1 - z] = simplify_gen_subreg (QImode, reg, mode, b); -+ regs[z] = (b < GET_MODE_SIZE (zmode) -+ ? simplify_gen_subreg (QImode, zreg, zmode, b) -+ : zex); -+ -+ avr_asm_len ("cpc %0,%1", regs, plen, 1); -+ } -+ -+ return ""; -+} -+ -+ - /* Generate asm equivalent for various shifts. This only handles cases - that are not already carefully hand-optimized in ?sh??i3_out. - -@@ -8160,6 +8631,122 @@ avr_out_plus (rtx insn, rtx *xop, int *plen, int *pcc, bool out_label) - } - - -+/* Output an instruction sequence for addition of REG in XOP[0] and CONST_INT -+ in XOP[1] in such a way that SREG.Z and SREG.N are set according to the -+ result. XOP[2] might be a d-regs clobber register. If XOP[2] is SCRATCH, -+ then the addition can be performed without a clobber reg. Return "". -+ -+ If PLEN == NULL, then output the instructions. -+ If PLEN != NULL, then set *PLEN to the length of the sequence in words. */ -+ -+const char* -+avr_out_plus_set_ZN (rtx *xop, int *plen) -+{ -+ if (plen) -+ *plen = 0; -+ -+ // Register to compare and value to compare against. -+ rtx xreg = xop[0]; -+ rtx xval = xop[1]; -+ -+ machine_mode mode = GET_MODE (xreg); -+ -+ // Number of bytes to operate on. -+ int n_bytes = GET_MODE_SIZE (mode); -+ -+ if (n_bytes == 1) -+ { -+ if (INTVAL (xval) == 1) -+ return avr_asm_len ("inc %0", xop, plen, 1); -+ -+ if (INTVAL (xval) == -1) -+ return avr_asm_len ("dec %0", xop, plen, 1); -+ } -+ -+ if (n_bytes == 2 -+ && test_hard_reg_class (ADDW_REGS, xreg) -+ && IN_RANGE (INTVAL (xval), 1, 63)) -+ { -+ // Add 16-bit value in [1..63] to a w register. -+ return avr_asm_len ("adiw %0, %1", xop, plen, 1); -+ } -+ -+ // Addition won't work; subtract the negative of XVAL instead. -+ xval = simplify_unary_operation (NEG, mode, xval, mode); -+ -+ // Value (0..0xff) held in clobber register xop[2] or -1 if unknown. -+ int clobber_val = -1; -+ -+ // [0] = Current sub-register. -+ // [1] = Current partial xval. -+ // [2] = 8-bit clobber d-register or SCRATCH. -+ rtx op[3]; -+ op[2] = xop[2]; -+ -+ // Work byte-wise from LSB to MSB. The lower two bytes might be -+ // SBIW'ed in one go. -+ for (int i = 0; i < n_bytes; ++i) -+ { -+ op[0] = simplify_gen_subreg (QImode, xreg, mode, i); -+ -+ if (i == 0 -+ && n_bytes >= 2 -+ && test_hard_reg_class (ADDW_REGS, op[0])) -+ { -+ op[1] = simplify_gen_subreg (HImode, xval, mode, 0); -+ if (IN_RANGE (INTVAL (op[1]), 0, 63)) -+ { -+ // SBIW can handle the lower 16 bits. -+ avr_asm_len ("sbiw %0, %1", op, plen, 1); -+ -+ // Next byte has already been handled: Skip it. -+ ++i; -+ continue; -+ } -+ } -+ -+ op[1] = simplify_gen_subreg (QImode, xval, mode, i); -+ -+ if (test_hard_reg_class (LD_REGS, op[0])) -+ { -+ // d-regs can subtract immediates. -+ avr_asm_len (i == 0 -+ ? "subi %0, %1" -+ : "sbci %0, %1", op, plen, 1); -+ } -+ else -+ { -+ int val8 = 0xff & INTVAL (op[1]); -+ if (val8 == 0) -+ { -+ // Any register can subtract 0. -+ avr_asm_len (i == 0 -+ ? "sub %0, __zero_reg__" -+ : "sbc %0, __zero_reg__", op, plen, 1); -+ } -+ else -+ { -+ // Use d-register to hold partial xval. -+ -+ if (val8 != clobber_val) -+ { -+ // Load partial xval to QI clobber reg and memoize for later. -+ gcc_assert (REG_P (op[2])); -+ avr_asm_len ("ldi %2, %1", op, plen, 1); -+ clobber_val = val8; -+ } -+ -+ avr_asm_len (i == 0 -+ ? "sub %0, %2" -+ : "sbc %0, %2", op, plen, 1); -+ } -+ } -+ } // Loop bytes. -+ -+ return ""; -+} -+ -+ - /* Output bit operation (IOR, AND, XOR) with register XOP[0] and compile - time constant XOP[2]: - -@@ -9291,6 +9878,8 @@ avr_adjust_insn_length (rtx_insn *insn, int len) - case ADJUST_LEN_TSTSI: avr_out_tstsi (insn, op, &len); break; - case ADJUST_LEN_COMPARE: avr_out_compare (insn, op, &len); break; - case ADJUST_LEN_COMPARE64: avr_out_compare64 (insn, op, &len); break; -+ case ADJUST_LEN_CMP_UEXT: avr_out_cmp_ext (op, ZERO_EXTEND, &len); break; -+ case ADJUST_LEN_CMP_SEXT: avr_out_cmp_ext (op, SIGN_EXTEND, &len); break; - - case ADJUST_LEN_LSHRQI: lshrqi3_out (insn, op, &len); break; - case ADJUST_LEN_LSHRHI: lshrhi3_out (insn, op, &len); break; -@@ -9311,6 +9900,7 @@ avr_adjust_insn_length (rtx_insn *insn, int len) - case ADJUST_LEN_CALL: len = AVR_HAVE_JMP_CALL ? 2 : 1; break; - - case ADJUST_LEN_INSERT_BITS: avr_out_insert_bits (op, &len); break; -+ case ADJUST_LEN_ADD_SET_ZN: avr_out_plus_set_ZN (op, &len); break; - - case ADJUST_LEN_INSV_NOTBIT: - avr_out_insert_notbit (insn, op, NULL_RTX, &len); -@@ -10607,6 +11197,58 @@ avr_mul_highpart_cost (rtx x, int) - } - - -+/* Return the expected cost of a conditional branch like -+ (set (pc) -+ (if_then_else (X) -+ (label_ref *) -+ (pc))) -+ where X is some comparison operator. */ -+ -+static int -+avr_cbranch_cost (rtx x) -+{ -+ bool difficult_p = difficult_comparison_operator (x, VOIDmode); -+ -+ if (reload_completed) -+ { -+ // After reload, we basically just have plain branches. -+ return COSTS_N_INSNS (1 + difficult_p); -+ } -+ -+ rtx xreg = XEXP (x, 0); -+ rtx xval = XEXP (x, 1); -+ machine_mode mode = GET_MODE (xreg); -+ if (mode == VOIDmode) -+ mode = GET_MODE (xval); -+ int size = GET_MODE_SIZE (mode); -+ -+ if (GET_CODE (xreg) == ZERO_EXTEND -+ || GET_CODE (xval) == ZERO_EXTEND) -+ { -+ // *cbranch..0/1, code = zero_extend. -+ return COSTS_N_INSNS (size + 1); -+ } -+ -+ if (GET_CODE (xreg) == SIGN_EXTEND -+ || GET_CODE (xval) == SIGN_EXTEND) -+ { -+ // *cbranch..0/1, code = sign_extend. -+ // Make it a bit cheaper than it actually is (less reg pressure). -+ return COSTS_N_INSNS (size + 1 + 1); -+ } -+ -+ bool reg_p = register_operand (xreg, mode); -+ bool reg_or_0_p = reg_or_0_operand (xval, mode); -+ -+ return COSTS_N_INSNS (size -+ // For the branch -+ + 1 + difficult_p -+ // Combine might propagate constants other than zero -+ // into the 2nd operand. Make that more expensive. -+ + 1 * (!reg_p || !reg_or_0_p)); -+} -+ -+ - /* Mutually recursive subroutine of avr_rtx_cost for calculating the - cost of an RTX operand given its context. X is the rtx of the - operand, MODE is its mode, and OUTER is the rtx_code of this -@@ -10844,6 +11486,15 @@ avr_rtx_costs_1 (rtx x, machine_mode mode, int outer_code, - *total += COSTS_N_INSNS (1); - return true; - } -+ if (IOR == code -+ && AND == GET_CODE (XEXP (x, 0)) -+ && AND == GET_CODE (XEXP (x, 1)) -+ && single_zero_operand (XEXP (XEXP (x, 0), 1), mode)) -+ { -+ // Open-coded bit transfer. -+ *total = COSTS_N_INSNS (2); -+ return true; -+ } - *total = COSTS_N_INSNS (GET_MODE_SIZE (mode)); - *total += avr_operand_rtx_cost (XEXP (x, 0), mode, code, 0, speed); - if (!CONST_INT_P (XEXP (x, 1))) -@@ -11490,6 +12141,15 @@ avr_rtx_costs_1 (rtx x, machine_mode mode, int outer_code, - } - break; - -+ case IF_THEN_ELSE: -+ if (outer_code == SET -+ && XEXP (x, 2) == pc_rtx -+ && ordered_comparison_operator (XEXP (x, 0), VOIDmode)) -+ { -+ *total = avr_cbranch_cost (XEXP (x, 0)); -+ return true; -+ } -+ - default: - break; - } -@@ -11515,6 +12175,52 @@ avr_rtx_costs (rtx x, machine_mode mode, int outer_code, - } - - -+/* Implement `TARGET_INSN_COST'. */ -+/* For some insns, it is not enough to look at the cost of the SET_SRC. -+ In that case, have a look at the entire insn, e.g. during insn combine. */ -+ -+static int -+avr_insn_cost (rtx_insn *insn, bool speed) -+{ -+ const int unknown_cost = -1; -+ int cost = unknown_cost; -+ -+ rtx set = single_set (insn); -+ -+ if (set -+ && ZERO_EXTRACT == GET_CODE (SET_DEST (set))) -+ { -+ // Try find anything that would flip the extracted bit. -+ bool not_bit_p = false; -+ -+ subrtx_iterator::array_type array; -+ FOR_EACH_SUBRTX (iter, array, SET_SRC (set), NONCONST) -+ { -+ enum rtx_code code = GET_CODE (*iter); -+ not_bit_p |= code == NOT || code == XOR || code == GE; -+ } -+ -+ // Don't go too deep into the analysis. In almost all cases, -+ // using BLD/BST is the best we can do for single-bit moves, -+ // even considering CSE. -+ cost = COSTS_N_INSNS (2 + not_bit_p); -+ } -+ -+ if (cost != unknown_cost) -+ { -+ if (avr_log.rtx_costs) -+ avr_edump ("\n%? (%s) insn_cost=%d\n%r\n", -+ speed ? "speed" : "size", cost, insn); -+ return cost; -+ } -+ -+ // Resort to what rtlanal.cc::insn_cost() implements as a default -+ // when targetm.insn_cost() is not implemented. -+ -+ return pattern_cost (PATTERN (insn), speed); -+} -+ -+ - /* Implement `TARGET_ADDRESS_COST'. */ - - static int -@@ -11602,281 +12308,6 @@ avr_normalize_condition (RTX_CODE condition) - } - } - --/* Helper function for `avr_reorg'. */ -- --static rtx --avr_compare_pattern (rtx_insn *insn) --{ -- rtx pattern = single_set (insn); -- -- if (pattern -- && NONJUMP_INSN_P (insn) -- && REG_P (SET_DEST (pattern)) -- && REGNO (SET_DEST (pattern)) == REG_CC -- && GET_CODE (SET_SRC (pattern)) == COMPARE) -- { -- machine_mode mode0 = GET_MODE (XEXP (SET_SRC (pattern), 0)); -- machine_mode mode1 = GET_MODE (XEXP (SET_SRC (pattern), 1)); -- -- /* The 64-bit comparisons have fixed operands ACC_A and ACC_B. -- They must not be swapped, thus skip them. */ -- -- if ((mode0 == VOIDmode || GET_MODE_SIZE (mode0) <= 4) -- && (mode1 == VOIDmode || GET_MODE_SIZE (mode1) <= 4)) -- return pattern; -- } -- -- return NULL_RTX; --} -- --/* Helper function for `avr_reorg'. */ -- --/* Expansion of switch/case decision trees leads to code like -- -- REG_CC = compare (Reg, Num) -- if (REG_CC == 0) -- goto L1 -- -- REG_CC = compare (Reg, Num) -- if (REG_CC > 0) -- goto L2 -- -- The second comparison is superfluous and can be deleted. -- The second jump condition can be transformed from a -- "difficult" one to a "simple" one because "REG_CC > 0" and -- "REG_CC >= 0" will have the same effect here. -- -- This function relies on the way switch/case is being expaned -- as binary decision tree. For example code see PR 49903. -- -- Return TRUE if optimization performed. -- Return FALSE if nothing changed. -- -- INSN1 is a comparison, i.e. avr_compare_pattern != 0. -- -- We don't want to do this in text peephole because it is -- tedious to work out jump offsets there and the second comparison -- might have been transormed by `avr_reorg'. -- -- RTL peephole won't do because peephole2 does not scan across -- basic blocks. */ -- --static bool --avr_reorg_remove_redundant_compare (rtx_insn *insn1) --{ -- rtx comp1, ifelse1, xcond1; -- rtx_insn *branch1; -- rtx comp2, ifelse2, xcond2; -- rtx_insn *branch2, *insn2; -- enum rtx_code code; -- rtx_insn *jump; -- rtx target, cond; -- -- /* Look out for: compare1 - branch1 - compare2 - branch2 */ -- -- branch1 = next_nonnote_nondebug_insn (insn1); -- if (!branch1 || !JUMP_P (branch1)) -- return false; -- -- insn2 = next_nonnote_nondebug_insn (branch1); -- if (!insn2 || !avr_compare_pattern (insn2)) -- return false; -- -- branch2 = next_nonnote_nondebug_insn (insn2); -- if (!branch2 || !JUMP_P (branch2)) -- return false; -- -- comp1 = avr_compare_pattern (insn1); -- comp2 = avr_compare_pattern (insn2); -- xcond1 = single_set (branch1); -- xcond2 = single_set (branch2); -- -- if (!comp1 || !comp2 -- || !rtx_equal_p (comp1, comp2) -- || !xcond1 || SET_DEST (xcond1) != pc_rtx -- || !xcond2 || SET_DEST (xcond2) != pc_rtx -- || IF_THEN_ELSE != GET_CODE (SET_SRC (xcond1)) -- || IF_THEN_ELSE != GET_CODE (SET_SRC (xcond2))) -- { -- return false; -- } -- -- comp1 = SET_SRC (comp1); -- ifelse1 = SET_SRC (xcond1); -- ifelse2 = SET_SRC (xcond2); -- -- /* comp is COMPARE now and ifelse is IF_THEN_ELSE. */ -- -- if (EQ != GET_CODE (XEXP (ifelse1, 0)) -- || !REG_P (XEXP (comp1, 0)) -- || !CONST_INT_P (XEXP (comp1, 1)) -- || XEXP (ifelse1, 2) != pc_rtx -- || XEXP (ifelse2, 2) != pc_rtx -- || LABEL_REF != GET_CODE (XEXP (ifelse1, 1)) -- || LABEL_REF != GET_CODE (XEXP (ifelse2, 1)) -- || !COMPARISON_P (XEXP (ifelse2, 0)) -- || REG_CC != REGNO (XEXP (XEXP (ifelse1, 0), 0)) -- || REG_CC != REGNO (XEXP (XEXP (ifelse2, 0), 0)) -- || const0_rtx != XEXP (XEXP (ifelse1, 0), 1) -- || const0_rtx != XEXP (XEXP (ifelse2, 0), 1)) -- { -- return false; -- } -- -- /* We filtered the insn sequence to look like -- -- (set (reg:CC cc) -- (compare (reg:M N) -- (const_int VAL))) -- (set (pc) -- (if_then_else (eq (reg:CC cc) -- (const_int 0)) -- (label_ref L1) -- (pc))) -- -- (set (reg:CC cc) -- (compare (reg:M N) -- (const_int VAL))) -- (set (pc) -- (if_then_else (CODE (reg:CC cc) -- (const_int 0)) -- (label_ref L2) -- (pc))) -- */ -- -- code = GET_CODE (XEXP (ifelse2, 0)); -- -- /* Map GT/GTU to GE/GEU which is easier for AVR. -- The first two instructions compare/branch on EQ -- so we may replace the difficult -- -- if (x == VAL) goto L1; -- if (x > VAL) goto L2; -- -- with easy -- -- if (x == VAL) goto L1; -- if (x >= VAL) goto L2; -- -- Similarly, replace LE/LEU by LT/LTU. */ -- -- switch (code) -- { -- case EQ: -- case LT: case LTU: -- case GE: case GEU: -- break; -- -- case LE: case LEU: -- case GT: case GTU: -- code = avr_normalize_condition (code); -- break; -- -- default: -- return false; -- } -- -- /* Wrap the branches into UNSPECs so they won't be changed or -- optimized in the remainder. */ -- -- target = XEXP (XEXP (ifelse1, 1), 0); -- cond = XEXP (ifelse1, 0); -- jump = emit_jump_insn_after (gen_branch_unspec (target, cond), insn1); -- -- JUMP_LABEL (jump) = JUMP_LABEL (branch1); -- -- target = XEXP (XEXP (ifelse2, 1), 0); -- cond = gen_rtx_fmt_ee (code, VOIDmode, cc_reg_rtx, const0_rtx); -- jump = emit_jump_insn_after (gen_branch_unspec (target, cond), insn2); -- -- JUMP_LABEL (jump) = JUMP_LABEL (branch2); -- -- /* The comparisons in insn1 and insn2 are exactly the same; -- insn2 is superfluous so delete it. */ -- -- delete_insn (insn2); -- delete_insn (branch1); -- delete_insn (branch2); -- -- return true; --} -- -- --/* Implement `TARGET_MACHINE_DEPENDENT_REORG'. */ --/* Optimize conditional jumps. */ -- --static void --avr_reorg (void) --{ -- rtx_insn *insn = get_insns(); -- -- for (insn = next_real_insn (insn); insn; insn = next_real_insn (insn)) -- { -- rtx pattern = avr_compare_pattern (insn); -- -- if (!pattern) -- continue; -- -- if (optimize -- && avr_reorg_remove_redundant_compare (insn)) -- { -- continue; -- } -- -- if (compare_diff_p (insn)) -- { -- /* Now we work under compare insn with difficult branch. */ -- -- rtx_insn *next = next_real_insn (insn); -- rtx pat = PATTERN (next); -- if (GET_CODE (pat) == PARALLEL) -- pat = XVECEXP (pat, 0, 0); -- -- pattern = SET_SRC (pattern); -- -- if (true_regnum (XEXP (pattern, 0)) >= 0 -- && true_regnum (XEXP (pattern, 1)) >= 0) -- { -- rtx x = XEXP (pattern, 0); -- rtx src = SET_SRC (pat); -- rtx t = XEXP (src, 0); -- PUT_CODE (t, swap_condition (GET_CODE (t))); -- XEXP (pattern, 0) = XEXP (pattern, 1); -- XEXP (pattern, 1) = x; -- INSN_CODE (next) = -1; -- } -- else if (true_regnum (XEXP (pattern, 0)) >= 0 -- && XEXP (pattern, 1) == const0_rtx) -- { -- /* This is a tst insn, we can reverse it. */ -- rtx src = SET_SRC (pat); -- rtx t = XEXP (src, 0); -- -- PUT_CODE (t, swap_condition (GET_CODE (t))); -- XEXP (pattern, 1) = XEXP (pattern, 0); -- XEXP (pattern, 0) = const0_rtx; -- INSN_CODE (next) = -1; -- INSN_CODE (insn) = -1; -- } -- else if (true_regnum (XEXP (pattern, 0)) >= 0 -- && CONST_INT_P (XEXP (pattern, 1))) -- { -- rtx x = XEXP (pattern, 1); -- rtx src = SET_SRC (pat); -- rtx t = XEXP (src, 0); -- machine_mode mode = GET_MODE (XEXP (pattern, 0)); -- -- if (avr_simplify_comparison_p (mode, GET_CODE (t), x)) -- { -- XEXP (pattern, 1) = gen_int_mode (INTVAL (x) + 1, mode); -- PUT_CODE (t, avr_normalize_condition (GET_CODE (t))); -- INSN_CODE (next) = -1; -- INSN_CODE (insn) = -1; -- } -- } -- } -- } --} - - /* Returns register number for function return value.*/ - -@@ -14572,6 +15003,8 @@ avr_float_lib_compare_returns_bool (machine_mode mode, enum rtx_code) - #undef TARGET_ASM_FINAL_POSTSCAN_INSN - #define TARGET_ASM_FINAL_POSTSCAN_INSN avr_asm_final_postscan_insn - -+#undef TARGET_INSN_COST -+#define TARGET_INSN_COST avr_insn_cost - #undef TARGET_REGISTER_MOVE_COST - #define TARGET_REGISTER_MOVE_COST avr_register_move_cost - #undef TARGET_MEMORY_MOVE_COST -@@ -14580,8 +15013,6 @@ avr_float_lib_compare_returns_bool (machine_mode mode, enum rtx_code) - #define TARGET_RTX_COSTS avr_rtx_costs - #undef TARGET_ADDRESS_COST - #define TARGET_ADDRESS_COST avr_address_cost --#undef TARGET_MACHINE_DEPENDENT_REORG --#define TARGET_MACHINE_DEPENDENT_REORG avr_reorg - #undef TARGET_FUNCTION_ARG - #define TARGET_FUNCTION_ARG avr_function_arg - #undef TARGET_FUNCTION_ARG_ADVANCE -@@ -14711,6 +15142,12 @@ avr_float_lib_compare_returns_bool (machine_mode mode, enum rtx_code) - #undef TARGET_MD_ASM_ADJUST - #define TARGET_MD_ASM_ADJUST avr_md_asm_adjust - -+#undef TARGET_CAN_INLINE_P -+#define TARGET_CAN_INLINE_P avr_can_inline_p -+ -+#undef TARGET_CANONICALIZE_COMPARISON -+#define TARGET_CANONICALIZE_COMPARISON avr_canonicalize_comparison -+ - struct gcc_target targetm = TARGET_INITIALIZER; - - -diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md -index efae7efb69b..de029476908 100644 ---- a/gcc/config/avr/avr.md -+++ b/gcc/config/avr/avr.md -@@ -77,7 +77,6 @@ - UNSPEC_FMULS - UNSPEC_FMULSU - UNSPEC_COPYSIGN -- UNSPEC_IDENTITY - UNSPEC_INSERT_BITS - UNSPEC_ROUND - ]) -@@ -165,6 +164,7 @@ - ashlsi, ashrsi, lshrsi, - ashlpsi, ashrpsi, lshrpsi, - insert_bits, insv_notbit, insv_notbit_0, insv_notbit_7, -+ add_set_ZN, cmp_uext, cmp_sext, - no" - (const_string "no")) - -@@ -251,11 +251,23 @@ - (define_mode_iterator QIHI2 [QI HI]) - (define_mode_iterator QISI [QI HI PSI SI]) - (define_mode_iterator QIDI [QI HI PSI SI DI]) -+(define_mode_iterator QIPSI [QI HI PSI]) - (define_mode_iterator HISI [HI PSI SI]) - -+;; Ordered integral and fixed-point modes of specific sizes. - (define_mode_iterator ALL1 [QI QQ UQQ]) - (define_mode_iterator ALL2 [HI HQ UHQ HA UHA]) - (define_mode_iterator ALL4 [SI SQ USQ SA USA]) -+(define_mode_iterator ALL234 [HI SI PSI -+ HQ UHQ HA UHA -+ SQ USQ SA USA]) -+ -+;; Ordered signed integral and signed fixed-point modes of specific sizes. -+(define_mode_iterator ALLs1 [QI QQ]) -+(define_mode_iterator ALLs2 [HI HQ HA]) -+(define_mode_iterator ALLs4 [SI SQ SA]) -+(define_mode_iterator ALLs234 [HI SI PSI -+ HQ HA SQ SA]) - - ;; All supported move-modes - (define_mode_iterator MOVMODE [QI QQ UQQ -@@ -273,15 +285,17 @@ - SQ USQ SA USA]) - - ;; Define code iterators --;; Define two incarnations so that we can build the cross product. -+;; Define two incarnations so that we can build the cartesian product. - (define_code_iterator any_extend [sign_extend zero_extend]) - (define_code_iterator any_extend2 [sign_extend zero_extend]) - (define_code_iterator any_extract [sign_extract zero_extract]) - (define_code_iterator any_shiftrt [lshiftrt ashiftrt]) - -+(define_code_iterator piaop [plus ior and]) - (define_code_iterator bitop [xor ior and]) - (define_code_iterator xior [xor ior]) - (define_code_iterator eqne [eq ne]) -+(define_code_iterator gelt [ge lt]) - - (define_code_iterator ss_addsub [ss_plus ss_minus]) - (define_code_iterator us_addsub [us_plus us_minus]) -@@ -309,6 +323,10 @@ - [(ss_minus "") (us_minus "") - (ss_plus "%") (us_plus "%")]) - -+(define_code_attr gelt_eqne -+ [(ge "eq") -+ (lt "ne")]) -+ - ;; Map RTX code to its standard insn name - (define_code_attr code_stdname - [(ashift "ashl") -@@ -1529,9 +1547,8 @@ - "#" - "&& reload_completed" - [(parallel [(set (match_dup 0) -- (plus:HI -- (zero_extend:HI (match_dup 1)) -- (zero_extend:HI (match_dup 2)))) -+ (plus:HI (zero_extend:HI (match_dup 1)) -+ (zero_extend:HI (match_dup 2)))) - (clobber (reg:CC REG_CC))])]) - - -@@ -2152,7 +2169,8 @@ - (define_expand "mulqi3_call" - [(set (reg:QI 24) (match_operand:QI 1 "register_operand" "")) - (set (reg:QI 22) (match_operand:QI 2 "register_operand" "")) -- (parallel [(set (reg:QI 24) (mult:QI (reg:QI 24) (reg:QI 22))) -+ (parallel [(set (reg:QI 24) -+ (mult:QI (reg:QI 24) (reg:QI 22))) - (clobber (reg:QI 22))]) - (set (match_operand:QI 0 "register_operand" "") (reg:QI 24))] - "" -@@ -2166,12 +2184,14 @@ - "!AVR_HAVE_MUL" - "#" - "&& reload_completed" -- [(parallel [(set (reg:QI 24) (mult:QI (reg:QI 24) (reg:QI 22))) -+ [(parallel [(set (reg:QI 24) -+ (mult:QI (reg:QI 24) (reg:QI 22))) - (clobber (reg:QI 22)) - (clobber (reg:CC REG_CC))])]) - - (define_insn "*mulqi3_call" -- [(set (reg:QI 24) (mult:QI (reg:QI 24) (reg:QI 22))) -+ [(set (reg:QI 24) -+ (mult:QI (reg:QI 24) (reg:QI 22))) - (clobber (reg:QI 22)) - (clobber (reg:CC REG_CC))] - "!AVR_HAVE_MUL && reload_completed" -@@ -2307,7 +2327,7 @@ - [(set (match_operand:PSI 0 "register_operand" "=r") - (plus:PSI (lshiftrt:PSI (match_operand:PSI 1 "register_operand" "r") - (const_int 23)) -- (match_operand:PSI 2 "register_operand" "0"))) -+ (match_operand:PSI 2 "register_operand" "0"))) - (clobber (reg:CC REG_CC))] - "reload_completed" - "mov __tmp_reg__,%C1\;lsl __tmp_reg__ -@@ -2433,7 +2453,7 @@ - [(set (match_operand:HI 0 "register_operand" "=r") - (mult:HI (sign_extend:HI (match_operand:QI 1 "register_operand" "a")) - (zero_extend:HI (match_operand:QI 2 "register_operand" "a")))) -- (clobber (reg:CC REG_CC))] -+ (clobber (reg:CC REG_CC))] - "AVR_HAVE_MUL && reload_completed" - "mulsu %1,%2 - movw %0,r0 -@@ -3088,7 +3108,7 @@ - [(parallel [(set (match_dup 0) - (mult:HI (zero_extend:HI (match_dup 1)) - (match_dup 2))) -- (clobber (reg:CC REG_CC))])]) -+ (clobber (reg:CC REG_CC))])]) - - (define_insn "*muluqihi3" - [(set (match_operand:HI 0 "register_operand" "=&r") -@@ -3706,17 +3726,17 @@ - ;; CSE has problems to operate on hard regs. - ;; - (define_insn_and_split "divmodqi4" -- [(set (match_operand:QI 0 "pseudo_register_operand" "") -- (div:QI (match_operand:QI 1 "pseudo_register_operand" "") -- (match_operand:QI 2 "pseudo_register_operand" ""))) -- (set (match_operand:QI 3 "pseudo_register_operand" "") -+ [(set (match_operand:QI 0 "pseudo_register_operand") -+ (div:QI (match_operand:QI 1 "pseudo_register_operand") -+ (match_operand:QI 2 "pseudo_register_operand"))) -+ (set (match_operand:QI 3 "pseudo_register_operand") - (mod:QI (match_dup 1) (match_dup 2))) - (clobber (reg:QI 22)) - (clobber (reg:QI 23)) - (clobber (reg:QI 24)) - (clobber (reg:QI 25))] - "" -- "this divmodqi4 pattern should have been splitted;" -+ { gcc_unreachable(); } - "" - [(set (reg:QI 24) (match_dup 1)) - (set (reg:QI 22) (match_dup 2)) -@@ -3752,17 +3772,17 @@ - [(set_attr "type" "xcall")]) - - (define_insn_and_split "udivmodqi4" -- [(set (match_operand:QI 0 "pseudo_register_operand" "") -- (udiv:QI (match_operand:QI 1 "pseudo_register_operand" "") -- (match_operand:QI 2 "pseudo_register_operand" ""))) -- (set (match_operand:QI 3 "pseudo_register_operand" "") -- (umod:QI (match_dup 1) (match_dup 2))) -- (clobber (reg:QI 22)) -- (clobber (reg:QI 23)) -- (clobber (reg:QI 24)) -- (clobber (reg:QI 25))] -- "" -- "this udivmodqi4 pattern should have been splitted;" -+ [(set (match_operand:QI 0 "pseudo_register_operand") -+ (udiv:QI (match_operand:QI 1 "pseudo_register_operand") -+ (match_operand:QI 2 "pseudo_register_operand"))) -+ (set (match_operand:QI 3 "pseudo_register_operand") -+ (umod:QI (match_dup 1) (match_dup 2))) -+ (clobber (reg:QI 22)) -+ (clobber (reg:QI 23)) -+ (clobber (reg:QI 24)) -+ (clobber (reg:QI 25))] -+ "" -+ { gcc_unreachable(); } - "" - [(set (reg:QI 24) (match_dup 1)) - (set (reg:QI 22) (match_dup 2)) -@@ -3794,17 +3814,17 @@ - [(set_attr "type" "xcall")]) - - (define_insn_and_split "divmodhi4" -- [(set (match_operand:HI 0 "pseudo_register_operand" "") -- (div:HI (match_operand:HI 1 "pseudo_register_operand" "") -- (match_operand:HI 2 "pseudo_register_operand" ""))) -- (set (match_operand:HI 3 "pseudo_register_operand" "") -+ [(set (match_operand:HI 0 "pseudo_register_operand") -+ (div:HI (match_operand:HI 1 "pseudo_register_operand") -+ (match_operand:HI 2 "pseudo_register_operand"))) -+ (set (match_operand:HI 3 "pseudo_register_operand") - (mod:HI (match_dup 1) (match_dup 2))) - (clobber (reg:QI 21)) - (clobber (reg:HI 22)) - (clobber (reg:HI 24)) - (clobber (reg:HI 26))] - "" -- "this should have been splitted;" -+ { gcc_unreachable(); } - "" - [(set (reg:HI 24) (match_dup 1)) - (set (reg:HI 22) (match_dup 2)) -@@ -3840,17 +3860,17 @@ - [(set_attr "type" "xcall")]) - - (define_insn_and_split "udivmodhi4" -- [(set (match_operand:HI 0 "pseudo_register_operand" "") -- (udiv:HI (match_operand:HI 1 "pseudo_register_operand" "") -- (match_operand:HI 2 "pseudo_register_operand" ""))) -- (set (match_operand:HI 3 "pseudo_register_operand" "") -+ [(set (match_operand:HI 0 "pseudo_register_operand") -+ (udiv:HI (match_operand:HI 1 "pseudo_register_operand") -+ (match_operand:HI 2 "pseudo_register_operand"))) -+ (set (match_operand:HI 3 "pseudo_register_operand") - (umod:HI (match_dup 1) (match_dup 2))) - (clobber (reg:QI 21)) - (clobber (reg:HI 22)) - (clobber (reg:HI 24)) - (clobber (reg:HI 26))] - "" -- "this udivmodhi4 pattern should have been splitted.;" -+ { gcc_unreachable(); } - "" - [(set (reg:HI 24) (match_dup 1)) - (set (reg:HI 22) (match_dup 2)) -@@ -3925,7 +3945,7 @@ - [(parallel [(set (match_dup 0) - (mult:PSI (zero_extend:PSI (match_dup 1)) - (zero_extend:PSI (match_dup 2)))) -- (clobber (reg:CC REG_CC))])]) -+ (clobber (reg:CC REG_CC))])]) - - (define_insn "*umulqihipsi3" - [(set (match_operand:PSI 0 "register_operand" "=&r") -@@ -4091,14 +4111,14 @@ - ;; implementation works the other way round. - - (define_insn_and_split "divmodpsi4" -- [(parallel [(set (match_operand:PSI 0 "pseudo_register_operand" "") -- (div:PSI (match_operand:PSI 1 "pseudo_register_operand" "") -- (match_operand:PSI 2 "pseudo_register_operand" ""))) -- (set (match_operand:PSI 3 "pseudo_register_operand" "") -- (mod:PSI (match_dup 1) -- (match_dup 2))) -- (clobber (reg:DI 18)) -- (clobber (reg:QI 26))])] -+ [(set (match_operand:PSI 0 "pseudo_register_operand") -+ (div:PSI (match_operand:PSI 1 "pseudo_register_operand") -+ (match_operand:PSI 2 "pseudo_register_operand"))) -+ (set (match_operand:PSI 3 "pseudo_register_operand") -+ (mod:PSI (match_dup 1) -+ (match_dup 2))) -+ (clobber (reg:DI 18)) -+ (clobber (reg:QI 26))] - "" - { gcc_unreachable(); } - "" -@@ -4140,14 +4160,14 @@ - [(set_attr "type" "xcall")]) - - (define_insn_and_split "udivmodpsi4" -- [(parallel [(set (match_operand:PSI 0 "pseudo_register_operand" "") -- (udiv:PSI (match_operand:PSI 1 "pseudo_register_operand" "") -- (match_operand:PSI 2 "pseudo_register_operand" ""))) -- (set (match_operand:PSI 3 "pseudo_register_operand" "") -- (umod:PSI (match_dup 1) -- (match_dup 2))) -- (clobber (reg:DI 18)) -- (clobber (reg:QI 26))])] -+ [(set (match_operand:PSI 0 "pseudo_register_operand") -+ (udiv:PSI (match_operand:PSI 1 "pseudo_register_operand") -+ (match_operand:PSI 2 "pseudo_register_operand"))) -+ (set (match_operand:PSI 3 "pseudo_register_operand") -+ (umod:PSI (match_dup 1) -+ (match_dup 2))) -+ (clobber (reg:DI 18)) -+ (clobber (reg:QI 26))] - "" - { gcc_unreachable(); } - "" -@@ -4191,17 +4211,18 @@ - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - (define_insn_and_split "divmodsi4" -- [(parallel [(set (match_operand:SI 0 "pseudo_register_operand" "") -- (div:SI (match_operand:SI 1 "pseudo_register_operand" "") -- (match_operand:SI 2 "pseudo_register_operand" ""))) -- (set (match_operand:SI 3 "pseudo_register_operand" "") -- (mod:SI (match_dup 1) (match_dup 2))) -- (clobber (reg:SI 18)) -- (clobber (reg:SI 22)) -- (clobber (reg:HI 26)) -- (clobber (reg:HI 30))])] -+ [(set (match_operand:SI 0 "pseudo_register_operand") -+ (div:SI (match_operand:SI 1 "pseudo_register_operand") -+ (match_operand:SI 2 "pseudo_register_operand"))) -+ (set (match_operand:SI 3 "pseudo_register_operand") -+ (mod:SI (match_dup 1) -+ (match_dup 2))) -+ (clobber (reg:SI 18)) -+ (clobber (reg:SI 22)) -+ (clobber (reg:HI 26)) -+ (clobber (reg:HI 30))] - "" -- "this divmodsi4 pattern should have been splitted;" -+ { gcc_unreachable(); } - "" - [(set (reg:SI 22) (match_dup 1)) - (set (reg:SI 18) (match_dup 2)) -@@ -4237,17 +4258,18 @@ - [(set_attr "type" "xcall")]) - - (define_insn_and_split "udivmodsi4" -- [(parallel [(set (match_operand:SI 0 "pseudo_register_operand" "") -- (udiv:SI (match_operand:SI 1 "pseudo_register_operand" "") -- (match_operand:SI 2 "pseudo_register_operand" ""))) -- (set (match_operand:SI 3 "pseudo_register_operand" "") -- (umod:SI (match_dup 1) (match_dup 2))) -- (clobber (reg:SI 18)) -- (clobber (reg:SI 22)) -- (clobber (reg:HI 26)) -- (clobber (reg:HI 30))])] -+ [(set (match_operand:SI 0 "pseudo_register_operand") -+ (udiv:SI (match_operand:SI 1 "pseudo_register_operand") -+ (match_operand:SI 2 "pseudo_register_operand"))) -+ (set (match_operand:SI 3 "pseudo_register_operand") -+ (umod:SI (match_dup 1) -+ (match_dup 2))) -+ (clobber (reg:SI 18)) -+ (clobber (reg:SI 22)) -+ (clobber (reg:HI 26)) -+ (clobber (reg:HI 30))] - "" -- "this udivmodsi4 pattern should have been splitted;" -+ { gcc_unreachable(); } - "" - [(set (reg:SI 22) (match_dup 1)) - (set (reg:SI 18) (match_dup 2)) -@@ -4712,7 +4734,8 @@ - [(parallel [(set (match_operand:HISI 0 "register_operand") - (bitop:HISI (match_dup 0) - (match_operand:HISI 1 "register_operand"))) -- (clobber (scratch:QI))])] -+ (clobber (scratch:QI)) -+ (clobber (reg:CC REG_CC))])] - "optimize - && reload_completed" - [(const_int 1)] -@@ -4726,6 +4749,43 @@ - DONE; - }) - -+;; If $0 = $0 const requires a QI scratch, and d-reg $1 dies after -+;; the first insn, then we can replace -+;; $0 = $1 -+;; $0 = $0 const -+;; by -+;; $1 = $1 const -+;; $0 = $1 -+;; This transorms constraint alternative "r,0,n,&d" of the first operation -+;; to alternative "d,0,n,X". -+;; "*addhi3_clobber" "*addpsi3" "*addsi3" -+;; "*addhq3" "*adduhq3" "*addha3" "*adduha3" -+;; "*addsq3" "*addusq3" "*addsa3" "*addusa3" -+;; "*iorhi3" "*iorpsi3" "*iorsi3" -+;; "*andhi3" "*andpsi3" "*andsi3" -+(define_peephole2 -+ [(parallel [(set (match_operand:ORDERED234 0 "register_operand") -+ (match_operand:ORDERED234 1 "d_register_operand")) -+ (clobber (reg:CC REG_CC))]) -+ (parallel [(set (match_dup 0) -+ (piaop:ORDERED234 (match_dup 0) -+ (match_operand:ORDERED234 2 "const_operand"))) -+ ; A d-reg as scratch tells that this insn is expensive, and -+ ; that $0 is not a d-register: l-reg or something like SI:14 etc. -+ (clobber (match_operand:QI 3 "d_register_operand")) -+ (clobber (reg:CC REG_CC))])] -+ "peep2_reg_dead_p (1, operands[1])" -+ [(parallel [(set (match_dup 1) -+ (piaop:ORDERED234 (match_dup 1) -+ (match_dup 2))) -+ (clobber (scratch:QI)) -+ (clobber (reg:CC REG_CC))]) -+ ; Unfortunately, the following insn misses a REG_DEAD note for $1, -+ ; so this peep2 works only once. -+ (parallel [(set (match_dup 0) -+ (match_dup 1)) -+ (clobber (reg:CC REG_CC))])]) -+ - - ;; swap swap swap swap swap swap swap swap swap swap swap swap swap swap swap - ;; swap -@@ -5684,7 +5744,7 @@ - ;; "lshrha3" "lshruha3" - (define_insn_and_split "lshr3" - [(set (match_operand:ALL2 0 "register_operand" "=r,r,r,r,r,r,r") -- (lshiftrt:ALL2 (match_operand:ALL2 1 "register_operand" "0,0,0,r,0,0,0") -+ (lshiftrt:ALL2 (match_operand:ALL2 1 "register_operand" "0,0,0,r,0,0,0") - (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm")))] - "" - "#" -@@ -5696,7 +5756,7 @@ - - (define_insn "*lshr3" - [(set (match_operand:ALL2 0 "register_operand" "=r,r,r,r,r,r,r") -- (lshiftrt:ALL2 (match_operand:ALL2 1 "register_operand" "0,0,0,r,0,0,0") -+ (lshiftrt:ALL2 (match_operand:ALL2 1 "register_operand" "0,0,0,r,0,0,0") - (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm"))) - (clobber (reg:CC REG_CC))] - "reload_completed" -@@ -6449,80 +6509,41 @@ - ;;<=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=> - ;; compare - --; Optimize negated tests into reverse compare if overflow is undefined. --(define_insn "*negated_tstqi" -+;; "*swapped_tstqi" "*swapped_tstqq" -+(define_insn "*swapped_tst" - [(set (reg:CC REG_CC) -- (compare:CC (neg:QI (match_operand:QI 0 "register_operand" "r")) -- (const_int 0)))] -- "reload_completed && !flag_wrapv && !flag_trapv" -- "cp __zero_reg__,%0" -- [(set_attr "length" "1")]) -- --(define_insn "*reversed_tstqi" -- [(set (reg:CC REG_CC) -- (compare:CC (const_int 0) -- (match_operand:QI 0 "register_operand" "r")))] -+ (compare:CC (match_operand:ALLs1 0 "const0_operand" "Y00") -+ (match_operand:ALLs1 1 "register_operand" "r")))] - "reload_completed" -- "cp __zero_reg__,%0" --[(set_attr "length" "2")]) -+ "cp __zero_reg__,%1" -+[(set_attr "length" "1")]) - --(define_insn "*negated_tsthi" -- [(set (reg:CC REG_CC) -- (compare:CC (neg:HI (match_operand:HI 0 "register_operand" "r")) -- (const_int 0)))] -- "reload_completed && !flag_wrapv && !flag_trapv" -- "cp __zero_reg__,%A0 -- cpc __zero_reg__,%B0" --[(set_attr "length" "2")]) -- --;; Leave here the clobber used by the cmphi pattern for simplicity, even --;; though it is unused, because this pattern is synthesized by avr_reorg. --(define_insn "*reversed_tsthi" -+ -+;; "*swapped_tsthi" "*swapped_tsthq" "*swapped_tstha" -+(define_insn "*swapped_tst" - [(set (reg:CC REG_CC) -- (compare:CC (const_int 0) -- (match_operand:HI 0 "register_operand" "r"))) -- (clobber (match_scratch:QI 1 "=X"))] -+ (compare:CC (match_operand:ALLs2 0 "const0_operand" "Y00") -+ (match_operand:ALLs2 1 "register_operand" "r")))] - "reload_completed" -- "cp __zero_reg__,%A0 -- cpc __zero_reg__,%B0" --[(set_attr "length" "2")]) -+ "cp __zero_reg__,%A1 -+ cpc __zero_reg__,%B1" -+ [(set_attr "length" "2")]) - --(define_insn "*negated_tstpsi" -- [(set (reg:CC REG_CC) -- (compare:CC (neg:PSI (match_operand:PSI 0 "register_operand" "r")) -- (const_int 0)))] -- "reload_completed && !flag_wrapv && !flag_trapv" -- "cp __zero_reg__,%A0\;cpc __zero_reg__,%B0\;cpc __zero_reg__,%C0" -- [(set_attr "length" "3")]) - --(define_insn "*reversed_tstpsi" -+(define_insn "*swapped_tstpsi" - [(set (reg:CC REG_CC) - (compare:CC (const_int 0) -- (match_operand:PSI 0 "register_operand" "r"))) -- (clobber (match_scratch:QI 1 "=X"))] -+ (match_operand:PSI 0 "register_operand" "r")))] - "reload_completed" - "cp __zero_reg__,%A0\;cpc __zero_reg__,%B0\;cpc __zero_reg__,%C0" - [(set_attr "length" "3")]) - --(define_insn "*negated_tstsi" -- [(set (reg:CC REG_CC) -- (compare:CC (neg:SI (match_operand:SI 0 "register_operand" "r")) -- (const_int 0)))] -- "reload_completed && !flag_wrapv && !flag_trapv" -- "cp __zero_reg__,%A0 -- cpc __zero_reg__,%B0 -- cpc __zero_reg__,%C0 -- cpc __zero_reg__,%D0" -- [(set_attr "length" "4")]) - --;; "*reversed_tstsi" --;; "*reversed_tstsq" "*reversed_tstusq" --;; "*reversed_tstsa" "*reversed_tstusa" --(define_insn "*reversed_tst" -+;; "*swapped_tstsi" "*swapped_tstsq" "*swapped_tstsa" -+(define_insn "*swapped_tst" - [(set (reg:CC REG_CC) -- (compare:CC (match_operand:ALL4 0 "const0_operand" "Y00") -- (match_operand:ALL4 1 "register_operand" "r"))) -- (clobber (match_scratch:QI 2 "=X"))] -+ (compare:CC (match_operand:ALLs4 0 "const0_operand" "Y00") -+ (match_operand:ALLs4 1 "register_operand" "r")))] - "reload_completed" - "cp __zero_reg__,%A1 - cpc __zero_reg__,%B1 -@@ -6536,38 +6557,40 @@ - (define_insn "cmp3" - [(set (reg:CC REG_CC) - (compare:CC (match_operand:ALL1 0 "register_operand" "r ,r,d") -- (match_operand:ALL1 1 "nonmemory_operand" "Y00,r,i")))] -+ (match_operand:ALL1 1 "nonmemory_operand" "Y00,r,i")))] - "reload_completed" - "@ -- tst %0 -+ cp %0, __zero_reg__ - cp %0,%1 - cpi %0,lo8(%1)" - [(set_attr "length" "1,1,1")]) - --(define_insn "*cmpqi_sign_extend" -- [(set (reg:CC REG_CC) -- (compare:CC (sign_extend:HI (match_operand:QI 0 "register_operand" "d")) -- (match_operand:HI 1 "s8_operand" "n")))] -- "reload_completed" -- "cpi %0,lo8(%1)" -- [(set_attr "length" "1")]) - -- --(define_insn "*cmphi.zero-extend.0" -+;; May be generated by "*cbranch..0/1". -+(define_insn "*cmp..0" - [(set (reg:CC REG_CC) -- (compare:CC (zero_extend:HI (match_operand:QI 0 "register_operand" "r")) -- (match_operand:HI 1 "register_operand" "r")))] -- "reload_completed" -- "cp %0,%A1\;cpc __zero_reg__,%B1" -- [(set_attr "length" "2")]) -+ (compare:CC (any_extend:HISI (match_operand:QIPSI 0 "register_operand" "r")) -+ (match_operand:HISI 1 "register_operand" "r")))] -+ "reload_completed -+ && GET_MODE_SIZE (mode) > GET_MODE_SIZE (mode)" -+ { -+ return avr_out_cmp_ext (operands, , nullptr); -+ } -+ [(set_attr "adjust_len" "cmp_ext")]) - --(define_insn "*cmphi.zero-extend.1" -+;; Swapped version of the above. -+;; May be generated by "*cbranch..0/1". -+(define_insn "*cmp..1" - [(set (reg:CC REG_CC) -- (compare:CC (match_operand:HI 0 "register_operand" "r") -- (zero_extend:HI (match_operand:QI 1 "register_operand" "r"))))] -- "reload_completed" -- "cp %A0,%1\;cpc %B0,__zero_reg__" -- [(set_attr "length" "2")]) -+ (compare:CC (match_operand:HISI 0 "register_operand" "r") -+ (any_extend:HISI (match_operand:QIPSI 1 "register_operand" "r"))))] -+ "reload_completed -+ && GET_MODE_SIZE (mode) > GET_MODE_SIZE (mode)" -+ { -+ return avr_out_cmp_ext (operands, , nullptr); -+ } -+ [(set_attr "adjust_len" "cmp_ext")]) -+ - - ;; "cmphi3" - ;; "cmphq3" "cmpuhq3" -@@ -6575,8 +6598,8 @@ - (define_insn "cmp3" - [(set (reg:CC REG_CC) - (compare:CC (match_operand:ALL2 0 "register_operand" "!w ,r ,r,d ,r ,d,r") -- (match_operand:ALL2 1 "nonmemory_operand" "Y00,Y00,r,s ,s ,M,n Ynn"))) -- (clobber (match_scratch:QI 2 "=X ,X ,X,&d,&d ,X,&d"))] -+ (match_operand:ALL2 1 "nonmemory_operand" "Y00,Y00,r,s ,s ,M,n Ynn"))) -+ (clobber (match_scratch:QI 2 "=X ,X ,X,&d,&d ,X,&d"))] - "reload_completed" - { - switch (which_alternative) -@@ -6603,14 +6626,14 @@ - - return avr_out_compare (insn, operands, NULL); - } -- [(set_attr "length" "1,2,2,3,4,2,4") -+ [(set_attr "length" "2,2,2,3,4,2,4") - (set_attr "adjust_len" "tsthi,tsthi,*,*,*,compare,compare")]) - - (define_insn "*cmppsi" - [(set (reg:CC REG_CC) - (compare:CC (match_operand:PSI 0 "register_operand" "r,r,d ,r ,d,r") -- (match_operand:PSI 1 "nonmemory_operand" "L,r,s ,s ,M,n"))) -- (clobber (match_scratch:QI 2 "=X,X,&d,&d ,X,&d"))] -+ (match_operand:PSI 1 "nonmemory_operand" "L,r,s ,s ,M,n"))) -+ (clobber (match_scratch:QI 2 "=X,X,&d,&d ,X,&d"))] - "reload_completed" - { - switch (which_alternative) -@@ -6641,8 +6664,8 @@ - (define_insn "*cmp" - [(set (reg:CC REG_CC) - (compare:CC (match_operand:ALL4 0 "register_operand" "r ,r ,d,r ,r") -- (match_operand:ALL4 1 "nonmemory_operand" "Y00,r ,M,M ,n Ynn"))) -- (clobber (match_scratch:QI 2 "=X ,X ,X,&d,&d"))] -+ (match_operand:ALL4 1 "nonmemory_operand" "Y00,r ,M,M ,n Ynn"))) -+ (clobber (match_scratch:QI 2 "=X ,X ,X,&d,&d"))] - "reload_completed" - { - if (0 == which_alternative) -@@ -6656,6 +6679,13 @@ - (set_attr "adjust_len" "tstsi,*,compare,compare,compare")]) - - -+;; A helper for avr_pass_ifelse::avr_rest_of_handle_ifelse(). -+(define_expand "gen_compare" -+ [(parallel [(set (reg:CC REG_CC) -+ (compare:CC (match_operand:HISI 0 "register_operand") -+ (match_operand:HISI 1 "const_int_operand"))) -+ (clobber (match_operand:QI 2 "scratch_operand"))])]) -+ - ;; ---------------------------------------------------------------------- - ;; JUMP INSTRUCTIONS - ;; ---------------------------------------------------------------------- -@@ -6664,53 +6694,67 @@ - (define_expand "cbranch4" - [(set (pc) - (if_then_else (match_operator 0 "ordered_comparison_operator" -- [(match_operand:ALL1 1 "register_operand" "") -- (match_operand:ALL1 2 "nonmemory_operand" "")]) -- (label_ref (match_operand 3 "" "")) -- (pc)))]) -+ [(match_operand:ALL1 1 "register_operand") -+ (match_operand:ALL1 2 "nonmemory_operand")]) -+ (label_ref (match_operand 3)) -+ (pc)))] -+ "" -+ { -+ int icode = (int) GET_CODE (operands[0]); -+ -+ targetm.canonicalize_comparison (&icode, &operands[1], &operands[2], false); -+ PUT_CODE (operands[0], (enum rtx_code) icode); -+ }) - - (define_expand "cbranch4" - [(parallel - [(set (pc) -- (if_then_else -- (match_operator 0 "ordered_comparison_operator" -- [(match_operand:ORDERED234 1 "register_operand" "") -- (match_operand:ORDERED234 2 "nonmemory_operand" "")]) -- (label_ref (match_operand 3 "" "")) -- (pc))) -- (clobber (match_scratch:QI 4 ""))])]) -- --;; "*cbranchqi4" --;; "*cbranchqq4" "*cbranchuqq4" --(define_insn_and_split "*cbranch4" -+ (if_then_else (match_operator 0 "ordered_comparison_operator" -+ [(match_operand:ALL234 1 "register_operand") -+ (match_operand:ALL234 2 "nonmemory_operand")]) -+ (label_ref (match_operand 3)) -+ (pc))) -+ (clobber (match_scratch:QI 4))])] -+ "" -+ { -+ int icode = (int) GET_CODE (operands[0]); -+ -+ targetm.canonicalize_comparison (&icode, &operands[1], &operands[2], false); -+ PUT_CODE (operands[0], (enum rtx_code) icode); -+ }) -+ -+ -+;; "cbranchqi4_insn" -+;; "cbranchqq4_insn" "cbranchuqq4_insn" -+(define_insn_and_split "cbranch4_insn" - [(set (pc) - (if_then_else (match_operator 0 "ordered_comparison_operator" -- [(match_operand:ALL1 1 "register_operand" "r ,r,d") -+ [(match_operand:ALL1 1 "register_operand" "r ,r,d") - (match_operand:ALL1 2 "nonmemory_operand" "Y00,r,i")]) -- (label_ref (match_operand 3 "" "")) -- (pc)))] -+ (label_ref (match_operand 3)) -+ (pc)))] - "" - "#" - "reload_completed" - [(set (reg:CC REG_CC) -- (compare:CC (match_dup 1) (match_dup 2))) -+ (compare:CC (match_dup 1) (match_dup 2))) - (set (pc) - (if_then_else (match_op_dup 0 - [(reg:CC REG_CC) (const_int 0)]) - (label_ref (match_dup 3)) -- (pc)))] -- "") -+ (pc)))]) - --;; "*cbranchsi4" "*cbranchsq4" "*cbranchusq4" "*cbranchsa4" "*cbranchusa4" --(define_insn_and_split "*cbranch4" -+;; "cbranchsi4_insn" -+;; "cbranchsq4_insn" "cbranchusq4_insn" "cbranchsa4_insn" "cbranchusa4_insn" -+(define_insn_and_split "cbranch4_insn" - [(set (pc) -- (if_then_else -- (match_operator 0 "ordered_comparison_operator" -- [(match_operand:ALL4 1 "register_operand" "r ,r ,d,r ,r") -- (match_operand:ALL4 2 "nonmemory_operand" "Y00,r ,M,M ,n Ynn")]) -- (label_ref (match_operand 3 "" "")) -- (pc))) -- (clobber (match_scratch:QI 4 "=X ,X ,X,&d,&d"))] -+ (if_then_else -+ (match_operator 0 "ordered_comparison_operator" -+ [(match_operand:ALL4 1 "register_operand" "r ,r,d,r ,r") -+ (match_operand:ALL4 2 "nonmemory_operand" "Y00,r,M,M ,n Ynn")]) -+ (label_ref (match_operand 3)) -+ (pc))) -+ (clobber (match_scratch:QI 4 "=X ,X,X,&d,&d"))] - "" - "#" - "reload_completed" -@@ -6721,19 +6765,18 @@ - (if_then_else (match_op_dup 0 - [(reg:CC REG_CC) (const_int 0)]) - (label_ref (match_dup 3)) -- (pc)))] -- "") -+ (pc)))]) - --;; "*cbranchpsi4" --(define_insn_and_split "*cbranchpsi4" -+;; "cbranchpsi4_insn" -+(define_insn_and_split "cbranchpsi4_insn" - [(set (pc) -- (if_then_else -- (match_operator 0 "ordered_comparison_operator" -- [(match_operand:PSI 1 "register_operand" "r,r,d ,r ,d,r") -- (match_operand:PSI 2 "nonmemory_operand" "L,r,s ,s ,M,n")]) -- (label_ref (match_operand 3 "" "")) -- (pc))) -- (clobber (match_scratch:QI 4 "=X,X,&d,&d ,X,&d"))] -+ (if_then_else -+ (match_operator 0 "ordered_comparison_operator" -+ [(match_operand:PSI 1 "register_operand" "r,r,d ,r ,d,r") -+ (match_operand:PSI 2 "nonmemory_operand" "L,r,s ,s ,M,n")]) -+ (label_ref (match_operand 3)) -+ (pc))) -+ (clobber (match_scratch:QI 4 "=X,X,&d,&d,X,&d"))] - "" - "#" - "reload_completed" -@@ -6744,19 +6787,19 @@ - (if_then_else (match_op_dup 0 - [(reg:CC REG_CC) (const_int 0)]) - (label_ref (match_dup 3)) -- (pc)))] -- "") -+ (pc)))]) - --;; "*cbranchhi4" "*cbranchhq4" "*cbranchuhq4" "*cbranchha4" "*cbranchuha4" --(define_insn_and_split "*cbranch4" -+;; "cbranchhi4_insn" -+;; "cbranchhq4_insn" "cbranchuhq4_insn" "cbranchha4_insn" "cbranchuha4_insn" -+(define_insn_and_split "cbranch4_insn" - [(set (pc) -- (if_then_else -- (match_operator 0 "ordered_comparison_operator" -- [(match_operand:ALL2 1 "register_operand" "!w ,r ,r,d ,r ,d,r") -- (match_operand:ALL2 2 "nonmemory_operand" "Y00,Y00,r,s ,s ,M,n Ynn")]) -- (label_ref (match_operand 3 "" "")) -- (pc))) -- (clobber (match_scratch:QI 4 "=X ,X ,X,&d,&d ,X,&d"))] -+ (if_then_else -+ (match_operator 0 "ordered_comparison_operator" -+ [(match_operand:ALL2 1 "register_operand" "!w ,r ,r,d ,r ,d,r") -+ (match_operand:ALL2 2 "nonmemory_operand" "Y00,Y00,r,s ,s ,M,n Ynn")]) -+ (label_ref (match_operand 3)) -+ (pc))) -+ (clobber (match_scratch:QI 4 "=X ,X ,X,&d,&d,X,&d"))] - "" - "#" - "reload_completed" -@@ -6767,8 +6810,71 @@ - (if_then_else (match_op_dup 0 - [(reg:CC REG_CC) (const_int 0)]) - (label_ref (match_dup 3)) -- (pc)))] -- "") -+ (pc)))]) -+ -+;; Combiner pattern to compare sign- or zero-extended register against -+;; a wider register, like comparing uint8_t against uint16_t. -+(define_insn_and_split "*cbranch..0" -+ [(set (pc) -+ (if_then_else (match_operator 0 "ordered_comparison_operator" -+ [(any_extend:HISI (match_operand:QIPSI 1 "register_operand" "r")) -+ (match_operand:HISI 2 "register_operand" "r")]) -+ (label_ref (match_operand 3)) -+ (pc)))] -+ "optimize -+ && GET_MODE_SIZE (mode) > GET_MODE_SIZE (mode)" -+ "#" -+ "&& reload_completed" -+ [; "*cmp..0" -+ (set (reg:CC REG_CC) -+ (compare:CC (match_dup 1) -+ (match_dup 2))) -+ ; "branch" -+ (set (pc) -+ (if_then_else (match_op_dup 0 [(reg:CC REG_CC) -+ (const_int 0)]) -+ (label_ref (match_dup 3)) -+ (pc)))] -+ { -+ operands[1] = gen_rtx_ (mode, operands[1]); -+ if (difficult_comparison_operator (operands[0], VOIDmode)) -+ { -+ PUT_CODE (operands[0], swap_condition (GET_CODE (operands[0]))); -+ std::swap (operands[1], operands[2]); -+ } -+ }) -+ -+;; Same combiner pattern, but with swapped operands. -+(define_insn_and_split "*cbranch..0" -+ [(set (pc) -+ (if_then_else (match_operator 0 "ordered_comparison_operator" -+ [(match_operand:HISI 1 "register_operand" "r") -+ (any_extend:HISI (match_operand:QIPSI 2 "register_operand" "r"))]) -+ (label_ref (match_operand 3)) -+ (pc)))] -+ "optimize -+ && GET_MODE_SIZE (mode) > GET_MODE_SIZE (mode)" -+ "#" -+ "&& reload_completed" -+ [; "*cmp..0" -+ (set (reg:CC REG_CC) -+ (compare:CC (match_dup 1) -+ (match_dup 2))) -+ ; "branch" -+ (set (pc) -+ (if_then_else (match_op_dup 0 [(reg:CC REG_CC) -+ (const_int 0)]) -+ (label_ref (match_dup 3)) -+ (pc)))] -+ { -+ operands[2] = gen_rtx_ (mode, operands[2]); -+ if (difficult_comparison_operator (operands[0], VOIDmode)) -+ { -+ PUT_CODE (operands[0], swap_condition (GET_CODE (operands[0]))); -+ std::swap (operands[1], operands[2]); -+ } -+ }) -+ - - ;; Test a single bit in a QI/HI/SImode register. - ;; Combine will create zero extract patterns for single bit tests. -@@ -6842,14 +6948,11 @@ - "#" - "&& reload_completed" - [(parallel [(set (pc) -- (if_then_else -- (match_op_dup 0 -- [(and:QISI -- (match_dup 1) -- (match_dup 2)) -- (const_int 0)]) -- (label_ref (match_dup 3)) -- (pc))) -+ (if_then_else (match_op_dup 0 [(and:QISI (match_dup 1) -+ (match_dup 2)) -+ (const_int 0)]) -+ (label_ref (match_dup 3)) -+ (pc))) - (clobber (reg:CC REG_CC))])]) - - (define_insn "*sbrx_and_branch" -@@ -6878,163 +6981,77 @@ - (const_int 2) - (const_int 4))))]) - --;; Convert sign tests to bit 7/15/31 tests that match the above insns. --(define_peephole2 -- [(set (reg:CC REG_CC) (compare:CC (match_operand:QI 0 "register_operand" "") -- (const_int 0))) -- (parallel [(set (pc) (if_then_else (ge (reg:CC REG_CC) (const_int 0)) -- (label_ref (match_operand 1 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))])] -- "" -- [(parallel [(set (pc) (if_then_else (eq (zero_extract:HI (match_dup 0) -- (const_int 1) -- (const_int 7)) -- (const_int 0)) -- (label_ref (match_dup 1)) -- (pc))) -- (clobber (reg:CC REG_CC))])]) - --(define_peephole2 -- [(set (reg:CC REG_CC) (compare:CC (match_operand:QI 0 "register_operand" "") -- (const_int 0))) -- (parallel [(set (pc) (if_then_else (lt (reg:CC REG_CC) (const_int 0)) -- (label_ref (match_operand 1 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))])] -- "" -- [(parallel [(set (pc) (if_then_else (ne (zero_extract:HI (match_dup 0) -- (const_int 1) -- (const_int 7)) -- (const_int 0)) -- (label_ref (match_dup 1)) -- (pc))) -- (clobber (reg:CC REG_CC))])]) -- --(define_peephole2 -- [(parallel [(set (reg:CC REG_CC) (compare:CC (match_operand:HI 0 "register_operand" "") -- (const_int 0))) -- (clobber (match_operand:HI 2 ""))]) -- (parallel [(set (pc) (if_then_else (ge (reg:CC REG_CC) (const_int 0)) -- (label_ref (match_operand 1 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))])] -- "" -- [(parallel [(set (pc) (if_then_else (eq (and:HI (match_dup 0) (const_int -32768)) -- (const_int 0)) -- (label_ref (match_dup 1)) -- (pc))) -- (clobber (reg:CC REG_CC))])]) -- --(define_peephole2 -- [(parallel [(set (reg:CC REG_CC) (compare:CC (match_operand:HI 0 "register_operand" "") -- (const_int 0))) -- (clobber (match_operand:HI 2 ""))]) -- (parallel [(set (pc) (if_then_else (lt (reg:CC REG_CC) (const_int 0)) -- (label_ref (match_operand 1 "" "")) -- (pc))) -+;; Convert sign tests to bit 7 tests that match the above insns. -+(define_peephole2 ; "*sbrx_branch" -+ [(set (reg:CC REG_CC) -+ (compare:CC (match_operand:ALLs1 0 "register_operand") -+ (match_operand:ALLs1 1 "const0_operand"))) -+ (set (pc) -+ (if_then_else (gelt (reg:CC REG_CC) -+ (const_int 0)) -+ (label_ref (match_operand 2)) -+ (pc)))] -+ "peep2_regno_dead_p (2, REG_CC)" -+ [(parallel [(set (pc) -+ (if_then_else ( (zero_extract:HI (match_dup 0) -+ (const_int 1) -+ (match_dup 1)) -+ (const_int 0)) -+ (label_ref (match_dup 2)) -+ (pc))) - (clobber (reg:CC REG_CC))])] -- "" -- [(parallel [(set (pc) (if_then_else (ne (and:HI (match_dup 0) (const_int -32768)) -- (const_int 0)) -- (label_ref (match_dup 1)) -- (pc))) -- (clobber (reg:CC REG_CC))])]) -+ { -+ operands[0] = avr_to_int_mode (operands[0]); -+ operands[1] = GEN_INT (GET_MODE_BITSIZE (mode) - 1); -+ }) - --(define_peephole2 -- [(parallel [(set (reg:CC REG_CC) (compare:CC (match_operand:SI 0 "register_operand" "") -- (const_int 0))) -- (clobber (match_operand:SI 2 ""))]) -- (parallel [(set (pc) (if_then_else (ge (reg:CC REG_CC) (const_int 0)) -- (label_ref (match_operand 1 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))])] -- "" -- [(parallel [(set (pc) (if_then_else (eq (and:SI (match_dup 0) (match_dup 2)) -- (const_int 0)) -- (label_ref (match_dup 1)) -- (pc))) -+;; Convert sign tests to bit 15/23/31 tests that match the above insns. -+(define_peephole2 ; "*sbrx_branch" -+ [(parallel [(set (reg:CC REG_CC) -+ (compare:CC (match_operand:ALLs234 0 "register_operand") -+ (match_operand:ALLs234 1 "const0_operand"))) -+ (clobber (match_operand:QI 3 "scratch_operand"))]) -+ (set (pc) -+ (if_then_else (gelt (reg:CC REG_CC) -+ (const_int 0)) -+ (label_ref (match_operand 2)) -+ (pc)))] -+ "peep2_regno_dead_p (2, REG_CC)" -+ [(parallel [(set (pc) -+ (if_then_else ( (zero_extract:HI (match_dup 0) -+ (const_int 1) -+ (match_dup 1)) -+ (const_int 0)) -+ (label_ref (match_dup 2)) -+ (pc))) - (clobber (reg:CC REG_CC))])] -- "operands[2] = gen_int_mode (-2147483647 - 1, SImode);") -+ { -+ operands[0] = avr_to_int_mode (operands[0]); -+ operands[1] = GEN_INT (GET_MODE_BITSIZE (mode) - 1); -+ }) - --(define_peephole2 -- [(parallel [(set (reg:CC REG_CC) (compare:CC (match_operand:SI 0 "register_operand" "") -- (const_int 0))) -- (clobber (match_operand:SI 2 ""))]) -- (parallel [(set (pc) (if_then_else (lt (reg:CC REG_CC) (const_int 0)) -- (label_ref (match_operand 1 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))])] -- "" -- [(parallel [(set (pc) (if_then_else (ne (and:SI (match_dup 0) (match_dup 2)) -- (const_int 0)) -- (label_ref (match_dup 1)) -- (pc))) -- (clobber (reg:CC REG_CC))])] -- "operands[2] = gen_int_mode (-2147483647 - 1, SImode);") - - ;; ************************************************************************ - ;; Implementation of conditional jumps here. - ;; Compare with 0 (test) jumps - ;; ************************************************************************ - --(define_insn_and_split "branch" -+(define_insn "branch" - [(set (pc) - (if_then_else (match_operator 1 "simple_comparison_operator" -- [(reg:CC REG_CC) -- (const_int 0)]) -- (label_ref (match_operand 0 "" "")) -+ [(reg:CC REG_CC) -+ (const_int 0)]) -+ (label_ref (match_operand 0)) - (pc)))] - "reload_completed" -- "#" -- "&& reload_completed" -- [(parallel [(set (pc) -- (if_then_else (match_op_dup 1 -- [(reg:CC REG_CC) -- (const_int 0)]) -- (label_ref (match_dup 0)) -- (pc))) -- (clobber (reg:CC REG_CC))])]) -- --(define_insn "*branch" -- [(set (pc) -- (if_then_else (match_operator 1 "simple_comparison_operator" -- [(reg:CC REG_CC) -- (const_int 0)]) -- (label_ref (match_operand 0 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))] -- "reload_completed" -- { -- return ret_cond_branch (operands[1], avr_jump_mode (operands[0], insn), 0); -- } -- [(set_attr "type" "branch")]) -- -- --;; Same as above but wrap SET_SRC so that this branch won't be transformed --;; or optimized in the remainder. -- --(define_insn "branch_unspec" -- [(set (pc) -- (unspec [(if_then_else (match_operator 1 "simple_comparison_operator" -- [(reg:CC REG_CC) -- (const_int 0)]) -- (label_ref (match_operand 0 "" "")) -- (pc)) -- ] UNSPEC_IDENTITY)) -- (clobber (reg:CC REG_CC))] -- "reload_completed" - { - return ret_cond_branch (operands[1], avr_jump_mode (operands[0], insn), 0); - } - [(set_attr "type" "branch")]) - --;; **************************************************************** --;; AVR does not have following conditional jumps: LE,LEU,GT,GTU. --;; Convert them all to proper jumps. --;; ****************************************************************/ - --(define_insn_and_split "difficult_branch" -+(define_insn "difficult_branch" - [(set (pc) - (if_then_else (match_operator 1 "difficult_comparison_operator" - [(reg:CC REG_CC) -@@ -7042,95 +7059,11 @@ - (label_ref (match_operand 0 "" "")) - (pc)))] - "reload_completed" -- "#" -- "&& reload_completed" -- [(parallel [(set (pc) -- (if_then_else (match_op_dup 1 -- [(reg:CC REG_CC) -- (const_int 0)]) -- (label_ref (match_dup 0)) -- (pc))) -- (clobber (reg:CC REG_CC))])]) -- --(define_insn "*difficult_branch" -- [(set (pc) -- (if_then_else (match_operator 1 "difficult_comparison_operator" -- [(reg:CC REG_CC) -- (const_int 0)]) -- (label_ref (match_operand 0 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))] -- "reload_completed" - { - return ret_cond_branch (operands[1], avr_jump_mode (operands[0], insn), 0); - } - [(set_attr "type" "branch1")]) - --;; revers branch -- --(define_insn_and_split "rvbranch" -- [(set (pc) -- (if_then_else (match_operator 1 "simple_comparison_operator" -- [(reg:CC REG_CC) -- (const_int 0)]) -- (pc) -- (label_ref (match_operand 0 "" ""))))] -- "reload_completed" -- "#" -- "&& reload_completed" -- [(parallel [(set (pc) -- (if_then_else (match_op_dup 1 -- [(reg:CC REG_CC) -- (const_int 0)]) -- (pc) -- (label_ref (match_dup 0)))) -- (clobber (reg:CC REG_CC))])]) -- --(define_insn "*rvbranch" -- [(set (pc) -- (if_then_else (match_operator 1 "simple_comparison_operator" -- [(reg:CC REG_CC) -- (const_int 0)]) -- (pc) -- (label_ref (match_operand 0 "" "")))) -- (clobber (reg:CC REG_CC))] -- "reload_completed" -- { -- return ret_cond_branch (operands[1], avr_jump_mode (operands[0], insn), 1); -- } -- [(set_attr "type" "branch1")]) -- --(define_insn_and_split "difficult_rvbranch" -- [(set (pc) -- (if_then_else (match_operator 1 "difficult_comparison_operator" -- [(reg:CC REG_CC) -- (const_int 0)]) -- (pc) -- (label_ref (match_operand 0 "" ""))))] -- "reload_completed" -- "#" -- "&& reload_completed" -- [(parallel [(set (pc) -- (if_then_else (match_op_dup 1 -- [(reg:CC REG_CC) -- (const_int 0)]) -- (pc) -- (label_ref (match_dup 0)))) -- (clobber (reg:CC REG_CC))])]) -- --(define_insn "*difficult_rvbranch" -- [(set (pc) -- (if_then_else (match_operator 1 "difficult_comparison_operator" -- [(reg:CC REG_CC) -- (const_int 0)]) -- (pc) -- (label_ref (match_operand 0 "" "")))) -- (clobber (reg:CC REG_CC))] -- "reload_completed" -- { -- return ret_cond_branch (operands[1], avr_jump_mode (operands[0], insn), 1); -- } -- [(set_attr "type" "branch")]) - - ;; ************************************************************************** - ;; Unconditional and other jump instructions. -@@ -7656,15 +7589,14 @@ - (clobber (reg:CC REG_CC))]) - (parallel [(set (reg:CC REG_CC) - (compare:CC (match_dup 0) -- (const_int -1))) -- (clobber (match_operand:QI 1 "d_register_operand" ""))]) -- (parallel [(set (pc) -- (if_then_else (eqne (reg:CC REG_CC) -- (const_int 0)) -- (label_ref (match_operand 2 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))])] -- "" -+ (const_int -1))) -+ (clobber (match_operand:QI 1 "scratch_or_d_register_operand"))]) -+ (set (pc) -+ (if_then_else (eqne (reg:CC REG_CC) -+ (const_int 0)) -+ (label_ref (match_operand 2)) -+ (pc)))] -+ "dead_or_set_regno_p (insn, REG_CC)" - { - const char *op; - int jump_mode; -@@ -7700,15 +7632,14 @@ - (clobber (reg:CC REG_CC))]) - (parallel [(set (reg:CC REG_CC) - (compare:CC (match_dup 0) -- (const_int -1))) -+ (const_int -1))) - (clobber (match_operand:QI 1 "d_register_operand" ""))]) -- (parallel [(set (pc) -- (if_then_else (eqne (reg:CC REG_CC) -- (const_int 0)) -- (label_ref (match_operand 2 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))])] -- "" -+ (set (pc) -+ (if_then_else (eqne (reg:CC REG_CC) -+ (const_int 0)) -+ (label_ref (match_operand 2)) -+ (pc)))] -+ "dead_or_set_regno_p (insn, REG_CC)" - { - const char *op; - int jump_mode; -@@ -7742,15 +7673,14 @@ - (clobber (reg:CC REG_CC))]) - (parallel [(set (reg:CC REG_CC) - (compare:CC (match_dup 0) -- (const_int -1))) -- (clobber (match_operand:QI 1 "d_register_operand" ""))]) -- (parallel [(set (pc) -- (if_then_else (eqne (reg:CC REG_CC) -- (const_int 0)) -- (label_ref (match_operand 2 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))])] -- "" -+ (const_int -1))) -+ (clobber (match_operand:QI 1 "scratch_or_d_register_operand"))]) -+ (set (pc) -+ (if_then_else (eqne (reg:CC REG_CC) -+ (const_int 0)) -+ (label_ref (match_operand 2)) -+ (pc)))] -+ "dead_or_set_regno_p (insn, REG_CC)" - { - const char *op; - int jump_mode; -@@ -7784,15 +7714,14 @@ - (clobber (reg:CC REG_CC))]) - (parallel [(set (reg:CC REG_CC) - (compare:CC (match_dup 0) -- (const_int -1))) -+ (const_int -1))) - (clobber (match_operand:QI 1 "d_register_operand" ""))]) -- (parallel [(set (pc) -- (if_then_else (eqne (reg:CC REG_CC) -- (const_int 0)) -- (label_ref (match_operand 2 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))])] -- "" -+ (set (pc) -+ (if_then_else (eqne (reg:CC REG_CC) -+ (const_int 0)) -+ (label_ref (match_operand 2)) -+ (pc)))] -+ "dead_or_set_regno_p (insn, REG_CC)" - { - const char *op; - int jump_mode; -@@ -7822,14 +7751,13 @@ - (clobber (reg:CC REG_CC))]) - (set (reg:CC REG_CC) - (compare:CC (match_dup 0) -- (const_int -1))) -- (parallel [(set (pc) -- (if_then_else (eqne (reg:CC REG_CC) -- (const_int 0)) -- (label_ref (match_operand 1 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))])] -- "" -+ (const_int -1))) -+ (set (pc) -+ (if_then_else (eqne (reg:CC REG_CC) -+ (const_int 0)) -+ (label_ref (match_operand 1)) -+ (pc)))] -+ "dead_or_set_regno_p (insn, REG_CC)" - { - const char *op; - int jump_mode; -@@ -7855,14 +7783,14 @@ - (define_peephole ; "*cpse.eq" - [(set (reg:CC REG_CC) - (compare:CC (match_operand:ALL1 1 "register_operand" "r,r") -- (match_operand:ALL1 2 "reg_or_0_operand" "r,Y00"))) -- (parallel [(set (pc) -- (if_then_else (eq (reg:CC REG_CC) -- (const_int 0)) -- (label_ref (match_operand 0 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))])] -- "jump_over_one_insn_p (insn, operands[0])" -+ (match_operand:ALL1 2 "reg_or_0_operand" "r,Y00"))) -+ (set (pc) -+ (if_then_else (eq (reg:CC REG_CC) -+ (const_int 0)) -+ (label_ref (match_operand 0)) -+ (pc)))] -+ "jump_over_one_insn_p (insn, operands[0]) -+ && dead_or_set_regno_p (insn, REG_CC)" - "@ - cpse %1,%2 - cpse %1,__zero_reg__") -@@ -7890,16 +7818,16 @@ - - (define_peephole ; "*cpse.ne" - [(set (reg:CC REG_CC) -- (compare:CC (match_operand:ALL1 1 "register_operand" "") -- (match_operand:ALL1 2 "reg_or_0_operand" ""))) -- (parallel [(set (pc) -- (if_then_else (ne (reg:CC REG_CC) -- (const_int 0)) -- (label_ref (match_operand 0 "" "")) -- (pc))) -- (clobber (reg:CC REG_CC))])] -- "!AVR_HAVE_JMP_CALL -- || !TARGET_SKIP_BUG" -+ (compare:CC (match_operand:ALL1 1 "register_operand") -+ (match_operand:ALL1 2 "reg_or_0_operand"))) -+ (set (pc) -+ (if_then_else (ne (reg:CC REG_CC) -+ (const_int 0)) -+ (label_ref (match_operand 0)) -+ (pc)))] -+ "(!AVR_HAVE_JMP_CALL -+ || !TARGET_SKIP_BUG) -+ && dead_or_set_regno_p (insn, REG_CC)" - { - if (operands[2] == CONST0_RTX (mode)) - operands[2] = zero_reg_rtx; -@@ -8094,7 +8022,7 @@ - (const_int 1)] - UNSPECV_DELAY_CYCLES) - (set (match_dup 1) -- (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER)) -+ (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER)) - (clobber (match_dup 2)) - (clobber (reg:CC REG_CC))])]) - -@@ -8126,7 +8054,7 @@ - (const_int 2)] - UNSPECV_DELAY_CYCLES) - (set (match_dup 1) -- (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER)) -+ (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER)) - (clobber (match_dup 2)) - (clobber (reg:CC REG_CC))])] - "" -@@ -8163,7 +8091,7 @@ - (const_int 3)] - UNSPECV_DELAY_CYCLES) - (set (match_dup 1) -- (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER)) -+ (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER)) - (clobber (match_dup 2)) - (clobber (match_dup 3)) - (clobber (match_dup 4)) -@@ -8206,7 +8134,7 @@ - (const_int 4)] - UNSPECV_DELAY_CYCLES) - (set (match_dup 1) -- (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER)) -+ (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER)) - (clobber (match_dup 2)) - (clobber (match_dup 3)) - (clobber (match_dup 4)) -@@ -9095,16 +9023,20 @@ - "bst %3,0\;bld %0,%4" - [(set_attr "length" "2")]) - --;; Move bit $3.0 into bit $0.0. --;; For bit 0, combiner generates slightly different pattern. --(define_insn "*movbitqi.0" -- [(set (match_operand:QI 0 "register_operand" "=r") -- (ior:QI (and:QI (match_operand:QI 1 "register_operand" "0") -- (match_operand:QI 2 "single_zero_operand" "n")) -- (and:QI (match_operand:QI 3 "register_operand" "r") -- (const_int 1))))] -- "0 == exact_log2 (~INTVAL(operands[2]) & GET_MODE_MASK (QImode))" -- "bst %3,0\;bld %0,0" -+;; Move bit $3.x into bit $0.x. -+(define_insn "*movbit.0-6" -+ [(set (match_operand:QISI 0 "register_operand" "=r") -+ (ior:QISI (and:QISI (match_operand:QISI 1 "register_operand" "0") -+ (match_operand:QISI 2 "single_zero_operand" "n")) -+ (and:QISI (match_operand:QISI 3 "register_operand" "r") -+ (match_operand:QISI 4 "single_one_operand" "n"))))] -+ "GET_MODE_MASK(mode) -+ == (GET_MODE_MASK(mode) & (INTVAL(operands[2]) ^ INTVAL(operands[4])))" -+ { -+ auto bitmask = GET_MODE_MASK (mode) & UINTVAL (operands[4]); -+ operands[4] = GEN_INT (exact_log2 (bitmask)); -+ return "bst %T3%T4" CR_TAB "bld %T0%T4"; -+ } - [(set_attr "length" "2")]) - - ;; Move bit $2.0 into bit $0.7. -@@ -9489,6 +9421,258 @@ - (clobber (reg:CC REG_CC))])]) - - -+;; Try optimize decrement-and-branch. When we have an addition followed -+;; by a comparison of the result against zero, we can output the addition -+;; in such a way that SREG.N and SREG.Z are set according to the result. -+ -+;; { -1, +1 } for QImode, otherwise the empty set. -+(define_mode_attr p1m1 [(QI "N P") -+ (HI "Yxx") (PSI "Yxx") (SI "Yxx")]) -+ -+;; FIXME: reload1.cc::do_output_reload() does not support output reloads -+;; for JUMP_INSNs, hence letting combine doing decrement-and-branch like -+;; the following might run into ICE. Doing reloads by hand is too painful... -+; -+; (define_insn_and_split "*add.for.eqne..cbranch" -+; [(set (pc) -+; (if_then_else (eqne (match_operand:QISI 1 "register_operand" "0") -+; (match_operand:QISI 2 "const_int_operand" "n")) -+; (label_ref (match_operand 4)) -+; (pc))) -+; (set (match_operand:QISI 0 "register_operand" "=r") -+; (plus:QISI (match_dup 1) -+; (match_operand:QISI 3 "const_int_operand" "n")))] -+; ;; No clobber for now as combine might not have one handy. -+; ;; We pop a scatch in split1. -+; "!reload_completed -+; && const0_rtx == simplify_binary_operation (PLUS, mode, -+; operands[2], operands[3])" -+; { gcc_unreachable(); } -+; "&& 1" -+; [(parallel [(set (pc) -+; (if_then_else (eqne (match_dup 1) -+; (match_dup 2)) -+; (label_ref (match_dup 4)) -+; (pc))) -+; (set (match_dup 0) -+; (plus:QISI (match_dup 1) -+; (match_dup 3))) -+; (clobber (scratch:QI))])]) -+; -+;; ...Hence, stick with RTL peepholes for now. Unfortunately, there is no -+;; canonical form, and if reload shuffles registers around, we might miss -+;; opportunities to match a decrement-and-branch. -+;; doloop_end doesn't reload either, so doloop_end also won't work. -+ -+(define_expand "gen_add_for__" -+ ; "*add.for.eqne." -+ [(parallel [(set (reg:CC REG_CC) -+ (compare:CC (plus:QISI (match_operand:QISI 0 "register_operand") -+ (match_operand:QISI 1 "const_int_operand")) -+ (const_int 0))) -+ (set (match_dup 0) -+ (plus:QISI (match_dup 0) -+ (match_dup 1))) -+ (clobber (match_operand:QI 3))]) -+ ; "branch" -+ (set (pc) -+ (if_then_else (eqne (reg:CC REG_CC) -+ (const_int 0)) -+ (label_ref (match_dup 2)) -+ (pc)))]) -+ -+ -+;; 1/3: A version without clobber: d-reg or 8-bit adds +/-1. -+(define_peephole2 -+ [(parallel [(set (match_operand:QISI 0 "register_operand") -+ (plus:QISI (match_dup 0) -+ (match_operand:QISI 1 "const_int_operand"))) -+ (clobber (reg:CC REG_CC))]) -+ (set (reg:CC REG_CC) -+ (compare:CC (match_dup 0) -+ (const_int 0))) -+ (set (pc) -+ (if_then_else (eqne (reg:CC REG_CC) -+ (const_int 0)) -+ (label_ref (match_operand 2)) -+ (pc)))] -+ "peep2_regno_dead_p (3, REG_CC) -+ && (d_register_operand (operands[0], mode) -+ || (mode == QImode -+ && (INTVAL (operands[1]) == 1 -+ || INTVAL (operands[1]) == -1)))" -+ [(scratch)] -+ { -+ emit (gen_gen_add_for__ (operands[0], operands[1], operands[2], -+ gen_rtx_SCRATCH (QImode))); -+ DONE; -+ }) -+ -+;; 2/3: A version with clobber from the insn. -+(define_peephole2 -+ [(parallel [(set (match_operand:QISI 0 "register_operand") -+ (plus:QISI (match_dup 0) -+ (match_operand:QISI 1 "const_int_operand"))) -+ (clobber (match_operand:QI 3 "scratch_or_d_register_operand")) -+ (clobber (reg:CC REG_CC))]) -+ (parallel [(set (reg:CC REG_CC) -+ (compare:CC (match_dup 0) -+ (const_int 0))) -+ (clobber (match_operand:QI 4 "scratch_or_d_register_operand"))]) -+ (set (pc) -+ (if_then_else (eqne (reg:CC REG_CC) -+ (const_int 0)) -+ (label_ref (match_operand 2)) -+ (pc)))] -+ "peep2_regno_dead_p (3, REG_CC)" -+ [(scratch)] -+ { -+ rtx scratch = REG_P (operands[3]) ? operands[3] : operands[4]; -+ -+ // We need either a d-register or a scratch register to clobber. -+ if (! REG_P (scratch) -+ && ! d_register_operand (operands[0], mode) -+ && ! (QImode == mode -+ && (INTVAL (operands[1]) == 1 -+ || INTVAL (operands[1]) == -1))) -+ { -+ FAIL; -+ } -+ emit (gen_gen_add_for__ (operands[0], operands[1], operands[2], -+ scratch)); -+ DONE; -+ }) -+ -+;; 3/3 A version with a clobber from peephole2. -+(define_peephole2 -+ [(match_scratch:QI 3 "d") -+ (parallel [(set (match_operand:QISI 0 "register_operand") -+ (plus:QISI (match_dup 0) -+ (match_operand:QISI 1 "const_int_operand"))) -+ (clobber (reg:CC REG_CC))]) -+ (set (reg:CC REG_CC) -+ (compare:CC (match_dup 0) -+ (const_int 0))) -+ (set (pc) -+ (if_then_else (eqne (reg:CC REG_CC) -+ (const_int 0)) -+ (label_ref (match_operand 2)) -+ (pc)))] -+ "peep2_regno_dead_p (3, REG_CC)" -+ [(scratch)] -+ { -+ emit (gen_gen_add_for__ (operands[0], operands[1], operands[2], -+ operands[3])); -+ DONE; -+ }) -+ -+;; Result of the above three peepholes is an addition that also -+;; performs an EQ or NE comparison (of the result) against zero. -+;; FIXME: Using (match_dup 0) instead of operands[3/4] makes rnregs -+;; barf in regrename.cc::merge_overlapping_regs(). For now, use the -+;; fix from PR50788: Constrain as "0". -+(define_insn "*add.for.eqne." -+ [(set (reg:CC REG_CC) -+ (compare:CC -+ (plus:QISI (match_operand:QISI 3 "register_operand" "0,0 ,0") -+ (match_operand:QISI 1 "const_int_operand" "n,,n")) -+ (const_int 0))) -+ (set (match_operand:QISI 0 "register_operand" "=d,*r ,r") -+ (plus:QISI (match_operand:QISI 4 "register_operand" "0,0 ,0") -+ (match_dup 1))) -+ (clobber (match_scratch:QI 2 "=X,X ,&d"))] -+ "reload_completed" -+ { -+ return avr_out_plus_set_ZN (operands, nullptr); -+ } -+ [(set_attr "adjust_len" "add_set_ZN")]) -+ -+ -+;; Swapping both comparison and branch condition. This can turn difficult -+;; branches to easy ones. And in some cases, a comparison against one can -+;; be turned into a comparison against zero. -+ -+(define_peephole2 ; "*swapped_tst" -+ [(parallel [(set (reg:CC REG_CC) -+ (compare:CC (match_operand:ALLs234 1 "register_operand") -+ (match_operand:ALLs234 2 "const_operand"))) -+ (clobber (match_operand:QI 3 "scratch_operand"))]) -+ (set (pc) -+ (if_then_else (match_operator 0 "ordered_comparison_operator" -+ [(reg:CC REG_CC) -+ (const_int 0)]) -+ (label_ref (match_operand 4)) -+ (pc)))] -+ "peep2_regno_dead_p (2, REG_CC)" -+ [(set (reg:CC REG_CC) -+ (compare:CC (match_dup 2) -+ (match_dup 1))) -+ ; "branch" -+ (set (pc) -+ (if_then_else (match_op_dup 0 [(reg:CC REG_CC) -+ (const_int 0)]) -+ (label_ref (match_dup 4)) -+ (pc)))] -+ { -+ rtx xval = avr_to_int_mode (operands[2]); -+ enum rtx_code code = GET_CODE (operands[0]); -+ -+ if (code == GT && xval == const0_rtx) -+ code = LT; -+ else if (code == GE && xval == const1_rtx) -+ code = LT; -+ else if (code == LE && xval == const0_rtx) -+ code = GE; -+ else if (code == LT && xval == const1_rtx) -+ code = GE; -+ else -+ FAIL; -+ -+ operands[2] = CONST0_RTX (mode); -+ PUT_CODE (operands[0], code); -+ }) -+ -+;; Same, but for 8-bit modes which have no scratch reg. -+(define_peephole2 ; "*swapped_tst" -+ [(set (reg:CC REG_CC) -+ (compare:CC (match_operand:ALLs1 1 "register_operand") -+ (match_operand:ALLs1 2 "const_operand"))) -+ (set (pc) -+ (if_then_else (match_operator 0 "ordered_comparison_operator" -+ [(reg:CC REG_CC) -+ (const_int 0)]) -+ (label_ref (match_operand 4)) -+ (pc)))] -+ "peep2_regno_dead_p (2, REG_CC)" -+ [(set (reg:CC REG_CC) -+ (compare:CC (match_dup 2) -+ (match_dup 1))) -+ ; "branch" -+ (set (pc) -+ (if_then_else (match_op_dup 0 [(reg:CC REG_CC) -+ (const_int 0)]) -+ (label_ref (match_dup 4)) -+ (pc)))] -+ { -+ rtx xval = avr_to_int_mode (operands[2]); -+ enum rtx_code code = GET_CODE (operands[0]); -+ -+ if (code == GT && xval == const0_rtx) -+ code = LT; -+ else if (code == GE && xval == const1_rtx) -+ code = LT; -+ else if (code == LE && xval == const0_rtx) -+ code = GE; -+ else if (code == LT && xval == const1_rtx) -+ code = GE; -+ else -+ FAIL; -+ -+ operands[2] = CONST0_RTX (mode); -+ PUT_CODE (operands[0], code); -+ }) -+ -+ - (define_expand "extzv" - [(set (match_operand:QI 0 "register_operand" "") - (zero_extract:QI (match_operand:QI 1 "register_operand" "") -diff --git a/gcc/config/avr/constraints.md b/gcc/config/avr/constraints.md -index 57397d1469b..3ce2108d6ce 100644 ---- a/gcc/config/avr/constraints.md -+++ b/gcc/config/avr/constraints.md -@@ -245,6 +245,11 @@ - (match_test "INTVAL (avr_to_int_mode (op)) == -2")) - (match_test "satisfies_constraint_Cm2 (op)"))) - -+;; Constraint that's the empty set. Useful with mode and code iterators. -+(define_constraint "Yxx" -+ "A constraints that is always false" -+ (match_test "false")) -+ - (define_constraint "Yx2" - "Fixed-point or integer constant not in the range @minus{}2 @dots{} 2" - (and (ior (match_code "const_int") -diff --git a/gcc/config/avr/predicates.md b/gcc/config/avr/predicates.md -index c7f417d405c..1d63f7ee67c 100644 ---- a/gcc/config/avr/predicates.md -+++ b/gcc/config/avr/predicates.md -@@ -27,6 +27,11 @@ - (and (match_code "reg") - (match_test "REGNO (op) >= 16 && REGNO (op) <= 31"))) - -+(define_predicate "scratch_or_d_register_operand" -+ (ior (match_operand 0 "d_register_operand") -+ (and (match_code ("scratch")) -+ (match_operand 0 "scratch_operand")))) -+ - (define_predicate "even_register_operand" - (and (match_code "reg") - (and (match_test "REGNO (op) <= 31") -diff --git a/gcc/config/i386/cygwin.h b/gcc/config/i386/cygwin.h -index d06eda369cf..5412c5d4479 100644 ---- a/gcc/config/i386/cygwin.h -+++ b/gcc/config/i386/cygwin.h -@@ -57,7 +57,7 @@ along with GCC; see the file COPYING3. If not see - - #undef ENDFILE_SPEC - #define ENDFILE_SPEC \ -- "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}\ -+ "%{mdaz-ftz:crtfastmath.o%s;Ofast|ffast-math|funsafe-math-optimizations:%{!mno-daz-ftz:crtfastmath.o%s}} \ - %{!shared:%:if-exists(default-manifest.o%s)}\ - %{fvtable-verify=none:%s; \ - fvtable-verify=preinit:vtv_end.o%s; \ -diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h -index a55f6b2b874..2f773924d6e 100644 ---- a/gcc/config/i386/darwin.h -+++ b/gcc/config/i386/darwin.h -@@ -109,8 +109,8 @@ along with GCC; see the file COPYING3. If not see - "%{!force_cpusubtype_ALL:-force_cpusubtype_ALL} " - - #undef ENDFILE_SPEC --#define ENDFILE_SPEC \ -- "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ -+#define ENDFILE_SPEC -+\ "%{mdaz-ftz:crtfastmath.o%s;Ofast|ffast-math|funsafe-math-optimizations:%{!mno-daz-ftz:crtfastmath.o%s}} \ - %{mpc32:crtprec32.o%s} \ - %{mpc64:crtprec64.o%s} \ - %{mpc80:crtprec80.o%s}" TM_DESTRUCTOR -diff --git a/gcc/config/i386/gnu-user-common.h b/gcc/config/i386/gnu-user-common.h -index 23b54c5be52..3d2a33f1714 100644 ---- a/gcc/config/i386/gnu-user-common.h -+++ b/gcc/config/i386/gnu-user-common.h -@@ -47,7 +47,7 @@ along with GCC; see the file COPYING3. If not see - - /* Similar to standard GNU userspace, but adding -ffast-math support. */ - #define GNU_USER_TARGET_MATHFILE_SPEC \ -- "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ -+ "%{mdaz-ftz:crtfastmath.o%s;Ofast|ffast-math|funsafe-math-optimizations:%{!mno-daz-ftz:crtfastmath.o%s}} \ - %{mpc32:crtprec32.o%s} \ - %{mpc64:crtprec64.o%s} \ - %{mpc80:crtprec80.o%s}" -diff --git a/gcc/config/i386/i386-builtins.cc b/gcc/config/i386/i386-builtins.cc -index 050c6228a18..8ed32e14f0a 100644 ---- a/gcc/config/i386/i386-builtins.cc -+++ b/gcc/config/i386/i386-builtins.cc -@@ -1790,7 +1790,7 @@ ix86_vectorize_builtin_gather (const_tree mem_vectype, - ? !TARGET_USE_GATHER_2PARTS - : (known_eq (TYPE_VECTOR_SUBPARTS (mem_vectype), 4u) - ? !TARGET_USE_GATHER_4PARTS -- : !TARGET_USE_GATHER))) -+ : !TARGET_USE_GATHER_8PARTS))) - return NULL_TREE; - - if ((TREE_CODE (index_type) != INTEGER_TYPE -diff --git a/gcc/config/i386/i386-features.cc b/gcc/config/i386/i386-features.cc -index 6fe41c3c24f..6a2444eb6b6 100644 ---- a/gcc/config/i386/i386-features.cc -+++ b/gcc/config/i386/i386-features.cc -@@ -1875,8 +1875,7 @@ public: - /* opt_pass methods: */ - virtual bool gate (function *) - { -- return TARGET_AVX && TARGET_VZEROUPPER -- && flag_expensive_optimizations && !optimize_size; -+ return TARGET_AVX && TARGET_VZEROUPPER; - } - - virtual unsigned int execute (function *) -diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc -index 099cec4b610..318f6c61455 100644 ---- a/gcc/config/i386/i386-options.cc -+++ b/gcc/config/i386/i386-options.cc -@@ -137,6 +137,11 @@ along with GCC; see the file COPYING3. If not see - #define m_GOLDMONT_PLUS (HOST_WIDE_INT_1U<x_ix86_tune_string - = ggc_strdup (option_strings[IX86_FUNCTION_SPECIFIC_TUNE]); -- else if (orig_tune_defaulted) -+ /* If we have explicit arch string and no tune string specified, set -+ tune_string to NULL and later it will be overriden by arch_string -+ so target clones can get proper optimization. */ -+ else if (option_strings[IX86_FUNCTION_SPECIFIC_ARCH] -+ || orig_tune_defaulted) - opts->x_ix86_tune_string = NULL; - - /* If fpmath= is not set, and we now have sse2 on 32-bit, use it. */ -@@ -1696,20 +1705,46 @@ parse_mtune_ctrl_str (struct gcc_options *opts, bool dump) - curr_feature_string++; - clear = true; - } -- for (i = 0; i < X86_TUNE_LAST; i++) -- { -- if (!strcmp (curr_feature_string, ix86_tune_feature_names[i])) -- { -- ix86_tune_features[i] = !clear; -- if (dump) -- fprintf (stderr, "Explicitly %s feature %s\n", -- clear ? "clear" : "set", ix86_tune_feature_names[i]); -- break; -- } -- } -- if (i == X86_TUNE_LAST) -- error ("unknown parameter to option %<-mtune-ctrl%>: %s", -- clear ? curr_feature_string - 1 : curr_feature_string); -+ -+ if (!strcmp (curr_feature_string, "use_gather")) -+ { -+ ix86_tune_features[X86_TUNE_USE_GATHER_2PARTS] = !clear; -+ ix86_tune_features[X86_TUNE_USE_GATHER_4PARTS] = !clear; -+ ix86_tune_features[X86_TUNE_USE_GATHER_8PARTS] = !clear; -+ if (dump) -+ fprintf (stderr, "Explicitly %s features use_gather_2parts," -+ " use_gather_4parts, use_gather_8parts\n", -+ clear ? "clear" : "set"); -+ -+ } -+ else if (!strcmp (curr_feature_string, "use_scatter")) -+ { -+ ix86_tune_features[X86_TUNE_USE_SCATTER_2PARTS] = !clear; -+ ix86_tune_features[X86_TUNE_USE_SCATTER_4PARTS] = !clear; -+ ix86_tune_features[X86_TUNE_USE_SCATTER_8PARTS] = !clear; -+ if (dump) -+ fprintf (stderr, "Explicitly %s features use_scatter_2parts," -+ " use_scatter_4parts, use_scatter_8parts\n", -+ clear ? "clear" : "set"); -+ } -+ else -+ { -+ for (i = 0; i < X86_TUNE_LAST; i++) -+ { -+ if (!strcmp (curr_feature_string, ix86_tune_feature_names[i])) -+ { -+ ix86_tune_features[i] = !clear; -+ if (dump) -+ fprintf (stderr, "Explicitly %s feature %s\n", -+ clear ? "clear" : "set", ix86_tune_feature_names[i]); -+ break; -+ } -+ } -+ -+ if (i == X86_TUNE_LAST) -+ error ("unknown parameter to option %<-mtune-ctrl%>: %s", -+ clear ? curr_feature_string - 1 : curr_feature_string); -+ } - curr_feature_string = next_feature_string; - } - while (curr_feature_string); -@@ -2676,7 +2711,9 @@ ix86_option_override_internal (bool main_args_p, - sorry ("%<-mcall-ms2sysv-xlogues%> isn%'t currently supported with SEH"); - - if (!(opts_set->x_target_flags & MASK_VZEROUPPER) -- && TARGET_EMIT_VZEROUPPER) -+ && TARGET_EMIT_VZEROUPPER -+ && flag_expensive_optimizations -+ && !optimize_size) - opts->x_target_flags |= MASK_VZEROUPPER; - if (!(opts_set->x_target_flags & MASK_STV)) - opts->x_target_flags |= MASK_STV; -diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc -index 9a9ff3b34b8..6b6142f4aa0 100644 ---- a/gcc/config/i386/i386.cc -+++ b/gcc/config/i386/i386.cc -@@ -8268,10 +8268,11 @@ ix86_elim_entry_set_got (rtx reg) - rtx pat = PATTERN (c_insn); - if (GET_CODE (pat) == PARALLEL) - { -- rtx vec = XVECEXP (pat, 0, 0); -- if (GET_CODE (vec) == SET -- && XINT (XEXP (vec, 1), 1) == UNSPEC_SET_GOT -- && REGNO (XEXP (vec, 0)) == REGNO (reg)) -+ rtx set = XVECEXP (pat, 0, 0); -+ if (GET_CODE (set) == SET -+ && GET_CODE (SET_SRC (set)) == UNSPEC -+ && XINT (SET_SRC (set), 1) == UNSPEC_SET_GOT -+ && REGNO (SET_DEST (set)) == REGNO (reg)) - delete_insn (c_insn); - } - } -@@ -12238,8 +12239,8 @@ output_pic_addr_const (FILE *file, rtx x, int code) - assemble_name (asm_out_file, buf); - break; - -- case CONST_INT: -- fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x)); -+ CASE_CONST_SCALAR_INT: -+ output_addr_const (file, x); - break; - - case CONST: -@@ -14416,8 +14417,12 @@ ix86_avx_u128_mode_needed (rtx_insn *insn) - modes wider than 256 bits. It's only safe to issue a - vzeroupper if all SSE registers are clobbered. */ - const function_abi &abi = insn_callee_abi (insn); -- if (!hard_reg_set_subset_p (reg_class_contents[SSE_REGS], -- abi.mode_clobbers (V4DImode))) -+ /* Should be safe to issue an vzeroupper before sibling_call_p. -+ Also there not mode_exit for sibling_call, so there could be -+ missing vzeroupper for that. */ -+ if (!(SIBLING_CALL_P (insn) -+ || hard_reg_set_subset_p (reg_class_contents[SSE_REGS], -+ abi.mode_clobbers (V4DImode)))) - return AVX_U128_ANY; - - return AVX_U128_CLEAN; -@@ -14555,7 +14560,19 @@ ix86_avx_u128_mode_after (int mode, rtx_insn *insn) - bool avx_upper_reg_found = false; - note_stores (insn, ix86_check_avx_upper_stores, &avx_upper_reg_found); - -- return avx_upper_reg_found ? AVX_U128_DIRTY : AVX_U128_CLEAN; -+ if (avx_upper_reg_found) -+ return AVX_U128_DIRTY; -+ -+ /* If the function desn't clobber any sse registers or only clobber -+ 128-bit part, Then vzeroupper isn't issued before the function exit. -+ the status not CLEAN but ANY after the function. */ -+ const function_abi &abi = insn_callee_abi (insn); -+ if (!(SIBLING_CALL_P (insn) -+ || hard_reg_set_subset_p (reg_class_contents[SSE_REGS], -+ abi.mode_clobbers (V4DImode)))) -+ return AVX_U128_ANY; -+ -+ return AVX_U128_CLEAN; - } - - /* Otherwise, return current mode. Remember that if insn -@@ -18396,8 +18413,10 @@ ix86_gimple_fold_builtin (gimple_stmt_iterator *gsi) - tree itype = GET_MODE_INNER (TYPE_MODE (type)) == E_SFmode - ? intSI_type_node : intDI_type_node; - type = get_same_sized_vectype (itype, type); -- arg2 = gimple_build (&stmts, VIEW_CONVERT_EXPR, type, arg2); - } -+ else -+ type = signed_type_for (type); -+ arg2 = gimple_build (&stmts, VIEW_CONVERT_EXPR, type, arg2); - tree zero_vec = build_zero_cst (type); - tree cmp_type = truth_type_for (type); - tree cmp = gimple_build (&stmts, LT_EXPR, cmp_type, arg2, zero_vec); -@@ -18935,7 +18954,7 @@ ix86_vectorize_builtin_scatter (const_tree vectype, - ? !TARGET_USE_SCATTER_2PARTS - : (known_eq (TYPE_VECTOR_SUBPARTS (vectype), 4u) - ? !TARGET_USE_SCATTER_4PARTS -- : !TARGET_USE_SCATTER)) -+ : !TARGET_USE_SCATTER_8PARTS)) - return NULL_TREE; - - if ((TREE_CODE (index_type) != INTEGER_TYPE -diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h -index fce0b3564a8..5cea7157a1c 100644 ---- a/gcc/config/i386/i386.h -+++ b/gcc/config/i386/i386.h -@@ -398,10 +398,10 @@ extern unsigned char ix86_tune_features[X86_TUNE_LAST]; - ix86_tune_features[X86_TUNE_USE_GATHER_4PARTS] - #define TARGET_USE_SCATTER_4PARTS \ - ix86_tune_features[X86_TUNE_USE_SCATTER_4PARTS] --#define TARGET_USE_GATHER \ -- ix86_tune_features[X86_TUNE_USE_GATHER] --#define TARGET_USE_SCATTER \ -- ix86_tune_features[X86_TUNE_USE_SCATTER] -+#define TARGET_USE_GATHER_8PARTS \ -+ ix86_tune_features[X86_TUNE_USE_GATHER_8PARTS] -+#define TARGET_USE_SCATTER_8PARTS \ -+ ix86_tune_features[X86_TUNE_USE_SCATTER_8PARTS] - #define TARGET_FUSE_CMP_AND_BRANCH_32 \ - ix86_tune_features[X86_TUNE_FUSE_CMP_AND_BRANCH_32] - #define TARGET_FUSE_CMP_AND_BRANCH_64 \ -diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md -index be07be10d8a..a3fea6ba41e 100644 ---- a/gcc/config/i386/i386.md -+++ b/gcc/config/i386/i386.md -@@ -2398,7 +2398,10 @@ - (clobber (reg:CC FLAGS_REG))])] - { - int shift = ctz_hwi (UINTVAL (operands[1])); -- operands[1] = gen_int_mode (UINTVAL (operands[1]) >> shift, DImode); -+ rtx op1 = gen_int_mode (UINTVAL (operands[1]) >> shift, DImode); -+ if (ix86_endbr_immediate_operand (op1, VOIDmode)) -+ FAIL; -+ operands[1] = op1; - operands[2] = gen_int_mode (shift, QImode); - }) - -@@ -3582,9 +3585,9 @@ - ;; Possible store forwarding (partial memory) stall in alternatives 4, 6 and 7. - (define_insn "*movdf_internal" - [(set (match_operand:DF 0 "nonimmediate_operand" -- "=Yf*f,m ,Yf*f,?r ,!o,?*r ,!o,!o,?r,?m,?r,?r,v,v,v,m,*x,*x,*x,m ,r ,v,r ,o ,r ,m") -+ "=Yf*f,m ,Yf*f,?r ,!o,?*r ,!o,!o,?r,?m,?r,?r,v,v,v,m,*x,*x,*x,m ,?r,?v,r ,o ,r ,m") - (match_operand:DF 1 "general_operand" -- "Yf*fm,Yf*f,G ,roF,r ,*roF,*r,F ,rm,rC,C ,F ,C,v,m,v,C ,*x,m ,*x,v,r ,roF,rF,rmF,rC"))] -+ "Yf*fm,Yf*f,G ,roF,r ,*roF,*r,F ,rm,rC,C ,F ,C,v,m,v,C ,*x,m ,*x, v, r,roF,rF,rmF,rC"))] - "!(MEM_P (operands[0]) && MEM_P (operands[1])) - && (lra_in_progress || reload_completed - || !CONST_DOUBLE_P (operands[1]) -@@ -14160,7 +14163,8 @@ - (const_int 1) - (and:SI - (match_operand:SI 2 "register_operand") -- (match_operand 3 "const_int_operand")))]) -+ (match_operand 3 "const_int_operand"))) -+ (const_int 0)]) - (label_ref (match_operand 4)) - (pc))) - (clobber (reg:CC FLAGS_REG))] -@@ -17066,8 +17070,10 @@ - "! TARGET_POPCNT" - { - rtx scratch = gen_reg_rtx (QImode); -+ rtx tmp = gen_reg_rtx (HImode); - -- emit_insn (gen_parityhi2_cmp (operands[1])); -+ emit_move_insn (tmp, operands[1]); -+ emit_insn (gen_parityhi2_cmp (tmp)); - - ix86_expand_setcc (scratch, ORDERED, - gen_rtx_REG (CCmode, FLAGS_REG), const0_rtx); -diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt -index a3675e515bc..ed31cab0a46 100644 ---- a/gcc/config/i386/i386.opt -+++ b/gcc/config/i386/i386.opt -@@ -420,6 +420,10 @@ mpc80 - Target RejectNegative - Set 80387 floating-point precision to 80-bit. - -+mdaz-ftz -+Target -+Set the FTZ and DAZ Flags. -+ - mpreferred-stack-boundary= - Target RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg) - Attempt to keep stack aligned to this power of 2. -@@ -1214,3 +1218,11 @@ Do not use GOT to access external symbols. - -param=x86-stlf-window-ninsns= - Target Joined UInteger Var(x86_stlf_window_ninsns) Init(64) Param - Instructions number above which STFL stall penalty can be compensated. -+ -+mgather -+Target Alias(mtune-ctrl=, use_gather, ^use_gather) -+Enable vectorization for gather instruction. -+ -+mscatter -+Target Alias(mtune-ctrl=, use_scatter, ^use_scatter) -+Enable vectorization for scatter instruction. -diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h -index d3ca0cd0279..ddbe6a4054b 100644 ---- a/gcc/config/i386/mingw32.h -+++ b/gcc/config/i386/mingw32.h -@@ -197,7 +197,7 @@ along with GCC; see the file COPYING3. If not see - - #undef ENDFILE_SPEC - #define ENDFILE_SPEC \ -- "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ -+ "%{mdaz-ftz:crtfastmath.o%s;Ofast|ffast-math|funsafe-math-optimizations:%{!mno-daz-ftz:crtfastmath.o%s}} \ - %{!shared:%:if-exists(default-manifest.o%s)}\ - %{fvtable-verify=none:%s; \ - fvtable-verify=preinit:vtv_end.o%s; \ -diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md -index 197f19e4b1a..2ca01c144d5 100644 ---- a/gcc/config/i386/mmx.md -+++ b/gcc/config/i386/mmx.md -@@ -1211,7 +1211,10 @@ - (match_operand:V2SF 1 "register_operand") 0) - (match_dup 2)))] - "TARGET_MMX_WITH_SSE" -- "operands[2] = GEN_INT (GET_MODE_UNIT_BITSIZE (V2SFmode)-1);") -+{ -+ operands[1] = force_reg (V2SFmode, operands[1]); -+ operands[2] = GEN_INT (GET_MODE_UNIT_BITSIZE (V2SFmode)-1); -+}) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; -diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md -index eb767e56ca4..924effce2b5 100644 ---- a/gcc/config/i386/sse.md -+++ b/gcc/config/i386/sse.md -@@ -1411,12 +1411,12 @@ - }) - - (define_insn "*_load_mask" -- [(set (match_operand:VI12_AVX512VL 0 "register_operand" "=v") -- (vec_merge:VI12_AVX512VL -- (unspec:VI12_AVX512VL -- [(match_operand:VI12_AVX512VL 1 "memory_operand" "m")] -+ [(set (match_operand:VI12HF_AVX512VL 0 "register_operand" "=v") -+ (vec_merge:VI12HF_AVX512VL -+ (unspec:VI12HF_AVX512VL -+ [(match_operand:VI12HF_AVX512VL 1 "memory_operand" "m")] - UNSPEC_MASKLOAD) -- (match_operand:VI12_AVX512VL 2 "nonimm_or_0_operand" "0C") -+ (match_operand:VI12HF_AVX512VL 2 "nonimm_or_0_operand" "0C") - (match_operand: 3 "register_operand" "Yk")))] - "TARGET_AVX512BW" - "vmovdqu\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}" -@@ -1425,9 +1425,9 @@ - (set_attr "mode" "")]) - - (define_insn_and_split "*_load" -- [(set (match_operand:VI12_AVX512VL 0 "register_operand" "=v") -- (unspec:VI12_AVX512VL -- [(match_operand:VI12_AVX512VL 1 "memory_operand" "m")] -+ [(set (match_operand:VI12HF_AVX512VL 0 "register_operand" "=v") -+ (unspec:VI12HF_AVX512VL -+ [(match_operand:VI12HF_AVX512VL 1 "memory_operand" "m")] - UNSPEC_MASKLOAD))] - "TARGET_AVX512BW" - "#" -@@ -1554,7 +1554,7 @@ - (set_attr "prefix" "evex") - (set_attr "mode" "")]) - --(define_insn "_store_mask" -+(define_insn "*_store_mask" - [(set (match_operand:V48_AVX512VL 0 "memory_operand" "=m") - (vec_merge:V48_AVX512VL - (match_operand:V48_AVX512VL 1 "register_operand" "v") -@@ -1582,7 +1582,7 @@ - (set_attr "memory" "store") - (set_attr "mode" "")]) - --(define_insn "_store_mask" -+(define_insn "*_store_mask" - [(set (match_operand:VI12HF_AVX512VL 0 "memory_operand" "=m") - (vec_merge:VI12HF_AVX512VL - (match_operand:VI12HF_AVX512VL 1 "register_operand" "v") -@@ -4848,7 +4848,10 @@ - (match_operand:VF1_AVX2 1 "register_operand") 0) - (match_dup 2)))] - "TARGET_SSE2" -- "operands[2] = GEN_INT (GET_MODE_UNIT_BITSIZE (mode)-1);") -+{ -+ operands[1] = force_reg (mode, operands[1]); -+ operands[2] = GEN_INT (GET_MODE_UNIT_BITSIZE (mode)-1); -+}) - - ;; Also define scalar versions. These are used for abs, neg, and - ;; conditional move. Using subregs into vector modes causes register -@@ -6318,6 +6321,14 @@ - [(UNSPEC_COMPLEX_FMA_PAIR "fmaddc") - (UNSPEC_COMPLEX_FCMA_PAIR "fcmaddc")]) - -+(define_int_attr int_comm -+ [(UNSPEC_COMPLEX_FMA "") -+ (UNSPEC_COMPLEX_FMA_PAIR "") -+ (UNSPEC_COMPLEX_FCMA "") -+ (UNSPEC_COMPLEX_FCMA_PAIR "") -+ (UNSPEC_COMPLEX_FMUL "%") -+ (UNSPEC_COMPLEX_FCMUL "")]) -+ - (define_int_attr conj_op - [(UNSPEC_COMPLEX_FMA "") - (UNSPEC_COMPLEX_FCMA "_conj") -@@ -6431,7 +6442,7 @@ - (define_insn "fma__" - [(set (match_operand:VF_AVX512FP16VL 0 "register_operand" "=&v") - (unspec:VF_AVX512FP16VL -- [(match_operand:VF_AVX512FP16VL 1 "" "%v") -+ [(match_operand:VF_AVX512FP16VL 1 "" "v") - (match_operand:VF_AVX512FP16VL 2 "" "") - (match_operand:VF_AVX512FP16VL 3 "" "0")] - UNSPEC_COMPLEX_F_C_MA))] -@@ -6495,7 +6506,7 @@ - (define_insn "fma___pair" - [(set (match_operand:VF1_AVX512VL 0 "register_operand" "=&v") - (unspec:VF1_AVX512VL -- [(match_operand:VF1_AVX512VL 1 "vector_operand" "%v") -+ [(match_operand:VF1_AVX512VL 1 "vector_operand" "v") - (match_operand:VF1_AVX512VL 2 "bcst_vector_operand" "vmBr") - (match_operand:VF1_AVX512VL 3 "vector_operand" "0")] - UNSPEC_COMPLEX_F_C_MA_PAIR))] -@@ -6562,7 +6573,7 @@ - [(set (match_operand:VF_AVX512FP16VL 0 "register_operand" "=&v") - (vec_merge:VF_AVX512FP16VL - (unspec:VF_AVX512FP16VL -- [(match_operand:VF_AVX512FP16VL 1 "nonimmediate_operand" "%v") -+ [(match_operand:VF_AVX512FP16VL 1 "nonimmediate_operand" "v") - (match_operand:VF_AVX512FP16VL 2 "nonimmediate_operand" "") - (match_operand:VF_AVX512FP16VL 3 "register_operand" "0")] - UNSPEC_COMPLEX_F_C_MA) -@@ -6586,7 +6597,7 @@ - (define_insn "__" - [(set (match_operand:VF_AVX512FP16VL 0 "register_operand" "=&v") - (unspec:VF_AVX512FP16VL -- [(match_operand:VF_AVX512FP16VL 1 "nonimmediate_operand" "%v") -+ [(match_operand:VF_AVX512FP16VL 1 "nonimmediate_operand" "v") - (match_operand:VF_AVX512FP16VL 2 "nonimmediate_operand" "")] - UNSPEC_COMPLEX_F_C_MUL))] - "TARGET_AVX512FP16 && " -@@ -16350,7 +16361,7 @@ - (match_dup 4))] - UNSPEC_BLENDV))] - { -- if (INTVAL (operands[5]) == 1) -+ if (INTVAL (operands[5]) == 5) - std::swap (operands[1], operands[2]); - operands[3] = gen_lowpart (mode, operands[3]); - }) -@@ -16380,7 +16391,7 @@ - (match_dup 4))] - UNSPEC_BLENDV))] - { -- if (INTVAL (operands[5]) == 1) -+ if (INTVAL (operands[5]) == 5) - std::swap (operands[1], operands[2]); - }) - -@@ -25973,17 +25984,21 @@ - "TARGET_AVX") - - (define_expand "maskload" -- [(set (match_operand:V48H_AVX512VL 0 "register_operand") -- (vec_merge:V48H_AVX512VL -- (match_operand:V48H_AVX512VL 1 "memory_operand") -+ [(set (match_operand:V48_AVX512VL 0 "register_operand") -+ (vec_merge:V48_AVX512VL -+ (unspec:V48_AVX512VL -+ [(match_operand:V48_AVX512VL 1 "memory_operand")] -+ UNSPEC_MASKLOAD) - (match_dup 0) - (match_operand: 2 "register_operand")))] - "TARGET_AVX512F") - - (define_expand "maskload" -- [(set (match_operand:VI12_AVX512VL 0 "register_operand") -- (vec_merge:VI12_AVX512VL -- (match_operand:VI12_AVX512VL 1 "memory_operand") -+ [(set (match_operand:VI12HF_AVX512VL 0 "register_operand") -+ (vec_merge:VI12HF_AVX512VL -+ (unspec:VI12HF_AVX512VL -+ [(match_operand:VI12HF_AVX512VL 1 "memory_operand")] -+ UNSPEC_MASKLOAD) - (match_dup 0) - (match_operand: 2 "register_operand")))] - "TARGET_AVX512BW") -@@ -25998,21 +26013,66 @@ - "TARGET_AVX") - - (define_expand "maskstore" -- [(set (match_operand:V48H_AVX512VL 0 "memory_operand") -- (vec_merge:V48H_AVX512VL -- (match_operand:V48H_AVX512VL 1 "register_operand") -- (match_dup 0) -- (match_operand: 2 "register_operand")))] -+ [(set (match_operand:V48_AVX512VL 0 "memory_operand") -+ (unspec:V48_AVX512VL -+ [(match_operand:V48_AVX512VL 1 "register_operand") -+ (match_dup 0) -+ (match_operand: 2 "register_operand")] -+ UNSPEC_MASKMOV))] - "TARGET_AVX512F") - - (define_expand "maskstore" -- [(set (match_operand:VI12_AVX512VL 0 "memory_operand") -- (vec_merge:VI12_AVX512VL -- (match_operand:VI12_AVX512VL 1 "register_operand") -- (match_dup 0) -- (match_operand: 2 "register_operand")))] -+ [(set (match_operand:VI12HF_AVX512VL 0 "memory_operand") -+ (unspec:VI12HF_AVX512VL -+ [(match_operand:VI12HF_AVX512VL 1 "register_operand") -+ (match_dup 0) -+ (match_operand: 2 "register_operand")] -+ UNSPEC_MASKMOV))] - "TARGET_AVX512BW") - -+(define_insn "_store_mask" -+ [(set (match_operand:V48_AVX512VL 0 "memory_operand" "=m") -+ (unspec:V48_AVX512VL -+ [(match_operand:V48_AVX512VL 1 "register_operand" "v") -+ (match_dup 0) -+ (match_operand: 2 "register_operand" "Yk")] -+ UNSPEC_MASKMOV))] -+ "TARGET_AVX512F" -+{ -+ if (FLOAT_MODE_P (GET_MODE_INNER (mode))) -+ { -+ if (misaligned_operand (operands[0], mode)) -+ return "vmovu\t{%1, %0%{%2%}|%0%{%2%}, %1}"; -+ else -+ return "vmova\t{%1, %0%{%2%}|%0%{%2%}, %1}"; -+ } -+ else -+ { -+ if (misaligned_operand (operands[0], mode)) -+ return "vmovdqu\t{%1, %0%{%2%}|%0%{%2%}, %1}"; -+ else -+ return "vmovdqa\t{%1, %0%{%2%}|%0%{%2%}, %1}"; -+ } -+} -+ [(set_attr "type" "ssemov") -+ (set_attr "prefix" "evex") -+ (set_attr "memory" "store") -+ (set_attr "mode" "")]) -+ -+(define_insn "_store_mask" -+ [(set (match_operand:VI12HF_AVX512VL 0 "memory_operand" "=m") -+ (unspec:VI12HF_AVX512VL -+ [(match_operand:VI12HF_AVX512VL 1 "register_operand" "v") -+ (match_dup 0) -+ (match_operand: 2 "register_operand" "Yk")] -+ UNSPEC_MASKMOV))] -+ "TARGET_AVX512BW" -+ "vmovdqu\t{%1, %0%{%2%}|%0%{%2%}, %1}" -+ [(set_attr "type" "ssemov") -+ (set_attr "prefix" "evex") -+ (set_attr "memory" "store") -+ (set_attr "mode" "")]) -+ - (define_expand "cbranch4" - [(set (reg:CC FLAGS_REG) - (compare:CC (match_operand:VI48_AVX 1 "register_operand") -diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def -index e6b9e21250f..bdb455d20ba 100644 ---- a/gcc/config/i386/x86-tune.def -+++ b/gcc/config/i386/x86-tune.def -@@ -467,7 +467,8 @@ DEF_TUNE (X86_TUNE_AVOID_4BYTE_PREFIXES, "avoid_4byte_prefixes", - /* X86_TUNE_USE_GATHER_2PARTS: Use gather instructions for vectors with 2 - elements. */ - DEF_TUNE (X86_TUNE_USE_GATHER_2PARTS, "use_gather_2parts", -- ~(m_ZNVER1 | m_ZNVER2 | m_ZNVER3 | m_ZNVER4 | m_ALDERLAKE | m_GENERIC)) -+ ~(m_ZNVER1 | m_ZNVER2 | m_ZNVER3 | m_ZNVER4 | m_ALDERLAKE -+ | m_GENERIC | m_GDS)) - - /* X86_TUNE_USE_SCATTER_2PARTS: Use scater instructions for vectors with 2 - elements. */ -@@ -477,7 +478,8 @@ DEF_TUNE (X86_TUNE_USE_SCATTER_2PARTS, "use_scatter_2parts", - /* X86_TUNE_USE_GATHER_4PARTS: Use gather instructions for vectors with 4 - elements. */ - DEF_TUNE (X86_TUNE_USE_GATHER_4PARTS, "use_gather_4parts", -- ~(m_ZNVER1 | m_ZNVER2 | m_ZNVER3 | m_ZNVER4 | m_ALDERLAKE | m_GENERIC)) -+ ~(m_ZNVER1 | m_ZNVER2 | m_ZNVER3 | m_ZNVER4 | m_ALDERLAKE -+ | m_GENERIC | m_GDS)) - - /* X86_TUNE_USE_SCATTER_4PARTS: Use scater instructions for vectors with 4 - elements. */ -@@ -486,12 +488,13 @@ DEF_TUNE (X86_TUNE_USE_SCATTER_4PARTS, "use_scatter_4parts", - - /* X86_TUNE_USE_GATHER: Use gather instructions for vectors with 8 or more - elements. */ --DEF_TUNE (X86_TUNE_USE_GATHER, "use_gather", -- ~(m_ZNVER1 | m_ZNVER2 | m_ZNVER4 | m_ALDERLAKE | m_GENERIC)) -+DEF_TUNE (X86_TUNE_USE_GATHER_8PARTS, "use_gather_8parts", -+ ~(m_ZNVER1 | m_ZNVER2 | m_ZNVER4 | m_ALDERLAKE -+ | m_GENERIC | m_GDS)) - - /* X86_TUNE_USE_SCATTER: Use scater instructions for vectors with 8 or more - elements. */ --DEF_TUNE (X86_TUNE_USE_SCATTER, "use_scatter", -+DEF_TUNE (X86_TUNE_USE_SCATTER_8PARTS, "use_scatter_8parts", - ~(m_ZNVER4)) - - /* X86_TUNE_AVOID_128FMA_CHAINS: Avoid creating loops with tight 128bit or -diff --git a/gcc/config/loongarch/gnu-user.h b/gcc/config/loongarch/gnu-user.h -index 664dc9206ad..f050078da52 100644 ---- a/gcc/config/loongarch/gnu-user.h -+++ b/gcc/config/loongarch/gnu-user.h -@@ -33,9 +33,14 @@ along with GCC; see the file COPYING3. If not see - #define GLIBC_DYNAMIC_LINKER \ - "/lib" ABI_GRLEN_SPEC "/ld-linux-loongarch-" ABI_SPEC ".so.1" - -+#define MUSL_ABI_SPEC \ -+ "%{mabi=lp64d:}" \ -+ "%{mabi=lp64f:-sp}" \ -+ "%{mabi=lp64s:-sf}" -+ - #undef MUSL_DYNAMIC_LINKER - #define MUSL_DYNAMIC_LINKER \ -- "/lib" ABI_GRLEN_SPEC "/ld-musl-loongarch-" ABI_SPEC ".so.1" -+ "/lib/ld-musl-loongarch" ABI_GRLEN_SPEC MUSL_ABI_SPEC ".so.1" - - #undef GNU_USER_TARGET_LINK_SPEC - #define GNU_USER_TARGET_LINK_SPEC \ -diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc -index 22901cb6101..41819eba3d5 100644 ---- a/gcc/config/loongarch/loongarch.cc -+++ b/gcc/config/loongarch/loongarch.cc -@@ -1098,7 +1098,9 @@ loongarch_first_stack_step (struct loongarch_frame_info *frame) - static void - loongarch_emit_stack_tie (void) - { -- emit_insn (gen_stack_tie (Pmode, stack_pointer_rtx, hard_frame_pointer_rtx)); -+ emit_insn (gen_stack_tie (Pmode, stack_pointer_rtx, -+ frame_pointer_needed ? hard_frame_pointer_rtx -+ : stack_pointer_rtx)); - } - - #define PROBE_INTERVAL (1 << STACK_CHECK_PROBE_INTERVAL_EXP) -@@ -4319,27 +4321,27 @@ loongarch_memmodel_needs_rel_acq_fence (enum memmodel model) - } - } - --/* Return true if a FENCE should be emitted to before a memory access to -- implement the release portion of memory model MODEL. */ -+/* Return true if a FENCE should be emitted after a failed CAS to -+ implement the acquire semantic of failure_memorder. */ - - static bool --loongarch_memmodel_needs_release_fence (enum memmodel model) -+loongarch_cas_failure_memorder_needs_acquire (enum memmodel model) - { -- switch (model) -+ switch (memmodel_base (model)) - { -+ case MEMMODEL_ACQUIRE: - case MEMMODEL_ACQ_REL: - case MEMMODEL_SEQ_CST: -- case MEMMODEL_SYNC_SEQ_CST: -- case MEMMODEL_RELEASE: -- case MEMMODEL_SYNC_RELEASE: - return true; - -- case MEMMODEL_ACQUIRE: -- case MEMMODEL_CONSUME: -- case MEMMODEL_SYNC_ACQUIRE: - case MEMMODEL_RELAXED: -+ case MEMMODEL_RELEASE: - return false; - -+ /* MEMMODEL_CONSUME is deliberately not handled because it's always -+ replaced by MEMMODEL_ACQUIRE as at now. If you see an ICE caused by -+ MEMMODEL_CONSUME, read the change (re)introducing it carefully and -+ decide what to do. See PR 59448 and get_memmodel in builtins.cc. */ - default: - gcc_unreachable (); - } -@@ -4366,7 +4368,8 @@ loongarch_memmodel_needs_release_fence (enum memmodel model) - 'V' Print exact log2 of CONST_INT OP element 0 of a replicated - CONST_VECTOR in decimal. - 'A' Print a _DB suffix if the memory model requires a release. -- 'G' Print a DBAR insn if the memory model requires a release. -+ 'G' Print a DBAR insn for CAS failure (with an acquire semantic if -+ needed, otherwise a simple load-load barrier). - 'i' Print i if the operand is not a register. */ - - static void -@@ -4487,8 +4490,11 @@ loongarch_print_operand (FILE *file, rtx op, int letter) - break; - - case 'G': -- if (loongarch_memmodel_needs_release_fence ((enum memmodel) INTVAL (op))) -- fputs ("dbar\t0", file); -+ if (loongarch_cas_failure_memorder_needs_acquire ( -+ memmodel_from_int (INTVAL (op)))) -+ fputs ("dbar\t0b10100", file); -+ else -+ fputs ("dbar\t0x700", file); - break; - - case 'i': -diff --git a/gcc/config/loongarch/loongarch.h b/gcc/config/loongarch/loongarch.h -index 714401f2dc2..f34a7a604cc 100644 ---- a/gcc/config/loongarch/loongarch.h -+++ b/gcc/config/loongarch/loongarch.h -@@ -1148,3 +1148,8 @@ struct GTY (()) machine_function - (TARGET_HARD_FLOAT_ABI ? (TARGET_DOUBLE_FLOAT_ABI ? 8 : 4) : 0) - - #define FUNCTION_VALUE_REGNO_P(N) ((N) == GP_RETURN || (N) == FP_RETURN) -+ -+/* LoongArch maintains ICache/DCache coherency by hardware, -+ we just need "ibar" to avoid instruction hazard here. */ -+#undef CLEAR_INSN_CACHE -+#define CLEAR_INSN_CACHE(beg, end) __builtin_loongarch_ibar (0) -diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch/loongarch.md -index 8f8412fba84..b49e058407c 100644 ---- a/gcc/config/loongarch/loongarch.md -+++ b/gcc/config/loongarch/loongarch.md -@@ -93,6 +93,7 @@ - - (define_constants - [(RETURN_ADDR_REGNUM 1) -+ (TP_REGNUM 2) - (T0_REGNUM 12) - (T1_REGNUM 13) - (S0_REGNUM 23) -@@ -2622,6 +2623,10 @@ - } - [(set_attr "type" "branch")]) - -+;; Micro-architecture unconditionally treats a "jr $ra" as "return from subroutine", -+;; non-returning indirect jumps through $ra would interfere with both subroutine -+;; return prediction and the more general indirect branch prediction. -+ - (define_expand "indirect_jump" - [(set (pc) (match_operand 0 "register_operand"))] - "" -@@ -2632,7 +2637,7 @@ - }) - - (define_insn "@indirect_jump" -- [(set (pc) (match_operand:P 0 "register_operand" "r"))] -+ [(set (pc) (match_operand:P 0 "register_operand" "e"))] - "" - "jr\t%0" - [(set_attr "type" "jump") -@@ -2655,7 +2660,7 @@ - - (define_insn "@tablejump" - [(set (pc) -- (match_operand:P 0 "register_operand" "r")) -+ (match_operand:P 0 "register_operand" "e")) - (use (label_ref (match_operand 1 "" "")))] - "" - "jr\t%0" -@@ -3291,6 +3296,12 @@ - [(set_attr "length" "0") - (set_attr "type" "ghost")]) - -+;; Named pattern for expanding thread pointer reference. -+(define_expand "get_thread_pointer" -+ [(set (match_operand:P 0 "register_operand" "=r") -+ (reg:P TP_REGNUM))] -+ "HAVE_AS_TLS" -+ {}) - - (define_split - [(match_operand 0 "small_data_pattern")] -diff --git a/gcc/config/loongarch/sync.md b/gcc/config/loongarch/sync.md -index 45be1442439..b8763b8f9d1 100644 ---- a/gcc/config/loongarch/sync.md -+++ b/gcc/config/loongarch/sync.md -@@ -129,19 +129,18 @@ - (clobber (match_scratch:GPR 6 "=&r"))] - "" - { -- return "%G5\\n\\t" -- "1:\\n\\t" -+ return "1:\\n\\t" - "ll.\\t%0,%1\\n\\t" - "bne\\t%0,%z2,2f\\n\\t" - "or%i3\\t%6,$zero,%3\\n\\t" - "sc.\\t%6,%1\\n\\t" -- "beq\\t$zero,%6,1b\\n\\t" -+ "beqz\\t%6,1b\\n\\t" - "b\\t3f\\n\\t" - "2:\\n\\t" -- "dbar\\t0x700\\n\\t" -+ "%G5\\n\\t" - "3:\\n\\t"; - } -- [(set (attr "length") (const_int 32))]) -+ [(set (attr "length") (const_int 28))]) - - (define_expand "atomic_compare_and_swap" - [(match_operand:SI 0 "register_operand" "") ;; bool output -@@ -234,8 +233,7 @@ - (clobber (match_scratch:GPR 7 "=&r"))] - "" - { -- return "%G6\\n\\t" -- "1:\\n\\t" -+ return "1:\\n\\t" - "ll.\\t%0,%1\\n\\t" - "and\\t%7,%0,%2\\n\\t" - "bne\\t%7,%z4,2f\\n\\t" -@@ -245,10 +243,10 @@ - "beq\\t$zero,%7,1b\\n\\t" - "b\\t3f\\n\\t" - "2:\\n\\t" -- "dbar\\t0x700\\n\\t" -+ "%G6\\n\\t" - "3:\\n\\t"; - } -- [(set (attr "length") (const_int 40))]) -+ [(set (attr "length") (const_int 36))]) - - (define_expand "atomic_compare_and_swap" - [(match_operand:SI 0 "register_operand" "") ;; bool output -@@ -303,8 +301,7 @@ - (clobber (match_scratch:GPR 8 "=&r"))] - "" - { -- return "%G6\\n\\t" -- "1:\\n\\t" -+ return "1:\\n\\t" - "ll.\\t%0,%1\\n\\t" - "and\\t%7,%0,%3\\n\\t" - "add.w\\t%8,%0,%z5\\n\\t" -@@ -314,7 +311,7 @@ - "beq\\t$zero,%7,1b"; - } - -- [(set (attr "length") (const_int 32))]) -+ [(set (attr "length") (const_int 28))]) - - (define_insn "atomic_cas_value_sub_7_" - [(set (match_operand:GPR 0 "register_operand" "=&r") ;; res -@@ -330,8 +327,7 @@ - (clobber (match_scratch:GPR 8 "=&r"))] - "" - { -- return "%G6\\n\\t" -- "1:\\n\\t" -+ return "1:\\n\\t" - "ll.\\t%0,%1\\n\\t" - "and\\t%7,%0,%3\\n\\t" - "sub.w\\t%8,%0,%z5\\n\\t" -@@ -340,7 +336,7 @@ - "sc.\\t%7,%1\\n\\t" - "beq\\t$zero,%7,1b"; - } -- [(set (attr "length") (const_int 32))]) -+ [(set (attr "length") (const_int 28))]) - - (define_insn "atomic_cas_value_and_7_" - [(set (match_operand:GPR 0 "register_operand" "=&r") ;; res -@@ -356,8 +352,7 @@ - (clobber (match_scratch:GPR 8 "=&r"))] - "" - { -- return "%G6\\n\\t" -- "1:\\n\\t" -+ return "1:\\n\\t" - "ll.\\t%0,%1\\n\\t" - "and\\t%7,%0,%3\\n\\t" - "and\\t%8,%0,%z5\\n\\t" -@@ -366,7 +361,7 @@ - "sc.\\t%7,%1\\n\\t" - "beq\\t$zero,%7,1b"; - } -- [(set (attr "length") (const_int 32))]) -+ [(set (attr "length") (const_int 28))]) - - (define_insn "atomic_cas_value_xor_7_" - [(set (match_operand:GPR 0 "register_operand" "=&r") ;; res -@@ -382,8 +377,7 @@ - (clobber (match_scratch:GPR 8 "=&r"))] - "" - { -- return "%G6\\n\\t" -- "1:\\n\\t" -+ return "1:\\n\\t" - "ll.\\t%0,%1\\n\\t" - "and\\t%7,%0,%3\\n\\t" - "xor\\t%8,%0,%z5\\n\\t" -@@ -393,7 +387,7 @@ - "beq\\t$zero,%7,1b"; - } - -- [(set (attr "length") (const_int 32))]) -+ [(set (attr "length") (const_int 28))]) - - (define_insn "atomic_cas_value_or_7_" - [(set (match_operand:GPR 0 "register_operand" "=&r") ;; res -@@ -409,8 +403,7 @@ - (clobber (match_scratch:GPR 8 "=&r"))] - "" - { -- return "%G6\\n\\t" -- "1:\\n\\t" -+ return "1:\\n\\t" - "ll.\\t%0,%1\\n\\t" - "and\\t%7,%0,%3\\n\\t" - "or\\t%8,%0,%z5\\n\\t" -@@ -420,7 +413,7 @@ - "beq\\t$zero,%7,1b"; - } - -- [(set (attr "length") (const_int 32))]) -+ [(set (attr "length") (const_int 28))]) - - (define_insn "atomic_cas_value_nand_7_" - [(set (match_operand:GPR 0 "register_operand" "=&r") ;; res -@@ -436,8 +429,7 @@ - (clobber (match_scratch:GPR 8 "=&r"))] - "" - { -- return "%G6\\n\\t" -- "1:\\n\\t" -+ return "1:\\n\\t" - "ll.\\t%0,%1\\n\\t" - "and\\t%7,%0,%3\\n\\t" - "and\\t%8,%0,%z5\\n\\t" -@@ -446,7 +438,7 @@ - "sc.\\t%7,%1\\n\\t" - "beq\\t$zero,%7,1b"; - } -- [(set (attr "length") (const_int 32))]) -+ [(set (attr "length") (const_int 28))]) - - (define_insn "atomic_cas_value_exchange_7_" - [(set (match_operand:GPR 0 "register_operand" "=&r") -@@ -461,8 +453,7 @@ - (clobber (match_scratch:GPR 7 "=&r"))] - "" - { -- return "%G6\\n\\t" -- "1:\\n\\t" -+ return "1:\\n\\t" - "ll.\\t%0,%1\\n\\t" - "and\\t%7,%0,%z3\\n\\t" - "or%i5\\t%7,%7,%5\\n\\t" -diff --git a/gcc/config/loongarch/t-loongarch b/gcc/config/loongarch/t-loongarch -index 6d6e3435d59..e73f4f437ef 100644 ---- a/gcc/config/loongarch/t-loongarch -+++ b/gcc/config/loongarch/t-loongarch -@@ -16,6 +16,10 @@ - # along with GCC; see the file COPYING3. If not see - # . - -+TM_H += $(srcdir)/config/loongarch/loongarch-driver.h -+OPTIONS_H_EXTRA += $(srcdir)/config/loongarch/loongarch-def.h \ -+ $(srcdir)/config/loongarch/loongarch-tune.h -+ - # Canonical target triplet from config.gcc - LA_MULTIARCH_TRIPLET = $(patsubst LA_MULTIARCH_TRIPLET=%,%,$\ - $(filter LA_MULTIARCH_TRIPLET=%,$(tm_defines))) -diff --git a/gcc/config/pa/pa.cc b/gcc/config/pa/pa.cc -index 65f8fe814c6..ec81f403a01 100644 ---- a/gcc/config/pa/pa.cc -+++ b/gcc/config/pa/pa.cc -@@ -10400,7 +10400,7 @@ pa_asm_trampoline_template (FILE *f) - fputs ("\tldw 0(%r22),%r21\n", f); - fputs ("\tldw 4(%r22),%r19\n", f); - fputs ("\tbve (%r21)\n", f); -- fputs ("\tldw 52(%r1),%r29\n", f); -+ fputs ("\tldw 52(%r20),%r29\n", f); - fputs ("\t.word 0\n", f); - fputs ("\t.word 0\n", f); - fputs ("\t.word 0\n", f); -diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc -index 4939d9964db..dddd72aa237 100644 ---- a/gcc/config/riscv/riscv.cc -+++ b/gcc/config/riscv/riscv.cc -@@ -5600,9 +5600,8 @@ riscv_asan_shadow_offset (void) - /* We only have libsanitizer support for RV64 at present. - - This number must match kRiscv*_ShadowOffset* in the file -- libsanitizer/asan/asan_mapping.h which is currently 1<<29 for rv64, -- even though 1<<36 makes more sense. */ -- return TARGET_64BIT ? (HOST_WIDE_INT_1 << 29) : 0; -+ libsanitizer/asan/asan_mapping.h. */ -+ return TARGET_64BIT ? HOST_WIDE_INT_UC (0xd55550000) : 0; - } - - /* Initialize the GCC target structure. */ -diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md -index 8db9d68fbda..3849db5ca3c 100644 ---- a/gcc/config/rs6000/altivec.md -+++ b/gcc/config/rs6000/altivec.md -@@ -385,14 +385,22 @@ - - (define_insn_and_split "sldoi_to_mov" - [(set (match_operand:VM 0 "altivec_register_operand") -- (unspec:VM [(match_operand:VM 1 "easy_vector_constant") -+ (unspec:VM [(match_operand:VM 1 "const_vector_each_byte_same") - (match_dup 1) - (match_operand:QI 2 "u5bit_cint_operand")] - UNSPEC_VSLDOI))] -- "VECTOR_UNIT_ALTIVEC_OR_VSX_P (mode) && can_create_pseudo_p ()" -+ "VECTOR_MEM_ALTIVEC_OR_VSX_P (mode) && can_create_pseudo_p ()" - "#" - "&& 1" -- [(set (match_dup 0) (match_dup 1))]) -+ [(set (match_dup 0) (match_dup 1))] -+ "{ -+ if (!easy_vector_constant (operands[1], mode)) -+ { -+ rtx dest = gen_reg_rtx (mode); -+ emit_move_insn (dest, operands[1]); -+ operands[1] = dest; -+ } -+ }") - - (define_insn "get_vrsave_internal" - [(set (match_operand:SI 0 "register_operand" "=r") -diff --git a/gcc/config/rs6000/fusion.md b/gcc/config/rs6000/fusion.md -index 15f0c16f705..4067ee76215 100644 ---- a/gcc/config/rs6000/fusion.md -+++ b/gcc/config/rs6000/fusion.md -@@ -22,7 +22,7 @@ - ;; load mode is DI result mode is clobber compare mode is CC extend is none - (define_insn_and_split "*ld_cmpdi_cr0_DI_clobber_CC_none" - [(set (match_operand:CC 2 "cc_reg_operand" "=x") -- (compare:CC (match_operand:DI 1 "ds_form_mem_operand" "m") -+ (compare:CC (match_operand:DI 1 "non_update_memory_operand" "YZ") - (match_operand:DI 3 "const_m1_to_1_operand" "n"))) - (clobber (match_scratch:DI 0 "=r"))] - "(TARGET_P10_FUSION)" -@@ -43,7 +43,7 @@ - ;; load mode is DI result mode is clobber compare mode is CCUNS extend is none - (define_insn_and_split "*ld_cmpldi_cr0_DI_clobber_CCUNS_none" - [(set (match_operand:CCUNS 2 "cc_reg_operand" "=x") -- (compare:CCUNS (match_operand:DI 1 "ds_form_mem_operand" "m") -+ (compare:CCUNS (match_operand:DI 1 "non_update_memory_operand" "YZ") - (match_operand:DI 3 "const_0_to_1_operand" "n"))) - (clobber (match_scratch:DI 0 "=r"))] - "(TARGET_P10_FUSION)" -@@ -64,7 +64,7 @@ - ;; load mode is DI result mode is DI compare mode is CC extend is none - (define_insn_and_split "*ld_cmpdi_cr0_DI_DI_CC_none" - [(set (match_operand:CC 2 "cc_reg_operand" "=x") -- (compare:CC (match_operand:DI 1 "ds_form_mem_operand" "m") -+ (compare:CC (match_operand:DI 1 "non_update_memory_operand" "YZ") - (match_operand:DI 3 "const_m1_to_1_operand" "n"))) - (set (match_operand:DI 0 "gpc_reg_operand" "=r") (match_dup 1))] - "(TARGET_P10_FUSION)" -@@ -85,7 +85,7 @@ - ;; load mode is DI result mode is DI compare mode is CCUNS extend is none - (define_insn_and_split "*ld_cmpldi_cr0_DI_DI_CCUNS_none" - [(set (match_operand:CCUNS 2 "cc_reg_operand" "=x") -- (compare:CCUNS (match_operand:DI 1 "ds_form_mem_operand" "m") -+ (compare:CCUNS (match_operand:DI 1 "non_update_memory_operand" "YZ") - (match_operand:DI 3 "const_0_to_1_operand" "n"))) - (set (match_operand:DI 0 "gpc_reg_operand" "=r") (match_dup 1))] - "(TARGET_P10_FUSION)" -@@ -104,17 +104,17 @@ - - ;; load-cmpi fusion pattern generated by gen_ld_cmpi_p10 - ;; load mode is SI result mode is clobber compare mode is CC extend is none --(define_insn_and_split "*lwa_cmpdi_cr0_SI_clobber_CC_none" -+(define_insn_and_split "*lwz_cmpwi_cr0_SI_clobber_CC_none" - [(set (match_operand:CC 2 "cc_reg_operand" "=x") -- (compare:CC (match_operand:SI 1 "ds_form_mem_operand" "m") -+ (compare:CC (match_operand:SI 1 "non_update_memory_operand" "m") - (match_operand:SI 3 "const_m1_to_1_operand" "n"))) - (clobber (match_scratch:SI 0 "=r"))] - "(TARGET_P10_FUSION)" -- "lwa%X1 %0,%1\;cmpdi %2,%0,%3" -+ "lwz%X1 %0,%1\;cmpwi %2,%0,%3" - "&& reload_completed - && (cc_reg_not_cr0_operand (operands[2], CCmode) - || !address_is_non_pfx_d_or_x (XEXP (operands[1], 0), -- SImode, NON_PREFIXED_DS))" -+ SImode, NON_PREFIXED_D))" - [(set (match_dup 0) (match_dup 1)) - (set (match_dup 2) - (compare:CC (match_dup 0) (match_dup 3)))] -@@ -146,17 +146,17 @@ - - ;; load-cmpi fusion pattern generated by gen_ld_cmpi_p10 - ;; load mode is SI result mode is SI compare mode is CC extend is none --(define_insn_and_split "*lwa_cmpdi_cr0_SI_SI_CC_none" -+(define_insn_and_split "*lwz_cmpwi_cr0_SI_SI_CC_none" - [(set (match_operand:CC 2 "cc_reg_operand" "=x") -- (compare:CC (match_operand:SI 1 "ds_form_mem_operand" "m") -+ (compare:CC (match_operand:SI 1 "non_update_memory_operand" "m") - (match_operand:SI 3 "const_m1_to_1_operand" "n"))) - (set (match_operand:SI 0 "gpc_reg_operand" "=r") (match_dup 1))] - "(TARGET_P10_FUSION)" -- "lwa%X1 %0,%1\;cmpdi %2,%0,%3" -+ "lwz%X1 %0,%1\;cmpwi %2,%0,%3" - "&& reload_completed - && (cc_reg_not_cr0_operand (operands[2], CCmode) - || !address_is_non_pfx_d_or_x (XEXP (operands[1], 0), -- SImode, NON_PREFIXED_DS))" -+ SImode, NON_PREFIXED_D))" - [(set (match_dup 0) (match_dup 1)) - (set (match_dup 2) - (compare:CC (match_dup 0) (match_dup 3)))] -@@ -190,7 +190,7 @@ - ;; load mode is SI result mode is EXTSI compare mode is CC extend is sign - (define_insn_and_split "*lwa_cmpdi_cr0_SI_EXTSI_CC_sign" - [(set (match_operand:CC 2 "cc_reg_operand" "=x") -- (compare:CC (match_operand:SI 1 "ds_form_mem_operand" "m") -+ (compare:CC (match_operand:SI 1 "non_update_memory_operand" "YZ") - (match_operand:SI 3 "const_m1_to_1_operand" "n"))) - (set (match_operand:EXTSI 0 "gpc_reg_operand" "=r") (sign_extend:EXTSI (match_dup 1)))] - "(TARGET_P10_FUSION)" -@@ -205,6 +205,7 @@ - "" - [(set_attr "type" "fused_load_cmpi") - (set_attr "cost" "8") -+ (set_attr "sign_extend" "yes") - (set_attr "length" "8")]) - - ;; load-cmpi fusion pattern generated by gen_ld_cmpi_p10 -diff --git a/gcc/config/rs6000/genfusion.pl b/gcc/config/rs6000/genfusion.pl -index 81cc2255f53..d0517970ace 100755 ---- a/gcc/config/rs6000/genfusion.pl -+++ b/gcc/config/rs6000/genfusion.pl -@@ -53,92 +53,136 @@ sub mode_to_ldst_char - return '?'; - } - -+sub gen_ld_cmpi_p10_one -+{ -+ my ($lmode, $result, $ccmode) = @_; -+ -+ my $np = "NON_PREFIXED_D"; -+ my $mempred = "non_update_memory_operand"; -+ my $extend; -+ -+ # We need to special case lwa. The prefixed_load_p function in rs6000.cc -+ # (which determines if a load instruction is prefixed) uses the fact that the -+ # register mode is different from the memory mode, and that the sign_extend -+ # attribute is set to use DS-form rules for the address instead of D-form. -+ # If the register size is the same, prefixed_load_p assumes we are doing a -+ # lwz. We change to use an lwz and word compare if we don't need to sign -+ # extend the SImode value. Otherwise if we need the value, we need to -+ # make sure the insn is marked as ds-form. -+ my $cmp_size_char = ($lmode eq "SI" -+ && $ccmode eq "CC" -+ && $result !~ /^EXT|^DI$/) ? "w" : "d"; -+ -+ if ($ccmode eq "CC") { -+ # ld and lwa are both DS-FORM. -+ ($lmode eq "DI") and $np = "NON_PREFIXED_DS"; -+ ($lmode eq "SI" && $cmp_size_char eq "d") and $np = "NON_PREFIXED_DS"; -+ } else { -+ if ($lmode eq "DI") { -+ # ld is DS-form, but lwz is not. -+ $np = "NON_PREFIXED_DS"; -+ } -+ } -+ -+ my $cmpl = ($ccmode eq "CC") ? "" : "l"; -+ my $echr = ($ccmode eq "CC" && $cmp_size_char eq "d") ? "a" : "z"; -+ if ($lmode eq "DI") { $echr = ""; } -+ my $constpred = ($ccmode eq "CC") ? "const_m1_to_1_operand" -+ : "const_0_to_1_operand"; -+ -+ # For clobber, we need a SI/DI reg in case we -+ # split because we have to sign/zero extend. -+ my $clobbermode = ($lmode =~ /^[QH]I$/) ? "GPR" : $lmode; -+ if ($result =~ /^EXT/ || $result eq "GPR" || $clobbermode eq "GPR") { -+ # We always need extension if result > lmode. -+ $extend = ($ccmode eq "CC") ? "sign" : "zero"; -+ } else { -+ # Result of SI/DI does not need sign extension. -+ $extend = "none"; -+ } -+ -+ my $ldst = mode_to_ldst_char($lmode); -+ -+ # DS-form addresses need YZ, and not m. -+ my $constraint = ($np eq "NON_PREFIXED_DS") ? "YZ" : "m"; -+ print < lmode. -- if ( $ccmode eq 'CC' ) { -- $extend = "sign"; -- } else { -- $extend = "zero"; -- } -- } else { -- # Result of SI/DI does not need sign extension. -- $extend = "none"; -- } -- print ";; load-cmpi fusion pattern generated by gen_ld_cmpi_p10\n"; -- print ";; load mode is $lmode result mode is $result compare mode is $ccmode extend is $extend\n"; -- -- print "(define_insn_and_split \"*l${ldst}${echr}_cmp${cmpl}di_cr0_${lmode}_${result}_${ccmode}_${extend}\"\n"; -- print " [(set (match_operand:${ccmode} 2 \"cc_reg_operand\" \"=x\")\n"; -- print " (compare:${ccmode} (match_operand:${lmode} 1 \"${mempred}\" \"m\")\n"; -- if ($ccmode eq 'CCUNS') { print " "; } -- print " (match_operand:${lmode} 3 \"${constpred}\" \"n\")))\n"; -- if ($result eq 'clobber') { -- print " (clobber (match_scratch:${clobbermode} 0 \"=r\"))]\n"; -- } elsif ($result eq $lmode) { -- print " (set (match_operand:${result} 0 \"gpc_reg_operand\" \"=r\") (match_dup 1))]\n"; -- } else { -- print " (set (match_operand:${result} 0 \"gpc_reg_operand\" \"=r\") (${extend}_extend:${result} (match_dup 1)))]\n"; -- } -- print " \"(TARGET_P10_FUSION)\"\n"; -- print " \"l${ldst}${echr}%X1 %0,%1\\;cmp${cmpl}di %2,%0,%3\"\n"; -- print " \"&& reload_completed\n"; -- print " && (cc_reg_not_cr0_operand (operands[2], CCmode)\n"; -- print " || !address_is_non_pfx_d_or_x (XEXP (operands[1], 0),\n"; -- print " ${lmode}mode, ${np}))\"\n"; -- -- if ($extend eq "none") { -- print " [(set (match_dup 0) (match_dup 1))\n"; -- } else { -- $resultmode = $result; -- if ( $result eq 'clobber' ) { $resultmode = $clobbermode } -- print " [(set (match_dup 0) (${extend}_extend:${resultmode} (match_dup 1)))\n"; -- } -- print " (set (match_dup 2)\n"; -- print " (compare:${ccmode} (match_dup 0) (match_dup 3)))]\n"; -- print " \"\"\n"; -- print " [(set_attr \"type\" \"fused_load_cmpi\")\n"; -- print " (set_attr \"cost\" \"8\")\n"; -- print " (set_attr \"length\" \"8\")])\n"; -- print "\n"; -+ foreach my $lmode (qw/DI SI HI QI/) { -+ foreach my $result ("clobber", $lmode, "EXT$lmode") { -+ # EXTDI does not exist, and we cannot directly produce HI/QI results. -+ next if $result =~ /^(QI|HI|EXTDI)$/; -+ -+ # Don't allow EXTQI because that would allow HI result which we can't do. -+ $result = "GPR" if $result eq "EXTQI"; -+ -+ foreach my $ccmode (qw/CC CCUNS/) { -+ # We do not have signed single-byte loads. -+ next if ($lmode eq "QI" and $ccmode eq "CC"); -+ -+ gen_ld_cmpi_p10_one($lmode, $result, $ccmode); - } - } - } -diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md -index b1fcc69bb60..129664da94c 100644 ---- a/gcc/config/rs6000/predicates.md -+++ b/gcc/config/rs6000/predicates.md -@@ -798,6 +798,43 @@ - (and (match_test "easy_altivec_constant (op, mode)") - (match_test "vspltis_shifted (op) != 0"))))) - -+;; Return true if this is a vector constant and each byte in -+;; it is the same. -+(define_predicate "const_vector_each_byte_same" -+ (match_code "const_vector") -+{ -+ rtx elt; -+ if (!const_vec_duplicate_p (op, &elt)) -+ return false; -+ -+ machine_mode emode = GET_MODE_INNER (mode); -+ unsigned HOST_WIDE_INT eval; -+ if (CONST_INT_P (elt)) -+ eval = INTVAL (elt); -+ else if (CONST_DOUBLE_AS_FLOAT_P (elt)) -+ { -+ gcc_assert (emode == SFmode || emode == DFmode); -+ long l[2]; -+ real_to_target (l, CONST_DOUBLE_REAL_VALUE (elt), emode); -+ /* real_to_target puts 32-bit pieces in each long. */ -+ eval = zext_hwi (l[0], 32); -+ eval |= zext_hwi (l[1], 32) << 32; -+ } -+ else -+ return false; -+ -+ unsigned int esize = GET_MODE_SIZE (emode); -+ unsigned char byte0 = eval & 0xff; -+ for (unsigned int i = 1; i < esize; i++) -+ { -+ eval >>= BITS_PER_UNIT; -+ if (byte0 != (eval & 0xff)) -+ return false; -+ } -+ -+ return true; -+}) -+ - ;; Return 1 if operand is a vector int register or is either a vector constant - ;; of all 0 bits of a vector constant of all 1 bits. - (define_predicate "vector_int_reg_or_same_bit" -@@ -1088,20 +1125,6 @@ - return INTVAL (offset) % 4 == 0; - }) - --;; Return 1 if the operand is a memory operand that has a valid address for --;; a DS-form instruction. I.e. the address has to be either just a register, --;; or register + const where the two low order bits of const are zero. --(define_predicate "ds_form_mem_operand" -- (match_code "subreg,mem") --{ -- if (!any_memory_operand (op, mode)) -- return false; -- -- rtx addr = XEXP (op, 0); -- -- return address_to_insn_form (addr, mode, NON_PREFIXED_DS) == INSN_FORM_DS; --}) -- - ;; Return 1 if the operand, used inside a MEM, is a SYMBOL_REF. - (define_predicate "symbol_ref_operand" - (and (match_code "symbol_ref") -diff --git a/gcc/config/rs6000/rs6000-builtins.def b/gcc/config/rs6000/rs6000-builtins.def -index afc3cd692c1..d2c0565dc62 100644 ---- a/gcc/config/rs6000/rs6000-builtins.def -+++ b/gcc/config/rs6000/rs6000-builtins.def -@@ -2008,6 +2008,13 @@ - const vsll __builtin_vsx_xxspltd_2di (vsll, const int<1>); - XXSPLTD_V2DI vsx_xxspltd_v2di {} - -+ const vsq __builtin_pack_vector_int128 (unsigned long long, \ -+ unsigned long long); -+ PACK_V1TI packv1ti {} -+ -+ const unsigned long __builtin_unpack_vector_int128 (vsq, const int<1>); -+ UNPACK_V1TI unpackv1ti {} -+ - - ; Power7 builtins (ISA 2.06). - [power7] -@@ -2029,16 +2036,9 @@ - const unsigned int __builtin_divweu (unsigned int, unsigned int); - DIVWEU diveu_si {} - -- const vsq __builtin_pack_vector_int128 (unsigned long long, \ -- unsigned long long); -- PACK_V1TI packv1ti {} -- - void __builtin_ppc_speculation_barrier (); - SPECBARR speculation_barrier {} - -- const unsigned long __builtin_unpack_vector_int128 (vsq, const int<1>); -- UNPACK_V1TI unpackv1ti {} -- - - ; Power7 builtins requiring 64-bit GPRs (even with 32-bit addressing). - [power7-64] -@@ -2796,6 +2796,19 @@ - const vsi __builtin_vsx_xxbrw_v4si (vsi); - XXBRW_V4SI p9_xxbrw_v4si {} - -+ const signed int __builtin_vsx_scalar_cmp_exp_qp_eq (_Float128, _Float128); -+ VSCEQPEQ xscmpexpqp_eq_kf {} -+ -+ const signed int __builtin_vsx_scalar_cmp_exp_qp_gt (_Float128, _Float128); -+ VSCEQPGT xscmpexpqp_gt_kf {} -+ -+ const signed int __builtin_vsx_scalar_cmp_exp_qp_lt (_Float128, _Float128); -+ VSCEQPLT xscmpexpqp_lt_kf {} -+ -+ const signed int \ -+ __builtin_vsx_scalar_cmp_exp_qp_unordered (_Float128, _Float128); -+ VSCEQPUO xscmpexpqp_unordered_kf {} -+ - - ; Miscellaneous P9 functions - [power9] -@@ -2878,19 +2891,6 @@ - fpmath _Float128 __builtin_mulf128_round_to_odd (_Float128, _Float128); - MULF128_ODD mulkf3_odd {} - -- const signed int __builtin_vsx_scalar_cmp_exp_qp_eq (_Float128, _Float128); -- VSCEQPEQ xscmpexpqp_eq_kf {} -- -- const signed int __builtin_vsx_scalar_cmp_exp_qp_gt (_Float128, _Float128); -- VSCEQPGT xscmpexpqp_gt_kf {} -- -- const signed int __builtin_vsx_scalar_cmp_exp_qp_lt (_Float128, _Float128); -- VSCEQPLT xscmpexpqp_lt_kf {} -- -- const signed int \ -- __builtin_vsx_scalar_cmp_exp_qp_unordered (_Float128, _Float128); -- VSCEQPUO xscmpexpqp_unordered_kf {} -- - fpmath _Float128 __builtin_sqrtf128_round_to_odd (_Float128); - SQRTF128_ODD sqrtkf2_odd {} - -diff --git a/gcc/config/rs6000/rs6000-string.cc b/gcc/config/rs6000/rs6000-string.cc -index 59d901ac68d..162f8562897 100644 ---- a/gcc/config/rs6000/rs6000-string.cc -+++ b/gcc/config/rs6000/rs6000-string.cc -@@ -2811,11 +2811,17 @@ expand_block_move (rtx operands[], bool might_overlap) - gen_func.mov = gen_vsx_movv2di_64bit; - } - else if (TARGET_BLOCK_OPS_UNALIGNED_VSX -- && TARGET_POWER10 && bytes < 16 -+ /* Only use lxvl/stxvl on 64bit POWER10. */ -+ && TARGET_POWER10 -+ && TARGET_64BIT -+ && bytes < 16 - && orig_bytes > 16 -- && !(bytes == 1 || bytes == 2 -- || bytes == 4 || bytes == 8) -- && (align >= 128 || !STRICT_ALIGNMENT)) -+ && !(bytes == 1 -+ || bytes == 2 -+ || bytes == 4 -+ || bytes == 8) -+ && (align >= 128 -+ || !STRICT_ALIGNMENT)) - { - /* Only use lxvl/stxvl if it could replace multiple ordinary - loads+stores. Also don't use it unless we likely already -diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc -index f678561071a..70406c21c1c 100644 ---- a/gcc/config/rs6000/rs6000.cc -+++ b/gcc/config/rs6000/rs6000.cc -@@ -8128,7 +8128,8 @@ darwin_rs6000_special_round_type_align (tree type, unsigned int computed, - type = TREE_TYPE (type); - } while (AGGREGATE_TYPE_P (type)); - -- if (! AGGREGATE_TYPE_P (type) && type != error_mark_node) -+ if (type != error_mark_node && ! AGGREGATE_TYPE_P (type) -+ && ! TYPE_PACKED (type) && maximum_field_alignment == 0) - align = MAX (align, TYPE_ALIGN (type)); - - return align; -@@ -17116,7 +17117,7 @@ output_toc (FILE *file, rtx x, int labelno, machine_mode mode) - if (DECIMAL_FLOAT_MODE_P (GET_MODE (x))) - REAL_VALUE_TO_TARGET_DECIMAL128 (*CONST_DOUBLE_REAL_VALUE (x), k); - else -- REAL_VALUE_TO_TARGET_LONG_DOUBLE (*CONST_DOUBLE_REAL_VALUE (x), k); -+ real_to_target (k, CONST_DOUBLE_REAL_VALUE (x), GET_MODE (x)); - - if (TARGET_64BIT) - { -@@ -21906,7 +21907,9 @@ rs6000_rtx_costs (rtx x, machine_mode mode, int outer_code, - *total = rs6000_cost->divsi; - } - /* Add in shift and subtract for MOD unless we have a mod instruction. */ -- if (!TARGET_MODULO && (code == MOD || code == UMOD)) -+ if ((!TARGET_MODULO -+ || (RS6000_DISABLE_SCALAR_MODULO && SCALAR_INT_MODE_P (mode))) -+ && (code == MOD || code == UMOD)) - *total += COSTS_N_INSNS (2); - return false; - -@@ -25250,15 +25253,21 @@ rs6000_need_ipa_fn_target_info (const_tree decl, - static bool - rs6000_update_ipa_fn_target_info (unsigned int &info, const gimple *stmt) - { -+#ifndef HAVE_AS_POWER10_HTM - /* Assume inline asm can use any instruction features. */ - if (gimple_code (stmt) == GIMPLE_ASM) - { -- /* Should set any bits we concerned, for now OPTION_MASK_HTM is -- the only bit we care about. */ -- info |= RS6000_FN_TARGET_INFO_HTM; -+ const char *asm_str = gimple_asm_string (as_a (stmt)); -+ /* Ignore empty inline asm string. */ -+ if (strlen (asm_str) > 0) -+ /* Should set any bits we concerned, for now OPTION_MASK_HTM is -+ the only bit we care about. */ -+ info |= RS6000_FN_TARGET_INFO_HTM; - return false; - } -- else if (gimple_code (stmt) == GIMPLE_CALL) -+#endif -+ -+ if (gimple_code (stmt) == GIMPLE_CALL) - { - tree fndecl = gimple_call_fndecl (stmt); - if (fndecl && fndecl_built_in_p (fndecl, BUILT_IN_MD)) -@@ -25286,49 +25295,44 @@ rs6000_can_inline_p (tree caller, tree callee) - tree caller_tree = DECL_FUNCTION_SPECIFIC_TARGET (caller); - tree callee_tree = DECL_FUNCTION_SPECIFIC_TARGET (callee); - -- /* If the callee has no option attributes, then it is ok to inline. */ -+ /* If the caller/callee has option attributes, then use them. -+ Otherwise, use the command line options. */ - if (!callee_tree) -- ret = true; -+ callee_tree = target_option_default_node; -+ if (!caller_tree) -+ caller_tree = target_option_default_node; - -- else -- { -- HOST_WIDE_INT caller_isa; -- struct cl_target_option *callee_opts = TREE_TARGET_OPTION (callee_tree); -- HOST_WIDE_INT callee_isa = callee_opts->x_rs6000_isa_flags; -- HOST_WIDE_INT explicit_isa = callee_opts->x_rs6000_isa_flags_explicit; -+ struct cl_target_option *callee_opts = TREE_TARGET_OPTION (callee_tree); -+ struct cl_target_option *caller_opts = TREE_TARGET_OPTION (caller_tree); - -- /* If the caller has option attributes, then use them. -- Otherwise, use the command line options. */ -- if (caller_tree) -- caller_isa = TREE_TARGET_OPTION (caller_tree)->x_rs6000_isa_flags; -- else -- caller_isa = rs6000_isa_flags; -+ HOST_WIDE_INT callee_isa = callee_opts->x_rs6000_isa_flags; -+ HOST_WIDE_INT caller_isa = caller_opts->x_rs6000_isa_flags; -+ HOST_WIDE_INT explicit_isa = callee_opts->x_rs6000_isa_flags_explicit; - -- cgraph_node *callee_node = cgraph_node::get (callee); -- if (ipa_fn_summaries && ipa_fn_summaries->get (callee_node) != NULL) -+ cgraph_node *callee_node = cgraph_node::get (callee); -+ if (ipa_fn_summaries && ipa_fn_summaries->get (callee_node) != NULL) -+ { -+ unsigned int info = ipa_fn_summaries->get (callee_node)->target_info; -+ if ((info & RS6000_FN_TARGET_INFO_HTM) == 0) - { -- unsigned int info = ipa_fn_summaries->get (callee_node)->target_info; -- if ((info & RS6000_FN_TARGET_INFO_HTM) == 0) -- { -- callee_isa &= ~OPTION_MASK_HTM; -- explicit_isa &= ~OPTION_MASK_HTM; -- } -+ callee_isa &= ~OPTION_MASK_HTM; -+ explicit_isa &= ~OPTION_MASK_HTM; - } -+ } - -- /* Ignore -mpower8-fusion and -mpower10-fusion options for inlining -- purposes. */ -- callee_isa &= ~(OPTION_MASK_P8_FUSION | OPTION_MASK_P10_FUSION); -- explicit_isa &= ~(OPTION_MASK_P8_FUSION | OPTION_MASK_P10_FUSION); -+ /* Ignore -mpower8-fusion and -mpower10-fusion options for inlining -+ purposes. */ -+ callee_isa &= ~(OPTION_MASK_P8_FUSION | OPTION_MASK_P10_FUSION); -+ explicit_isa &= ~(OPTION_MASK_P8_FUSION | OPTION_MASK_P10_FUSION); - -- /* The callee's options must be a subset of the caller's options, i.e. -- a vsx function may inline an altivec function, but a no-vsx function -- must not inline a vsx function. However, for those options that the -- callee has explicitly enabled or disabled, then we must enforce that -- the callee's and caller's options match exactly; see PR70010. */ -- if (((caller_isa & callee_isa) == callee_isa) -- && (caller_isa & explicit_isa) == (callee_isa & explicit_isa)) -- ret = true; -- } -+ /* The callee's options must be a subset of the caller's options, i.e. -+ a vsx function may inline an altivec function, but a no-vsx function -+ must not inline a vsx function. However, for those options that the -+ callee has explicitly enabled or disabled, then we must enforce that -+ the callee's and caller's options match exactly; see PR70010. */ -+ if (((caller_isa & callee_isa) == callee_isa) -+ && (caller_isa & explicit_isa) == (callee_isa & explicit_isa)) -+ ret = true; - - if (TARGET_DEBUG_TARGET) - fprintf (stderr, "rs6000_can_inline_p:, caller %s, callee %s, %s inline\n", -@@ -28603,7 +28607,6 @@ vec_const_128bit_to_bytes (rtx op, - - info->all_words_same - = (info->words[0] == info->words[1] -- && info->words[0] == info->words[1] - && info->words[0] == info->words[2] - && info->words[0] == info->words[3]); - -diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h -index 5c886d909aa..9577e715d67 100644 ---- a/gcc/config/rs6000/rs6000.h -+++ b/gcc/config/rs6000/rs6000.h -@@ -2632,3 +2632,9 @@ while (0) - rs6000_asm_output_opcode (STREAM); \ - } \ - while (0) -+ -+/* Disable generation of scalar modulo instructions due to performance issues -+ with certain input values. This can be removed in the future when the -+ issues have been resolved. */ -+#define RS6000_DISABLE_SCALAR_MODULO 1 -+ -diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md -index 914ddcc8884..5cbf25dc76b 100644 ---- a/gcc/config/rs6000/rs6000.md -+++ b/gcc/config/rs6000/rs6000.md -@@ -287,7 +287,7 @@ - ;; Whether this insn has a prefixed form and a non-prefixed form. - (define_attr "maybe_prefixed" "no,yes" - (if_then_else (eq_attr "type" "load,fpload,vecload,store,fpstore,vecstore, -- integer,add") -+ integer,add,fused_load_cmpi") - (const_string "yes") - (const_string "no"))) - -@@ -302,7 +302,7 @@ - (eq_attr "maybe_prefixed" "no")) - (const_string "no") - -- (eq_attr "type" "load,fpload,vecload") -+ (eq_attr "type" "load,fpload,vecload,fused_load_cmpi") - (if_then_else (match_test "prefixed_load_p (insn)") - (const_string "yes") - (const_string "no")) -@@ -3359,6 +3359,17 @@ - FAIL; - - operands[2] = force_reg (mode, operands[2]); -+ -+ if (RS6000_DISABLE_SCALAR_MODULO) -+ { -+ temp1 = gen_reg_rtx (mode); -+ temp2 = gen_reg_rtx (mode); -+ -+ emit_insn (gen_div3 (temp1, operands[1], operands[2])); -+ emit_insn (gen_mul3 (temp2, temp1, operands[2])); -+ emit_insn (gen_sub3 (operands[0], operands[1], temp2)); -+ DONE; -+ } - } - else - { -@@ -3378,17 +3389,36 @@ - [(set (match_operand:GPR 0 "gpc_reg_operand" "=&r") - (mod:GPR (match_operand:GPR 1 "gpc_reg_operand" "r") - (match_operand:GPR 2 "gpc_reg_operand" "r")))] -- "TARGET_MODULO" -+ "TARGET_MODULO && !RS6000_DISABLE_SCALAR_MODULO" - "mods %0,%1,%2" - [(set_attr "type" "div") - (set_attr "size" "")]) - -+;; This define_expand can be removed when RS6000_DISABLE_SCALAR_MODULO is -+;; removed. -+(define_expand "umod3" -+ [(set (match_operand:GPR 0 "gpc_reg_operand") -+ (umod:GPR (match_operand:GPR 1 "gpc_reg_operand") -+ (match_operand:GPR 2 "gpc_reg_operand")))] -+ "TARGET_MODULO" -+{ -+ if (RS6000_DISABLE_SCALAR_MODULO) -+ { -+ rtx temp1 = gen_reg_rtx (mode); -+ rtx temp2 = gen_reg_rtx (mode); -+ -+ emit_insn (gen_udiv3 (temp1, operands[1], operands[2])); -+ emit_insn (gen_mul3 (temp2, temp1, operands[2])); -+ emit_insn (gen_sub3 (operands[0], operands[1], temp2)); -+ DONE; -+ } -+}) - --(define_insn "umod3" -+(define_insn "*umod3" - [(set (match_operand:GPR 0 "gpc_reg_operand" "=&r") - (umod:GPR (match_operand:GPR 1 "gpc_reg_operand" "r") - (match_operand:GPR 2 "gpc_reg_operand" "r")))] -- "TARGET_MODULO" -+ "TARGET_MODULO && !RS6000_DISABLE_SCALAR_MODULO" - "modu %0,%1,%2" - [(set_attr "type" "div") - (set_attr "size" "")]) -@@ -3445,7 +3475,7 @@ - [(set (match_operand:TI 0 "altivec_register_operand" "=v") - (umod:TI (match_operand:TI 1 "altivec_register_operand" "v") - (match_operand:TI 2 "altivec_register_operand" "v")))] -- "TARGET_POWER10 && TARGET_POWERPC64" -+ "TARGET_POWER10 && TARGET_POWERPC64 && !RS6000_DISABLE_SCALAR_MODULO" - "vmoduq %0,%1,%2" - [(set_attr "type" "vecdiv") - (set_attr "size" "128")]) -@@ -3454,7 +3484,7 @@ - [(set (match_operand:TI 0 "altivec_register_operand" "=v") - (mod:TI (match_operand:TI 1 "altivec_register_operand" "v") - (match_operand:TI 2 "altivec_register_operand" "v")))] -- "TARGET_POWER10 && TARGET_POWERPC64" -+ "TARGET_POWER10 && TARGET_POWERPC64 && !RS6000_DISABLE_SCALAR_MODULO" - "vmodsq %0,%1,%2" - [(set_attr "type" "vecdiv") - (set_attr "size" "128")]) -@@ -12215,33 +12245,26 @@ - DONE; - }) - --(define_insn "stack_protect_setsi" -- [(set (match_operand:SI 0 "memory_operand" "=m") -- (unspec:SI [(match_operand:SI 1 "memory_operand" "m")] UNSPEC_SP_SET)) -- (set (match_scratch:SI 2 "=&r") (const_int 0))] -- "TARGET_32BIT" -- "lwz%U1%X1 %2,%1\;stw%U0%X0 %2,%0\;li %2,0" -- [(set_attr "type" "three") -- (set_attr "length" "12")]) -- - ;; We can't use the prefixed attribute here because there are two memory - ;; instructions. We can't split the insn due to the fact that this operation - ;; needs to be done in one piece. --(define_insn "stack_protect_setdi" -- [(set (match_operand:DI 0 "memory_operand" "=Y") -- (unspec:DI [(match_operand:DI 1 "memory_operand" "Y")] UNSPEC_SP_SET)) -- (set (match_scratch:DI 2 "=&r") (const_int 0))] -- "TARGET_64BIT" -+(define_insn "stack_protect_set" -+ [(set (match_operand:P 0 "memory_operand" "=YZ") -+ (unspec:P [(match_operand:P 1 "memory_operand" "YZ")] UNSPEC_SP_SET)) -+ (set (match_scratch:P 2 "=&r") (const_int 0))] -+ "" - { -- if (prefixed_memory (operands[1], DImode)) -- output_asm_insn ("pld %2,%1", operands); -+ if (prefixed_memory (operands[1], mode)) -+ /* Prefixed load only supports D-form but no update and X-form. */ -+ output_asm_insn ("p %2,%1", operands); - else -- output_asm_insn ("ld%U1%X1 %2,%1", operands); -+ output_asm_insn ("%U1%X1 %2,%1", operands); - -- if (prefixed_memory (operands[0], DImode)) -- output_asm_insn ("pstd %2,%0", operands); -+ if (prefixed_memory (operands[0], mode)) -+ /* Prefixed store only supports D-form but no update and X-form. */ -+ output_asm_insn ("pst %2,%0", operands); - else -- output_asm_insn ("std%U0%X0 %2,%0", operands); -+ output_asm_insn ("st%U0%X0 %2,%0", operands); - - return "li %2,0"; - } -@@ -12287,45 +12310,33 @@ - DONE; - }) - --(define_insn "stack_protect_testsi" -- [(set (match_operand:CCEQ 0 "cc_reg_operand" "=x,?y") -- (unspec:CCEQ [(match_operand:SI 1 "memory_operand" "m,m") -- (match_operand:SI 2 "memory_operand" "m,m")] -- UNSPEC_SP_TEST)) -- (set (match_scratch:SI 4 "=r,r") (const_int 0)) -- (clobber (match_scratch:SI 3 "=&r,&r"))] -- "TARGET_32BIT" -- "@ -- lwz%U1%X1 %3,%1\;lwz%U2%X2 %4,%2\;xor. %3,%3,%4\;li %4,0 -- lwz%U1%X1 %3,%1\;lwz%U2%X2 %4,%2\;cmplw %0,%3,%4\;li %3,0\;li %4,0" -- [(set_attr "length" "16,20")]) -- - ;; We can't use the prefixed attribute here because there are two memory - ;; instructions. We can't split the insn due to the fact that this operation - ;; needs to be done in one piece. --(define_insn "stack_protect_testdi" -+(define_insn "stack_protect_test" - [(set (match_operand:CCEQ 0 "cc_reg_operand" "=x,?y") -- (unspec:CCEQ [(match_operand:DI 1 "memory_operand" "Y,Y") -- (match_operand:DI 2 "memory_operand" "Y,Y")] -+ (unspec:CCEQ [(match_operand:P 1 "memory_operand" "YZ,YZ") -+ (match_operand:P 2 "memory_operand" "YZ,YZ")] - UNSPEC_SP_TEST)) -- (set (match_scratch:DI 4 "=r,r") (const_int 0)) -- (clobber (match_scratch:DI 3 "=&r,&r"))] -- "TARGET_64BIT" -+ (set (match_scratch:P 4 "=r,r") (const_int 0)) -+ (clobber (match_scratch:P 3 "=&r,&r"))] -+ "" - { -- if (prefixed_memory (operands[1], DImode)) -- output_asm_insn ("pld %3,%1", operands); -+ if (prefixed_memory (operands[1], mode)) -+ /* Prefixed load only supports D-form but no update and X-form. */ -+ output_asm_insn ("p %3,%1", operands); - else -- output_asm_insn ("ld%U1%X1 %3,%1", operands); -+ output_asm_insn ("%U1%X1 %3,%1", operands); - -- if (prefixed_memory (operands[2], DImode)) -- output_asm_insn ("pld %4,%2", operands); -+ if (prefixed_memory (operands[2], mode)) -+ output_asm_insn ("p %4,%2", operands); - else -- output_asm_insn ("ld%U2%X2 %4,%2", operands); -+ output_asm_insn ("%U2%X2 %4,%2", operands); - - if (which_alternative == 0) - output_asm_insn ("xor. %3,%3,%4", operands); - else -- output_asm_insn ("cmpld %0,%3,%4\;li %3,0", operands); -+ output_asm_insn ("cmpl %0,%3,%4\;li %3,0", operands); - - return "li %4,0"; - } -diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md -index 068abc1d62e..c45794fb9ed 100644 ---- a/gcc/config/rs6000/vsx.md -+++ b/gcc/config/rs6000/vsx.md -@@ -2018,22 +2018,20 @@ - "xtsqrtp %0,%x1" - [(set_attr "type" "")]) - --;; Fused vector multiply/add instructions. Support the classical Altivec --;; versions of fma, which allows the target to be a separate register from the --;; 3 inputs. Under VSX, the target must be either the addend or the first --;; multiply. -- -+;; Fused vector multiply/add instructions. Do not generate the Altivec versions -+;; of fma (vmaddfp and vnmsubfp). These instructions allows the target to be a -+;; separate register from the 3 inputs, but they have different rounding -+;; behaviors than the VSX instructions. - (define_insn "*vsx_fmav4sf4" -- [(set (match_operand:V4SF 0 "vsx_register_operand" "=wa,wa,v") -+ [(set (match_operand:V4SF 0 "vsx_register_operand" "=wa,wa") - (fma:V4SF -- (match_operand:V4SF 1 "vsx_register_operand" "%wa,wa,v") -- (match_operand:V4SF 2 "vsx_register_operand" "wa,0,v") -- (match_operand:V4SF 3 "vsx_register_operand" "0,wa,v")))] -+ (match_operand:V4SF 1 "vsx_register_operand" "%wa,wa") -+ (match_operand:V4SF 2 "vsx_register_operand" "wa,0") -+ (match_operand:V4SF 3 "vsx_register_operand" "0,wa")))] - "VECTOR_UNIT_VSX_P (V4SFmode)" - "@ - xvmaddasp %x0,%x1,%x2 -- xvmaddmsp %x0,%x1,%x3 -- vmaddfp %0,%1,%2,%3" -+ xvmaddmsp %x0,%x1,%x3" - [(set_attr "type" "vecfloat")]) - - (define_insn "*vsx_fmav2df4" -@@ -2075,18 +2073,17 @@ - [(set_attr "type" "")]) - - (define_insn "*vsx_nfmsv4sf4" -- [(set (match_operand:V4SF 0 "vsx_register_operand" "=wa,wa,v") -+ [(set (match_operand:V4SF 0 "vsx_register_operand" "=wa,wa") - (neg:V4SF - (fma:V4SF -- (match_operand:V4SF 1 "vsx_register_operand" "%wa,wa,v") -- (match_operand:V4SF 2 "vsx_register_operand" "wa,0,v") -+ (match_operand:V4SF 1 "vsx_register_operand" "%wa,wa") -+ (match_operand:V4SF 2 "vsx_register_operand" "wa,0") - (neg:V4SF -- (match_operand:V4SF 3 "vsx_register_operand" "0,wa,v")))))] -+ (match_operand:V4SF 3 "vsx_register_operand" "0,wa")))))] - "VECTOR_UNIT_VSX_P (V4SFmode)" - "@ - xvnmsubasp %x0,%x1,%x2 -- xvnmsubmsp %x0,%x1,%x3 -- vnmsubfp %0,%1,%2,%3" -+ xvnmsubmsp %x0,%x1,%x3" - [(set_attr "type" "vecfloat")]) - - (define_insn "*vsx_nfmsv2df4" -@@ -6560,7 +6557,7 @@ - (match_operand:QI 4 "u8bit_cint_operand" "n")] - UNSPEC_XXEVAL))] - "TARGET_POWER10" -- "xxeval %0,%1,%2,%3,%4" -+ "xxeval %x0,%x1,%x2,%x3,%4" - [(set_attr "type" "vecperm") - (set_attr "prefixed" "yes")]) - -diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md -index 59a7b216433..e11e8a5a40d 100644 ---- a/gcc/config/sh/sh.md -+++ b/gcc/config/sh/sh.md -@@ -842,7 +842,7 @@ - if (SUBREG_P (reg)) - reg = SUBREG_REG (reg); - gcc_assert (REG_P (reg)); -- if (find_regno_note (curr_insn, REG_DEAD, REGNO (reg)) != NULL_RTX) -+ if (find_regno_note (curr_insn, REG_DEAD, REGNO (reg)) == NULL_RTX) - FAIL; - - /* FIXME: Maybe also search the predecessor basic blocks to catch -@@ -10680,6 +10680,45 @@ - && peep2_reg_dead_p (2, operands[1]) && peep2_reg_dead_p (3, operands[0])" - [(const_int 0)] - { -+ if (MEM_P (operands[3]) && reg_overlap_mentioned_p (operands[0], operands[3])) -+ { -+ // Take care when the eliminated operand[0] register is part of -+ // the destination memory address. -+ rtx addr = XEXP (operands[3], 0); -+ -+ if (REG_P (addr)) -+ operands[3] = replace_equiv_address (operands[3], operands[1]); -+ -+ else if (GET_CODE (addr) == PLUS && REG_P (XEXP (addr, 0)) -+ && CONST_INT_P (XEXP (addr, 1)) -+ && REGNO (operands[0]) == REGNO (XEXP (addr, 0))) -+ operands[3] = replace_equiv_address (operands[3], -+ gen_rtx_PLUS (SImode, operands[1], XEXP (addr, 1))); -+ -+ else if (GET_CODE (addr) == PLUS && REG_P (XEXP (addr, 0)) -+ && REG_P (XEXP (addr, 1))) -+ { -+ // register + register address @(R0, Rn) -+ // can change only the Rn in the address, not R0. -+ if (REGNO (operands[0]) == REGNO (XEXP (addr, 0)) -+ && REGNO (XEXP (addr, 0)) != 0) -+ { -+ operands[3] = replace_equiv_address (operands[3], -+ gen_rtx_PLUS (SImode, operands[1], XEXP (addr, 1))); -+ } -+ else if (REGNO (operands[0]) == REGNO (XEXP (addr, 1)) -+ && REGNO (XEXP (addr, 1)) != 0) -+ { -+ operands[3] = replace_equiv_address (operands[3], -+ gen_rtx_PLUS (SImode, XEXP (addr, 0), operands[1])); -+ } -+ else -+ FAIL; -+ } -+ else -+ FAIL; -+ } -+ - emit_insn (gen_addsi3 (operands[1], operands[1], operands[2])); - sh_peephole_emit_move_insn (operands[3], operands[1]); - }) -diff --git a/gcc/config/sh/sh_treg_combine.cc b/gcc/config/sh/sh_treg_combine.cc -index f6553c04a0d..685ca542046 100644 ---- a/gcc/config/sh/sh_treg_combine.cc -+++ b/gcc/config/sh/sh_treg_combine.cc -@@ -732,7 +732,14 @@ sh_treg_combine::record_set_of_reg (rtx reg, rtx_insn *start_insn, - } - else if (REG_P (new_entry.cstore.set_src ())) - { -- // If it's a reg-reg copy follow the copied reg. -+ // If it's a reg-reg copy follow the copied reg, but ignore -+ // nop copies of the reg onto itself. -+ if (REGNO (new_entry.cstore.set_src ()) == REGNO (reg)) -+ { -+ i = prev_nonnote_nondebug_insn_bb (i); -+ continue; -+ } -+ - new_entry.cstore_reg_reg_copies.push_back (new_entry.cstore); - reg = new_entry.cstore.set_src (); - i = new_entry.cstore.insn; -diff --git a/gcc/config/vax/vax.cc b/gcc/config/vax/vax.cc -index f44e23d1796..db797dc393a 100644 ---- a/gcc/config/vax/vax.cc -+++ b/gcc/config/vax/vax.cc -@@ -1833,7 +1833,9 @@ nonindexed_address_p (rtx x, bool strict) - } - - /* True if PROD is either a reg times size of mode MODE and MODE is less -- than or equal 8 bytes, or just a reg if MODE is one byte. */ -+ than or equal 8 bytes, or just a reg if MODE is one byte. For a MULT -+ RTX we accept its operands in either order, however ASHIFT is not -+ commutative, so in that case reg has to be the left operand. */ - - static bool - index_term_p (rtx prod, machine_mode mode, bool strict) -@@ -1852,8 +1854,9 @@ index_term_p (rtx prod, machine_mode mode, bool strict) - xfoo0 = XEXP (prod, 0); - xfoo1 = XEXP (prod, 1); - -- if (CONST_INT_P (xfoo0) -- && GET_MODE_SIZE (mode) == (log_p ? 1 << INTVAL (xfoo0) : INTVAL (xfoo0)) -+ if (!log_p -+ && CONST_INT_P (xfoo0) -+ && GET_MODE_SIZE (mode) == INTVAL (xfoo0) - && INDEX_REGISTER_P (xfoo1, strict)) - return true; - -diff --git a/gcc/configure b/gcc/configure -index c749ace011d..b4907d258be 100755 ---- a/gcc/configure -+++ b/gcc/configure -@@ -27959,6 +27959,49 @@ if test $gcc_cv_as_powerpc_mfcrf = yes; then - - $as_echo "#define HAVE_AS_MFCRF 1" >>confdefs.h - -+fi -+ -+ -+ case $target in -+ *-*-aix*) conftest_s=' .machine "pwr10" -+ .csect .text[PR] -+ tend. 0';; -+ *-*-darwin*) conftest_s=' .text -+ tend. 0';; -+ *) conftest_s=' .machine power10 -+ .text -+ tend. 0';; -+ esac -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for htm support on Power10" >&5 -+$as_echo_n "checking assembler for htm support on Power10... " >&6; } -+if ${gcc_cv_as_power10_htm+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ gcc_cv_as_power10_htm=no -+ if test x$gcc_cv_as != x; then -+ $as_echo "$conftest_s" > conftest.s -+ if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5' -+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; } -+ then -+ gcc_cv_as_power10_htm=yes -+ else -+ echo "configure: failed program was" >&5 -+ cat conftest.s >&5 -+ fi -+ rm -f conftest.o conftest.s -+ fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_power10_htm" >&5 -+$as_echo "$gcc_cv_as_power10_htm" >&6; } -+if test $gcc_cv_as_power10_htm = yes; then -+ -+$as_echo "#define HAVE_AS_POWER10_HTM 1" >>confdefs.h -+ - fi - - -diff --git a/gcc/configure.ac b/gcc/configure.ac -index 992a50e7b20..d369c4717b2 100644 ---- a/gcc/configure.ac -+++ b/gcc/configure.ac -@@ -5032,6 +5032,23 @@ gd: - [AC_DEFINE(HAVE_AS_MFCRF, 1, - [Define if your assembler supports mfcr field.])]) - -+ case $target in -+ *-*-aix*) conftest_s=' .machine "pwr10" -+ .csect .text[[PR]] -+ tend. 0';; -+ *-*-darwin*) conftest_s=' .text -+ tend. 0';; -+ *) conftest_s=' .machine power10 -+ .text -+ tend. 0';; -+ esac -+ -+ gcc_GAS_CHECK_FEATURE([htm support on Power10], -+ gcc_cv_as_power10_htm,, -+ [$conftest_s],, -+ [AC_DEFINE(HAVE_AS_POWER10_HTM, 1, -+ [Define if your assembler supports htm insns on power10.])]) -+ - case $target in - *-*-aix*) conftest_s=' .csect .text[[PR]] - LCF..0: -diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog -index 8de4af385a8..bd8c34b7179 100644 ---- a/gcc/cp/ChangeLog -+++ b/gcc/cp/ChangeLog -@@ -1,3 +1,173 @@ -+2023-12-24 Patrick Palka -+ -+ Backported from master: -+ 2023-09-22 Patrick Palka -+ -+ PR c++/111485 -+ * pt.cc (is_compatible_template_arg): New parameter 'args'. -+ Add the outer template arguments 'args' to 'new_args'. -+ (convert_template_argument): Pass 'args' to -+ is_compatible_template_arg. -+ -+2023-12-20 Patrick Palka -+ -+ Backported from master: -+ 2023-04-25 Patrick Palka -+ -+ PR c++/108975 -+ * pt.cc (value_dependent_expression_p) : -+ Suppress conservative early exit for reference variables -+ when DECL_HAS_VALUE_EXPR_P. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-08 Jakub Jelinek -+ -+ PR sanitizer/112727 -+ * cp-gimplify.cc (cp_fold): If SAVE_EXPR has been previously -+ folded, unshare_expr what is returned. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-04 Jakub Jelinek -+ -+ PR c++/112795 -+ * parser.cc (cp_parser_pragma_unroll): Use fold_non_dependent_expr -+ instead of maybe_constant_value. -+ -+2023-11-27 Patrick Palka -+ -+ Backported from master: -+ 2023-11-16 Patrick Palka -+ -+ PR c++/111703 -+ PR c++/107939 -+ * constexpr.cc (potential_constant_expression_1) : -+ Fix FUNCTION_POINTER_TYPE_P test. -+ -+2023-11-27 Patrick Palka -+ -+ Backported from master: -+ 2023-11-15 Patrick Palka -+ -+ PR c++/111703 -+ PR c++/112269 -+ * constexpr.cc (potential_constant_expression_1) : -+ Only consider var_in_maybe_constexpr_fn if 'now' is false. -+ : Likewise. -+ -+2023-11-17 Jason Merrill -+ -+ PR c++/112301 -+ PR c++/102191 -+ PR c++/33799 -+ * except.cc (maybe_splice_retval_cleanup): Clear -+ current_retval_sentinel when destroying retval. -+ * semantics.cc (nrv_data): Add in_nrv_cleanup. -+ (finalize_nrv): Set it. -+ (finalize_nrv_r): Fix handling of throwing cleanups. -+ -+2023-11-17 Jason Merrill -+ -+ * semantics.cc (finalize_nrv_r): [RETURN_EXPR]: Only replace the -+ INIT_EXPR. -+ -+2023-11-17 Jason Merrill -+ -+ PR c++/33799 -+ * except.cc (maybe_splice_retval_cleanup): Change -+ recognition of function body and try scopes. -+ * semantics.cc (do_poplevel): Call it after poplevel. -+ (at_try_scope): New. -+ * cp-tree.h (maybe_splice_retval_cleanup): Adjust. -+ -+2023-08-11 Jason Merrill -+ -+ PR c++/106310 -+ * parser.cc (cp_parser_template_name): Skip non-member -+ lookup after the template keyword. -+ (cp_parser_lookup_name): Pass down template_keyword_p. -+ -+2023-08-11 Jason Merrill -+ -+ PR c++/106890 -+ PR c++/109666 -+ * name-lookup.cc (maybe_push_to_top_level) -+ (maybe_pop_from_top_level): Split out... -+ * pt.cc (instantiate_body): ...from here. -+ * init.cc (maybe_instantiate_nsdmi_init): Use them. -+ * name-lookup.h: Declare them.. -+ -+2023-08-11 Jason Merrill -+ -+ PR c++/108099 -+ * decl.cc (grokdeclarator): Don't clear typedef_decl after 'unsigned -+ typedef' pedwarn. Use c_common_signed_or_unsigned_type. Also -+ handle 'signed typedef'. -+ -+2023-08-07 Patrick Palka -+ -+ Backported from master: -+ 2023-05-09 Patrick Palka -+ -+ PR c++/109761 -+ * parser.cc (cp_parser_class_specifier): Don't pass a class -+ context to noexcept_override_late_checks. -+ (noexcept_override_late_checks): Remove 'type' parameter -+ and use DECL_CONTEXT of 'fndecl' instead. -+ -+2023-07-12 Patrick Palka -+ -+ Backported from master: -+ 2023-06-29 Patrick Palka -+ -+ PR c++/110468 -+ * init.cc (maybe_instantiate_nsdmi_init): Mask out all -+ tsubst flags except for tf_warning_or_error. -+ -+2023-05-17 Jakub Jelinek -+ -+ Backported from master: -+ 2023-05-17 Jakub Jelinek -+ -+ PR c++/109868 -+ * init.cc (build_zero_init_1): Don't initialize zero-width bitfields. -+ For unions only initialize the first FIELD_DECL. -+ -+2023-05-15 Jason Merrill -+ -+ PR c++/109241 -+ * pt.cc (find_parameter_packs_r): Handle null TREE_BINFO. -+ -+2023-05-09 Patrick Palka -+ -+ Backported from master: -+ 2023-04-01 Patrick Palka -+ -+ PR c++/109160 -+ * cp-tree.h (do_auto_deduction): Add defaulted tmpl parameter. -+ * pt.cc (convert_template_argument): Pass 'in_decl' as 'tmpl' to -+ do_auto_deduction. -+ (tsubst_decl) : Pass 'tmpl' instead of 't' as -+ 'in_decl' to coerce_template_parms. -+ (unify) : Pass TPARMS_PRIMARY_TEMPLATE -+ as 'tmpl' to do_auto_deduction. -+ (do_auto_deduction): Document default arguments. Rename local -+ variable 'tmpl' to 'ctmpl'. Use 'tmpl' to obtain a full set of -+ template arguments for satisfaction in the adc_unify case. -+ -+2023-05-09 Jason Merrill -+ -+ PR c++/106740 -+ PR c++/105852 -+ * decl.cc (duplicate_decls): Change non-templated friend -+ check to an assert. -+ * pt.cc (tsubst_function_decl): Don't set DECL_TEMPLATE_INFO -+ on non-templated friends. -+ (tsubst_friend_function): Adjust. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/gcc/cp/constexpr.cc b/gcc/cp/constexpr.cc -index 46b2b0296c3..d2d02c282cd 100644 ---- a/gcc/cp/constexpr.cc -+++ b/gcc/cp/constexpr.cc -@@ -8777,7 +8777,12 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, bool now, - } - else if (fun) - { -- if (RECUR (fun, FUNCTION_POINTER_TYPE_P (fun) ? rval : any)) -+ if (TREE_TYPE (fun) -+ && FUNCTION_POINTER_TYPE_P (TREE_TYPE (fun))) -+ want_rval = rval; -+ else -+ want_rval = any; -+ if (RECUR (fun, want_rval)) - /* Might end up being a constant function pointer. But it - could also be a function object with constexpr op(), so - we pass 'any' so that the underlying VAR_DECL is deemed -@@ -8847,7 +8852,7 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, bool now, - return RECUR (DECL_VALUE_EXPR (t), rval); - } - if (want_rval -- && !var_in_maybe_constexpr_fn (t) -+ && (now || !var_in_maybe_constexpr_fn (t)) - && !type_dependent_expression_p (t) - && !decl_maybe_constant_var_p (t) - && (strict -@@ -8956,7 +8961,7 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, bool now, - STRIP_NOPS (x); - if (is_this_parameter (x) && !is_capture_proxy (x)) - { -- if (!var_in_maybe_constexpr_fn (x)) -+ if (now || !var_in_maybe_constexpr_fn (x)) - { - if (flags & tf_error) - error_at (loc, "use of % in a constant expression"); -diff --git a/gcc/cp/cp-gimplify.cc b/gcc/cp/cp-gimplify.cc -index 07620b4e01b..7ae5327f693 100644 ---- a/gcc/cp/cp-gimplify.cc -+++ b/gcc/cp/cp-gimplify.cc -@@ -2453,7 +2453,14 @@ cp_fold (tree x) - fold_cache = hash_map::create_ggc (101); - - if (tree *cached = fold_cache->get (x)) -- return *cached; -+ { -+ /* unshare_expr doesn't recurse into SAVE_EXPRs. If SAVE_EXPR's -+ argument has been folded into a tree invariant, make sure it is -+ unshared. See PR112727. */ -+ if (TREE_CODE (x) == SAVE_EXPR && *cached != x) -+ return unshare_expr (*cached); -+ return *cached; -+ } - - uid_sensitive_constexpr_evaluation_checker c; - -diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h -index 64b3196d1e9..5b3836422d6 100644 ---- a/gcc/cp/cp-tree.h -+++ b/gcc/cp/cp-tree.h -@@ -7014,7 +7014,7 @@ extern tree begin_eh_spec_block (void); - extern void finish_eh_spec_block (tree, tree); - extern tree build_eh_type_type (tree); - extern tree cp_protect_cleanup_actions (void); --extern void maybe_splice_retval_cleanup (tree); -+extern void maybe_splice_retval_cleanup (tree, bool); - extern tree maybe_set_retval_sentinel (void); - - extern tree template_parms_to_args (tree); -@@ -7295,7 +7295,8 @@ extern tree do_auto_deduction (tree, tree, tree, - auto_deduction_context - = adc_unspecified, - tree = NULL_TREE, -- int = LOOKUP_NORMAL); -+ int = LOOKUP_NORMAL, -+ tree = NULL_TREE); - extern tree type_uses_auto (tree); - extern tree type_uses_auto_or_concept (tree); - extern void append_type_to_template_for_access_check (tree, tree, tree, -diff --git a/gcc/cp/decl.cc b/gcc/cp/decl.cc -index ab9a009fb7e..22060b11176 100644 ---- a/gcc/cp/decl.cc -+++ b/gcc/cp/decl.cc -@@ -2666,10 +2666,11 @@ duplicate_decls (tree newdecl, tree olddecl, bool hiding, bool was_hidden) - = TINFO_USED_TEMPLATE_ID (new_template_info); - } - -- if (non_templated_friend_p (olddecl)) -- /* Don't copy tinfo from a non-templated friend (PR105761). */; -- else -- DECL_TEMPLATE_INFO (newdecl) = DECL_TEMPLATE_INFO (olddecl); -+ /* We don't want to copy template info from a non-templated friend -+ (PR105761), but these shouldn't have DECL_TEMPLATE_INFO now. */ -+ gcc_checking_assert (!DECL_TEMPLATE_INFO (olddecl) -+ || !non_templated_friend_p (olddecl)); -+ DECL_TEMPLATE_INFO (newdecl) = DECL_TEMPLATE_INFO (olddecl); - } - - if (DECL_DECLARES_FUNCTION_P (newdecl)) -@@ -12300,11 +12301,14 @@ grokdeclarator (const cp_declarator *declarator, - { - if (typedef_decl) - { -- pedwarn (loc, OPT_Wpedantic, "%qs specified with %qT", -- key, type); -+ pedwarn (loc, OPT_Wpedantic, -+ "%qs specified with typedef-name %qD", -+ key, typedef_decl); - ok = !flag_pedantic_errors; -- type = DECL_ORIGINAL_TYPE (typedef_decl); -- typedef_decl = NULL_TREE; -+ /* PR108099: __int128_t comes from c_common_nodes_and_builtins, -+ and is not built as a typedef. */ -+ if (is_typedef_decl (typedef_decl)) -+ type = DECL_ORIGINAL_TYPE (typedef_decl); - } - else if (declspecs->decltype_p) - error_at (loc, "%qs specified with %", key); -@@ -12357,7 +12361,7 @@ grokdeclarator (const cp_declarator *declarator, - else if (type == char_type_node) - type = unsigned_char_type_node; - else if (typedef_decl) -- type = unsigned_type_for (type); -+ type = c_common_unsigned_type (type); - else - type = unsigned_type_node; - } -@@ -12371,6 +12375,8 @@ grokdeclarator (const cp_declarator *declarator, - type = long_integer_type_node; - else if (short_p) - type = short_integer_type_node; -+ else if (signed_p && typedef_decl) -+ type = c_common_signed_type (type); - - if (decl_spec_seq_has_spec_p (declspecs, ds_complex)) - { -diff --git a/gcc/cp/except.cc b/gcc/cp/except.cc -index 58d8772fc95..b9f49d1bfc6 100644 ---- a/gcc/cp/except.cc -+++ b/gcc/cp/except.cc -@@ -1318,21 +1318,20 @@ maybe_set_retval_sentinel () - on throw. */ - - void --maybe_splice_retval_cleanup (tree compound_stmt) -+maybe_splice_retval_cleanup (tree compound_stmt, bool is_try) - { -- /* If we need a cleanup for the return value, add it in at the same level as -+ if (!current_function_decl || !cfun -+ || DECL_CONSTRUCTOR_P (current_function_decl) -+ || DECL_DESTRUCTOR_P (current_function_decl) -+ || !current_retval_sentinel) -+ return; -+ -+ /* if we need a cleanup for the return value, add it in at the same level as - pushdecl_outermost_localscope. And also in try blocks. */ -- const bool function_body -- = (current_binding_level->level_chain -- && current_binding_level->level_chain->kind == sk_function_parms -- /* When we're processing a default argument, c_f_d may not have been -- set. */ -- && current_function_decl); -- -- if ((function_body || current_binding_level->kind == sk_try) -- && !DECL_CONSTRUCTOR_P (current_function_decl) -- && !DECL_DESTRUCTOR_P (current_function_decl) -- && current_retval_sentinel) -+ cp_binding_level *b = current_binding_level; -+ const bool function_body = b->kind == sk_function_parms; -+ -+ if (function_body || is_try) - { - location_t loc = DECL_SOURCE_LOCATION (current_function_decl); - tree_stmt_iterator iter = tsi_start (compound_stmt); -@@ -1358,6 +1357,14 @@ maybe_splice_retval_cleanup (tree compound_stmt) - tsi_delink (&iter); - } - tree dtor = build_cleanup (retval); -+ if (!function_body) -+ { -+ /* Clear the sentinel so we don't try to destroy the retval again on -+ rethrow (c++/112301). */ -+ tree clear = build2 (MODIFY_EXPR, boolean_type_node, -+ current_retval_sentinel, boolean_false_node); -+ dtor = build2 (COMPOUND_EXPR, void_type_node, clear, dtor); -+ } - tree cond = build3 (COND_EXPR, void_type_node, current_retval_sentinel, - dtor, void_node); - tree cleanup = build_stmt (loc, CLEANUP_STMT, -diff --git a/gcc/cp/init.cc b/gcc/cp/init.cc -index 75dbfe112b5..202e820d8b2 100644 ---- a/gcc/cp/init.cc -+++ b/gcc/cp/init.cc -@@ -189,15 +189,21 @@ build_zero_init_1 (tree type, tree nelts, bool static_storage_p, - init = build_zero_cst (type); - else if (RECORD_OR_UNION_CODE_P (TREE_CODE (type))) - { -- tree field; -+ tree field, next; - vec *v = NULL; - - /* Iterate over the fields, building initializations. */ -- for (field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field)) -+ for (field = TYPE_FIELDS (type); field; field = next) - { -+ next = DECL_CHAIN (field); -+ - if (TREE_CODE (field) != FIELD_DECL) - continue; - -+ /* For unions, only the first field is initialized. */ -+ if (TREE_CODE (type) == UNION_TYPE) -+ next = NULL_TREE; -+ - if (TREE_TYPE (field) == error_mark_node) - continue; - -@@ -212,6 +218,11 @@ build_zero_init_1 (tree type, tree nelts, bool static_storage_p, - continue; - } - -+ /* Don't add zero width bitfields. */ -+ if (DECL_C_BIT_FIELD (field) -+ && integer_zerop (DECL_SIZE (field))) -+ continue; -+ - /* Note that for class types there will be FIELD_DECLs - corresponding to base classes as well. Thus, iterating - over TYPE_FIELDs will result in correct initialization of -@@ -230,10 +241,6 @@ build_zero_init_1 (tree type, tree nelts, bool static_storage_p, - if (value) - CONSTRUCTOR_APPEND_ELT(v, field, value); - } -- -- /* For unions, only the first field is initialized. */ -- if (TREE_CODE (type) == UNION_TYPE) -- break; - } - - /* Build a constructor to contain the initializations. */ -@@ -572,6 +579,10 @@ maybe_instantiate_nsdmi_init (tree member, tsubst_flags_t complain) - tree init = DECL_INITIAL (member); - if (init && DECL_LANG_SPECIFIC (member) && DECL_TEMPLATE_INFO (member)) - { -+ /* Clear any special tsubst flags; the result of NSDMI instantiation -+ should be independent of the substitution context. */ -+ complain &= tf_warning_or_error; -+ - init = DECL_INITIAL (DECL_TI_TEMPLATE (member)); - location_t expr_loc - = cp_expr_loc_or_loc (init, DECL_SOURCE_LOCATION (member)); -@@ -599,15 +610,9 @@ maybe_instantiate_nsdmi_init (tree member, tsubst_flags_t complain) - bool pushed = false; - tree ctx = DECL_CONTEXT (member); - -- processing_template_decl_sentinel ptds (/*reset*/false); -+ bool push_to_top = maybe_push_to_top_level (member); - if (!currently_open_class (ctx)) - { -- if (!LOCAL_CLASS_P (ctx)) -- push_to_top_level (); -- else -- /* push_to_top_level would lose the necessary function context, -- just reset processing_template_decl. */ -- processing_template_decl = 0; - push_nested_class (ctx); - push_deferring_access_checks (dk_no_deferred); - pushed = true; -@@ -635,9 +640,8 @@ maybe_instantiate_nsdmi_init (tree member, tsubst_flags_t complain) - { - pop_deferring_access_checks (); - pop_nested_class (); -- if (!LOCAL_CLASS_P (ctx)) -- pop_from_top_level (); - } -+ maybe_pop_from_top_level (push_to_top); - - input_location = sloc; - } -diff --git a/gcc/cp/name-lookup.cc b/gcc/cp/name-lookup.cc -index 56256babda8..48c7badc865 100644 ---- a/gcc/cp/name-lookup.cc -+++ b/gcc/cp/name-lookup.cc -@@ -8451,6 +8451,43 @@ pop_from_top_level (void) - free_saved_scope = s; - } - -+/* Like push_to_top_level, but not if D is function-local. Returns whether we -+ did push to top. */ -+ -+bool -+maybe_push_to_top_level (tree d) -+{ -+ /* Push if D isn't function-local, or is a lambda function, for which name -+ resolution is already done. */ -+ bool push_to_top -+ = !(current_function_decl -+ && !LAMBDA_FUNCTION_P (d) -+ && decl_function_context (d) == current_function_decl); -+ -+ if (push_to_top) -+ push_to_top_level (); -+ else -+ { -+ gcc_assert (!processing_template_decl); -+ push_function_context (); -+ cp_unevaluated_operand = 0; -+ c_inhibit_evaluation_warnings = 0; -+ } -+ -+ return push_to_top; -+} -+ -+/* Return from whatever maybe_push_to_top_level did. */ -+ -+void -+maybe_pop_from_top_level (bool push_to_top) -+{ -+ if (push_to_top) -+ pop_from_top_level (); -+ else -+ pop_function_context (); -+} -+ - /* Push into the scope of the namespace NS, even if it is deeply - nested within another namespace. */ - -diff --git a/gcc/cp/name-lookup.h b/gcc/cp/name-lookup.h -index fa039028847..7336df76741 100644 ---- a/gcc/cp/name-lookup.h -+++ b/gcc/cp/name-lookup.h -@@ -468,6 +468,8 @@ extern void push_nested_namespace (tree); - extern void pop_nested_namespace (tree); - extern void push_to_top_level (void); - extern void pop_from_top_level (void); -+extern bool maybe_push_to_top_level (tree); -+extern void maybe_pop_from_top_level (bool); - extern void push_using_decl_bindings (tree, tree); - - /* Lower level interface for modules. */ -diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc -index d2c3fc1d0b9..194f9b07d83 100644 ---- a/gcc/cp/parser.cc -+++ b/gcc/cp/parser.cc -@@ -249,7 +249,7 @@ static cp_token_cache *cp_token_cache_new - static tree cp_parser_late_noexcept_specifier - (cp_parser *, tree); - static void noexcept_override_late_checks -- (tree, tree); -+ (tree); - - static void cp_parser_initial_pragma - (cp_token *); -@@ -2660,7 +2660,7 @@ static tree cp_parser_objc_struct_declaration - /* Utility Routines */ - - static cp_expr cp_parser_lookup_name -- (cp_parser *, tree, enum tag_types, bool, bool, bool, tree *, location_t); -+ (cp_parser *, tree, enum tag_types, int, bool, bool, tree *, location_t); - static tree cp_parser_lookup_name_simple - (cp_parser *, tree, location_t); - static tree cp_parser_maybe_treat_template_as_class -@@ -18590,7 +18590,7 @@ cp_parser_template_name (cp_parser* parser, - /* Look up the name. */ - decl = cp_parser_lookup_name (parser, identifier, - tag_type, -- /*is_template=*/true, -+ /*is_template=*/1 + template_keyword_p, - /*is_namespace=*/false, - check_dependency_p, - /*ambiguous_decls=*/NULL, -@@ -26151,7 +26151,7 @@ cp_parser_class_specifier_1 (cp_parser* parser) - /* The finish_struct call above performed various override checking, - but it skipped unparsed noexcept-specifier operands. Now that we - have resolved them, check again. */ -- noexcept_override_late_checks (type, decl); -+ noexcept_override_late_checks (decl); - - /* Remove any member-function parameters from the symbol table. */ - pop_injected_parms (); -@@ -27876,14 +27876,13 @@ cp_parser_late_noexcept_specifier (cp_parser *parser, tree default_arg) - } - - /* Perform late checking of overriding function with respect to their -- noexcept-specifiers. TYPE is the class and FNDECL is the function -- that potentially overrides some virtual function with the same -- signature. */ -+ noexcept-specifiers. FNDECL is the member function that potentially -+ overrides some virtual function with the same signature. */ - - static void --noexcept_override_late_checks (tree type, tree fndecl) -+noexcept_override_late_checks (tree fndecl) - { -- tree binfo = TYPE_BINFO (type); -+ tree binfo = TYPE_BINFO (DECL_CONTEXT (fndecl)); - tree base_binfo; - - if (DECL_STATIC_FUNCTION_P (fndecl)) -@@ -30389,7 +30388,7 @@ prefer_type_arg (tag_types tag_type) - refer to types are ignored. - - If IS_TEMPLATE is TRUE, bindings that do not refer to templates are -- ignored. -+ ignored. If IS_TEMPLATE IS 2, the 'template' keyword was specified. - - If IS_NAMESPACE is TRUE, bindings that do not refer to namespaces - are ignored. -@@ -30404,7 +30403,7 @@ prefer_type_arg (tag_types tag_type) - static cp_expr - cp_parser_lookup_name (cp_parser *parser, tree name, - enum tag_types tag_type, -- bool is_template, -+ int is_template, - bool is_namespace, - bool check_dependency, - tree *ambiguous_decls, -@@ -30589,7 +30588,14 @@ cp_parser_lookup_name (cp_parser *parser, tree name, - else - decl = NULL_TREE; - -- if (!decl) -+ /* If we didn't find a member and have dependent bases, the member lookup -+ is now dependent. */ -+ if (!dep && !decl && any_dependent_bases_p (object_type)) -+ dep = true; -+ -+ if (dep && is_template == 2) -+ /* The template keyword specifies a dependent template. */; -+ else if (!decl) - /* Look it up in the enclosing context. DR 141: When looking for a - template-name after -> or ., only consider class templates. */ - decl = lookup_name (name, is_namespace ? LOOK_want::NAMESPACE -@@ -30602,8 +30608,7 @@ cp_parser_lookup_name (cp_parser *parser, tree name, - - /* If we know we're looking for a type (e.g. A in p->A::x), - mock up a typename. */ -- if (!decl && object_type && tag_type != none_type -- && dependentish_scope_p (object_type)) -+ if (!decl && dep && tag_type != none_type) - { - tree type = build_typename_type (object_type, name, name, - typename_type); -@@ -47664,7 +47669,7 @@ cp_parser_pragma_unroll (cp_parser *parser, cp_token *pragma_tok) - location_t location = cp_lexer_peek_token (parser->lexer)->location; - tree expr = cp_parser_constant_expression (parser); - unsigned short unroll; -- expr = maybe_constant_value (expr); -+ expr = fold_non_dependent_expr (expr); - HOST_WIDE_INT lunroll = 0; - if (!INTEGRAL_TYPE_P (TREE_TYPE (expr)) - || TREE_CODE (expr) != INTEGER_CST -diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc -index b5fabe4341e..dc8121e1b4b 100644 ---- a/gcc/cp/pt.cc -+++ b/gcc/cp/pt.cc -@@ -4106,10 +4106,14 @@ find_parameter_packs_r (tree *tp, int *walk_subtrees, void* data) - case TAG_DEFN: - t = TREE_TYPE (t); - if (CLASS_TYPE_P (t)) -- /* Local class, need to look through the whole definition. */ -- for (tree bb : BINFO_BASE_BINFOS (TYPE_BINFO (t))) -- cp_walk_tree (&BINFO_TYPE (bb), &find_parameter_packs_r, -- ppd, ppd->visited); -+ { -+ /* Local class, need to look through the whole definition. -+ TYPE_BINFO might be unset for a partial instantiation. */ -+ if (TYPE_BINFO (t)) -+ for (tree bb : BINFO_BASE_BINFOS (TYPE_BINFO (t))) -+ cp_walk_tree (&BINFO_TYPE (bb), &find_parameter_packs_r, -+ ppd, ppd->visited); -+ } - else - /* Enum, look at the values. */ - for (tree l = TYPE_VALUES (t); l; l = TREE_CHAIN (l)) -@@ -8322,7 +8326,7 @@ canonicalize_expr_argument (tree arg, tsubst_flags_t complain) - constrained than the parameter. */ - - static bool --is_compatible_template_arg (tree parm, tree arg) -+is_compatible_template_arg (tree parm, tree arg, tree args) - { - tree parm_cons = get_constraints (parm); - -@@ -8343,6 +8347,7 @@ is_compatible_template_arg (tree parm, tree arg) - { - tree aparms = DECL_INNERMOST_TEMPLATE_PARMS (arg); - new_args = template_parms_level_to_args (aparms); -+ new_args = add_to_template_args (args, new_args); - ++processing_template_decl; - parm_cons = tsubst_constraint_info (parm_cons, new_args, - tf_none, NULL_TREE); -@@ -8601,7 +8606,7 @@ convert_template_argument (tree parm, - // Check that the constraints are compatible before allowing the - // substitution. - if (val != error_mark_node) -- if (!is_compatible_template_arg (parm, arg)) -+ if (!is_compatible_template_arg (parm, arg, args)) - { - if (in_decl && (complain & tf_error)) - { -@@ -8636,7 +8641,7 @@ convert_template_argument (tree parm, - else if (tree a = type_uses_auto (t)) - { - t = do_auto_deduction (t, arg, a, complain, adc_unify, args, -- LOOKUP_IMPLICIT); -+ LOOKUP_IMPLICIT, /*tmpl=*/in_decl); - if (t == error_mark_node) - return error_mark_node; - } -@@ -11339,9 +11344,10 @@ tsubst_friend_function (tree decl, tree args) - tree new_friend_template_info = DECL_TEMPLATE_INFO (new_friend); - tree new_friend_result_template_info = NULL_TREE; - bool new_friend_is_defn = -- (DECL_INITIAL (DECL_TEMPLATE_RESULT -- (template_for_substitution (new_friend))) -- != NULL_TREE); -+ (new_friend_template_info -+ && (DECL_INITIAL (DECL_TEMPLATE_RESULT -+ (template_for_substitution (new_friend))) -+ != NULL_TREE)); - tree not_tmpl = new_friend; - - if (TREE_CODE (new_friend) == TEMPLATE_DECL) -@@ -14175,6 +14181,10 @@ tsubst_function_decl (tree t, tree args, tsubst_flags_t complain, - && !LAMBDA_FUNCTION_P (t)) - return t; - -+ /* A non-templated friend doesn't get DECL_TEMPLATE_INFO. */ -+ if (non_templated_friend_p (t)) -+ goto friend_case; -+ - /* Calculate the most general template of which R is a - specialization. */ - gen_tmpl = most_general_template (DECL_TI_TEMPLATE (t)); -@@ -14220,6 +14230,7 @@ tsubst_function_decl (tree t, tree args, tsubst_flags_t complain, - tsubst_friend_function, and we want only to create a - new decl (R) with appropriate types so that we can call - determine_specialization. */ -+ friend_case: - gen_tmpl = NULL_TREE; - argvec = NULL_TREE; - } -@@ -14415,7 +14426,7 @@ tsubst_function_decl (tree t, tree args, tsubst_flags_t complain, - /* If this is an instantiation of a member template, clone it. - If it isn't, that'll be handled by - clone_constructors_and_destructors. */ -- if (PRIMARY_TEMPLATE_P (gen_tmpl)) -+ if (gen_tmpl && PRIMARY_TEMPLATE_P (gen_tmpl)) - clone_cdtor (r, /*update_methods=*/false); - } - else if ((complain & tf_error) != 0 -@@ -15022,7 +15033,7 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain) - if (argvec != error_mark_node) - argvec = (coerce_innermost_template_parms - (DECL_TEMPLATE_PARMS (gen_tmpl), -- argvec, t, complain, -+ argvec, tmpl, complain, - /*all*/true, /*defarg*/true)); - if (argvec == error_mark_node) - RETURN (error_mark_node); -@@ -24449,7 +24460,9 @@ unify (tree tparms, tree targs, tree parm, tree arg, int strict, - if (tree a = type_uses_auto (tparm)) - { - tparm = do_auto_deduction (tparm, arg, a, -- complain, adc_unify, targs); -+ complain, adc_unify, targs, -+ LOOKUP_NORMAL, -+ TPARMS_PRIMARY_TEMPLATE (tparms)); - if (tparm == error_mark_node) - return 1; - } -@@ -26493,20 +26506,7 @@ instantiate_body (tree pattern, tree args, tree d, bool nested_p) - if (current_function_decl) - save_omp_privatization_clauses (omp_privatization_save); - -- bool push_to_top -- = !(current_function_decl -- && !LAMBDA_FUNCTION_P (d) -- && decl_function_context (d) == current_function_decl); -- -- if (push_to_top) -- push_to_top_level (); -- else -- { -- gcc_assert (!processing_template_decl); -- push_function_context (); -- cp_unevaluated_operand = 0; -- c_inhibit_evaluation_warnings = 0; -- } -+ bool push_to_top = maybe_push_to_top_level (d); - - if (VAR_P (d)) - { -@@ -26619,10 +26619,7 @@ instantiate_body (tree pattern, tree args, tree d, bool nested_p) - if (!nested_p) - TI_PENDING_TEMPLATE_FLAG (DECL_TEMPLATE_INFO (d)) = 0; - -- if (push_to_top) -- pop_from_top_level (); -- else -- pop_function_context (); -+ maybe_pop_from_top_level (push_to_top); - - if (current_function_decl) - restore_omp_privatization_clauses (omp_privatization_save); -@@ -27644,9 +27641,7 @@ value_dependent_expression_p (tree expression) - case VAR_DECL: - /* A constant with literal type and is initialized - with an expression that is value-dependent. */ -- if (DECL_DEPENDENT_INIT_P (expression) -- /* FIXME cp_finish_decl doesn't fold reference initializers. */ -- || TYPE_REF_P (TREE_TYPE (expression))) -+ if (DECL_DEPENDENT_INIT_P (expression)) - return true; - if (DECL_HAS_VALUE_EXPR_P (expression)) - { -@@ -27661,6 +27656,9 @@ value_dependent_expression_p (tree expression) - && value_expr == error_mark_node)) - return true; - } -+ else if (TYPE_REF_P (TREE_TYPE (expression))) -+ /* FIXME cp_finish_decl doesn't fold reference initializers. */ -+ return true; - return false; - - case DYNAMIC_CAST_EXPR: -@@ -30334,13 +30332,20 @@ do_class_deduction (tree ptype, tree tmpl, tree init, - adc_requirement contexts to communicate the necessary template arguments - to satisfaction. OUTER_TARGS is ignored in other contexts. - -- For partial-concept-ids, extra args may be appended to the list of deduced -- template arguments prior to determining constraint satisfaction. */ -+ Additionally for adc_unify contexts TMPL is the template for which TYPE -+ is a template parameter type. -+ -+ For partial-concept-ids, extra args from OUTER_TARGS, TMPL and the current -+ scope may be appended to the list of deduced template arguments prior to -+ determining constraint satisfaction as appropriate. */ - - tree - do_auto_deduction (tree type, tree init, tree auto_node, -- tsubst_flags_t complain, auto_deduction_context context, -- tree outer_targs, int flags) -+ tsubst_flags_t complain /* = tf_warning_or_error */, -+ auto_deduction_context context /* = adc_unspecified */, -+ tree outer_targs /* = NULL_TREE */, -+ int flags /* = LOOKUP_NORMAL */, -+ tree tmpl /* = NULL_TREE */) - { - if (init == error_mark_node) - return error_mark_node; -@@ -30359,9 +30364,9 @@ do_auto_deduction (tree type, tree init, tree auto_node, - auto_node. */ - complain &= ~tf_partial; - -- if (tree tmpl = CLASS_PLACEHOLDER_TEMPLATE (auto_node)) -+ if (tree ctmpl = CLASS_PLACEHOLDER_TEMPLATE (auto_node)) - /* C++17 class template argument deduction. */ -- return do_class_deduction (type, tmpl, init, flags, complain); -+ return do_class_deduction (type, ctmpl, init, flags, complain); - - if (init == NULL_TREE || TREE_TYPE (init) == NULL_TREE) - /* Nothing we can do with this, even in deduction context. */ -@@ -30521,7 +30526,10 @@ do_auto_deduction (tree type, tree init, tree auto_node, - } - } - -- tree full_targs = add_to_template_args (outer_targs, targs); -+ tree full_targs = outer_targs; -+ if (context == adc_unify && tmpl) -+ full_targs = add_outermost_template_args (tmpl, full_targs); -+ full_targs = add_to_template_args (full_targs, targs); - - /* HACK: Compensate for callers not always communicating all levels of - outer template arguments by filling in the outermost missing levels -diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc -index ee0db331f34..c42402c7c14 100644 ---- a/gcc/cp/semantics.cc -+++ b/gcc/cp/semantics.cc -@@ -627,6 +627,17 @@ set_cleanup_locs (tree stmts, location_t loc) - set_cleanup_locs (stmt, loc); - } - -+/* True iff the innermost block scope is a try block. */ -+ -+static bool -+at_try_scope () -+{ -+ cp_binding_level *b = current_binding_level; -+ while (b && b->kind == sk_cleanup) -+ b = b->level_chain; -+ return b && b->kind == sk_try; -+} -+ - /* Finish a scope. */ - - tree -@@ -634,11 +645,14 @@ do_poplevel (tree stmt_list) - { - tree block = NULL; - -- maybe_splice_retval_cleanup (stmt_list); -+ bool was_try = at_try_scope (); - - if (stmts_are_full_exprs_p ()) - block = poplevel (kept_level_p (), 1, 0); - -+ /* This needs to come after poplevel merges sk_cleanup statement_lists. */ -+ maybe_splice_retval_cleanup (stmt_list, was_try); -+ - stmt_list = pop_stmt_list (stmt_list); - - /* input_location is the last token of the scope, usually a }. */ -@@ -4829,6 +4843,7 @@ public: - tree var; - tree result; - hash_table > visited; -+ bool in_nrv_cleanup; - }; - - /* Helper function for walk_tree, used by finalize_nrv below. */ -@@ -4845,14 +4860,50 @@ finalize_nrv_r (tree* tp, int* walk_subtrees, void* data) - *walk_subtrees = 0; - /* Change all returns to just refer to the RESULT_DECL; this is a nop, - but differs from using NULL_TREE in that it indicates that we care -- about the value of the RESULT_DECL. */ -+ about the value of the RESULT_DECL. But preserve anything appended -+ by check_return_expr. */ - else if (TREE_CODE (*tp) == RETURN_EXPR) -- TREE_OPERAND (*tp, 0) = dp->result; -+ { -+ tree *p = &TREE_OPERAND (*tp, 0); -+ while (TREE_CODE (*p) == COMPOUND_EXPR) -+ p = &TREE_OPERAND (*p, 0); -+ gcc_checking_assert (TREE_CODE (*p) == INIT_EXPR -+ && TREE_OPERAND (*p, 0) == dp->result); -+ *p = dp->result; -+ } - /* Change all cleanups for the NRV to only run when an exception is - thrown. */ - else if (TREE_CODE (*tp) == CLEANUP_STMT - && CLEANUP_DECL (*tp) == dp->var) -- CLEANUP_EH_ONLY (*tp) = 1; -+ { -+ dp->in_nrv_cleanup = true; -+ cp_walk_tree (&CLEANUP_BODY (*tp), finalize_nrv_r, data, 0); -+ dp->in_nrv_cleanup = false; -+ cp_walk_tree (&CLEANUP_EXPR (*tp), finalize_nrv_r, data, 0); -+ *walk_subtrees = 0; -+ -+ CLEANUP_EH_ONLY (*tp) = true; -+ -+ /* If a cleanup might throw, we need to clear current_retval_sentinel on -+ the exception path so an outer cleanup added by -+ maybe_splice_retval_cleanup doesn't run. */ -+ if (cp_function_chain->throwing_cleanup) -+ { -+ tree clear = build2 (MODIFY_EXPR, boolean_type_node, -+ current_retval_sentinel, -+ boolean_false_node); -+ -+ /* We're already only on the EH path, just prepend it. */ -+ tree &exp = CLEANUP_EXPR (*tp); -+ exp = build2 (COMPOUND_EXPR, void_type_node, clear, exp); -+ } -+ } -+ /* Disable maybe_splice_retval_cleanup within the NRV cleanup scope, we don't -+ want to destroy the retval before the variable goes out of scope. */ -+ else if (TREE_CODE (*tp) == CLEANUP_STMT -+ && dp->in_nrv_cleanup -+ && CLEANUP_DECL (*tp) == dp->result) -+ CLEANUP_EXPR (*tp) = void_node; - /* Replace the DECL_EXPR for the NRV with an initialization of the - RESULT_DECL, if needed. */ - else if (TREE_CODE (*tp) == DECL_EXPR -@@ -4908,6 +4959,7 @@ finalize_nrv (tree *tp, tree var, tree result) - - data.var = var; - data.result = result; -+ data.in_nrv_cleanup = false; - cp_walk_tree (tp, finalize_nrv_r, &data, 0); - } - -diff --git a/gcc/cprop.cc b/gcc/cprop.cc -index 2a99553a5a5..f049e6df857 100644 ---- a/gcc/cprop.cc -+++ b/gcc/cprop.cc -@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3. If not see - #include "coretypes.h" - #include "backend.h" - #include "rtl.h" -+#include "rtlanal.h" - #include "cfghooks.h" - #include "df.h" - #include "insn-config.h" -@@ -795,7 +796,8 @@ try_replace_reg (rtx from, rtx to, rtx_insn *insn) - /* If we've failed perform the replacement, have a single SET to - a REG destination and don't yet have a note, add a REG_EQUAL note - to not lose information. */ -- if (!success && note == 0 && set != 0 && REG_P (SET_DEST (set))) -+ if (!success && note == 0 && set != 0 && REG_P (SET_DEST (set)) -+ && !contains_paradoxical_subreg_p (SET_SRC (set))) - note = set_unique_reg_note (insn, REG_EQUAL, copy_rtx (src)); - } - -diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog -index 4218c9aec47..09a22fac30f 100644 ---- a/gcc/d/ChangeLog -+++ b/gcc/d/ChangeLog -@@ -1,3 +1,117 @@ -+2023-10-29 Iain Buclaw -+ -+ Backported from master: -+ 2023-10-29 Iain Buclaw -+ -+ PR d/110712 -+ * d-codegen.cc (d_build_call): Update call to convert_for_argument. -+ * d-convert.cc (is_valist_parameter_type): New function. -+ (check_valist_conversion): New function. -+ (convert_for_assignment): Update signature. Add check whether -+ assigning va_list is permissible. -+ (convert_for_argument): Likewise. -+ * d-tree.h (convert_for_assignment): Update signature. -+ (convert_for_argument): Likewise. -+ * expr.cc (ExprVisitor::visit (AssignExp *)): Update call to -+ convert_for_assignment. -+ -+2023-10-28 Iain Buclaw -+ -+ Backported from master: -+ 2023-10-28 Iain Buclaw -+ -+ PR d/112270 -+ * d-builtins.cc (d_build_d_type_nodes): Initialize d_bool_false_node, -+ d_bool_true_node. -+ * d-codegen.cc (build_array_struct_comparison): Use d_bool_false_node -+ instead of boolean_false_node. -+ * d-convert.cc (d_truthvalue_conversion): Use d_bool_false_node and -+ d_bool_true_node instead of boolean_false_node and boolean_true_node. -+ * d-tree.h (enum d_tree_index): Add DTI_BOOL_FALSE and DTI_BOOL_TRUE. -+ (d_bool_false_node): New macro. -+ (d_bool_true_node): New macro. -+ * modules.cc (build_dso_cdtor_fn): Use d_bool_false_node and -+ d_bool_true_node instead of boolean_false_node and boolean_true_node. -+ (register_moduleinfo): Use d_bool_type instead of boolean_type_node. -+ -+2023-08-15 Iain Buclaw -+ -+ PR d/110959 -+ * dmd/canthrow.d (Dsymbol_canThrow): Use foreachVar. -+ * dmd/declaration.d (TupleDeclaration::needThis): Likewise. -+ (TupleDeclaration::foreachVar): New function. -+ (VarDeclaration::setFieldOffset): Use foreachVar. -+ * dmd/dinterpret.d (Interpreter::visit (DeclarationExp)): Likewise. -+ * dmd/dsymbolsem.d (DsymbolSemanticVisitor::visit (VarDeclaration)): -+ Don't push tuple field members to the scope symbol table. -+ (determineFields): Handle pushing tuple field members here instead. -+ * dmd/dtoh.d (ToCppBuffer::visit (VarDeclaration)): Visit all tuple -+ fields. -+ (ToCppBuffer::visit (TupleDeclaration)): New function. -+ * dmd/expression.d (expandAliasThisTuples): Use foreachVar. -+ * dmd/foreachvar.d (VarWalker::visit (DeclarationExp)): Likewise. -+ * dmd/ob.d (genKill): Likewise. -+ (checkObErrors): Likewise. -+ * dmd/semantic2.d (Semantic2Visitor::visit (TupleDeclaration)): Visit -+ all tuple fields. -+ -+2023-07-07 Iain Buclaw -+ -+ Backported from master: -+ 2023-07-07 Iain Buclaw -+ -+ PR d/108842 -+ * decl.cc (DeclVisitor::visit (VarDeclaration *)): Only emit scalar -+ manifest constants. -+ (get_symbol_decl): Don't generate CONST_DECL for non-scalar manifest -+ constants. -+ * imports.cc (ImportVisitor::visit (VarDeclaration *)): New method. -+ -+2023-07-02 Iain Buclaw -+ -+ Backported from master: -+ 2023-07-02 Iain Buclaw -+ -+ PR d/110516 -+ * intrinsics.cc (expand_volatile_load): Set TREE_SIDE_EFFECTS on the -+ expanded expression. -+ (expand_volatile_store): Likewise. -+ -+2023-07-01 Iain Buclaw -+ -+ Backported from master: -+ 2023-07-01 Iain Buclaw -+ -+ PR d/110514 -+ * decl.cc (get_symbol_decl): Set TREE_READONLY on certain kinds of -+ const and immutable variables. -+ * expr.cc (ExprVisitor::visit (ArrayLiteralExp *)): Set TREE_READONLY -+ on immutable dynamic array literals. -+ -+2023-06-26 Iain Buclaw -+ -+ Backported from master: -+ 2023-06-26 Iain Buclaw -+ -+ PR d/110359 -+ * d-convert.cc (convert_for_rvalue): Only apply the @safe boolean -+ conversion to boolean fields of a union. -+ (convert_for_condition): Call convert_for_rvalue in the default case. -+ -+2023-06-26 Iain Buclaw -+ -+ Backported from master: -+ 2023-06-26 Iain Buclaw -+ -+ PR d/110113 -+ * dmd/escape.d (checkMutableArguments): Always allocate new buffer for -+ computing escapeBy. -+ -+2023-06-06 Iain Buclaw -+ -+ * dmd/MERGE: Merge upstream dmd 316b89f1e3. -+ * dmd/VERSION: Bump version to v2.100.2. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/gcc/d/d-builtins.cc b/gcc/d/d-builtins.cc -index 7e7fb75bdc5..7d659494184 100644 ---- a/gcc/d/d-builtins.cc -+++ b/gcc/d/d-builtins.cc -@@ -846,6 +846,9 @@ d_build_d_type_nodes (void) - d_bool_type = make_unsigned_type (1); - TREE_SET_CODE (d_bool_type, BOOLEAN_TYPE); - -+ d_bool_false_node = TYPE_MIN_VALUE (d_bool_type); -+ d_bool_true_node = TYPE_MAX_VALUE (d_bool_type); -+ - char8_type_node = make_unsigned_type (8); - TYPE_STRING_FLAG (char8_type_node) = 1; - -diff --git a/gcc/d/d-codegen.cc b/gcc/d/d-codegen.cc -index dfeae831801..bdcac5d9825 100644 ---- a/gcc/d/d-codegen.cc -+++ b/gcc/d/d-codegen.cc -@@ -1105,7 +1105,7 @@ build_array_struct_comparison (tree_code code, StructDeclaration *sd, - if (length == 0 || result OP 0) break; */ - t = build_boolop (EQ_EXPR, length, d_convert (lentype, integer_zero_node)); - t = build_boolop (TRUTH_ORIF_EXPR, t, build_boolop (code, result, -- boolean_false_node)); -+ d_bool_false_node)); - t = build1 (EXIT_EXPR, void_type_node, t); - add_stmt (t); - -@@ -2197,14 +2197,16 @@ d_build_call (TypeFunction *tf, tree callable, tree object, - for (size_t i = 0; i < arguments->length; ++i) - { - Expression *arg = (*arguments)[i]; -- tree targ = build_expr (arg); -+ tree targ; - - if (i - varargs < nparams && i >= varargs) - { - /* Actual arguments for declared formal arguments. */ - Parameter *parg = tf->parameterList[i - varargs]; -- targ = convert_for_argument (targ, parg); -+ targ = convert_for_argument (arg, parg); - } -+ else -+ targ = build_expr (arg); - - /* Don't pass empty aggregates by value. */ - if (empty_aggregate_p (TREE_TYPE (targ)) && !TREE_ADDRESSABLE (targ) -diff --git a/gcc/d/d-convert.cc b/gcc/d/d-convert.cc -index ec5da6c10a6..13fc5e7d2e2 100644 ---- a/gcc/d/d-convert.cc -+++ b/gcc/d/d-convert.cc -@@ -132,13 +132,13 @@ d_truthvalue_conversion (tree expr) - return expr; - - case INTEGER_CST: -- return integer_zerop (expr) ? boolean_false_node -- : boolean_true_node; -+ return integer_zerop (expr) ? d_bool_false_node -+ : d_bool_true_node; - - case REAL_CST: - return real_compare (NE_EXPR, &TREE_REAL_CST (expr), &dconst0) -- ? boolean_true_node -- : boolean_false_node; -+ ? d_bool_true_node -+ : d_bool_false_node; - - case ADDR_EXPR: - /* If we are taking the address of a decl that can never be null, -@@ -148,7 +148,7 @@ d_truthvalue_conversion (tree expr) - warning (OPT_Waddress, - "the address of %qD will always evaluate as %", - TREE_OPERAND (expr, 0)); -- return boolean_true_node; -+ return d_bool_true_node; - } - break; - -@@ -620,7 +620,7 @@ convert_expr (tree exp, Type *etype, Type *totype) - return result ? result : convert (build_ctype (totype), exp); - } - --/* Return a TREE represenwation of EXPR, whose type has been converted from -+/* Return a TREE representation of EXPR, whose type has been converted from - * ETYPE to TOTYPE, and is being used in an rvalue context. */ - - tree -@@ -635,20 +635,27 @@ convert_for_rvalue (tree expr, Type *etype, Type *totype) - { - /* If casting from bool, the result is either 0 or 1, any other value - violates @safe code, so enforce that it is never invalid. */ -- if (CONSTANT_CLASS_P (expr)) -- result = d_truthvalue_conversion (expr); -- else -+ for (tree ref = expr; TREE_CODE (ref) == COMPONENT_REF; -+ ref = TREE_OPERAND (ref, 0)) - { -- /* Reinterpret the boolean as an integer and test the first bit. -- The generated code should end up being equivalent to: -+ /* If the expression is a field that's part of a union, reinterpret -+ the boolean as an integer and test the first bit. The generated -+ code should end up being equivalent to: - *cast(ubyte *)&expr & 1; */ -- machine_mode bool_mode = TYPE_MODE (TREE_TYPE (expr)); -- tree mtype = lang_hooks.types.type_for_mode (bool_mode, 1); -- result = fold_build2 (BIT_AND_EXPR, mtype, -- build_vconvert (mtype, expr), -- build_one_cst (mtype)); -+ if (TREE_CODE (TREE_TYPE (TREE_OPERAND (ref, 0))) == UNION_TYPE) -+ { -+ machine_mode bool_mode = TYPE_MODE (TREE_TYPE (expr)); -+ tree mtype = lang_hooks.types.type_for_mode (bool_mode, 1); -+ result = fold_build2 (BIT_AND_EXPR, mtype, -+ build_vconvert (mtype, expr), -+ build_one_cst (mtype)); -+ break; -+ } - } - -+ if (result == NULL_TREE) -+ result = d_truthvalue_conversion (expr); -+ - result = convert (build_ctype (tbtype), result); - } - -@@ -688,16 +695,86 @@ convert_for_rvalue (tree expr, Type *etype, Type *totype) - return result ? result : convert_expr (expr, etype, totype); - } - -+/* Helper for convert_for_assigment and convert_for_argument. -+ Returns true if EXPR is a va_list static array parameter. */ -+ -+static bool -+is_valist_parameter_type (Expression *expr) -+{ -+ Declaration *decl = NULL; -+ -+ if (VarExp *ve = expr->isVarExp ()) -+ decl = ve->var; -+ else if (SymOffExp *se = expr->isSymOffExp ()) -+ decl = se->var; -+ -+ if (decl != NULL && decl->isParameter () && valist_array_p (decl->type)) -+ return true; -+ -+ return false; -+} -+ -+/* Helper for convert_for_assigment and convert_for_argument. -+ Report erroneous uses of assigning or passing a va_list parameter. */ -+ -+static void -+check_valist_conversion (Expression *expr, Type *totype, bool in_assignment) -+{ -+ /* Parameter symbol and its converted type. */ -+ Declaration *decl = NULL; -+ /* Type of parameter when evaluated in the expression. */ -+ Type *type = NULL; -+ -+ if (VarExp *ve = expr->isVarExp ()) -+ { -+ decl = ve->var; -+ type = ve->var->type->nextOf ()->pointerTo (); -+ } -+ else if (SymOffExp *se = expr->isSymOffExp ()) -+ { -+ decl = se->var; -+ type = se->var->type->nextOf ()->pointerTo ()->pointerTo (); -+ } -+ -+ /* Should not be called unless is_valist_parameter_type also matched. */ -+ gcc_assert (decl != NULL && decl->isParameter () -+ && valist_array_p (decl->type)); -+ -+ /* OK if conversion between types is allowed. */ -+ if (type->implicitConvTo (totype) != MATCH::nomatch) -+ return; -+ -+ if (in_assignment) -+ { -+ error_at (make_location_t (expr->loc), "cannot convert parameter %qs " -+ "from type %qs to type %qs in assignment", -+ expr->toChars(), type->toChars (), totype->toChars ()); -+ } -+ else -+ { -+ error_at (make_location_t (expr->loc), "cannot convert parameter %qs " -+ "from type %qs to type %qs in argument passing", -+ expr->toChars(), type->toChars (), totype->toChars ()); -+ } -+ -+ inform (make_location_t (decl->loc), "parameters of type % " -+ "{aka %qs} are decayed to pointer types, and require % " -+ "to be converted back into a static array type", -+ decl->type->toChars ()); -+} -+ - /* Apply semantics of assignment to a value of type TOTYPE to EXPR -- (e.g., pointer = array -> pointer = &array[0]) -+ For example: `pointer = array' gets lowered to `pointer = &array[0]'. -+ If LITERALP is true, then EXPR is a value used in the initialization -+ of another literal. - - Return a TREE representation of EXPR implicitly converted to TOTYPE - for use in assignment expressions MODIFY_EXPR, INIT_EXPR. */ - - tree --convert_for_assignment (tree expr, Type *etype, Type *totype) -+convert_for_assignment (Expression *expr, Type *totype, bool literalp) - { -- Type *ebtype = etype->toBasetype (); -+ Type *ebtype = expr->type->toBasetype (); - Type *tbtype = totype->toBasetype (); - - /* Assuming this only has to handle converting a non Tsarray type to -@@ -717,8 +794,8 @@ convert_for_assignment (tree expr, Type *etype, Type *totype) - vec *ce = NULL; - tree index = build2 (RANGE_EXPR, build_ctype (Type::tsize_t), - size_zero_node, size_int (count - 1)); -- tree value = convert_for_assignment (expr, etype, sa_type->next); -- -+ tree value = convert_for_assignment (expr, sa_type->next, -+ literalp); - /* Can't use VAR_DECLs in CONSTRUCTORS. */ - if (VAR_P (value)) - { -@@ -739,38 +816,53 @@ convert_for_assignment (tree expr, Type *etype, Type *totype) - if ((tbtype->ty == TY::Tsarray || tbtype->ty == TY::Tstruct) - && ebtype->isintegral ()) - { -- if (!integer_zerop (expr)) -- gcc_unreachable (); -- -- return expr; -+ tree ret = build_expr (expr, false, literalp); -+ gcc_assert (integer_zerop (ret)); -+ return ret; - } - -- return convert_for_rvalue (expr, etype, totype); -+ /* Assigning a va_list by value or reference, check whether RHS is a parameter -+ that has has been lowered by declaration_type or parameter_type. */ -+ if (is_valist_parameter_type (expr)) -+ check_valist_conversion (expr, totype, true); -+ -+ return convert_for_rvalue (build_expr (expr, false, literalp), -+ expr->type, totype); - } - - /* Return a TREE representation of EXPR converted to represent - the parameter type ARG. */ - - tree --convert_for_argument (tree expr, Parameter *arg) -+convert_for_argument (Expression *expr, Parameter *arg) - { -+ tree targ = build_expr (expr); -+ - /* Lazy arguments: expr should already be a delegate. */ - if (arg->storageClass & STClazy) -- return expr; -+ return targ; - -+ /* Passing a va_list by value, check whether the target requires it to -+ be decayed to a pointer type. */ - if (valist_array_p (arg->type)) - { -- /* Do nothing if the va_list has already been decayed to a pointer. */ -- if (!POINTER_TYPE_P (TREE_TYPE (expr))) -- return build_address (expr); -- } -- else if (parameter_reference_p (arg)) -- { -- /* Front-end shouldn't automatically take the address. */ -- return convert (parameter_type (arg), build_address (expr)); -+ if (!POINTER_TYPE_P (TREE_TYPE (targ))) -+ return build_address (targ); -+ -+ /* Do nothing if the va_list has already been converted. */ -+ return targ; - } - -- return expr; -+ /* Passing a va_list by reference, check if types are really compatible -+ after conversion from static array to pointer type. */ -+ if (is_valist_parameter_type (expr)) -+ check_valist_conversion (expr, arg->type, false); -+ -+ /* Front-end shouldn't automatically take the address of `ref' parameters. */ -+ if (parameter_reference_p (arg)) -+ return convert (parameter_type (arg), build_address (targ)); -+ -+ return targ; - } - - /* Perform default promotions for data used in expressions. -@@ -845,7 +937,7 @@ convert_for_condition (tree expr, Type *type) - break; - - default: -- result = expr; -+ result = convert_for_rvalue (expr, type, type); - break; - } - -diff --git a/gcc/d/d-tree.h b/gcc/d/d-tree.h -index aedbdd80a73..30524fedbcf 100644 ---- a/gcc/d/d-tree.h -+++ b/gcc/d/d-tree.h -@@ -426,6 +426,9 @@ enum d_tree_index - DTI_NULL_ARRAY, - DTI_BOTTOM_TYPE, - -+ DTI_BOOL_FALSE, -+ DTI_BOOL_TRUE, -+ - DTI_MAX - }; - -@@ -462,6 +465,9 @@ extern GTY(()) tree d_global_trees[DTI_MAX]; - #define null_array_node d_global_trees[DTI_NULL_ARRAY] - /* The bottom type, referred to as `noreturn` in code. */ - #define noreturn_type_node d_global_trees[DTI_BOTTOM_TYPE] -+/* D boolean values are always byte-sized, unlike boolean_type_node. */ -+#define d_bool_false_node d_global_trees[DTI_BOOL_FALSE] -+#define d_bool_true_node d_global_trees[DTI_BOOL_TRUE] - - /* A prefix for internal variables, which are not user-visible. */ - #if !defined (NO_DOT_IN_LABEL) -@@ -600,8 +606,8 @@ extern tree d_truthvalue_conversion (tree); - extern tree d_convert (tree, tree); - extern tree convert_expr (tree, Type *, Type *); - extern tree convert_for_rvalue (tree, Type *, Type *); --extern tree convert_for_assignment (tree, Type *, Type *); --extern tree convert_for_argument (tree, Parameter *); -+extern tree convert_for_assignment (Expression *, Type *, bool = false); -+extern tree convert_for_argument (Expression *, Parameter *); - extern tree convert_for_condition (tree, Type *); - extern tree d_array_convert (Expression *); - extern tree d_array_convert (Type *, Expression *); -diff --git a/gcc/d/decl.cc b/gcc/d/decl.cc -index 1cdfc24666e..8f0026b7be9 100644 ---- a/gcc/d/decl.cc -+++ b/gcc/d/decl.cc -@@ -781,7 +781,7 @@ public: - { - /* Do not store variables we cannot take the address of, - but keep the values for purposes of debugging. */ -- if (!d->type->isscalar ()) -+ if (d->type->isscalar () && !d->type->hasPointers ()) - { - tree decl = get_symbol_decl (d); - d_pushdecl (decl); -@@ -1199,6 +1199,20 @@ get_symbol_decl (Declaration *decl) - return decl->csym; - } - -+ if (VarDeclaration *vd = decl->isVarDeclaration ()) -+ { -+ /* CONST_DECL was initially intended for enumerals and may be used for -+ scalars in general, but not for aggregates. Here a non-constant -+ value is generated anyway so as its value can be used. */ -+ if (!vd->canTakeAddressOf () && !vd->type->isscalar ()) -+ { -+ gcc_assert (vd->_init && !vd->_init->isVoidInitializer ()); -+ Expression *ie = initializerToExpression (vd->_init); -+ decl->csym = build_expr (ie, false); -+ return decl->csym; -+ } -+ } -+ - /* Build the tree for the symbol. */ - FuncDeclaration *fd = decl->isFuncDeclaration (); - if (fd) -@@ -1246,24 +1260,30 @@ get_symbol_decl (Declaration *decl) - if (vd->storage_class & STCextern) - DECL_EXTERNAL (decl->csym) = 1; - -- /* CONST_DECL was initially intended for enumerals and may be used for -- scalars in general, but not for aggregates. Here a non-constant -- value is generated anyway so as the CONST_DECL only serves as a -- placeholder for the value, however the DECL itself should never be -- referenced in any generated code, or passed to the back-end. */ -- if (vd->storage_class & STCmanifest) -+ if (!vd->canTakeAddressOf ()) - { - /* Cannot make an expression out of a void initializer. */ -- if (vd->_init && !vd->_init->isVoidInitializer ()) -- { -- Expression *ie = initializerToExpression (vd->_init); -+ gcc_assert (vd->_init && !vd->_init->isVoidInitializer ()); -+ /* Non-scalar manifest constants have already been dealt with. */ -+ gcc_assert (vd->type->isscalar ()); - -- if (!vd->type->isscalar ()) -- DECL_INITIAL (decl->csym) = build_expr (ie, false); -- else -- DECL_INITIAL (decl->csym) = build_expr (ie, true); -- } -+ Expression *ie = initializerToExpression (vd->_init); -+ DECL_INITIAL (decl->csym) = build_expr (ie, true); - } -+ -+ /* [type-qualifiers/const-and-immutable] -+ -+ `immutable` applies to data that cannot change. Immutable data values, -+ once constructed, remain the same for the duration of the program's -+ execution. */ -+ if (vd->isImmutable () && !vd->setInCtorOnly ()) -+ TREE_READONLY (decl->csym) = 1; -+ -+ /* `const` applies to data that cannot be changed by the const reference -+ to that data. It may, however, be changed by another reference to that -+ same data. */ -+ if (vd->isConst () && !vd->isDataseg ()) -+ TREE_READONLY (decl->csym) = 1; - } - - /* Set the declaration mangled identifier if static. */ -diff --git a/gcc/d/dmd/MERGE b/gcc/d/dmd/MERGE -index d79ebfae806..51736565a57 100644 ---- a/gcc/d/dmd/MERGE -+++ b/gcc/d/dmd/MERGE -@@ -1,4 +1,4 @@ --76e3b41375e3e1cb4dbca692b587d8e916c0b49f -+316b89f1e3dffcad488c26f56f58c8adfcb84b26 - - The first line of this file holds the git revision number of the last - merge done from the dlang/dmd repository. -diff --git a/gcc/d/dmd/VERSION b/gcc/d/dmd/VERSION -index 83a14f57e16..868f8007d2f 100644 ---- a/gcc/d/dmd/VERSION -+++ b/gcc/d/dmd/VERSION -@@ -1 +1 @@ --v2.100.1 -+v2.100.2 -diff --git a/gcc/d/dmd/canthrow.d b/gcc/d/dmd/canthrow.d -index a38cbb1610b..fe6e1e344b9 100644 ---- a/gcc/d/dmd/canthrow.d -+++ b/gcc/d/dmd/canthrow.d -@@ -270,18 +270,7 @@ private CT Dsymbol_canThrow(Dsymbol s, FuncDeclaration func, bool mustNotThrow) - } - else if (auto td = s.isTupleDeclaration()) - { -- for (size_t i = 0; i < td.objects.dim; i++) -- { -- RootObject o = (*td.objects)[i]; -- if (o.dyncast() == DYNCAST.expression) -- { -- Expression eo = cast(Expression)o; -- if (auto se = eo.isDsymbolExp()) -- { -- result |= Dsymbol_canThrow(se.s, func, mustNotThrow); -- } -- } -- } -+ td.foreachVar(&symbolDg); - } - return result; - } -diff --git a/gcc/d/dmd/declaration.d b/gcc/d/dmd/declaration.d -index 7b50c050487..6c83c196f72 100644 ---- a/gcc/d/dmd/declaration.d -+++ b/gcc/d/dmd/declaration.d -@@ -656,23 +656,46 @@ extern (C++) final class TupleDeclaration : Declaration - override bool needThis() - { - //printf("TupleDeclaration::needThis(%s)\n", toChars()); -- for (size_t i = 0; i < objects.dim; i++) -+ return isexp ? foreachVar((s) { return s.needThis(); }) != 0 : false; -+ } -+ -+ /*********************************************************** -+ * Calls dg(Dsymbol) for each Dsymbol, which should be a VarDeclaration -+ * inside DsymbolExp (isexp == true). -+ * Params: -+ * dg = delegate to call for each Dsymbol -+ */ -+ extern (D) void foreachVar(scope void delegate(Dsymbol) dg) -+ { -+ assert(isexp); -+ foreach (o; *objects) - { -- RootObject o = (*objects)[i]; -- if (o.dyncast() == DYNCAST.expression) -- { -- Expression e = cast(Expression)o; -- if (DsymbolExp ve = e.isDsymbolExp()) -- { -- Declaration d = ve.s.isDeclaration(); -- if (d && d.needThis()) -- { -- return true; -- } -- } -- } -+ if (auto e = o.isExpression()) -+ if (auto se = e.isDsymbolExp()) -+ dg(se.s); - } -- return false; -+ } -+ -+ /*********************************************************** -+ * Calls dg(Dsymbol) for each Dsymbol, which should be a VarDeclaration -+ * inside DsymbolExp (isexp == true). -+ * If dg returns !=0, stops and returns that value else returns 0. -+ * Params: -+ * dg = delegate to call for each Dsymbol -+ * Returns: -+ * last value returned by dg() -+ */ -+ extern (D) int foreachVar(scope int delegate(Dsymbol) dg) -+ { -+ assert(isexp); -+ foreach (o; *objects) -+ { -+ if (auto e = o.isExpression()) -+ if (auto se = e.isDsymbolExp()) -+ if(auto ret = dg(se.s)) -+ return ret; -+ } -+ return 0; - } - - override inout(TupleDeclaration) isTupleDeclaration() inout -@@ -1142,15 +1165,7 @@ extern (C++) class VarDeclaration : Declaration - // If this variable was really a tuple, set the offsets for the tuple fields - TupleDeclaration v2 = aliassym.isTupleDeclaration(); - assert(v2); -- for (size_t i = 0; i < v2.objects.dim; i++) -- { -- RootObject o = (*v2.objects)[i]; -- assert(o.dyncast() == DYNCAST.expression); -- Expression e = cast(Expression)o; -- assert(e.op == EXP.dSymbol); -- DsymbolExp se = e.isDsymbolExp(); -- se.s.setFieldOffset(ad, fieldState, isunion); -- } -+ v2.foreachVar((s) { s.setFieldOffset(ad, fieldState, isunion); }); - return; - } - -diff --git a/gcc/d/dmd/dinterpret.d b/gcc/d/dmd/dinterpret.d -index e96f1806982..485b2dec1a1 100644 ---- a/gcc/d/dmd/dinterpret.d -+++ b/gcc/d/dmd/dinterpret.d -@@ -2291,16 +2291,12 @@ public: - result = null; - - // Reserve stack space for all tuple members -- if (!td.objects) -- return; -- foreach (o; *td.objects) -+ td.foreachVar((s) - { -- Expression ex = isExpression(o); -- DsymbolExp ds = ex ? ex.isDsymbolExp() : null; -- VarDeclaration v2 = ds ? ds.s.isVarDeclaration() : null; -+ VarDeclaration v2 = s.isVarDeclaration(); - assert(v2); - if (v2.isDataseg() && !v2.isCTFE()) -- continue; -+ return 0; - - ctfeGlobals.stack.push(v2); - if (v2._init) -@@ -2310,7 +2306,7 @@ public: - { - einit = interpretRegion(ie.exp, istate, goal); - if (exceptionOrCant(einit)) -- return; -+ return 1; - } - else if (v2._init.isVoidInitializer()) - { -@@ -2320,11 +2316,12 @@ public: - { - e.error("declaration `%s` is not yet implemented in CTFE", e.toChars()); - result = CTFEExp.cantexp; -- return; -+ return 1; - } - setValue(v2, einit); - } -- } -+ return 0; -+ }); - return; - } - if (v.isStatic()) -diff --git a/gcc/d/dmd/dsymbolsem.d b/gcc/d/dmd/dsymbolsem.d -index c5766787bf0..dfaaff93d35 100644 ---- a/gcc/d/dmd/dsymbolsem.d -+++ b/gcc/d/dmd/dsymbolsem.d -@@ -650,7 +650,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor - else - ti = dsym._init ? dsym._init.syntaxCopy() : null; - -- StorageClass storage_class = STC.temp | STC.local | dsym.storage_class; -+ StorageClass storage_class = STC.temp | dsym.storage_class; - if ((dsym.storage_class & STC.parameter) && (arg.storageClass & STC.parameter)) - storage_class |= arg.storageClass; - auto v = new VarDeclaration(dsym.loc, arg.type, id, ti, storage_class); -@@ -659,14 +659,6 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor - - v.dsymbolSemantic(sc); - -- if (sc.scopesym) -- { -- //printf("adding %s to %s\n", v.toChars(), sc.scopesym.toChars()); -- if (sc.scopesym.members) -- // Note this prevents using foreach() over members, because the limits can change -- sc.scopesym.members.push(v); -- } -- - Expression e = new DsymbolExp(dsym.loc, v); - (*exps)[i] = e; - } -@@ -6819,7 +6811,12 @@ bool determineFields(AggregateDeclaration ad) - return 1; - - if (v.aliassym) -- return 0; // If this variable was really a tuple, skip it. -+ { -+ // If this variable was really a tuple, process each element. -+ if (auto tup = v.aliassym.isTupleDeclaration()) -+ return tup.foreachVar(tv => tv.apply(&func, ad)); -+ return 0; -+ } - - if (v.storage_class & (STC.static_ | STC.extern_ | STC.tls | STC.gshared | STC.manifest | STC.ctfe | STC.templateparameter)) - return 0; -diff --git a/gcc/d/dmd/dtoh.d b/gcc/d/dmd/dtoh.d -index 17abb7d3b00..ecc637eff53 100644 ---- a/gcc/d/dmd/dtoh.d -+++ b/gcc/d/dmd/dtoh.d -@@ -877,7 +877,11 @@ public: - // Tuple field are expanded into multiple VarDeclarations - // (we'll visit them later) - if (vd.type && vd.type.isTypeTuple()) -+ { -+ assert(vd.aliassym); -+ vd.toAlias().accept(this); - return; -+ } - - if (vd.originalType && vd.type == AST.Type.tsize_t) - origType = vd.originalType; -@@ -1667,6 +1671,13 @@ public: - assert(false, "This node type should be handled in the EnumDeclaration"); - } - -+ override void visit(AST.TupleDeclaration tup) -+ { -+ debug (Debug_DtoH) mixin(traceVisit!tup); -+ -+ tup.foreachVar((s) { s.accept(this); }); -+ } -+ - /** - * Prints a member/parameter/variable declaration into `buf`. - * -diff --git a/gcc/d/dmd/escape.d b/gcc/d/dmd/escape.d -index 7c7ba96db0d..ab85f8706ec 100644 ---- a/gcc/d/dmd/escape.d -+++ b/gcc/d/dmd/escape.d -@@ -77,22 +77,7 @@ bool checkMutableArguments(Scope* sc, FuncDeclaration fd, TypeFunction tf, - bool isMutable; // true if reference to mutable - } - -- /* Store escapeBy as static data escapeByStorage so we can keep reusing the same -- * arrays rather than reallocating them. -- */ -- __gshared EscapeBy[] escapeByStorage; -- auto escapeBy = escapeByStorage; -- if (escapeBy.length < len) -- { -- auto newPtr = cast(EscapeBy*)mem.xrealloc(escapeBy.ptr, len * EscapeBy.sizeof); -- // Clear the new section -- memset(newPtr + escapeBy.length, 0, (len - escapeBy.length) * EscapeBy.sizeof); -- escapeBy = newPtr[0 .. len]; -- escapeByStorage = escapeBy; -- } -- else -- escapeBy = escapeBy[0 .. len]; -- -+ auto escapeBy = new EscapeBy[len]; - const paramLength = tf.parameterList.length; - - // Fill in escapeBy[] with arguments[], ethis, and outerVars[] -@@ -212,13 +197,6 @@ bool checkMutableArguments(Scope* sc, FuncDeclaration fd, TypeFunction tf, - escape(i, eb, false); - } - -- /* Reset the arrays in escapeBy[] so we can reuse them next time through -- */ -- foreach (ref eb; escapeBy) -- { -- eb.er.reset(); -- } -- - return errors; - } - -diff --git a/gcc/d/dmd/expression.d b/gcc/d/dmd/expression.d -index 107e85b0793..832ab7dda37 100644 ---- a/gcc/d/dmd/expression.d -+++ b/gcc/d/dmd/expression.d -@@ -348,14 +348,16 @@ int expandAliasThisTuples(Expressions* exps, size_t starti = 0) - if (TupleDeclaration td = exp.isAliasThisTuple) - { - exps.remove(u); -- foreach (i, o; *td.objects) -+ size_t i; -+ td.foreachVar((s) - { -- auto d = o.isExpression().isDsymbolExp().s.isDeclaration(); -+ auto d = s.isDeclaration(); - auto e = new DotVarExp(exp.loc, exp, d); - assert(d.type); - e.type = d.type; - exps.insert(u + i, e); -- } -+ ++i; -+ }); - version (none) - { - printf("expansion ->\n"); -diff --git a/gcc/d/dmd/foreachvar.d b/gcc/d/dmd/foreachvar.d -index 53ed62efd70..63281b5760c 100644 ---- a/gcc/d/dmd/foreachvar.d -+++ b/gcc/d/dmd/foreachvar.d -@@ -75,19 +75,7 @@ void foreachVar(Expression e, void delegate(VarDeclaration) dgVar) - if (!v) - return; - if (TupleDeclaration td = v.toAlias().isTupleDeclaration()) -- { -- if (!td.objects) -- return; -- foreach (o; *td.objects) -- { -- Expression ex = isExpression(o); -- DsymbolExp s = ex ? ex.isDsymbolExp() : null; -- assert(s); -- VarDeclaration v2 = s.s.isVarDeclaration(); -- assert(v2); -- dgVar(v2); -- } -- } -+ td.foreachVar((s) { dgVar(s.isVarDeclaration()); }); - else - dgVar(v); - Dsymbol s = v.toAlias(); -diff --git a/gcc/d/dmd/ob.d b/gcc/d/dmd/ob.d -index 121a266b428..5ff73c983f0 100644 ---- a/gcc/d/dmd/ob.d -+++ b/gcc/d/dmd/ob.d -@@ -1407,16 +1407,7 @@ void genKill(ref ObState obstate, ObNode* ob) - } - else if (auto td = s.isTupleDeclaration()) - { -- foreach (o; *td.objects) -- { -- if (auto eo = o.isExpression()) -- { -- if (auto se = eo.isDsymbolExp()) -- { -- Dsymbol_visit(se.s); -- } -- } -- } -+ td.foreachVar(&Dsymbol_visit); - } - } - -@@ -2107,16 +2098,7 @@ void checkObErrors(ref ObState obstate) - } - else if (auto td = s.isTupleDeclaration()) - { -- foreach (o; *td.objects) -- { -- if (auto eo = o.isExpression()) -- { -- if (auto se = eo.isDsymbolExp()) -- { -- Dsymbol_visit(se.s); -- } -- } -- } -+ td.foreachVar(&Dsymbol_visit); - } - } - -diff --git a/gcc/d/dmd/semantic2.d b/gcc/d/dmd/semantic2.d -index 73dcaa6c960..bf18a2140fb 100644 ---- a/gcc/d/dmd/semantic2.d -+++ b/gcc/d/dmd/semantic2.d -@@ -677,6 +677,11 @@ private extern(C++) final class Semantic2Visitor : Visitor - { - visit(cast(AggregateDeclaration) cd); - } -+ -+ override void visit(TupleDeclaration td) -+ { -+ td.foreachVar((s) { s.accept(this); }); -+ } - } - - /** -diff --git a/gcc/d/expr.cc b/gcc/d/expr.cc -index 6654244292e..7afd98975b1 100644 ---- a/gcc/d/expr.cc -+++ b/gcc/d/expr.cc -@@ -1057,8 +1057,7 @@ public: - Declaration *decl = e->e1->isVarExp ()->var; - if (decl->storage_class & (STCout | STCref)) - { -- tree t2 = convert_for_assignment (build_expr (e->e2), -- e->e2->type, e->e1->type); -+ tree t2 = convert_for_assignment (e->e2, e->e1->type); - tree t1 = build_expr (e->e1); - /* Want reference to lhs, not indirect ref. */ - t1 = TREE_OPERAND (t1, 0); -@@ -1078,8 +1077,7 @@ public: - if (tb1->ty == TY::Tstruct) - { - tree t1 = build_expr (e->e1); -- tree t2 = convert_for_assignment (build_expr (e->e2, false, true), -- e->e2->type, e->e1->type); -+ tree t2 = convert_for_assignment (e->e2, e->e1->type, true); - StructDeclaration *sd = tb1->isTypeStruct ()->sym; - - /* Look for struct = 0. */ -@@ -1157,8 +1155,7 @@ public: - || (e->op == EXP::blit || e->e1->type->size () == 0)) - { - tree t1 = build_expr (e->e1); -- tree t2 = convert_for_assignment (build_expr (e->e2), -- e->e2->type, e->e1->type); -+ tree t2 = convert_for_assignment (e->e2, e->e1->type); - - this->result_ = build_assign (modifycode, t1, t2); - return; -@@ -1192,8 +1189,7 @@ public: - - /* Simple assignment. */ - tree t1 = build_expr (e->e1); -- tree t2 = convert_for_assignment (build_expr (e->e2), -- e->e2->type, e->e1->type); -+ tree t2 = convert_for_assignment (e->e2, e->e1->type); - - this->result_ = build_assign (modifycode, t1, t2); - } -@@ -2708,6 +2704,10 @@ public: - if (tb->ty == TY::Tarray) - ctor = d_array_value (type, size_int (e->elements->length), ctor); - -+ /* Immutable literals can be placed in rodata. */ -+ if (tb->isImmutable ()) -+ TREE_READONLY (decl) = 1; -+ - d_pushdecl (decl); - rest_of_decl_compilation (decl, 1, 0); - } -diff --git a/gcc/d/imports.cc b/gcc/d/imports.cc -index 6a59ef61b9c..c8447b9674c 100644 ---- a/gcc/d/imports.cc -+++ b/gcc/d/imports.cc -@@ -127,6 +127,15 @@ public: - this->result_ = this->make_import (TYPE_STUB_DECL (type)); - } - -+ void visit (VarDeclaration *d) -+ { -+ /* Not all kinds of manifest constants create a CONST_DECL. */ -+ if (!d->canTakeAddressOf () && !d->type->isscalar ()) -+ return; -+ -+ visit ((Declaration *) d); -+ } -+ - /* For now, ignore importing other kinds of dsymbols. */ - void visit (ScopeDsymbol *) - { -diff --git a/gcc/d/intrinsics.cc b/gcc/d/intrinsics.cc -index 4222b8a0290..8ec94a6b8f9 100644 ---- a/gcc/d/intrinsics.cc -+++ b/gcc/d/intrinsics.cc -@@ -721,6 +721,7 @@ expand_volatile_load (tree callexp) - tree type = build_qualified_type (TREE_TYPE (ptrtype), TYPE_QUAL_VOLATILE); - tree result = indirect_ref (type, ptr); - TREE_THIS_VOLATILE (result) = 1; -+ TREE_SIDE_EFFECTS (result) = 1; - - return result; - } -@@ -748,6 +749,7 @@ expand_volatile_store (tree callexp) - tree type = build_qualified_type (TREE_TYPE (ptrtype), TYPE_QUAL_VOLATILE); - tree result = indirect_ref (type, ptr); - TREE_THIS_VOLATILE (result) = 1; -+ TREE_SIDE_EFFECTS (result) = 1; - - /* (*(volatile T *) ptr) = value; */ - tree value = CALL_EXPR_ARG (callexp, 1); -diff --git a/gcc/d/modules.cc b/gcc/d/modules.cc -index 0aac8fe3545..ce35a726c52 100644 ---- a/gcc/d/modules.cc -+++ b/gcc/d/modules.cc -@@ -329,7 +329,7 @@ static tree - build_dso_cdtor_fn (bool ctor_p) - { - const char *name = ctor_p ? GDC_PREFIX ("dso_ctor") : GDC_PREFIX ("dso_dtor"); -- tree condition = ctor_p ? boolean_true_node : boolean_false_node; -+ tree condition = ctor_p ? d_bool_true_node : d_bool_false_node; - - /* Declaration of dso_ctor/dso_dtor is: - -@@ -452,7 +452,7 @@ register_moduleinfo (Module *decl, tree minfo) - d_finish_decl (dso_slot_node); - - dso_initialized_node = build_dso_registry_var (GDC_PREFIX ("dso_initialized"), -- boolean_type_node); -+ d_bool_type); - d_finish_decl (dso_initialized_node); - - /* Declare dso_ctor() and dso_dtor(). */ -diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi -index 33a776a7978..0eb9bdcfac5 100644 ---- a/gcc/doc/extend.texi -+++ b/gcc/doc/extend.texi -@@ -14618,6 +14618,7 @@ instructions, but allow the compiler to schedule those calls. - * Blackfin Built-in Functions:: - * BPF Built-in Functions:: - * FR-V Built-in Functions:: -+* LoongArch Base Built-in Functions:: - * MIPS DSP Built-in Functions:: - * MIPS Paired-Single Support:: - * MIPS Loongson Built-in Functions:: -@@ -16068,6 +16069,139 @@ Use the @code{nldub} instruction to load the contents of address @var{x} - into the data cache. The instruction is issued in slot I1@. - @end table - -+@node LoongArch Base Built-in Functions -+@subsection LoongArch Base Built-in Functions -+ -+These built-in functions are available for LoongArch. -+ -+Data Type Description: -+@itemize -+@item @code{imm0_31}, a compile-time constant in range 0 to 31; -+@item @code{imm0_16383}, a compile-time constant in range 0 to 16383; -+@item @code{imm0_32767}, a compile-time constant in range 0 to 32767; -+@item @code{imm_n2048_2047}, a compile-time constant in range -2048 to 2047; -+@end itemize -+ -+The intrinsics provided are listed below: -+@smallexample -+ unsigned int __builtin_loongarch_movfcsr2gr (imm0_31) -+ void __builtin_loongarch_movgr2fcsr (imm0_31, unsigned int) -+ void __builtin_loongarch_cacop_d (imm0_31, unsigned long int, imm_n2048_2047) -+ unsigned int __builtin_loongarch_cpucfg (unsigned int) -+ void __builtin_loongarch_asrtle_d (long int, long int) -+ void __builtin_loongarch_asrtgt_d (long int, long int) -+ long int __builtin_loongarch_lddir_d (long int, imm0_31) -+ void __builtin_loongarch_ldpte_d (long int, imm0_31) -+ -+ int __builtin_loongarch_crc_w_b_w (char, int) -+ int __builtin_loongarch_crc_w_h_w (short, int) -+ int __builtin_loongarch_crc_w_w_w (int, int) -+ int __builtin_loongarch_crc_w_d_w (long int, int) -+ int __builtin_loongarch_crcc_w_b_w (char, int) -+ int __builtin_loongarch_crcc_w_h_w (short, int) -+ int __builtin_loongarch_crcc_w_w_w (int, int) -+ int __builtin_loongarch_crcc_w_d_w (long int, int) -+ -+ unsigned int __builtin_loongarch_csrrd_w (imm0_16383) -+ unsigned int __builtin_loongarch_csrwr_w (unsigned int, imm0_16383) -+ unsigned int __builtin_loongarch_csrxchg_w (unsigned int, unsigned int, imm0_16383) -+ unsigned long int __builtin_loongarch_csrrd_d (imm0_16383) -+ unsigned long int __builtin_loongarch_csrwr_d (unsigned long int, imm0_16383) -+ unsigned long int __builtin_loongarch_csrxchg_d (unsigned long int, unsigned long int, imm0_16383) -+ -+ unsigned char __builtin_loongarch_iocsrrd_b (unsigned int) -+ unsigned short __builtin_loongarch_iocsrrd_h (unsigned int) -+ unsigned int __builtin_loongarch_iocsrrd_w (unsigned int) -+ unsigned long int __builtin_loongarch_iocsrrd_d (unsigned int) -+ void __builtin_loongarch_iocsrwr_b (unsigned char, unsigned int) -+ void __builtin_loongarch_iocsrwr_h (unsigned short, unsigned int) -+ void __builtin_loongarch_iocsrwr_w (unsigned int, unsigned int) -+ void __builtin_loongarch_iocsrwr_d (unsigned long int, unsigned int) -+ -+ void __builtin_loongarch_dbar (imm0_32767) -+ void __builtin_loongarch_ibar (imm0_32767) -+ -+ void __builtin_loongarch_syscall (imm0_32767) -+ void __builtin_loongarch_break (imm0_32767) -+@end smallexample -+ -+@emph{Note:}Since the control register is divided into 32-bit and 64-bit, -+but the access instruction is not distinguished. So GCC renames the control -+instructions when implementing intrinsics. -+ -+Take the csrrd instruction as an example, built-in functions are implemented as follows: -+@smallexample -+ __builtin_loongarch_csrrd_w // When reading the 32-bit control register use. -+ __builtin_loongarch_csrrd_d // When reading the 64-bit control register use. -+@end smallexample -+ -+For the convenience of use, the built-in functions are encapsulated, -+the encapsulated functions and @code{__drdtime_t, __rdtime_t} are -+defined in the @code{larchintrin.h}. So if you call the following -+function you need to include @code{larchintrin.h}. -+ -+@smallexample -+ typedef struct drdtime@{ -+ unsigned long dvalue; -+ unsigned long dtimeid; -+ @} __drdtime_t; -+ -+ typedef struct rdtime@{ -+ unsigned int value; -+ unsigned int timeid; -+ @} __rdtime_t; -+@end smallexample -+ -+@smallexample -+ __drdtime_t __rdtime_d (void) -+ __rdtime_t __rdtimel_w (void) -+ __rdtime_t __rdtimeh_w (void) -+ unsigned int __movfcsr2gr (imm0_31) -+ void __movgr2fcsr (imm0_31, unsigned int) -+ void __cacop_d (imm0_31, unsigned long, imm_n2048_2047) -+ unsigned int __cpucfg (unsigned int) -+ void __asrtle_d (long int, long int) -+ void __asrtgt_d (long int, long int) -+ long int __lddir_d (long int, imm0_31) -+ void __ldpte_d (long int, imm0_31) -+ -+ int __crc_w_b_w (char, int) -+ int __crc_w_h_w (short, int) -+ int __crc_w_w_w (int, int) -+ int __crc_w_d_w (long int, int) -+ int __crcc_w_b_w (char, int) -+ int __crcc_w_h_w (short, int) -+ int __crcc_w_w_w (int, int) -+ int __crcc_w_d_w (long int, int) -+ -+ unsigned int __csrrd_w (imm0_16383) -+ unsigned int __csrwr_w (unsigned int, imm0_16383) -+ unsigned int __csrxchg_w (unsigned int, unsigned int, imm0_16383) -+ unsigned long __csrrd_d (imm0_16383) -+ unsigned long __csrwr_d (unsigned long, imm0_16383) -+ unsigned long __csrxchg_d (unsigned long, unsigned long, imm0_16383) -+ -+ unsigned char __iocsrrd_b (unsigned int) -+ unsigned short __iocsrrd_h (unsigned int) -+ unsigned int __iocsrrd_w (unsigned int) -+ unsigned long __iocsrrd_d (unsigned int) -+ void __iocsrwr_b (unsigned char, unsigned int) -+ void __iocsrwr_h (unsigned short, unsigned int) -+ void __iocsrwr_w (unsigned int, unsigned int) -+ void __iocsrwr_d (unsigned long, unsigned int) -+ -+ void __dbar (imm0_32767) -+ void __ibar (imm0_32767) -+ -+ void __syscall (imm0_32767) -+ void __break (imm0_32767) -+@end smallexample -+ -+Returns the value that is currently set in the @samp{tp} register. -+@smallexample -+ void * __builtin_thread_pointer (void) -+@end smallexample -+ - @node MIPS DSP Built-in Functions - @subsection MIPS DSP Built-in Functions - -diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi -index 19d073256a9..d488b768987 100644 ---- a/gcc/doc/install.texi -+++ b/gcc/doc/install.texi -@@ -375,6 +375,9 @@ tables. - - Used by @command{automake}. - -+If available, enables parallel testing of @samp{libgomp} in case that -+@command{flock} is not available. -+ - @end table - - Several support libraries are necessary to build GCC, some are required, -diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi -index cb83dd8a1cc..f1599ba04ad 100644 ---- a/gcc/doc/invoke.texi -+++ b/gcc/doc/invoke.texi -@@ -1434,7 +1434,7 @@ See RS/6000 and PowerPC Options. - -m96bit-long-double -mlong-double-64 -mlong-double-80 -mlong-double-128 @gol - -mregparm=@var{num} -msseregparm @gol - -mveclibabi=@var{type} -mvect8-ret-in-mem @gol ---mpc32 -mpc64 -mpc80 -mstackrealign @gol -+-mpc32 -mpc64 -mpc80 -mdaz-ftz -mstackrealign @gol - -momit-leaf-frame-pointer -mno-red-zone -mno-tls-direct-seg-refs @gol - -mcmodel=@var{code-model} -mabi=@var{name} -maddress-mode=@var{mode} @gol - -m32 -m64 -mx32 -m16 -miamcu -mlarge-data-threshold=@var{num} @gol -@@ -6647,7 +6647,7 @@ This warning is enabled by @option{-Wall}. - @item -Wmissing-include-dirs @r{(C, C++, Objective-C, Objective-C++ and Fortran only)} - @opindex Wmissing-include-dirs - @opindex Wno-missing-include-dirs --Warn if a user-supplied include directory does not exist. This opions is disabled -+Warn if a user-supplied include directory does not exist. This option is disabled - by default for C, C++, Objective-C and Objective-C++. For Fortran, it is partially - enabled by default by warning for -I and -J, only. - -@@ -32078,6 +32078,15 @@ are enabled by default; routines in such libraries could suffer significant - loss of accuracy, typically through so-called ``catastrophic cancellation'', - when this option is used to set the precision to less than extended precision. - -+@item -mdaz-ftz -+@opindex mdaz-ftz -+ -+The flush-to-zero (FTZ) and denormals-are-zero (DAZ) flags in the MXCSR register -+are used to control floating-point calculations.SSE and AVX instructions -+including scalar and vector instructions could benefit from enabling the FTZ -+and DAZ flags when @option{-mdaz-ftz} is specified. Don't set FTZ/DAZ flags -+when @option{-mno-daz-ftz} is specified. -+ - @item -mstackrealign - @opindex mstackrealign - Realign the stack at entry. On the x86, the @option{-mstackrealign} -@@ -33092,7 +33101,7 @@ on x86-64 processors in 64-bit environments. - Generate code for a 16-bit, 32-bit or 64-bit environment. - The @option{-m32} option sets @code{int}, @code{long}, and pointer types - to 32 bits, and --generates code that runs on any i386 system. -+generates code that runs in 32-bit mode. - - The @option{-m64} option sets @code{int} to 32 bits and @code{long} and pointer - types to 64 bits, and generates code for the x86-64 architecture. -diff --git a/gcc/dwarf2out.cc b/gcc/dwarf2out.cc -index 0a5c081d85e..d14ec0261b6 100644 ---- a/gcc/dwarf2out.cc -+++ b/gcc/dwarf2out.cc -@@ -26508,7 +26508,8 @@ process_scope_var (tree stmt, tree decl, tree origin, dw_die_ref context_die) - - if (die != NULL && die->die_parent == NULL) - add_child_die (context_die, die); -- else if (TREE_CODE (decl_or_origin) == IMPORTED_DECL) -+ -+ if (TREE_CODE (decl_or_origin) == IMPORTED_DECL) - { - if (early_dwarf) - dwarf2out_imported_module_or_decl_1 (decl_or_origin, DECL_NAME (decl_or_origin), -@@ -30107,8 +30108,13 @@ prune_unused_types_walk (dw_die_ref die) - case DW_TAG_reference_type: - case DW_TAG_rvalue_reference_type: - case DW_TAG_volatile_type: -+ case DW_TAG_restrict_type: -+ case DW_TAG_shared_type: -+ case DW_TAG_atomic_type: -+ case DW_TAG_immutable_type: - case DW_TAG_typedef: - case DW_TAG_array_type: -+ case DW_TAG_coarray_type: - case DW_TAG_friend: - case DW_TAG_enumeration_type: - case DW_TAG_subroutine_type: -@@ -30117,6 +30123,8 @@ prune_unused_types_walk (dw_die_ref die) - case DW_TAG_subrange_type: - case DW_TAG_ptr_to_member_type: - case DW_TAG_file_type: -+ case DW_TAG_unspecified_type: -+ case DW_TAG_dynamic_type: - /* Type nodes are useful only when other DIEs reference them --- don't - mark them. */ - /* FALLTHROUGH */ -diff --git a/gcc/fold-const.cc b/gcc/fold-const.cc -index d7923974c85..cd410e50d77 100644 ---- a/gcc/fold-const.cc -+++ b/gcc/fold-const.cc -@@ -14273,7 +14273,7 @@ multiple_of_p (tree type, const_tree top, const_tree bottom, bool nowrap) - && TREE_CODE (op2) == INTEGER_CST - && integer_pow2p (bottom) - && wi::multiple_of_p (wi::to_widest (op2), -- wi::to_widest (bottom), UNSIGNED)) -+ wi::to_widest (bottom), SIGNED)) - return 1; - - op1 = gimple_assign_rhs1 (stmt); -diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog -index c8ecd75c778..6a23225f93c 100644 ---- a/gcc/fortran/ChangeLog -+++ b/gcc/fortran/ChangeLog -@@ -1,3 +1,90 @@ -+2023-12-01 Harald Anlauf -+ -+ Backported from master: -+ 2023-11-26 Harald Anlauf -+ -+ PR fortran/111880 -+ * resolve.cc (resolve_common_vars): Do not call gfc_add_in_common -+ for symbols that are USE associated or used in a submodule. -+ -+2023-10-21 Harald Anlauf -+ -+ Backported from master: -+ 2023-10-17 Harald Anlauf -+ -+ PR fortran/111837 -+ * frontend-passes.cc (traverse_io_block): Dependency check of loop -+ nest shall be triangular, not banded. -+ -+2023-08-06 Steve Kargl -+ -+ Backported from master: -+ 2022-12-18 Steve Kargl -+ -+ PR fortran/107397 -+ * decl.cc (add_init_expr_to_sym): Add check with new error message. -+ -+2023-07-20 Harald Anlauf -+ -+ Backported from master: -+ 2023-07-17 Harald Anlauf -+ -+ PR fortran/95947 -+ PR fortran/110658 -+ * trans-expr.cc (gfc_conv_procedure_call): For intrinsic procedures -+ whose result characteristics depends on the first argument and which -+ can be of type character, the character length will not be deferred. -+ -+2023-07-14 Harald Anlauf -+ -+ Backported from master: -+ 2023-07-11 Harald Anlauf -+ -+ PR fortran/110288 -+ * symbol.cc (gfc_copy_formal_args_intr): When deriving the formal -+ argument attributes from the actual ones for intrinsic procedure -+ calls, take special care of CHARACTER arguments that we do not -+ wrongly treat them formally as deferred-length. -+ -+2023-07-08 Harald Anlauf -+ -+ Backported from master: -+ 2023-07-08 Harald Anlauf -+ -+ PR fortran/110585 -+ * arith.cc (gfc_compare_expr): Handle equality comparison of constant -+ complex gfc_expr arguments. -+ -+2023-06-09 Jakub Jelinek -+ -+ Backported from master: -+ 2023-06-09 Jakub Jelinek -+ -+ PR fortran/96024 -+ * primary.cc (gfc_convert_to_structure_constructor): Only do -+ constant string ctor length verification and truncation/padding -+ if constant length has INTEGER type. -+ -+2023-06-04 Steve Kargl -+ -+ Backported from master: -+ 2023-06-02 Steve Kargl -+ -+ PR fortran/100607 -+ * resolve.cc (resolve_select_rank): Remove duplicate error. -+ (resolve_fl_var_and_proc): Prevent NULL pointer dereference and -+ suppress error message for temporary. -+ -+2023-05-20 Harald Anlauf -+ -+ Backported from master: -+ 2023-05-15 Harald Anlauf -+ -+ PR fortran/109846 -+ * expr.cc (gfc_check_vardef_context): Check appropriate pointer -+ attribute for CLASS vs. non-CLASS function result in variable -+ definition context. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/gcc/fortran/arith.cc b/gcc/fortran/arith.cc -index 1e521cc0cc5..bdde333293e 100644 ---- a/gcc/fortran/arith.cc -+++ b/gcc/fortran/arith.cc -@@ -1080,6 +1080,11 @@ gfc_compare_expr (gfc_expr *op1, gfc_expr *op2, gfc_intrinsic_op op) - || (op1->value.logical && !op2->value.logical)); - break; - -+ case BT_COMPLEX: -+ gcc_assert (op == INTRINSIC_EQ); -+ rc = mpc_cmp (op1->value.complex, op2->value.complex); -+ break; -+ - default: - gfc_internal_error ("gfc_compare_expr(): Bad basic type"); - } -diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc -index de0fa9d0726..d98f98d7ec6 100644 ---- a/gcc/fortran/decl.cc -+++ b/gcc/fortran/decl.cc -@@ -2220,6 +2220,14 @@ add_init_expr_to_sym (const char *name, gfc_expr **initp, locus *var_locus) - sym->ts.f90_type = init->ts.f90_type; - } - -+ /* Catch the case: type(t), parameter :: x = z'1'. */ -+ if (sym->ts.type == BT_DERIVED && init->ts.type == BT_BOZ) -+ { -+ gfc_error ("Entity %qs at %L is incompatible with a BOZ " -+ "literal constant", name, &sym->declared_at); -+ return false; -+ } -+ - /* Add initializer. Make sure we keep the ranks sane. */ - if (sym->attr.dimension && init->rank == 0) - { -diff --git a/gcc/fortran/expr.cc b/gcc/fortran/expr.cc -index 1369f25011f..c04403a2b89 100644 ---- a/gcc/fortran/expr.cc -+++ b/gcc/fortran/expr.cc -@@ -6254,7 +6254,7 @@ gfc_check_vardef_context (gfc_expr* e, bool pointer, bool alloc_obj, - && !(sym->attr.flavor == FL_PROCEDURE && sym == sym->result) - && !(sym->attr.flavor == FL_PROCEDURE && sym->attr.proc_pointer) - && !(sym->attr.flavor == FL_PROCEDURE -- && sym->attr.function && sym->attr.pointer)) -+ && sym->attr.function && attr.pointer)) - { - if (context) - gfc_error ("%qs in variable definition context (%s) at %L is not" -diff --git a/gcc/fortran/frontend-passes.cc b/gcc/fortran/frontend-passes.cc -index 5eba6345145..53567307cec 100644 ---- a/gcc/fortran/frontend-passes.cc -+++ b/gcc/fortran/frontend-passes.cc -@@ -1326,7 +1326,7 @@ traverse_io_block (gfc_code *code, bool *has_reached, gfc_code *prev) - if (iters[i]) - { - gfc_expr *var = iters[i]->var; -- for (int j = i - 1; j < i; j++) -+ for (int j = 0; j < i; j++) - { - if (iters[j] - && (var_in_expr (var, iters[j]->start) -diff --git a/gcc/fortran/primary.cc b/gcc/fortran/primary.cc -index e48ba755c8a..1ae6a12e0b7 100644 ---- a/gcc/fortran/primary.cc -+++ b/gcc/fortran/primary.cc -@@ -3196,10 +3196,11 @@ gfc_convert_to_structure_constructor (gfc_expr *e, gfc_symbol *sym, gfc_expr **c - goto cleanup; - - /* For a constant string constructor, make sure the length is -- correct; truncate of fill with blanks if needed. */ -+ correct; truncate or fill with blanks if needed. */ - if (this_comp->ts.type == BT_CHARACTER && !this_comp->attr.allocatable - && this_comp->ts.u.cl && this_comp->ts.u.cl->length - && this_comp->ts.u.cl->length->expr_type == EXPR_CONSTANT -+ && this_comp->ts.u.cl->length->ts.type == BT_INTEGER - && actual->expr->ts.type == BT_CHARACTER - && actual->expr->expr_type == EXPR_CONSTANT) - { -diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc -index 14baf63e6af..9264322f671 100644 ---- a/gcc/fortran/resolve.cc -+++ b/gcc/fortran/resolve.cc -@@ -965,8 +965,8 @@ resolve_common_vars (gfc_common_head *common_block, bool named_common) - - /* gfc_add_in_common may have been called before, but the reported errors - have been ignored to continue parsing. -- We do the checks again here. */ -- if (!csym->attr.use_assoc) -+ We do the checks again here, unless the symbol is USE associated. */ -+ if (!csym->attr.use_assoc && !csym->attr.used_in_submodule) - { - gfc_add_in_common (&csym->attr, csym->name, &common_block->where); - gfc_notify_std (GFC_STD_F2018_OBS, "COMMON block at %L", -@@ -9923,11 +9923,6 @@ resolve_select_rank (gfc_code *code, gfc_namespace *old_ns) - || gfc_expr_attr (code->expr1).pointer)) - gfc_error ("RANK (*) at %L cannot be used with the pointer or " - "allocatable selector at %L", &c->where, &code->expr1->where); -- -- if (case_value == -1 && (gfc_expr_attr (code->expr1).allocatable -- || gfc_expr_attr (code->expr1).pointer)) -- gfc_error ("RANK (*) at %L cannot be used with the pointer or " -- "allocatable selector at %L", &c->where, &code->expr1->where); - } - - /* Add EXEC_SELECT to switch on rank. */ -@@ -12913,7 +12908,10 @@ resolve_fl_var_and_proc (gfc_symbol *sym, int mp_flag) - - if (allocatable) - { -- if (dimension && as->type != AS_ASSUMED_RANK) -+ if (dimension -+ && as -+ && as->type != AS_ASSUMED_RANK -+ && !sym->attr.select_rank_temporary) - { - gfc_error ("Allocatable array %qs at %L must have a deferred " - "shape or assumed rank", sym->name, &sym->declared_at); -diff --git a/gcc/fortran/symbol.cc b/gcc/fortran/symbol.cc -index af5a2e41bf5..e7de5a8f525 100644 ---- a/gcc/fortran/symbol.cc -+++ b/gcc/fortran/symbol.cc -@@ -4719,6 +4719,13 @@ gfc_copy_formal_args_intr (gfc_symbol *dest, gfc_intrinsic_sym *src, - formal_arg->sym->attr.flavor = FL_VARIABLE; - formal_arg->sym->attr.dummy = 1; - -+ /* Do not treat an actual deferred-length character argument wrongly -+ as template for the formal argument. */ -+ if (formal_arg->sym->ts.type == BT_CHARACTER -+ && !(formal_arg->sym->attr.allocatable -+ || formal_arg->sym->attr.pointer)) -+ formal_arg->sym->ts.deferred = false; -+ - if (formal_arg->sym->ts.type == BT_CHARACTER) - formal_arg->sym->ts.u.cl = gfc_new_charlen (gfc_current_ns, NULL); - -diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc -index 057cb8a3041..27b34984705 100644 ---- a/gcc/fortran/trans-expr.cc -+++ b/gcc/fortran/trans-expr.cc -@@ -7428,7 +7428,12 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym, - (and other intrinsics?) and dummy functions. In the case of SPREAD, - we take the character length of the first argument for the result. - For dummies, we have to look through the formal argument list for -- this function and use the character length found there.*/ -+ this function and use the character length found there. -+ Likewise, we handle the case of deferred-length character dummy -+ arguments to intrinsics that determine the characteristics of -+ the result, which cannot be deferred-length. */ -+ if (expr->value.function.isym) -+ ts.deferred = false; - if (ts.deferred) - cl.backend_decl = gfc_create_var (gfc_charlen_type_node, "slen"); - else if (!sym->attr.dummy) -diff --git a/gcc/fwprop.cc b/gcc/fwprop.cc -index d12fc2f34ac..5451e663ad6 100644 ---- a/gcc/fwprop.cc -+++ b/gcc/fwprop.cc -@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3. If not see - #include "coretypes.h" - #include "backend.h" - #include "rtl.h" -+#include "rtlanal.h" - #include "df.h" - #include "rtl-ssa.h" - -@@ -353,21 +354,6 @@ reg_single_def_p (rtx x) - return REG_P (x) && crtl->ssa->single_dominating_def (REGNO (x)); - } - --/* Return true if X contains a paradoxical subreg. */ -- --static bool --contains_paradoxical_subreg_p (rtx x) --{ -- subrtx_var_iterator::array_type array; -- FOR_EACH_SUBRTX_VAR (iter, array, x, NONCONST) -- { -- x = *iter; -- if (SUBREG_P (x) && paradoxical_subreg_p (x)) -- return true; -- } -- return false; --} -- - /* Try to substitute (set DEST SRC), which defines DEF, into note NOTE of - USE_INSN. Return the number of substitutions on success, otherwise return - -1 and leave USE_INSN unchanged. -diff --git a/gcc/genmatch.cc b/gcc/genmatch.cc -index 5b25fc8da86..80c64d88928 100644 ---- a/gcc/genmatch.cc -+++ b/gcc/genmatch.cc -@@ -2548,7 +2548,8 @@ expr::gen_transform (FILE *f, int indent, const char *dest, bool gimple, - { - fprintf_indent (f, indent, "if (TREE_TYPE (_o%d[0]) != %s)\n", - depth, type); -- indent += 2; -+ fprintf_indent (f, indent + 2, "{\n"); -+ indent += 4; - } - if (opr->kind == id_base::CODE) - fprintf_indent (f, indent, "_r%d = fold_build%d_loc (loc, %s, %s", -@@ -2571,7 +2572,8 @@ expr::gen_transform (FILE *f, int indent, const char *dest, bool gimple, - } - if (*opr == CONVERT_EXPR) - { -- indent -= 2; -+ fprintf_indent (f, indent - 2, "}\n"); -+ indent -= 4; - fprintf_indent (f, indent, "else\n"); - fprintf_indent (f, indent, " _r%d = _o%d[0];\n", depth, depth); - } -diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc -index 863ee3d3912..010be0b2b89 100644 ---- a/gcc/gimple-fold.cc -+++ b/gcc/gimple-fold.cc -@@ -7770,12 +7770,11 @@ get_base_constructor (tree base, poly_int64_pod *bit_offset, - } - } - --/* CTOR is CONSTRUCTOR of an array type. Fold a reference of SIZE bits -- to the memory at bit OFFSET. When non-null, TYPE is the expected -- type of the reference; otherwise the type of the referenced element -- is used instead. When SIZE is zero, attempt to fold a reference to -- the entire element which OFFSET refers to. Increment *SUBOFF by -- the bit offset of the accessed element. */ -+/* CTOR is a CONSTRUCTOR of an array or vector type. Fold a reference of SIZE -+ bits to the memory at bit OFFSET. If non-null, TYPE is the expected type of -+ the reference; otherwise the type of the referenced element is used instead. -+ When SIZE is zero, attempt to fold a reference to the entire element OFFSET -+ refers to. Increment *SUBOFF by the bit offset of the accessed element. */ - - static tree - fold_array_ctor_reference (tree type, tree ctor, -@@ -7940,13 +7939,11 @@ fold_array_ctor_reference (tree type, tree ctor, - return type ? build_zero_cst (type) : NULL_TREE; - } - --/* CTOR is CONSTRUCTOR of an aggregate or vector. Fold a reference -- of SIZE bits to the memory at bit OFFSET. When non-null, TYPE -- is the expected type of the reference; otherwise the type of -- the referenced member is used instead. When SIZE is zero, -- attempt to fold a reference to the entire member which OFFSET -- refers to; in this case. Increment *SUBOFF by the bit offset -- of the accessed member. */ -+/* CTOR is a CONSTRUCTOR of a record or union type. Fold a reference of SIZE -+ bits to the memory at bit OFFSET. If non-null, TYPE is the expected type of -+ the reference; otherwise the type of the referenced member is used instead. -+ When SIZE is zero, attempt to fold a reference to the entire member OFFSET -+ refers to. Increment *SUBOFF by the bit offset of the accessed member. */ - - static tree - fold_nonarray_ctor_reference (tree type, tree ctor, -@@ -7958,8 +7955,7 @@ fold_nonarray_ctor_reference (tree type, tree ctor, - unsigned HOST_WIDE_INT cnt; - tree cfield, cval; - -- FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (ctor), cnt, cfield, -- cval) -+ FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (ctor), cnt, cfield, cval) - { - tree byte_offset = DECL_FIELD_OFFSET (cfield); - tree field_offset = DECL_FIELD_BIT_OFFSET (cfield); -@@ -8031,6 +8027,19 @@ fold_nonarray_ctor_reference (tree type, tree ctor, - return NULL_TREE; - - offset_int inner_offset = offset_int (offset) - bitoffset; -+ -+ /* Integral bit-fields are left-justified on big-endian targets, so -+ we must arrange for native_encode_int to start at their MSB. */ -+ if (DECL_BIT_FIELD (cfield) && INTEGRAL_TYPE_P (TREE_TYPE (cfield))) -+ { -+ if (BYTES_BIG_ENDIAN != WORDS_BIG_ENDIAN) -+ return NULL_TREE; -+ const unsigned int encoding_size -+ = GET_MODE_BITSIZE (SCALAR_INT_TYPE_MODE (TREE_TYPE (cfield))); -+ if (BYTES_BIG_ENDIAN) -+ inner_offset += encoding_size - wi::to_offset (field_size); -+ } -+ - return fold_ctor_reference (type, cval, - inner_offset.to_uhwi (), size, - from_decl, suboff); -@@ -8043,7 +8052,7 @@ fold_nonarray_ctor_reference (tree type, tree ctor, - return build_zero_cst (type); - } - --/* CTOR is value initializing memory. Fold a reference of TYPE and -+/* CTOR is a value initializing memory. Fold a reference of TYPE and - bit size POLY_SIZE to the memory at bit POLY_OFFSET. When POLY_SIZE - is zero, attempt to fold a reference to the entire subobject - which OFFSET refers to. This is used when folding accesses to -@@ -8084,7 +8093,8 @@ fold_ctor_reference (tree type, tree ctor, const poly_uint64 &poly_offset, - } - return ret; - } -- /* For constants and byte-aligned/sized reads try to go through -+ -+ /* For constants and byte-aligned/sized reads, try to go through - native_encode/interpret. */ - if (CONSTANT_CLASS_P (ctor) - && BITS_PER_UNIT == 8 -@@ -8100,7 +8110,12 @@ fold_ctor_reference (tree type, tree ctor, const poly_uint64 &poly_offset, - if (len > 0) - return native_interpret_expr (type, buf, len); - } -- if (TREE_CODE (ctor) == CONSTRUCTOR) -+ -+ /* For constructors, try first a recursive local processing, but in any case -+ this requires the native storage order. */ -+ if (TREE_CODE (ctor) == CONSTRUCTOR -+ && !(AGGREGATE_TYPE_P (TREE_TYPE (ctor)) -+ && TYPE_REVERSE_STORAGE_ORDER (TREE_TYPE (ctor)))) - { - unsigned HOST_WIDE_INT dummy = 0; - if (!suboff) -@@ -8115,9 +8130,9 @@ fold_ctor_reference (tree type, tree ctor, const poly_uint64 &poly_offset, - ret = fold_nonarray_ctor_reference (type, ctor, offset, size, - from_decl, suboff); - -- /* Fall back to native_encode_initializer. Needs to be done -- only in the outermost fold_ctor_reference call (because it itself -- recurses into CONSTRUCTORs) and doesn't update suboff. */ -+ /* Otherwise fall back to native_encode_initializer. This may be done -+ only from the outermost fold_ctor_reference call (because it itself -+ recurses into CONSTRUCTORs and doesn't update suboff). */ - if (ret == NULL_TREE - && suboff == &dummy - && BITS_PER_UNIT == 8 -diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc -index 421ea1a20ef..d42387443b6 100644 ---- a/gcc/gimple-range-cache.cc -+++ b/gcc/gimple-range-cache.cc -@@ -448,7 +448,7 @@ block_range_cache::set_bb_range (tree name, const_basic_block bb, - { - unsigned v = SSA_NAME_VERSION (name); - if (v >= m_ssa_ranges.length ()) -- m_ssa_ranges.safe_grow_cleared (num_ssa_names + 1); -+ m_ssa_ranges.safe_grow_cleared (num_ssa_names); - - if (!m_ssa_ranges[v]) - { -@@ -515,7 +515,7 @@ void - block_range_cache::dump (FILE *f) - { - unsigned x; -- for (x = 0; x < m_ssa_ranges.length (); ++x) -+ for (x = 1; x < m_ssa_ranges.length (); ++x) - { - if (m_ssa_ranges[x]) - { -@@ -538,9 +538,12 @@ block_range_cache::dump (FILE *f, basic_block bb, bool print_varying) - bool summarize_varying = false; - for (x = 1; x < m_ssa_ranges.length (); ++x) - { -+ if (!m_ssa_ranges[x]) -+ continue; -+ - if (!gimple_range_ssa_p (ssa_name (x))) - continue; -- if (m_ssa_ranges[x] && m_ssa_ranges[x]->get_bb_range (r, bb)) -+ if (m_ssa_ranges[x]->get_bb_range (r, bb)) - { - if (!print_varying && r.varying_p ()) - { -@@ -557,11 +560,14 @@ block_range_cache::dump (FILE *f, basic_block bb, bool print_varying) - if (summarize_varying) - { - fprintf (f, "VARYING_P on entry : "); -- for (x = 1; x < num_ssa_names; ++x) -+ for (x = 1; x < m_ssa_ranges.length (); ++x) - { -+ if (!m_ssa_ranges[x]) -+ continue; -+ - if (!gimple_range_ssa_p (ssa_name (x))) - continue; -- if (m_ssa_ranges[x] && m_ssa_ranges[x]->get_bb_range (r, bb)) -+ if (m_ssa_ranges[x]->get_bb_range (r, bb)) - { - if (r.varying_p ()) - { -diff --git a/gcc/gimple-range-gori.cc b/gcc/gimple-range-gori.cc -index 772ccb88d55..263360862fe 100644 ---- a/gcc/gimple-range-gori.cc -+++ b/gcc/gimple-range-gori.cc -@@ -880,6 +880,7 @@ gori_compute::logical_combine (irange &r, enum tree_code code, - res = false; - if (idx) - tracer.trailer (idx, "logical_combine", res, NULL_TREE, r); -+ return res; - } - - switch (code) -diff --git a/gcc/gimple-ssa-store-merging.cc b/gcc/gimple-ssa-store-merging.cc -index 5ec4a94ca70..48733e5f8cf 100644 ---- a/gcc/gimple-ssa-store-merging.cc -+++ b/gcc/gimple-ssa-store-merging.cc -@@ -4605,12 +4605,13 @@ imm_store_chain_info::output_merged_store (merged_store_group *group) - } - else if ((BYTES_BIG_ENDIAN ? start_gap : end_gap) > 0) - { -- const unsigned HOST_WIDE_INT imask -- = (HOST_WIDE_INT_1U << info->bitsize) - 1; -+ wide_int imask -+ = wi::mask (info->bitsize, false, -+ TYPE_PRECISION (TREE_TYPE (tem))); - tem = gimple_build (&seq, loc, - BIT_AND_EXPR, TREE_TYPE (tem), tem, -- build_int_cst (TREE_TYPE (tem), -- imask)); -+ wide_int_to_tree (TREE_TYPE (tem), -+ imask)); - } - const HOST_WIDE_INT shift - = (BYTES_BIG_ENDIAN ? end_gap : start_gap); -diff --git a/gcc/gimplify.cc b/gcc/gimplify.cc -index a551c574a2d..947fe570e1e 100644 ---- a/gcc/gimplify.cc -+++ b/gcc/gimplify.cc -@@ -6847,7 +6847,12 @@ gimplify_asm_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p) - stmt = gimple_build_asm_vec (TREE_STRING_POINTER (ASM_STRING (expr)), - inputs, outputs, clobbers, labels); - -- gimple_asm_set_volatile (stmt, ASM_VOLATILE_P (expr) || noutputs == 0); -+ /* asm is volatile if it was marked by the user as volatile or -+ there are no outputs or this is an asm goto. */ -+ gimple_asm_set_volatile (stmt, -+ ASM_VOLATILE_P (expr) -+ || noutputs == 0 -+ || labels); - gimple_asm_set_input (stmt, ASM_INPUT_P (expr)); - gimple_asm_set_inline (stmt, ASM_INLINE_P (expr)); - -diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog -index 9d5675465a7..e0df7a5dfeb 100644 ---- a/gcc/go/ChangeLog -+++ b/gcc/go/ChangeLog -@@ -1,3 +1,11 @@ -+2023-06-28 Paul E. Murphy -+ -+ Backported from master: -+ 2023-06-22 Paul E. Murphy -+ -+ * go-backend.cc [TARGET_AIX]: Rename and update usage to TARGET_AIX_OS. -+ * go-lang.cc: Likewise. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/gcc/go/go-backend.cc b/gcc/go/go-backend.cc -index 7eed943416a..0a05a0b0645 100644 ---- a/gcc/go/go-backend.cc -+++ b/gcc/go/go-backend.cc -@@ -45,8 +45,8 @@ along with GCC; see the file COPYING3. If not see - #define GO_EXPORT_SECTION_NAME ".go_export" - #endif - --#ifndef TARGET_AIX --#define TARGET_AIX 0 -+#ifndef TARGET_AIX_OS -+#define TARGET_AIX_OS 0 - #endif - - /* This file holds all the cases where the Go frontend needs -@@ -107,7 +107,7 @@ go_write_export_data (const char *bytes, unsigned int size) - { - gcc_assert (targetm_common.have_named_sections); - sec = get_section (GO_EXPORT_SECTION_NAME, -- TARGET_AIX ? SECTION_EXCLUDE : SECTION_DEBUG, -+ TARGET_AIX_OS ? SECTION_EXCLUDE : SECTION_DEBUG, - NULL); - } - -diff --git a/gcc/go/go-lang.cc b/gcc/go/go-lang.cc -index c8365d2590a..89fba02026a 100644 ---- a/gcc/go/go-lang.cc -+++ b/gcc/go/go-lang.cc -@@ -39,8 +39,8 @@ along with GCC; see the file COPYING3. If not see - #include "go-c.h" - #include "go-gcc.h" - --#ifndef TARGET_AIX --#define TARGET_AIX 0 -+#ifndef TARGET_AIX_OS -+#define TARGET_AIX_OS 0 - #endif - - /* Language-dependent contents of a type. */ -@@ -119,9 +119,9 @@ go_langhook_init (void) - args.compiling_runtime = go_compiling_runtime; - args.debug_escape_level = go_debug_escape_level; - args.debug_escape_hash = go_debug_escape_hash; -- args.nil_check_size_threshold = TARGET_AIX ? -1 : 4096; -+ args.nil_check_size_threshold = TARGET_AIX_OS ? -1 : 4096; - args.debug_optimization = go_debug_optimization; -- args.need_eqtype = TARGET_AIX ? true : false; -+ args.need_eqtype = TARGET_AIX_OS ? true : false; - args.linemap = go_get_linemap(); - args.backend = go_get_backend(); - go_create_gogo (&args); -diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc -index 1b3b3bf135e..88b4ceacc07 100644 ---- a/gcc/go/gofrontend/expressions.cc -+++ b/gcc/go/gofrontend/expressions.cc -@@ -12325,7 +12325,8 @@ Call_expression::intrinsify(Gogo* gogo, - return Runtime::make_call(code, loc, 3, a1, a2, a3); - } - } -- else if (package == "internal/abi") -+ else if (package == "internal/abi" -+ || package == "bootstrap/internal/abi") // for bootstrapping gc - { - if (is_method) - return NULL; -diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc -index d35c6baf582..cca03dcdc35 100644 ---- a/gcc/go/gofrontend/gogo.cc -+++ b/gcc/go/gofrontend/gogo.cc -@@ -3331,6 +3331,9 @@ class Create_function_descriptors : public Traverse - int - expression(Expression**); - -+ static bool -+ skip_descriptor(Gogo* gogo, const Named_object*); -+ - private: - Gogo* gogo_; - }; -@@ -3341,6 +3344,9 @@ class Create_function_descriptors : public Traverse - int - Create_function_descriptors::function(Named_object* no) - { -+ if (Create_function_descriptors::skip_descriptor(this->gogo_, no)) -+ return TRAVERSE_CONTINUE; -+ - if (no->is_function() - && no->func_value()->enclosing() == NULL - && !no->func_value()->is_method() -@@ -3428,6 +3434,28 @@ Create_function_descriptors::expression(Expression** pexpr) - return TRAVERSE_CONTINUE; - } - -+// The gc compiler has some special cases that it always compiles as -+// intrinsics. For those we don't want to generate a function -+// descriptor, as there will be no code for it to refer to. -+ -+bool -+Create_function_descriptors::skip_descriptor(Gogo* gogo, -+ const Named_object* no) -+{ -+ const std::string& pkgpath(no->package() == NULL -+ ? gogo->pkgpath() -+ : no->package()->pkgpath()); -+ -+ // internal/abi is the standard library package, -+ // bootstrap/internal/abi is the name used when bootstrapping the gc -+ // compiler. -+ -+ return ((pkgpath == "internal/abi" -+ || pkgpath == "bootstrap/internal/abi") -+ && (no->name() == "FuncPCABI0" -+ || no->name() == "FuncPCABIInternal")); -+} -+ - // Create function descriptors as needed. We need a function - // descriptor for all exported functions and for all functions that - // are referenced without being called. -@@ -3449,7 +3477,8 @@ Gogo::create_function_descriptors() - if (no->is_function_declaration() - && !no->func_declaration_value()->type()->is_method() - && !Linemap::is_predeclared_location(no->location()) -- && !Gogo::is_hidden_name(no->name())) -+ && !Gogo::is_hidden_name(no->name()) -+ && !Create_function_descriptors::skip_descriptor(this, no)) - fndecls.push_back(no); - } - for (std::vector::const_iterator p = fndecls.begin(); -diff --git a/gcc/lra-eliminations.cc b/gcc/lra-eliminations.cc -index c630ff4af2d..7642d9857a8 100644 ---- a/gcc/lra-eliminations.cc -+++ b/gcc/lra-eliminations.cc -@@ -397,8 +397,8 @@ lra_eliminate_regs_1 (rtx_insn *insn, rtx x, machine_mode mem_mode, - rtx to = subst_p ? ep->to_rtx : ep->from_rtx; - - if (! update_p && ! full_p) -- return gen_rtx_PLUS (Pmode, to, XEXP (x, 1)); -- -+ return simplify_gen_binary (PLUS, Pmode, to, XEXP (x, 1)); -+ - if (maybe_ne (update_sp_offset, 0)) - offset = ep->to_rtx == stack_pointer_rtx ? update_sp_offset : 0; - else -diff --git a/gcc/match.pd b/gcc/match.pd -index fc2833bbdca..a9aae484b2b 100644 ---- a/gcc/match.pd -+++ b/gcc/match.pd -@@ -1723,7 +1723,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) - /* (x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2) */ - (simplify - (bit_and (bit_ior @0 CONSTANT_CLASS_P@1) CONSTANT_CLASS_P@2) -- (bit_ior (bit_and @0 @2) (bit_and @1 @2))) -+ (bit_ior (bit_and @0 @2) (bit_and! @1 @2))) - - /* Combine successive equal operations with constants. */ - (for bitop (bit_and bit_ior bit_xor) -@@ -1732,7 +1732,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) - (if (!CONSTANT_CLASS_P (@0)) - /* This is the canonical form regardless of whether (bitop @1 @2) can be - folded to a constant. */ -- (bitop @0 (bitop @1 @2)) -+ (bitop @0 (bitop! @1 @2)) - /* In this case we have three constants and (bitop @0 @1) doesn't fold - to a constant. This can happen if @0 or @1 is a POLY_INT_CST and if - the values involved are such that the operation can't be decided at -@@ -2635,13 +2635,13 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) - forever if something doesn't simplify into a constant. */ - (if (!CONSTANT_CLASS_P (@0)) - (if (outer_op == PLUS_EXPR) -- (plus (view_convert @0) (inner_op @2 (view_convert @1))) -- (minus (view_convert @0) (neg_inner_op @2 (view_convert @1))))) -+ (plus (view_convert @0) (inner_op! @2 (view_convert @1))) -+ (minus (view_convert @0) (neg_inner_op! @2 (view_convert @1))))) - (if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (@0)) - || TYPE_OVERFLOW_WRAPS (TREE_TYPE (@0))) - (if (outer_op == PLUS_EXPR) -- (view_convert (plus @0 (inner_op (view_convert @2) @1))) -- (view_convert (minus @0 (neg_inner_op (view_convert @2) @1)))) -+ (view_convert (plus @0 (inner_op! (view_convert @2) @1))) -+ (view_convert (minus @0 (neg_inner_op! (view_convert @2) @1)))) - /* If the constant operation overflows we cannot do the transform - directly as we would introduce undefined overflow, for example - with (a - 1) + INT_MIN. */ -@@ -2672,10 +2672,10 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) - /* If all 3 captures are CONSTANT_CLASS_P, punt, as we might recurse - forever if something doesn't simplify into a constant. */ - (if (!CONSTANT_CLASS_P (@0)) -- (minus (outer_op (view_convert @1) @2) (view_convert @0))) -+ (minus (outer_op! (view_convert @1) @2) (view_convert @0))) - (if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (@0)) - || TYPE_OVERFLOW_WRAPS (TREE_TYPE (@0))) -- (view_convert (minus (outer_op @1 (view_convert @2)) @0)) -+ (view_convert (minus (outer_op! @1 (view_convert @2)) @0)) - (if (types_match (type, @0)) - (with { tree cst = const_binop (outer_op, type, @1, @2); } - (if (cst && !TREE_OVERFLOW (cst)) -@@ -2691,10 +2691,10 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) - /* If all 3 captures are CONSTANT_CLASS_P, punt, as we might recurse - forever if something doesn't simplify into a constant. */ - (if (!CONSTANT_CLASS_P (@0)) -- (plus (view_convert @0) (minus @1 (view_convert @2)))) -+ (plus (view_convert @0) (minus! @1 (view_convert @2)))) - (if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (@0)) - || TYPE_OVERFLOW_WRAPS (TREE_TYPE (@0))) -- (view_convert (plus @0 (minus (view_convert @1) @2))) -+ (view_convert (plus @0 (minus! (view_convert @1) @2))) - (if (types_match (type, @0)) - (with { tree cst = const_binop (MINUS_EXPR, type, @1, @2); } - (if (cst && !TREE_OVERFLOW (cst)) -@@ -3711,19 +3711,19 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) - int inside_ptr = POINTER_TYPE_P (inside_type); - int inside_float = FLOAT_TYPE_P (inside_type); - int inside_vec = VECTOR_TYPE_P (inside_type); -- unsigned int inside_prec = TYPE_PRECISION (inside_type); -+ unsigned int inside_prec = element_precision (inside_type); - int inside_unsignedp = TYPE_UNSIGNED (inside_type); - int inter_int = INTEGRAL_TYPE_P (inter_type); - int inter_ptr = POINTER_TYPE_P (inter_type); - int inter_float = FLOAT_TYPE_P (inter_type); - int inter_vec = VECTOR_TYPE_P (inter_type); -- unsigned int inter_prec = TYPE_PRECISION (inter_type); -+ unsigned int inter_prec = element_precision (inter_type); - int inter_unsignedp = TYPE_UNSIGNED (inter_type); - int final_int = INTEGRAL_TYPE_P (type); - int final_ptr = POINTER_TYPE_P (type); - int final_float = FLOAT_TYPE_P (type); - int final_vec = VECTOR_TYPE_P (type); -- unsigned int final_prec = TYPE_PRECISION (type); -+ unsigned int final_prec = element_precision (type); - int final_unsignedp = TYPE_UNSIGNED (type); - } - (switch -@@ -4186,6 +4186,10 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) - /* (v ? w : 0) ? a : b is just (v & w) ? a : b - Currently disabled after pass lvec because ARM understands - VEC_COND_EXPR but not a plain v==w fed to BIT_IOR_EXPR. */ -+#if GIMPLE -+/* These can only be done in gimple as fold likes to convert: -+ (CMP) & N into (CMP) ? N : 0 -+ and we try to match the same pattern again and again. */ - (simplify - (vec_cond (vec_cond:s @0 @3 integer_zerop) @1 @2) - (if (optimize_vectors_before_lowering_p () && types_match (@0, @3)) -@@ -4220,6 +4224,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) - (vec_cond @0 @3 (vec_cond:s @1 @2 @3)) - (if (optimize_vectors_before_lowering_p () && types_match (@0, @1)) - (vec_cond (bit_and (bit_not @0) @1) @2 @3))) -+#endif - - /* Canonicalize mask ? { 0, ... } : { -1, ...} to ~mask if the mask - types are compatible. */ -diff --git a/gcc/omp-expand.cc b/gcc/omp-expand.cc -index c3d6447440d..09190a79ab2 100644 ---- a/gcc/omp-expand.cc -+++ b/gcc/omp-expand.cc -@@ -2564,7 +2564,8 @@ expand_omp_for_init_vars (struct omp_for_data *fd, gimple_stmt_iterator *gsi, - tree factor = fd->factor; - gcond *cond_stmt - = expand_omp_build_cond (gsi, NE_EXPR, factor, -- build_zero_cst (TREE_TYPE (factor))); -+ build_zero_cst (TREE_TYPE (factor)), -+ true); - edge e = split_block (gsi_bb (*gsi), cond_stmt); - basic_block bb0 = e->src; - e->flags = EDGE_TRUE_VALUE; -diff --git a/gcc/rtlanal.cc b/gcc/rtlanal.cc -index c436c640c37..78a740cb54b 100644 ---- a/gcc/rtlanal.cc -+++ b/gcc/rtlanal.cc -@@ -6990,3 +6990,18 @@ vec_series_lowpart_p (machine_mode result_mode, machine_mode op_mode, rtx sel) - } - return false; - } -+ -+/* Return true if X contains a paradoxical subreg. */ -+ -+bool -+contains_paradoxical_subreg_p (rtx x) -+{ -+ subrtx_var_iterator::array_type array; -+ FOR_EACH_SUBRTX_VAR (iter, array, x, NONCONST) -+ { -+ x = *iter; -+ if (SUBREG_P (x) && paradoxical_subreg_p (x)) -+ return true; -+ } -+ return false; -+} -diff --git a/gcc/rtlanal.h b/gcc/rtlanal.h -index 9fd84a74fc3..606d2047265 100644 ---- a/gcc/rtlanal.h -+++ b/gcc/rtlanal.h -@@ -338,4 +338,6 @@ vec_series_highpart_p (machine_mode result_mode, machine_mode op_mode, - bool - vec_series_lowpart_p (machine_mode result_mode, machine_mode op_mode, rtx sel); - -+bool -+contains_paradoxical_subreg_p (rtx x); - #endif -diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog -index c2333b51c6e..51f12cc7709 100644 ---- a/gcc/testsuite/ChangeLog -+++ b/gcc/testsuite/ChangeLog -@@ -1,3 +1,5056 @@ -+2023-12-24 Patrick Palka -+ -+ Backported from master: -+ 2023-09-22 Patrick Palka -+ -+ PR c++/111485 -+ * g++.dg/cpp2a/concepts-ttp5.C: New test. -+ * g++.dg/cpp2a/concepts-ttp6.C: New test. -+ -+2023-12-20 Patrick Palka -+ -+ Backported from master: -+ 2023-04-25 Patrick Palka -+ -+ PR c++/108975 -+ * g++.dg/cpp0x/lambda/lambda-const11a.C: New test. -+ -+2023-12-19 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-19 Jakub Jelinek -+ -+ PR target/112816 -+ * gcc.target/i386/sse2-pr112816-2.c: New test. -+ -+2023-12-18 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-18 Jakub Jelinek -+ -+ PR tree-optimization/113013 -+ * gcc.dg/pr113013.c: New test. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-08 Jakub Jelinek -+ -+ PR sanitizer/112727 -+ * c-c++-common/ubsan/pr112727.c: New test. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-11-29 Jakub Jelinek -+ -+ PR middle-end/112733 -+ * gcc.dg/pr112733.c: New test. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-05 Jakub Jelinek -+ -+ PR target/112845 -+ * gcc.dg/pr112845.c: New file. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-04 Jakub Jelinek -+ -+ PR target/112837 -+ * gcc.dg/pr112837.c: New test. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-04 Jakub Jelinek -+ -+ PR target/112816 -+ * gcc.target/i386/sse2-pr112816.c: New test. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-12-04 Jakub Jelinek -+ -+ PR c++/112795 -+ * g++.dg/ext/unroll-5.C: New test. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-11-25 Jakub Jelinek -+ -+ PR target/111408 -+ * gcc.c-torture/execute/pr111408.c: New test. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-11-13 Jakub Jelinek -+ -+ PR tree-optimization/111967 -+ * gcc.dg/tree-ssa/pr111967.c: New test. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-11-09 Jakub Jelinek -+ -+ PR c/112339 -+ * c-c++-common/ubsan/Wno-attributes-1.c: New test. -+ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-07-19 Jakub Jelinek -+ -+ PR tree-optimization/110731 -+ * gcc.dg/pr110731.c: New test. -+ -+2023-12-15 Richard Biener -+ -+ Backported from master: -+ 2023-08-24 Richard Biener -+ -+ PR debug/111080 -+ * gcc.dg/debug/dwarf2/pr111080.c: New testcase. -+ -+2023-12-15 Richard Biener -+ -+ Backported from master: -+ 2023-08-25 Richard Biener -+ -+ PR tree-optimization/111137 -+ * gcc.dg/torture/pr111137.c: New testcase. -+ -+2023-12-15 Richard Biener -+ -+ Backported from master: -+ 2023-08-31 Richard Biener -+ -+ PR middle-end/111253 -+ * gcc.dg/Wfree-nonheap-object-7.c: New testcase. -+ -+2023-12-12 liuhongt -+ -+ Backported from master: -+ 2023-12-12 liuhongt -+ -+ * gcc.target/i386/pr112891.c: New test. -+ * gcc.target/i386/pr112891-2.c: New test. -+ -+2023-12-01 Harald Anlauf -+ -+ Backported from master: -+ 2023-11-26 Harald Anlauf -+ -+ PR fortran/111880 -+ * gfortran.dg/pr111880.f90: New test. -+ -+2023-11-27 Patrick Palka -+ -+ Backported from master: -+ 2023-11-16 Patrick Palka -+ -+ PR c++/111703 -+ PR c++/107939 -+ * g++.dg/cpp2a/concepts-fn8.C: Extend test. -+ * g++.dg/diagnostic/constexpr4.C: New test. -+ -+2023-11-27 Patrick Palka -+ -+ Backported from master: -+ 2023-11-15 Patrick Palka -+ -+ PR c++/111703 -+ PR c++/112269 -+ * g++.dg/cpp2a/concepts-fn8.C: New test. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-10-23 Richard Biener -+ -+ PR tree-optimization/111917 -+ * gcc.dg/torture/pr111917.c: New testcase. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-10-17 Richard Biener -+ -+ PR middle-end/111818 -+ * gcc.dg/torture/pr111818.c: New testcase. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-09-28 Richard Biener -+ -+ PR tree-optimization/111614 -+ * gcc.dg/torture/pr111614.c: New testcase. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-10-12 Richard Biener -+ -+ PR tree-optimization/111764 -+ * gcc.dg/vect/pr111764.c: New testcase. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-10-20 Richard Biener -+ -+ PR tree-optimization/111445 -+ * gcc.dg/torture/pr111445.c: New testcase. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-08-18 Richard Biener -+ -+ PR tree-optimization/111019 -+ * g++.dg/torture/pr111019.C: New testcase. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-08-03 Richard Biener -+ -+ PR tree-optimization/110702 -+ * gcc.dg/torture/pr110702.c: New testcase. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-07-06 Richard Biener -+ -+ PR tree-optimization/110556 -+ * gcc.dg/torture/pr110556.c: New testcase. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-07-06 Richard Biener -+ -+ PR tree-optimization/110515 -+ * g++.dg/opt/pr110515.C: New testcase. -+ -+2023-11-27 Richard Biener -+ -+ Backported from master: -+ 2023-06-20 Richard Biener -+ -+ PR debug/110295 -+ * g++.dg/debug/pr110295.C: New testcase. -+ -+2023-11-24 Uros Bizjak -+ -+ Backported from master: -+ 2023-11-23 Uros Bizjak -+ -+ PR target/112672 -+ * gcc.target/i386/pr112672.c: New test. -+ -+2023-11-22 Maciej W. Rozycki -+ -+ Backported from master: -+ 2023-11-22 Maciej W. Rozycki -+ -+ PR target/111815 -+ * gcc.dg/torture/pr111815.c: New test. -+ -+2023-11-17 Jason Merrill -+ -+ PR c++/112301 -+ PR c++/102191 -+ PR c++/33799 -+ * g++.dg/eh/return1.C: Add more cases. -+ -+2023-11-17 Jason Merrill -+ -+ PR c++/33799 -+ * g++.dg/eh/return1.C: Add label cases. -+ -+2023-11-16 Eric Botcazou -+ -+ * gnat.dg/varsize4.adb (Func): Initialize Byte_Read parameter. -+ -+2023-11-16 Eric Botcazou -+ -+ * gnat.dg/varsize4.ads, gnat.dg/varsize4.adb: New test. -+ * gnat.dg/varsize4_pkg.ads: New helper. -+ -+2023-11-16 Xi Ruoyao -+ -+ Backported from master: -+ 2023-11-15 Xi Ruoyao -+ -+ * gcc.target/loongarch/cas-acquire.c: New test. -+ -+2023-11-15 Kewen Lin -+ -+ Backported from master: -+ 2023-11-06 Kewen Lin -+ -+ PR target/111828 -+ * lib/target-supports.exp -+ (check_effective_target_powerpc_as_p10_htm): New proc. -+ * g++.target/powerpc/pr111828-1.C: New test. -+ * g++.target/powerpc/pr111828-2.C: New test. -+ -+2023-11-10 liuhongt -+ -+ Backported from master: -+ 2023-11-10 liuhongt -+ -+ * g++.target/i386/pr112443.C: New test. -+ -+2023-10-29 Iain Buclaw -+ -+ Backported from master: -+ 2023-10-29 Iain Buclaw -+ -+ PR d/110712 -+ * gdc.dg/pr110712.d: New test. -+ -+2023-10-28 Iain Buclaw -+ -+ Backported from master: -+ 2023-10-28 Iain Buclaw -+ -+ PR d/112270 -+ * gdc.dg/pr112270.d: New test. -+ -+2023-10-26 chenxiaolong -+ -+ Backported from master: -+ 2023-10-25 chenxiaolong -+ -+ * gcc.target/loongarch/builtin_thread_pointer.c: New test. -+ -+2023-10-26 liuhongt -+ -+ Backported from master: -+ 2023-07-06 liuhongt -+ -+ * gcc.target/i386/pr110170-3.c: New test. -+ -+2023-10-23 Kewen Lin -+ -+ Backported from master: -+ 2023-10-12 Kewen Lin -+ -+ PR target/111367 -+ * g++.target/powerpc/pr111367.C: New test. -+ -+2023-10-21 Harald Anlauf -+ -+ Backported from master: -+ 2023-10-17 Harald Anlauf -+ -+ PR fortran/111837 -+ * gfortran.dg/implied_do_io_8.f90: New test. -+ -+2023-10-16 Kewen Lin -+ -+ Backported from master: -+ 2023-09-25 Kewen Lin -+ -+ PR target/111380 -+ * gcc.target/powerpc/pr111380-1.c: New test. -+ * gcc.target/powerpc/pr111380-2.c: New test. -+ -+2023-10-16 Kewen Lin -+ -+ Backported from master: -+ 2023-09-25 Kewen Lin -+ -+ PR target/111366 -+ * g++.target/powerpc/pr111366.C: New test. -+ -+2023-10-07 Andrew Pinski -+ -+ Backported from master: -+ 2023-10-06 Andrew Pinski -+ -+ PR middle-end/111699 -+ * gcc.c-torture/compile/pr111699-1.c: New test. -+ -+2023-10-02 Pat Haugen -+ -+ Backported from master: -+ 2023-09-19 Pat Haugen -+ -+ * gcc.target/powerpc/clone1.c: Add xfails. -+ * gcc.target/powerpc/clone3.c: Likewise. -+ * gcc.target/powerpc/mod-1.c: Update scan strings and add xfails. -+ * gcc.target/powerpc/mod-2.c: Likewise. -+ * gcc.target/powerpc/p10-vdivq-vmodq.c: Add xfails. -+ -+2023-09-29 Wilco Dijkstra -+ -+ Backported from master: -+ 2023-09-28 Wilco Dijkstra -+ -+ PR target/111121 -+ * gcc.target/aarch64/mops_4.c: Add memmove testcases. -+ -+2023-09-26 Eric Botcazou -+ -+ * gnat.dg/opt102.adb:New test. -+ * gnat.dg/opt102_pkg.adb, gnat.dg/opt102_pkg.ads: New helper. -+ -+2023-09-20 Richard Sandiford -+ -+ Backported from master: -+ 2023-09-15 Richard Sandiford -+ -+ PR target/111411 -+ * gcc.dg/rtl/aarch64/pr111411.c: New test. -+ -+2023-09-12 Uros Bizjak -+ -+ PR target/111340 -+ * gcc.target/i386/pr111340.c: New test. -+ -+2023-09-12 Richard Sandiford -+ -+ * gcc.target/aarch64/stack-protector-8.c: New test. -+ * gcc.target/aarch64/stack-protector-9.c: Likewise. -+ -+2023-09-12 Richard Sandiford -+ -+ * gcc.target/aarch64/sve/pcs/stack_clash_3.c: Avoid redundant probes. -+ -+2023-09-12 Richard Sandiford -+ -+ * gcc.target/aarch64/stack-check-prologue-17.c: Expect the probe -+ to be at offset 1024 rather than offset 0. -+ * gcc.target/aarch64/stack-check-prologue-18.c: Likewise. -+ * gcc.target/aarch64/stack-check-prologue-19.c: Likewise. -+ -+2023-09-12 Richard Sandiford -+ -+ * gcc.target/aarch64/stack-check-prologue-18.c: New test. -+ * gcc.target/aarch64/stack-check-prologue-19.c: Likewise. -+ * gcc.target/aarch64/stack-check-prologue-20.c: Likewise. -+ -+2023-09-12 Richard Sandiford -+ -+ * gcc.target/aarch64/stack-check-prologue-17.c: New test. -+ -+2023-09-12 Haochen Gui -+ -+ Backported from master: -+ 2023-08-31 Haochen Gui -+ -+ PR target/96762 -+ * gcc.target/powerpc/pr96762.c: New. -+ -+2023-09-11 liuhongt -+ -+ Backported from master: -+ 2023-09-11 liuhongt -+ -+ * gcc.target/i386/pr111306.c: New test. -+ -+2023-08-30 Jakub Jelinek -+ -+ Backported from master: -+ 2023-08-30 Jakub Jelinek -+ -+ PR tree-optimization/110914 -+ * gcc.c-torture/execute/pr110914.c: New test. -+ -+2023-08-30 Jakub Jelinek -+ -+ Backported from master: -+ 2023-08-30 Jakub Jelinek -+ -+ PR tree-optimization/111015 -+ * gcc.dg/pr111015.c: New test. -+ -+2023-08-16 liuhongt -+ -+ Backported from master: -+ 2023-08-16 liuhongt -+ -+ * gcc.target/i386/avx2-gather-2.c: Adjust options to keep -+ gather vectorization. -+ * gcc.target/i386/avx2-gather-6.c: Ditto. -+ * gcc.target/i386/avx512f-pr88464-1.c: Ditto. -+ * gcc.target/i386/avx512f-pr88464-5.c: Ditto. -+ * gcc.target/i386/avx512vl-pr88464-1.c: Ditto. -+ * gcc.target/i386/avx512vl-pr88464-11.c: Ditto. -+ * gcc.target/i386/avx512vl-pr88464-3.c: Ditto. -+ * gcc.target/i386/avx512vl-pr88464-9.c: Ditto. -+ * gcc.target/i386/pr88531-1b.c: Ditto. -+ * gcc.target/i386/pr88531-1c.c: Ditto. -+ -+2023-08-15 Iain Buclaw -+ -+ PR d/110959 -+ * gdc.dg/pr110959.d: New test. -+ * gdc.test/runnable/test23010.d: New test. -+ -+2023-08-11 Jason Merrill -+ -+ PR c++/106310 -+ * g++.dg/template/template-keyword4.C: New test. -+ -+2023-08-11 Jason Merrill -+ -+ PR c++/106890 -+ PR c++/109666 -+ * g++.dg/cpp0x/nsdmi-array2.C: New test. -+ * g++.dg/cpp0x/nsdmi-template25.C: New test. -+ -+2023-08-11 Jason Merrill -+ -+ PR c++/108099 -+ * g++.dg/ext/int128-7.C: New test. -+ * g++.dg/ext/int128-8.C: New test. -+ * g++.dg/ext/unsigned-typedef2.C: New test. -+ * g++.dg/ext/unsigned-typedef3.C: New test. -+ -+2023-08-07 Patrick Palka -+ -+ Backported from master: -+ 2023-05-09 Patrick Palka -+ -+ PR c++/109761 -+ * g++.dg/cpp0x/noexcept78.C: New test. -+ -+2023-08-06 Jakub Jelinek -+ -+ Backported from master: -+ 2022-12-19 Jakub Jelinek -+ -+ PR fortran/107397 -+ * gfortran.dg/pr107397.f90: Adjust expected diagnostic wording and -+ add space between dg-error string and closing }. -+ -+2023-08-06 Steve Kargl -+ -+ Backported from master: -+ 2022-12-18 Steve Kargl -+ -+ PR fortran/107397 -+ * gfortran.dg/pr107397.f90: New test. -+ -+2023-08-01 Kewen Lin -+ -+ Backported from master: -+ 2023-07-26 Kewen Lin -+ -+ PR target/110741 -+ * g++.target/powerpc/pr110741.C: New test. -+ -+2023-07-20 Harald Anlauf -+ -+ Backported from master: -+ 2023-07-17 Harald Anlauf -+ -+ PR fortran/95947 -+ PR fortran/110658 -+ * gfortran.dg/deferred_character_37.f90: New test. -+ -+2023-07-19 Maciej W. Rozycki -+ -+ Backported from master: -+ 2023-07-11 Maciej W. Rozycki -+ -+ * gcc.dg/vect/pr97428.c: Limit to `vect_double' targets. -+ -+2023-07-14 Uros Bizjak -+ -+ Backported from master: -+ 2023-07-14 Uros Bizjak -+ -+ PR target/110206 -+ * gcc.target/i386/pr110206.c: New test. -+ -+2023-07-14 Harald Anlauf -+ -+ Backported from master: -+ 2023-07-11 Harald Anlauf -+ -+ PR fortran/110288 -+ * gfortran.dg/findloc_10.f90: New test. -+ -+2023-07-13 Uros Bizjak -+ -+ Backported from master: -+ 2023-07-13 Uros Bizjak -+ -+ PR target/106966 -+ * gcc.target/alpha/pr106966.c: New test. -+ -+2023-07-12 Patrick Palka -+ -+ Backported from master: -+ 2023-06-29 Patrick Palka -+ -+ PR c++/110468 -+ * g++.dg/cpp0x/noexcept79.C: New test. -+ -+2023-07-08 Harald Anlauf -+ -+ Backported from master: -+ 2023-07-08 Harald Anlauf -+ -+ PR fortran/110585 -+ * gfortran.dg/findloc_9.f90: New test. -+ -+2023-07-07 Iain Buclaw -+ -+ Backported from master: -+ 2023-07-07 Iain Buclaw -+ -+ PR d/108842 -+ * gdc.dg/pr98277.d: Add more tests. -+ * gdc.dg/pr108842.d: New test. -+ -+2023-07-05 Michael Meissner -+ -+ Backported from master: -+ 2023-06-23 Michael Meissner -+ Aaron Sawdey -+ -+ PR target/105325 -+ * g++.target/powerpc/pr105325.C: New test. -+ * gcc.target/powerpc/fusion-p10-ldcmpi.c: Update insn counts. -+ -+2023-07-02 Iain Buclaw -+ -+ Backported from master: -+ 2023-07-02 Iain Buclaw -+ -+ PR d/110516 -+ * gdc.dg/torture/pr110516a.d: New test. -+ * gdc.dg/torture/pr110516b.d: New test. -+ -+2023-07-01 Iain Buclaw -+ -+ Backported from master: -+ 2023-07-01 Iain Buclaw -+ -+ PR d/110514 -+ * gdc.dg/pr110514a.d: New test. -+ * gdc.dg/pr110514b.d: New test. -+ * gdc.dg/pr110514c.d: New test. -+ * gdc.dg/pr110514d.d: New test. -+ -+2023-06-30 Eric Botcazou -+ -+ * gcc.c-torture/execute/20230630-1.c: New test. -+ * gcc.c-torture/execute/20230630-2.c: Likewise. -+ * gcc.c-torture/execute/20230630-3.c: Likewise -+ * gcc.c-torture/execute/20230630-4.c: Likewise -+ -+2023-06-29 liuhongt -+ -+ * gcc.target/i386/pr110309.c: New test. -+ -+2023-06-29 Hongyu Wang -+ -+ Backported from master: -+ 2023-06-26 Hongyu Wang -+ -+ * gcc.target/i386/mvc17.c: New test. -+ -+2023-06-28 liuhongt -+ -+ * gcc.target/i386/avx-vzeroupper-29.c: New testcase. -+ * gcc.target/i386/avx-vzeroupper-12.c: Adjust testcase. -+ * gcc.target/i386/avx-vzeroupper-7.c: Ditto. -+ * gcc.target/i386/avx-vzeroupper-9.c: Ditto. -+ -+2023-06-27 Andrew Pinski -+ -+ Backported from master: -+ 2023-06-27 Andrew Pinski -+ -+ PR middle-end/110420 -+ PR middle-end/103979 -+ PR middle-end/98619 -+ * gcc.c-torture/compile/asmgoto-6.c: New test. -+ -+2023-06-26 Iain Buclaw -+ -+ Backported from master: -+ 2023-06-26 Iain Buclaw -+ -+ PR d/110359 -+ * gdc.dg/pr110359.d: New test. -+ -+2023-06-26 Iain Buclaw -+ -+ Backported from master: -+ 2023-06-26 Iain Buclaw -+ -+ PR d/110113 -+ * gdc.test/compilable/test23978.d: New test. -+ -+2023-06-23 Richard Biener -+ -+ Backported from master: -+ 2023-06-19 Richard Biener -+ -+ PR tree-optimization/110298 -+ * gcc.dg/torture/pr110298.c: New testcase. -+ -+2023-06-22 Alex Coplan -+ -+ Backported from master: -+ 2023-06-07 Alex Coplan -+ -+ PR target/110132 -+ * lib/target-supports.exp (check_effective_target_aarch64_asm_FUNC_ok): -+ Extend to ls64. -+ * g++.target/aarch64/acle/acle.exp: New. -+ * g++.target/aarch64/acle/ls64.C: New test. -+ * g++.target/aarch64/acle/ls64_lto.C: New test. -+ * gcc.target/aarch64/acle/ls64_lto.c: New test. -+ * gcc.target/aarch64/acle/pr110132.c: New test. -+ -+2023-06-22 Alex Coplan -+ -+ Backported from master: -+ 2023-06-07 Alex Coplan -+ -+ PR target/110100 -+ * gcc.target/aarch64/acle/pr110100.c: New test. -+ -+2023-06-20 Kewen Lin -+ -+ Backported from master: -+ 2023-06-13 Kewen Lin -+ -+ PR testsuite/110230 -+ PR target/109932 -+ * gcc.target/powerpc/pr109932-1.c: Adjust with int128 effective target. -+ * gcc.target/powerpc/pr109932-2.c: Ditto. -+ -+2023-06-20 Kewen Lin -+ -+ Backported from master: -+ 2023-06-12 Kewen Lin -+ -+ PR target/109932 -+ * gcc.target/powerpc/pr109932-1.c: New test. -+ * gcc.target/powerpc/pr109932-2.c: New test. -+ -+2023-06-20 Kewen Lin -+ -+ Backported from master: -+ 2023-06-12 Kewen Lin -+ -+ PR target/110011 -+ * gcc.target/powerpc/pr110011.c: New test. -+ -+2023-06-15 Xi Ruoyao -+ -+ Backported from master: -+ 2023-03-07 Xi Ruoyao -+ -+ * gcc.target/aarch64/shrink_wrap_1.c (dg-options): Add -+ -fno-stack-protector. -+ * gcc.target/aarch64/stack-check-cfa-1.c (dg-options): Add -+ -fno-stack-protector. -+ * gcc.target/aarch64/stack-check-cfa-2.c (dg-options): Add -+ -fno-stack-protector. -+ * gcc.target/aarch64/test_frame_17.c (dg-options): Add -+ -fno-stack-protector. -+ -+2023-06-15 Xi Ruoyao -+ -+ Backported from master: -+ 2023-03-07 Xi Ruoyao -+ -+ * gcc.target/aarch64/pr104005.c (dg-options): Add -+ -fno-stack-protector. -+ -+2023-06-15 Xi Ruoyao -+ -+ Backported from master: -+ 2023-03-07 Xi Ruoyao -+ -+ * gcc.target/aarch64/auto-init-7.c (dg-options): Add -+ -fno-stack-protector. -+ -+2023-06-15 Xi Ruoyao -+ -+ Backported from master: -+ 2023-03-07 Xi Ruoyao -+ -+ * gcc.target/aarch64/pr103147-10.c (dg-options): Add -+ -fno-stack-protector. -+ * g++.target/aarch64/pr103147-10.C: Likewise. -+ -+2023-06-15 Xi Ruoyao -+ -+ Backported from master: -+ 2023-03-07 Xi Ruoyao -+ -+ * gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp (sve_flags): -+ Add -fno-stack-protector. -+ -+2023-06-15 Xi Ruoyao -+ -+ Backported from master: -+ 2023-03-07 Xi Ruoyao -+ -+ PR testsuite/70150 -+ * gcc.target/aarch64/fuse_adrp_add_1.c (dg-options): Add -+ -fno-pie. -+ -+2023-06-15 Xi Ruoyao -+ -+ Backported from master: -+ 2023-03-07 Xi Ruoyao -+ -+ PR testsuite/70150 -+ * gcc.dg/tls/pr78796.c (dg-additional-options): Add -fno-pie -+ -no-pie for aarch64-*-*. -+ * gcc.target/aarch64/pr63304_1.c (dg-options): Add -fno-pie. -+ * gcc.target/aarch64/pr70120-2.c (dg-options): Add -fno-pie. -+ * gcc.target/aarch64/pr78733.c (dg-options): Add -fno-pie. -+ * gcc.target/aarch64/pr79041-2.c (dg-options): Add -fno-pie. -+ * gcc.target/aarch64/pr94530.c (dg-options): Add -fno-pie. -+ * gcc.target/aarch64/pr94577.c (dg-options): Add -fno-pie. -+ * gcc.target/aarch64/reload-valid-spoff.c (dg-options): Add -+ -fno-pie. -+ -+2023-06-15 Xi Ruoyao -+ -+ Backported from master: -+ 2023-03-07 Xi Ruoyao -+ -+ PR testsuite/70150 -+ * gcc.target/aarch64/aapcs64/aapcs64.exp (additional_flags): -+ Add -fno-pie -no-pie. -+ -+2023-06-10 Georg-Johann Lay -+ -+ PR target/109650 -+ Backport from 2023-05-10 master r14-1688. -+ * gcc.target/avr/torture/pr109650-1.c: New test. -+ * gcc.target/avr/torture/pr109650-2.c: New test. -+ -+2023-06-09 Iain Sandoe -+ -+ Backported from master: -+ 2023-06-02 Iain Sandoe -+ -+ PR target/110044 -+ * gcc.target/powerpc/darwin-abi-13-0.c: New test. -+ * gcc.target/powerpc/darwin-abi-13-1.c: New test. -+ * gcc.target/powerpc/darwin-abi-13-2.c: New test. -+ * gcc.target/powerpc/darwin-structs-0.h: New test. -+ -+2023-06-09 liuhongt -+ -+ * gcc.target/i386/pr110108-2.c: New test. -+ -+2023-06-08 Alex Coplan -+ -+ Backported from master: -+ 2023-05-25 Alex Coplan -+ -+ PR target/109800 -+ * gcc.target/arm/pure-code/pr109800.c: New test. -+ -+2023-06-08 Kyrylo Tkachov -+ -+ Backported from master: -+ 2023-05-24 Kyrylo Tkachov -+ -+ PR target/109939 -+ * gcc.target/arm/pr109939.c: New test. -+ -+2023-06-04 Steve Kargl -+ -+ Backported from master: -+ 2023-06-02 Steve Kargl -+ -+ PR fortran/100607 -+ * gfortran.dg/select_rank_6.f90: New test. -+ -+2023-05-30 Christophe Lyon -+ -+ Backported from master: -+ 2023-05-30 Christophe Lyon -+ -+ * gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-int.c: -+ Support both definitions of int32_t. -+ -+2023-05-25 Georg-Johann Lay -+ -+ PR target/82931 -+ * gcc.target/avr/pr82931.c: New test. -+ -+2023-05-22 Michael Meissner -+ -+ PR target/70243 -+ * gcc.target/powerpc/pr70243.c: New test. Back port from master -+ 04/10/2023 change. -+ -+2023-05-22 Jakub Jelinek -+ -+ Backported from master: -+ 2023-05-21 Jakub Jelinek -+ -+ PR tree-optimization/109505 -+ * gcc.target/aarch64/sve/pr109505.c: New test. -+ -+2023-05-20 Harald Anlauf -+ -+ Backported from master: -+ 2023-05-15 Harald Anlauf -+ -+ PR fortran/109846 -+ * gfortran.dg/ptr-func-5.f90: New test. -+ -+2023-05-20 Triffid Hunter -+ -+ PR target/105753 -+ Backport from 2023-05-20 https://gcc.gnu.org/r14-1016 -+ * gcc.target/avr/torture/pr105753.c: New test. -+ -+2023-05-19 Patrick Palka -+ -+ Backported from master: -+ 2023-05-15 Patrick Palka -+ -+ * g++.dg/cpp23/feat-cxx2b.C: Test __cpp_auto_cast. -+ -+2023-05-18 Alexandre Oliva -+ -+ * gcc.target/arm/acle/cde-mve-full-assembly.c: Drop blank -+ after tab after vmsr, and lower the case of P0. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ * gcc.target/arm/mve/intrinsics/srshr.c: Update shift value. -+ * gcc.target/arm/mve/intrinsics/srshrl.c: Update shift value. -+ * gcc.target/arm/mve/intrinsics/uqshl.c: Update shift value. -+ * gcc.target/arm/mve/intrinsics/uqshll.c: Update shift value. -+ * gcc.target/arm/mve/intrinsics/urshr.c: Update shift value. -+ * gcc.target/arm/mve/intrinsics/urshrl.c: Update shift value. -+ * gcc.target/arm/mve/intrinsics/vadciq_m_s32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vadciq_m_u32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vadciq_s32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vadciq_u32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vadcq_m_s32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vadcq_m_u32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vadcq_s32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vadcq_u32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vsbciq_m_s32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vsbciq_s32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vsbciq_u32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vsbcq_s32.c: Update to ubfx. -+ * gcc.target/arm/mve/intrinsics/vsbcq_u32.c: Update to ubfx. -+ * gcc.target/arm/mve/mve_const_shifts.c: New test. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ PR target/109697 -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u16.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u32.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u8.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u16.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u32.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u8.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u16.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u32.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u8.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u16.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u32.c: XFAIL check. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u8.c: XFAIL check. -+ * gcc.target/arm/mve/pr108177-1.c: Relax registers. -+ * gcc.target/arm/mve/pr108177-10.c: Relax registers. -+ * gcc.target/arm/mve/pr108177-11.c: Relax registers. -+ * gcc.target/arm/mve/pr108177-12.c: Relax registers. -+ * gcc.target/arm/mve/pr108177-13.c: Relax registers. -+ * gcc.target/arm/mve/pr108177-13-run.c: use mve_fp -+ * gcc.target/arm/mve/pr108177-14.c: Relax registers. -+ * gcc.target/arm/mve/pr108177-14-run.c: use mve_fp -+ * gcc.target/arm/mve/pr108177-2.c: Relax registers. -+ * gcc.target/arm/mve/pr108177-3.c: Relax registers. -+ * gcc.target/arm/mve/pr108177-4.c: Relax registers. -+ * gcc.target/arm/mve/pr108177-5.c: Relax registers. -+ * gcc.target/arm/mve/pr108177-6.c: Relax registers. -+ * gcc.target/arm/mve/pr108177-7.c: Relax registers. -+ * gcc.target/arm/mve/pr108177-8.c: Relax registers. -+ * gcc.target/arm/mve/pr108177-9.c: Relax registers. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ * gcc.target/arm/mve/intrinsics/mve_fp_vaddq_n.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vaddq_m.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vaddq_n.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vddupq_m_n_u16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vddupq_m_n_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vddupq_m_n_u8.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vddupq_n_u16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vddupq_n_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vddupq_n_u8.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vddupq_x_n_u16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vddupq_x_n_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vddupq_x_n_u8.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vdwdupq_x_n_u16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vdwdupq_x_n_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vdwdupq_x_n_u8.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u8.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vidupq_n_u16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vidupq_n_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vidupq_n_u8.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vidupq_x_n_u16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vidupq_x_n_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vidupq_x_n_u8.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_viwdupq_x_n_u16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_viwdupq_x_n_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_viwdupq_x_n_u8.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_s64.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_u64.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_z_s64.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_z_u64.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_s64.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_u64.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_z_s64.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_z_u64.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_f16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_s16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_s32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_u16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_f16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_s16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_s32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_u16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_f16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_s16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_s32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_u16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_f16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_s16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_s32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_u16.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_f32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_s32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_z_f32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_z_s32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_z_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_f32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_s32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_z_f32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_z_s32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_z_u32.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset.c: Removed. -+ * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset_p.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vfmaq_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vfmaq_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vfmasq_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vfmasq_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vminnmavq_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vminnmavq_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vminnmvq_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vminnmvq_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_f32-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_f16-1.c: Removed. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_f32-1.c: Removed. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ * gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-fp.c: Add testcases. -+ * gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-int.c: Add testcases. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ Backported from master: -+ 2023-05-18 Stam Markianos-Wright -+ -+ * gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c: New. -+ -+2023-05-18 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/asrl.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/lsll.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/sqrshr.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/sqrshrl_sat48.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/sqshl.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/sqshll.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/srshr.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/srshrl.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/uqrshl.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/uqrshll_sat48.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/uqshl.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/uqshll.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/urshr.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/urshrl.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vadciq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vadciq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vadciq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vadciq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vadcq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vadcq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vadcq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vadcq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vandq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbicq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vctp16q.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vctp16q_m.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vctp32q.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vctp32q_m.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vctp64q.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vctp64q_m.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vctp8q.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vctp8q_m.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtaq_m_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtaq_m_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtaq_m_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtaq_m_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtaq_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtaq_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtaq_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtaq_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtaq_x_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtaq_x_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtaq_x_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtaq_x_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtbq_f16_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtbq_f32_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtbq_m_f16_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtbq_m_f32_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtbq_x_f32_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtmq_m_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtmq_m_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtmq_m_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtmq_m_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtmq_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtmq_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtmq_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtmq_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtmq_x_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtmq_x_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtmq_x_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtmq_x_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtnq_m_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtnq_m_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtnq_m_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtnq_m_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtnq_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtnq_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtnq_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtnq_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtnq_x_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtnq_x_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtnq_x_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtnq_x_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtpq_m_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtpq_m_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtpq_m_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtpq_m_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtpq_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtpq_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtpq_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtpq_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtpq_x_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtpq_x_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtpq_x_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtpq_x_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_f16_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_f16_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_f32_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_f32_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_f16_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_f16_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_f32_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_f32_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_m_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_n_f16_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_n_f16_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_n_f32_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_n_f32_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_n_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_n_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_n_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_n_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_f16_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_f16_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_f32_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_f32_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_s16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_s32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_u16_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvtq_x_u32_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvttq_f16_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvttq_f32_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvttq_m_f16_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvttq_m_f32_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcvttq_x_f32_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/veorq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmaq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmaq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmaq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmaq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmaq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmaq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmasq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmasq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmsq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmsq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmsq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmsq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavxq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavxq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavxq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavaq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavaxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavaxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlsldavxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovlbq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovlbq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovlbq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovlbq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovlbq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovlbq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovlbq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovlbq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovlbq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovlbq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovlbq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovlbq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovltq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovltq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovltq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovltq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovltq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovltq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovltq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovltq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovltq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovltq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovltq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovltq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovnbq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovnbq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovnbq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovnbq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovnbq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovnbq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovnbq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovnbq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovntq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovntq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovntq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovntq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovntq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovntq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovntq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmovntq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmvnq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vornq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vorrq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vpnot.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vpselq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vpselq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vpselq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vpselq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vpselq_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vpselq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vpselq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vpselq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vpselq_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vpselq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovnbq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovnbq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovnbq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovnbq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovnbq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovnbq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovnbq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovnbq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovntq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovntq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovntq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovntq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovntq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovntq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovntq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovntq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovunbq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovunbq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovunbq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovunbq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovuntq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovuntq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovuntq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqmovuntq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshlq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrntq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrntq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrntq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrntq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshruntq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrshruntq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_r_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_r_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_r_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_r_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_r_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_r_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshlq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshluq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshluq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshluq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrnbq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrnbq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrnbq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrnbq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrntq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrntq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrntq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrntq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrunbq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshrunbq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshruntq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqshruntq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev16q_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev16q_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev16q_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev16q_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev16q_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev16q_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev32q_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrev64q_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlsldavhaq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlsldavhaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlsldavhq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlsldavhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlsldavhxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlsldavhxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndaq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndaq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndaq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndaq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndaq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndaq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndmq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndmq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndmq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndmq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndmq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndmq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndnq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndnq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndnq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndnq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndnq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndnq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndpq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndpq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndpq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndpq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndpq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndpq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndxq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndxq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndxq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndxq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndxq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrndxq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrnbq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrnbq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrnbq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrnbq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrntq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrntq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrntq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrntq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsbciq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsbciq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsbciq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsbcq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsbcq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlcq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlcq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlcq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlcq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlcq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlcq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlcq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlcq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlcq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlcq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlcq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlcq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshllbq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshllbq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshllbq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshllbq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshllbq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshllbq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshllbq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshllbq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshllbq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshllbq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshllbq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshllbq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlltq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlltq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlltq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlltq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlltq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlltq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlltq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlltq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlltq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlltq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlltq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlltq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_r_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_r_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_r_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_r_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_r_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_r_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshlq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrnbq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrnbq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrnbq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrnbq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrntq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrntq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrntq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrntq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrntq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrntq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsliq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsliq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsliq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsliq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsliq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsliq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsriq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsriq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsriq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsriq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsriq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsriq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_p_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst1q_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_u64.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vstrwq_f32.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vstrwq_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrwq_u32.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vld1q_f16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vld1q_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_z_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_z_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_z_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_z_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_z_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_z_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_z_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld1q_z_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld4q_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld4q_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld4q_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld4q_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld4q_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld4q_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld4q_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld4q_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_z_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_z_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_z_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_z_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_z_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst2q_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst2q_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst2q_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst2q_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst2q_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst2q_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst2q_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst2q_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst4q_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst4q_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst4q_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst4q_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst4q_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst4q_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst4q_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vst4q_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrbq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_p_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vstrhq_u32.c: Likewise. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ Backported from master: -+ 2023-04-06 Stam Markianos-Wright -+ -+ * gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-fp.c: Remove unused variables. -+ * gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-int.c: Remove unused variables. -+ -+2023-05-18 Murray Steele -+ -+ Backported from master: -+ 2023-01-18 Murray Steele -+ -+ * gcc.target/arm/mve/general/preserve_user_namespace_1.c: New test. -+ -+2023-05-18 Andre Vieira -+ -+ Backported from master: -+ 2023-01-24 Andre Vieira -+ -+ * gcc.target/arm/mve/pr108177-1-run.c: New test. -+ * gcc.target/arm/mve/pr108177-1.c: New test. -+ * gcc.target/arm/mve/pr108177-10-run.c: New test. -+ * gcc.target/arm/mve/pr108177-10.c: New test. -+ * gcc.target/arm/mve/pr108177-11-run.c: New test. -+ * gcc.target/arm/mve/pr108177-11.c: New test. -+ * gcc.target/arm/mve/pr108177-12-run.c: New test. -+ * gcc.target/arm/mve/pr108177-12.c: New test. -+ * gcc.target/arm/mve/pr108177-13-run.c: New test. -+ * gcc.target/arm/mve/pr108177-13.c: New test. -+ * gcc.target/arm/mve/pr108177-14-run.c: New test. -+ * gcc.target/arm/mve/pr108177-14.c: New test. -+ * gcc.target/arm/mve/pr108177-2-run.c: New test. -+ * gcc.target/arm/mve/pr108177-2.c: New test. -+ * gcc.target/arm/mve/pr108177-3-run.c: New test. -+ * gcc.target/arm/mve/pr108177-3.c: New test. -+ * gcc.target/arm/mve/pr108177-4-run.c: New test. -+ * gcc.target/arm/mve/pr108177-4.c: New test. -+ * gcc.target/arm/mve/pr108177-5-run.c: New test. -+ * gcc.target/arm/mve/pr108177-5.c: New test. -+ * gcc.target/arm/mve/pr108177-6-run.c: New test. -+ * gcc.target/arm/mve/pr108177-6.c: New test. -+ * gcc.target/arm/mve/pr108177-7-run.c: New test. -+ * gcc.target/arm/mve/pr108177-7.c: New test. -+ * gcc.target/arm/mve/pr108177-8-run.c: New test. -+ * gcc.target/arm/mve/pr108177-8.c: New test. -+ * gcc.target/arm/mve/pr108177-9-run.c: New test. -+ * gcc.target/arm/mve/pr108177-9.c: New test. -+ * gcc.target/arm/mve/pr108177-main.x: New test include. -+ * gcc.target/arm/mve/pr108177.x: New test include. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ Backported from master: -+ 2023-04-04 Stam Markianos-Wright -+ -+ * gcc.target/arm/mve/intrinsics/vcreateq_f16.c: Tighten test. -+ * gcc.target/arm/mve/intrinsics/vcreateq_f32.c: Tighten test. -+ * gcc.target/arm/mve/intrinsics/vcreateq_s16.c: Tighten test. -+ * gcc.target/arm/mve/intrinsics/vcreateq_s32.c: Tighten test. -+ * gcc.target/arm/mve/intrinsics/vcreateq_s64.c: Tighten test. -+ * gcc.target/arm/mve/intrinsics/vcreateq_s8.c: Tighten test. -+ * gcc.target/arm/mve/intrinsics/vcreateq_u16.c: Tighten test. -+ * gcc.target/arm/mve/intrinsics/vcreateq_u32.c: Tighten test. -+ * gcc.target/arm/mve/intrinsics/vcreateq_u64.c: Tighten test. -+ * gcc.target/arm/mve/intrinsics/vcreateq_u8.c: Tighten test. -+ -+2023-05-18 Stam Markianos-Wright -+ -+ Backported from master: -+ 2023-01-16 Stam Markianos-Wright -+ -+ PR target/96795 -+ PR target/107515 -+ * gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-fp.c: New test. -+ * gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-int.c: New test. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vhaddq_n_s16.c: Add missing extern -+ "C". -+ * gcc.target/arm/mve/intrinsics/vhaddq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaxq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlashq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlashq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlashq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vld2q_f16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vld2q_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld2q_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld2q_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld2q_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld2q_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld2q_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vld2q_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqnegq_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vqnegq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqnegq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqnegq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqnegq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqnegq_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmladhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmladhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmladhq_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqabsq_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vqabsq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqabsq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqabsq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqabsq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqabsq_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vcmulq_f16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vcmulq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmulq_x_f32.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vcmlaq_f16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f32.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_f16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_p16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_p8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_p16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_p8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vmulhq_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vmulhq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulhq_x_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vnegq_f16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vnegq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vnegq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vnegq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vnegq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vnegq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vnegq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vnegq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vnegq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vnegq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vnegq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vnegq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vnegq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vnegq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vnegq_x_s8.c: Likewise. -+ * gcc.target/arm/simd/mve-vneg.c: Update test. -+ * gcc.target/arm/simd/mve-vshr.c: Likewise -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vclzq_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use -+ extern "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vclzq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclzq_x_u8.c: Likewise. -+ * gcc.target/arm/simd/mve-vclz.c: Update test. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2023-01-25 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vclsq_m_s16.c: Use -+ check-function-bodies instead of scan-assembler checks. Use extern -+ "C" for C++ testing. -+ * gcc.target/arm/mve/intrinsics/vclsq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclsq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclsq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclsq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclsq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclsq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclsq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vclsq_x_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-12-08 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vabavq_p_s16.c: Extern functions -+ as "C". -+ * gcc.target/arm/mve/intrinsics/vabavq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvaq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvaq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxaq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxaq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxavq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxavq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxavq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminaq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminaq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminaq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminaq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminaq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminavq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminavq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminavq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminavq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminavq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminavq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmaq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmaq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmaq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmaq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmavq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmavq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmvq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmvq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqsubq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_u8.c: Likewise. -+ -+2023-05-18 Christophe Lyon -+ -+ Backported from master: -+ 2022-09-30 Christophe Lyon -+ -+ * gcc.target/arm/mve/mve_load_memory_modes.c: Update expected -+ registers. -+ * gcc.target/arm/mve/mve_store_memory_modes.c: Likewise. -+ -+2023-05-18 Christophe Lyon -+ -+ Backported from master: -+ 2022-10-03 Christophe Lyon -+ -+ * gcc.target/arm/mve/intrinsics/vrev64q_m_s16-clobber.c: New test. -+ -+2023-05-18 Christophe Lyon -+ -+ Backported from master: -+ 2022-12-01 Christophe Lyon -+ -+ * gcc.target/arm/simd/mve-compare-1.c: Update. -+ * gcc.target/arm/simd/mve-compare-scalar-1.c: Update. -+ * gcc.target/arm/simd/mve-vabs.c: Update. -+ * gcc.target/arm/simd/mve-vadd-1.c: Update. -+ * gcc.target/arm/simd/mve-vadd-scalar-1.c: Update. -+ * gcc.target/arm/simd/mve-vcmp.c: Update. -+ * gcc.target/arm/simd/pr101325.c: Update. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsetq_lane_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s16.c: Improve tests. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vrshlq_x_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s16.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s32.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s8.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u16.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u32.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u8.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s16.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s32.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s8.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u16.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u32.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u8.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s16.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s32.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s8.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u16.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u32.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u8.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_s16.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_s32.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_s8.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_u16.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_u32.c: -+ * gcc.target/arm/mve/intrinsics/vqsubq_u8.c: -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s16.c: -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s32.c: -+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s8.c: -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s16.c: Improve tests. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulhq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmullbq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmulltq_s32.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlashq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlashq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqdmlashq_n_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vqaddq_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlasq_n_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c: Improve tests. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s32.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_s16.c: Improve tests. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmladavaxq_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u16.c: Improve tests. -+ * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhsubq_x_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vhaddq_x_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vsubq_f16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vsubq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vsubq_x_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vmulq_f16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vmulq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmulq_x_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vaddlvaq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvaq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddlvq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvaq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vaddvq_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vabsq_f16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vabsq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabsq_x_s8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vabdq_f16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vabdq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabdq_x_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vabavq_p_s16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vabavq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vabavq_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxaq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxaq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxavq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxavq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxavq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vmaxvq_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vminaq_m_s16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vminaq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminaq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminaq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminaq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminaq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminavq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminavq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminavq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminavq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminavq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminavq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmaq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmaq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmaq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmaq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmavq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmavq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmq_x_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmq_x_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmvq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmvq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_x_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_x_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_x_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_x_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_x_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminq_x_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_p_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_p_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_p_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_p_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_p_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_p_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vminvq_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpcsq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpeqq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgeq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpgtq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmphiq_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpleq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpltq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcmpneq_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_f16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_f16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vidupq_m_n_u16.c: Improve tests. -+ * gcc.target/arm/mve/intrinsics/vidupq_m_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_m_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_x_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_x_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u8.c: Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c : Improve test. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c : Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vddupq_m_n_u16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vddupq_m_n_u32.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_m_n_u8.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u32.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u8.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_n_u16.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_n_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_n_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_wb_u16.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_wb_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_wb_u8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_x_n_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_x_n_u32.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_x_n_u8.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u16.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u32.c : Likewise. -+ * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u8.c : Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c: -+ Update test. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c: -+ Likewise. -+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c: -+ Likewise. -+ -+2023-05-18 Andrea Corallo -+ -+ Backported from master: -+ 2022-11-28 Andrea Corallo -+ -+ * gcc.target/arm/mve/intrinsics/vcreateq_f16.c: Improve test. -+ * gcc.target/arm/mve/intrinsics/vcreateq_f32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_s16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_s32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_s64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_s8.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_u16.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_u32.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_u64.c: Likewise. -+ * gcc.target/arm/mve/intrinsics/vcreateq_u8.c: Likewise. -+ -+2023-05-17 Jakub Jelinek -+ -+ Backported from master: -+ 2023-05-17 Jakub Jelinek -+ -+ PR c++/109868 -+ * g++.dg/init/pr109868.C: New test. -+ -+2023-05-15 Jason Merrill -+ -+ PR c++/109241 -+ * g++.dg/cpp1y/lambda-generic-local-class2.C: New test. -+ -+2023-05-15 Richard Biener -+ -+ PR testsuite/108776 -+ * c-c++-common/rotate-11.c: Add --param logical-op-non-short-circuit=1. -+ -+2023-05-15 Richard Biener -+ -+ Backported from master: -+ 2023-05-15 Richard Biener -+ -+ * gcc.dg/vect/pr108950.c: Re-order dg-require-effective-target -+ and dg-do. -+ -+2023-05-10 Richard Biener -+ -+ Backported from master: -+ 2023-05-10 Richard Biener -+ -+ * g++.dg/torture/pr106922.C: Force _GLIBCXX_USE_CXX11_ABI to 1. -+ -+2023-05-09 Patrick Palka -+ -+ Backported from master: -+ 2023-04-01 Patrick Palka -+ -+ PR c++/109160 -+ * g++.dg/cpp2a/concepts-placeholder12.C: New test. -+ -+2023-05-09 Jakub Jelinek -+ -+ Backported from master: -+ 2023-05-09 Jakub Jelinek -+ -+ PR tree-optimization/109778 -+ * gcc.dg/lto/pr109778_0.c: New test. -+ * gcc.dg/lto/pr109778_1.c: New file. -+ -+2023-05-09 Jakub Jelinek -+ -+ Backported from master: -+ 2023-05-09 Jakub Jelinek -+ -+ PR tree-optimization/109778 -+ * gcc.c-torture/execute/pr109778.c: New test. -+ -+2023-05-09 Martin Uecker -+ -+ Backported from master: -+ 2023-02-18 Martin Uecker -+ -+ PR c/105660 -+ PR c/105660 -+ * gcc.dg/pr105660-1.c: New test. -+ * gcc.dg/pr105660-2.c: New test. -+ -+2023-05-09 Kewen Lin -+ -+ Backported from master: -+ 2023-04-26 Kewen Lin -+ -+ PR target/109069 -+ * gcc.target/powerpc/pr109069-1.c: New test. -+ * gcc.target/powerpc/pr109069-2-run.c: New test. -+ * gcc.target/powerpc/pr109069-2.c: New test. -+ * gcc.target/powerpc/pr109069-2.h: New test. -+ -+2023-05-09 Jason Merrill -+ -+ PR c++/106740 -+ PR c++/105852 -+ * g++.dg/template/friend78.C: New test. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/gcc/testsuite/c-c++-common/rotate-11.c b/gcc/testsuite/c-c++-common/rotate-11.c -index e57db19d949..85cde2786e2 100644 ---- a/gcc/testsuite/c-c++-common/rotate-11.c -+++ b/gcc/testsuite/c-c++-common/rotate-11.c -@@ -1,6 +1,6 @@ - /* PR tree-optimization/108440 */ - /* { dg-do compile { target { { ilp32 || lp64 } || llp64 } } } */ --/* { dg-options "-O2 -fdump-tree-optimized" } */ -+/* { dg-options "-O2 -fdump-tree-optimized --param logical-op-non-short-circuit=1" } */ - /* { dg-final { scan-tree-dump-times " r<< " 5 "optimized" } } */ - /* { dg-final { scan-tree-dump-times " \\\& 7;" 4 "optimized" } } */ - -diff --git a/gcc/testsuite/c-c++-common/ubsan/Wno-attributes-1.c b/gcc/testsuite/c-c++-common/ubsan/Wno-attributes-1.c -new file mode 100644 -index 00000000000..8e392c7fd6e ---- /dev/null -+++ b/gcc/testsuite/c-c++-common/ubsan/Wno-attributes-1.c -@@ -0,0 +1,9 @@ -+/* PR c/112339 */ -+/* { dg-do compile { target { c++11 || c } } } */ -+/* { dg-options "-Wno-attributes=foo::no_sanitize -fsanitize=undefined" } */ -+/* { dg-additional-options "-std=c2x" { target c } } */ -+ -+[[foo::no_sanitize("bounds")]] void -+foo (void) -+{ -+} -diff --git a/gcc/testsuite/c-c++-common/ubsan/pr112727.c b/gcc/testsuite/c-c++-common/ubsan/pr112727.c -new file mode 100644 -index 00000000000..cc8b3e2a565 ---- /dev/null -+++ b/gcc/testsuite/c-c++-common/ubsan/pr112727.c -@@ -0,0 +1,17 @@ -+/* PR sanitizer/112727 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fsanitize=shift-exponent,bounds-strict -Wuninitialized" } */ -+ -+#ifndef __cplusplus -+#define bool _Bool -+#endif -+ -+struct S { bool s[8]; }; -+ -+void -+foo (const struct S *x) -+{ -+ unsigned n = 0; -+ for (unsigned j = 0; j < 8; j++) -+ n |= ((!x->s[j]) ? 1 : 0) << (16 + j); -+} -diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const11a.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const11a.C -new file mode 100644 -index 00000000000..7fc3d48a8dd ---- /dev/null -+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const11a.C -@@ -0,0 +1,21 @@ -+// PR c++/108975 -+// A version of lambda-const11.C using a generic lambda. -+// { dg-do compile { target c++14 } } -+ -+template void g(); -+template struct A { }; -+ -+template -+void f() { -+ constexpr int dim = 1; -+ auto l = [&](auto) { -+ int n[dim * 1]; -+ using ty1 = decltype(g()); -+ using ty2 = A; -+ }; -+ l(0); -+ // In f, we shouldn't actually capture dim. -+ static_assert (sizeof(l) == 1, ""); -+} -+ -+template void f(); -diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept78.C b/gcc/testsuite/g++.dg/cpp0x/noexcept78.C -new file mode 100644 -index 00000000000..e8156eb7c6f ---- /dev/null -+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept78.C -@@ -0,0 +1,16 @@ -+// PR c++/109761 -+// { dg-do compile { target c++11 } } -+ -+struct base { -+ virtual void foo() noexcept { } -+ virtual ~base() { } -+}; -+ -+struct outer : base { -+ struct nested { -+ void foo() noexcept(noexcept(g())); // { dg-bogus "looser" } -+ ~nested() noexcept(noexcept(g())); // { dg-bogus "looser" } -+ }; -+ static void g(); -+}; -+ -diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept79.C b/gcc/testsuite/g++.dg/cpp0x/noexcept79.C -new file mode 100644 -index 00000000000..d1f54d14431 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept79.C -@@ -0,0 +1,18 @@ -+// PR c++/110468 -+// { dg-do compile { target c++11 } } -+ -+template -+struct variant { -+ variant() noexcept(T > 0); -+}; -+ -+template -+struct A { -+ variant m = {}; -+}; -+ -+struct B { -+ B(A<1>); -+}; -+ -+B b = {{}}; -diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-array2.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-array2.C -new file mode 100644 -index 00000000000..5ad60f56510 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/cpp0x/nsdmi-array2.C -@@ -0,0 +1,15 @@ -+// PR c++/109666 -+// { dg-do compile { target c++11 } } -+ -+struct Point { -+ int value_; -+}; -+template struct StaticVector { -+ static StaticVector create() { -+ StaticVector output; -+ return output; -+ } -+ Point _M_elems[n]{}; -+ -+}; -+void f() { StaticVector<3>::create(); } -diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-template25.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-template25.C -new file mode 100644 -index 00000000000..368e745540e ---- /dev/null -+++ b/gcc/testsuite/g++.dg/cpp0x/nsdmi-template25.C -@@ -0,0 +1,18 @@ -+// PR c++/106890 -+// { dg-do compile { target c++11 } } -+ -+struct A -+{ -+ int p; -+}; -+ -+template -+struct B : virtual public A -+{ -+ B() { } -+ B(int) { } -+ -+ int k = this->p; -+}; -+ -+template struct B; -diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-local-class2.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-local-class2.C -new file mode 100644 -index 00000000000..83856de1f41 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-local-class2.C -@@ -0,0 +1,13 @@ -+// PR c++/109241 -+// { dg-do compile { target c++14 } } -+// { dg-options "" } no pedantic -+ -+void g() { -+ [](auto) { -+ [](auto) { -+ ({ -+ struct A {}; -+ }); -+ }; -+ }(1); -+} -diff --git a/gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C b/gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C -index c1f91e78e66..d8a1acd17df 100644 ---- a/gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C -+++ b/gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C -@@ -557,3 +557,9 @@ - #elif __cpp_multidimensional_subscript != 202110 - # error "__cpp_multidimensional_subscript != 202110" - #endif -+ -+#ifndef __cpp_auto_cast -+# error "__cpp_auto_cast" -+#elif __cpp_auto_cast != 202110 -+# error "__cpp_auto_cast != 202110" -+#endif -diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-fn8.C b/gcc/testsuite/g++.dg/cpp2a/concepts-fn8.C -new file mode 100644 -index 00000000000..c63d26c931d ---- /dev/null -+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-fn8.C -@@ -0,0 +1,26 @@ -+// PR c++/111703 -+// { dg-do compile { target c++20 } } -+ -+template -+constexpr bool always_true() { return true; } -+ -+struct P { -+ P() = default; -+ -+ template -+ requires (always_true()) // { dg-bogus "used before its definition" } -+ constexpr P(const T&) { } -+ -+ int n, m; -+}; -+ -+void (*f)(P); -+P (*h)(P); -+ -+template -+constexpr bool g() { -+ P x; -+ f(x); // { dg-bogus "from here" } -+ f(h(x)); // { dg-bogus "from here" } -+ return true; -+} -diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-placeholder12.C b/gcc/testsuite/g++.dg/cpp2a/concepts-placeholder12.C -new file mode 100644 -index 00000000000..22f0ac5e26a ---- /dev/null -+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-placeholder12.C -@@ -0,0 +1,29 @@ -+// PR c++/109160 -+// { dg-do compile { target c++20 } } -+ -+template -+concept C = B; -+ -+template struct X { }; -+ -+template -+struct A { -+ template auto V> static void f(); -+ template auto V> static void g(X); -+ template auto V> static inline int value; -+ template auto V> struct D { }; -+}; -+ -+int main() { -+ A::f<0>(); -+ A::f<0>(); // { dg-error "no match|constraints" } -+ -+ A::g(X<0>{}); -+ A::g(X<0>{}); // { dg-error "no match|constraints" } -+ -+ bool v1 = A::value<0>; -+ bool v2 = A::value<0>; // { dg-error "constraints" } -+ -+ A::D<0> d1; -+ A::D<0> d2; // { dg-error "constraints" } -+} -diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-ttp5.C b/gcc/testsuite/g++.dg/cpp2a/concepts-ttp5.C -new file mode 100644 -index 00000000000..abc22ce59d8 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-ttp5.C -@@ -0,0 +1,24 @@ -+// PR c++/111485 -+// { dg-do compile { target c++20 } } -+ -+template constexpr bool always_true = true; -+ -+template concept C = always_true; -+template concept D = C || true; -+ -+template class TT> struct example; -+template class UU> using example_t = example; -+ -+template -+struct A { -+ template class TT> struct example; -+ -+ template class UU> using example_t = example; -+ -+ template -+ struct B { -+ template class UU> using example_t = example; -+ }; -+}; -+ -+template struct A::B; -diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-ttp6.C b/gcc/testsuite/g++.dg/cpp2a/concepts-ttp6.C -new file mode 100644 -index 00000000000..6396e99cc05 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-ttp6.C -@@ -0,0 +1,17 @@ -+// PR c++/111485 -+// { dg-do compile { target c++20 } } -+ -+template constexpr bool always_true = true; -+ -+template concept C = always_true; -+ -+template requires C class TT> -+void f(); -+ -+template requires C -+struct A; -+ -+int main() { -+ f(); -+ f(); // { dg-error "no match|constraint mismatch" } -+} -diff --git a/gcc/testsuite/g++.dg/debug/pr110295.C b/gcc/testsuite/g++.dg/debug/pr110295.C -new file mode 100644 -index 00000000000..10cad557095 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/debug/pr110295.C -@@ -0,0 +1,19 @@ -+// { dg-do compile } -+// { dg-options "-g" } -+ -+template -+struct QCachedT -+{ -+ void operator delete(void *, T *) {} -+}; -+template -+void exercise() -+{ -+ struct thing_t -+ : QCachedT -+ { -+ }; -+ thing_t *list[1]; -+ new thing_t; // { dg-warning "" } -+} -+int main() { exercise<1>(); } -diff --git a/gcc/testsuite/g++.dg/diagnostic/constexpr4.C b/gcc/testsuite/g++.dg/diagnostic/constexpr4.C -new file mode 100644 -index 00000000000..f37c01cac55 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/diagnostic/constexpr4.C -@@ -0,0 +1,9 @@ -+// Verify we diagnose a call to a non-constant function pointer ahead of time. -+// { dg-do compile { target c++11 } } -+ -+bool (*f)(int); -+ -+template -+void g() { -+ static_assert(f(N), ""); // { dg-error "non-constant|'f' is not usable" } -+} -diff --git a/gcc/testsuite/g++.dg/eh/return1.C b/gcc/testsuite/g++.dg/eh/return1.C -index ac2225405da..5148ead016e 100644 ---- a/gcc/testsuite/g++.dg/eh/return1.C -+++ b/gcc/testsuite/g++.dg/eh/return1.C -@@ -16,13 +16,14 @@ extern "C" int printf (const char *, ...); - - struct X - { -- X(bool throws) : throws_(throws) { ++c; DEBUG; } -- X(const X& x); // not defined -+ X(bool throws) : i(-42), throws_(throws) { ++c; DEBUG; } -+ X(const X& x): i(x.i), throws_(x.throws_) { ++c; DEBUG; } - ~X() THROWS - { -- ++d; DEBUG; -+ i = ++d; DEBUG; - if (throws_) { throw 1; } - } -+ int i; - private: - bool throws_; - }; -@@ -33,6 +34,13 @@ X f() - return X(false); - } - -+X f2() -+{ -+ foo: -+ X x(true); -+ return X(false); -+} -+ - X g() - { - return X(true),X(false); -@@ -54,6 +62,85 @@ X i() - return X(false); - } - -+X i2() -+{ -+ try { -+ foo: -+ X x(true); -+ return X(false); -+ } catch(...) {} -+ return X(false); -+} -+ -+// c++/112301 -+X i3() -+{ -+ try { -+ X x(true); -+ return X(false); -+ } catch(...) { throw; } -+} -+ -+X i4() -+{ -+ try { -+ X x(true); -+ X x2(false); -+ return x2; -+ } catch(...) { throw; } -+} -+ -+X i4a() -+{ -+ try { -+ X x2(false); -+ X x(true); -+ return x2; -+ } catch(...) { throw; } -+} -+ -+X i4b() -+{ -+ X x(true); -+ X x2(false); -+ return x2; -+} -+ -+X i4c() -+{ -+ X x2(false); -+ X x(true); -+ return x2; -+} -+ -+X i5() -+{ -+ X x2(false); -+ -+ try { -+ X x(true); -+ return x2; -+ } catch(...) { -+ if (x2.i != -42) -+ d += 42; -+ throw; -+ } -+} -+ -+X i6() -+{ -+ X x2(false); -+ -+ try { -+ X x(true); -+ return x2; -+ } catch(...) { -+ if (x2.i != -42) -+ d += 42; -+ } -+ return x2; -+} -+ - X j() - { - try { -@@ -84,6 +171,8 @@ int main() - try { f(); } - catch (...) {} - -+ try { f2(); } catch (...) {} -+ - try { g(); } - catch (...) {} - -@@ -93,6 +182,15 @@ int main() - try { i(); } - catch (...) {} - -+ try { i2(); } catch (...) {} -+ try { i3(); } catch (...) {} -+ try { i4(); } catch (...) {} -+ try { i4a(); } catch (...) {} -+ try { i4b(); } catch (...) {} -+ try { i4c(); } catch (...) {} -+ try { i5(); } catch (...) {} -+ try { i6(); } catch (...) {} -+ - try { j(); } catch (...) {} - - try { k(); } catch (...) {} -diff --git a/gcc/testsuite/g++.dg/ext/int128-7.C b/gcc/testsuite/g++.dg/ext/int128-7.C -new file mode 100644 -index 00000000000..bf5e8c40a4b ---- /dev/null -+++ b/gcc/testsuite/g++.dg/ext/int128-7.C -@@ -0,0 +1,4 @@ -+// PR c++/108099 -+// { dg-do compile { target { c++11 && int128 } } } -+ -+using i128 = signed __int128_t; // { dg-error "specified with" } -diff --git a/gcc/testsuite/g++.dg/ext/int128-8.C b/gcc/testsuite/g++.dg/ext/int128-8.C -new file mode 100644 -index 00000000000..07535a9820e ---- /dev/null -+++ b/gcc/testsuite/g++.dg/ext/int128-8.C -@@ -0,0 +1,24 @@ -+// PR c++/108099 -+// { dg-do compile { target { c++11 && int128 } } } -+// { dg-options "" } -+ -+using u128 = unsigned __int128_t; -+using s128 = signed __int128_t; -+template struct integral_constant { -+ static constexpr T value = v; -+}; -+typedef integral_constant false_type; -+typedef integral_constant true_type; -+template -+struct is_same : false_type {}; -+template -+struct is_same : true_type {}; -+static_assert (is_same <__int128, s128>::value, ""); -+static_assert (is_same ::value, ""); -+static_assert (is_same <__int128_t, s128>::value, ""); -+static_assert (is_same ::value, ""); -+static_assert (is_same <__uint128_t, u128>::value, ""); -+static_assert (sizeof (s128) == sizeof (__int128), ""); -+static_assert (sizeof (u128) == sizeof (unsigned __int128), ""); -+static_assert (s128(-1) < 0, ""); -+static_assert (u128(-1) > 0, ""); -diff --git a/gcc/testsuite/g++.dg/ext/unroll-5.C b/gcc/testsuite/g++.dg/ext/unroll-5.C -new file mode 100644 -index 00000000000..f0bc51b2239 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/ext/unroll-5.C -@@ -0,0 +1,23 @@ -+// PR c++/112795 -+// { dg-do compile { target c++11 } } -+// { dg-options "-O2 -fdump-tree-cunrolli-details" } -+ -+void baz (int); -+constexpr int n = 3; -+ -+template -+void -+foo () -+{ -+#pragma GCC unroll(n) -+ for (int i = 0; i != n; ++i) -+ baz (i); -+} -+ -+void -+qux () -+{ -+ foo <2> (); -+} -+ -+// { dg-final { scan-tree-dump "loop with 3 iterations completely unrolled" "cunrolli" } } -diff --git a/gcc/testsuite/g++.dg/ext/unsigned-typedef2.C b/gcc/testsuite/g++.dg/ext/unsigned-typedef2.C -new file mode 100644 -index 00000000000..936c0ccb748 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/ext/unsigned-typedef2.C -@@ -0,0 +1,25 @@ -+// PR c++/108099 -+// { dg-do compile { target c++11 } } -+// { dg-options "" } -+ -+typedef long long t64; -+template struct integral_constant { -+ static constexpr T value = v; -+}; -+typedef integral_constant false_type; -+typedef integral_constant true_type; -+template -+struct is_same : false_type {}; -+template -+struct is_same : true_type {}; -+ -+using s64 = signed t64; -+static_assert (is_same ::value, ""); -+static_assert (is_same ::value, ""); -+static_assert (sizeof (s64) == sizeof (long long), ""); -+static_assert (s64(-1) < 0, ""); -+ -+using u64 = unsigned t64; -+static_assert (is_same ::value, ""); -+static_assert (sizeof (u64) == sizeof (unsigned long long), ""); -+static_assert (u64(-1) > 0, ""); -diff --git a/gcc/testsuite/g++.dg/ext/unsigned-typedef3.C b/gcc/testsuite/g++.dg/ext/unsigned-typedef3.C -new file mode 100644 -index 00000000000..bb99ca0ccc9 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/ext/unsigned-typedef3.C -@@ -0,0 +1,25 @@ -+// PR c++/108099 -+// { dg-do compile { target c++11 } } -+// { dg-options "" } -+ -+typedef unsigned long long t64; -+template struct integral_constant { -+ static constexpr T value = v; -+}; -+typedef integral_constant false_type; -+typedef integral_constant true_type; -+template -+struct is_same : false_type {}; -+template -+struct is_same : true_type {}; -+ -+using s64 = signed t64; -+static_assert (is_same ::value, ""); -+static_assert (is_same ::value, ""); -+static_assert (sizeof (s64) == sizeof (long long), ""); -+static_assert (s64(-1) < 0, ""); -+ -+using u64 = unsigned t64; -+static_assert (is_same ::value, ""); -+static_assert (sizeof (u64) == sizeof (unsigned long long), ""); -+static_assert (u64(-1) > 0, ""); -diff --git a/gcc/testsuite/g++.dg/init/pr109868.C b/gcc/testsuite/g++.dg/init/pr109868.C -new file mode 100644 -index 00000000000..0926f406e4f ---- /dev/null -+++ b/gcc/testsuite/g++.dg/init/pr109868.C -@@ -0,0 +1,13 @@ -+// PR c++/109868 -+// { dg-do compile } -+// { dg-options "-O2" } -+ -+struct A { virtual void foo (); }; -+struct B { long b; int : 0; }; -+struct C : A { B c; }; -+ -+void -+bar (C *p) -+{ -+ *p = C (); -+} -diff --git a/gcc/testsuite/g++.dg/opt/pr110515.C b/gcc/testsuite/g++.dg/opt/pr110515.C -new file mode 100644 -index 00000000000..7a75cea3b4b ---- /dev/null -+++ b/gcc/testsuite/g++.dg/opt/pr110515.C -@@ -0,0 +1,223 @@ -+// { dg-do run } -+// { dg-require-effective-target c++11 } -+// { dg-options "-O2" } -+ -+typedef __UINT64_TYPE__ u64; -+ -+struct SmallDenseMap { -+ static constexpr u64 EmptyKey = 0xC0FFEUL; -+ struct V { u64 v; }; -+ -+ bool contains(u64 Val) { -+ V *TheSlot = nullptr; -+ return (LookupSlotFor(Val, TheSlot) ? 1 : 0); -+ } -+ -+ void try_emplace(u64 Key) { -+ V *TheSlot = nullptr; -+ if (LookupSlotFor(Key, TheSlot)) -+ return; -+ -+ // Otherwise, insert the new element. -+ InsertIntoSlot(TheSlot, Key); -+ } -+ -+ void moveFromOldSlots(V *OldSlotsBegin, V *OldSlotsEnd) { -+ Size = 0; -+ -+ V *B_ = u.o.Slots; -+ V *E_ = B_ + u.o.Capacity; -+ for (; B_ != E_; ++B_) -+ B_->v = EmptyKey; -+ -+ // Insert all the old elements. -+ V *O = OldSlotsBegin; -+ V *E = OldSlotsEnd; -+ for (; O != E; ++O) { -+ if (O->v != EmptyKey) { -+ // Insert the key/value into the new table. -+ V * N = nullptr; -+ LookupSlotFor(O->v, N); -+ N->v = O->v; -+ Size++; -+ } -+ } -+ } -+ -+ void InsertIntoSlot(V *TheSlot, u64 Key) { -+ unsigned NewSize = Size + 1; -+ unsigned Capacity = getCapacity(); -+ // Make sure we always keep at least one Empty value -+ if (NewSize >= Capacity) { -+ //fprintf(stderr, "GROW: size=%u capacity=%u -> ...\n", Size, Capacity); -+ grow(); -+ LookupSlotFor(Key, TheSlot); -+ Capacity = getCapacity(); -+ //fprintf(stderr, "GROW: ... -> size=%u capacity=%u\n", NewSize, Capacity); -+ } -+ -+ Size++; -+ -+ TheSlot->v = Key; -+ } -+ -+ bool LookupSlotFor(u64 Val, -+ V *&FoundSlot) { -+ V *SlotsPtr = getSlots(); -+ const unsigned Capacity = getCapacity(); -+ -+ for (unsigned i = 0; i < Capacity; ++i) { -+ V *ThisSlot = SlotsPtr + i; -+ if (Val == ThisSlot->v) { -+ FoundSlot = ThisSlot; -+ return true; -+ } -+ -+ if (ThisSlot->v == EmptyKey) { -+ FoundSlot = ThisSlot; -+ return false; -+ } -+ } -+ // Guarantee that within an array there is a match -+ // or Empty value where to insert a new vaue. -+ __builtin_trap(); -+ } -+ -+ // Needs to bea at least 1 to hld one empty value -+ static constexpr unsigned InlineSlots = 2; -+ -+ bool Small; -+ unsigned Size; -+ -+ struct LargeRep { -+ V *Slots; -+ unsigned Capacity; -+ }; -+ -+ union { -+ V i[InlineSlots]; // Small = true -+ LargeRep o; // Small = false -+ } u; -+ -+ explicit SmallDenseMap() : Small(true), Size(0) { -+ Size = 0; -+ -+ V *B = u.i; -+ V *E = B + InlineSlots; -+ for (; B != E; ++B) -+ B->v = EmptyKey; -+ } -+ -+ void grow() { -+ // assert: -+ if (!Small) __builtin_trap(); -+ -+ // First move the inline Slots into a temporary storage. -+ V TmpStorage[InlineSlots]; -+ V *TmpBegin = TmpStorage; -+ V *TmpEnd = TmpBegin; -+ -+ // Loop over the Slots, moving non-empty, non-tombstones into the -+ // temporary storage. Have the loop move the TmpEnd forward as it goes. -+ V *P = u.i; -+ V *E = P + InlineSlots; -+ for (; P != E; ++P) { -+ if (P->v != EmptyKey) { -+ TmpEnd->v = P->v; -+ ++TmpEnd; -+ } -+ } -+ -+ Small = false; -+ u.o = LargeRep{new V[128], 128}; -+ moveFromOldSlots(TmpBegin, TmpEnd); -+ } -+ -+ V *getSlots() { -+ if (Small) { -+ V * inl = u.i; -+ return inl; -+ } -+ else { -+ LargeRep * rep = &u.o; -+ return rep->Slots; -+ } -+ } -+ -+ unsigned getCapacity() { -+ if (Small) { -+ return InlineSlots; -+ } -+ else { -+ LargeRep * rep = &u.o; -+ return rep->Capacity; -+ } -+ } -+}; -+ -+#pragma GCC optimize(0) -+ -+struct P { -+ u64 f; -+ bool s; -+}; -+ -+static u64 ws = 0; -+static P WorkList[128]; -+ -+__attribute__((noipa)) -+static void popupateIni() { -+ for (u64 Var : (u64[]){8,7,6,5,4,3,0}) { -+ WorkList[ws++] = P{Var, false}; -+ } -+} -+ -+__attribute__((noipa)) -+static void checkCycle(u64 Var) { -+ // Detect cycles. -+ static bool seen[256]; -+ if (Var >= 256 || seen[Var]) __builtin_trap(); -+ seen[Var] = true; -+} -+ -+ -+__attribute__((noipa)) -+static void populateDeps(u64 Var) { -+ -+ WorkList[ws++] = P{Var, true}; -+ if (Var == 8) -+ WorkList[ws++] = P{0, false}; -+} -+ -+ -+__attribute__((noipa)) __attribute__((optimize(3))) -+static void bug() { -+ -+ // triggers growth on insert -+ SmallDenseMap Visited; -+ -+ popupateIni(); -+ -+ while (ws > 0) { -+ P Item = WorkList[--ws]; -+ u64 Var = Item.f; -+ bool visitedAllDependencies = Item.s; -+ -+ if (Visited.contains(Var)) { -+ continue; -+ } -+ -+ if (visitedAllDependencies) { -+ Visited.try_emplace(Var); -+ continue; -+ } -+ -+ checkCycle(Var); -+ populateDeps(Var); -+ } -+} -+ -+__attribute__((noipa)) -+int main() { -+ bug(); -+} -diff --git a/gcc/testsuite/g++.dg/template/friend78.C b/gcc/testsuite/g++.dg/template/friend78.C -new file mode 100644 -index 00000000000..6100528468e ---- /dev/null -+++ b/gcc/testsuite/g++.dg/template/friend78.C -@@ -0,0 +1,18 @@ -+// PR c++/106740 -+// { dg-additional-options -Wno-non-template-friend } -+ -+template struct EnumClass { friend int toString(EnumClass); }; -+struct AmhsConvInfoCoFw { -+ enum AftnTypeXMsgTypeEnum {}; -+ typedef EnumClass AftnTypeXMsgType; -+ const int getAftnTypeXMsgTypeAsStr() const; -+ struct MtcuAxgwInfo { -+ AftnTypeXMsgType mAftnTypeXMsgType; -+ }; -+}; -+const int AmhsConvInfoCoFw::getAftnTypeXMsgTypeAsStr() const { -+ MtcuAxgwInfo __trans_tmp_1; -+ toString(__trans_tmp_1.mAftnTypeXMsgType); -+ return 0; -+} -+int toString(AmhsConvInfoCoFw::AftnTypeXMsgType); -diff --git a/gcc/testsuite/g++.dg/template/template-keyword4.C b/gcc/testsuite/g++.dg/template/template-keyword4.C -new file mode 100644 -index 00000000000..a7ab9bb8ca6 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/template/template-keyword4.C -@@ -0,0 +1,18 @@ -+// PR c++/106310 -+ -+template -+struct set{}; -+ -+template< typename T > -+struct Base -+{ -+ template< int > int set(T const &); -+}; -+ -+template< typename T > -+struct Derived : Base< T > -+{ -+ void f(T const &arg) { -+ this->template set< 0 >(arg); -+ } -+}; -diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C -index 046fc6cce76..b0c1489fbdc 100644 ---- a/gcc/testsuite/g++.dg/torture/pr106922.C -+++ b/gcc/testsuite/g++.dg/torture/pr106922.C -@@ -4,8 +4,16 @@ - // -O1 doesn't iterate VN and thus has bogus uninit diagnostics - // { dg-skip-if "" { *-*-* } { "-O1" } { "" } } - -+// The testcase still emits bogus diagnostics with the pre-C++11 ABI -+#undef _GLIBCXX_USE_CXX11_ABI -+#define _GLIBCXX_USE_CXX11_ABI 1 -+ - #include - -+// When the library is not dual-ABI and defaults to old just compile -+// an empty TU -+#if _GLIBCXX_USE_CXX11_ABI -+ - #include - template - using Optional = std::optional; -@@ -46,3 +54,4 @@ void test() - externals.external2 = internal2; - } - } -+#endif -diff --git a/gcc/testsuite/g++.dg/torture/pr111019.C b/gcc/testsuite/g++.dg/torture/pr111019.C -new file mode 100644 -index 00000000000..ce21a311c96 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/torture/pr111019.C -@@ -0,0 +1,65 @@ -+// { dg-do run } -+// { dg-additional-options "-fstrict-aliasing" } -+ -+#include -+#include -+#include -+ -+class Base -+{ -+public: -+ Base* previous = nullptr; -+ Base* next = nullptr; -+ Base* target = nullptr; -+}; -+ -+class Target : public Base -+{ -+public: -+ __attribute__((always_inline)) ~Target() -+ { -+ while (this->next) -+ { -+ Base* n = this->next; -+ -+ if (n->previous) -+ n->previous->next = n->next; -+ if (n->next) -+ n->next->previous = n->previous; -+ n->previous = nullptr; -+ n->next = nullptr; -+ n->target = nullptr; -+ } -+ } -+}; -+ -+template -+class TargetWithData final : public Target -+{ -+public: -+ TargetWithData(T data) -+ : data(data) -+ {} -+ T data; -+}; -+ -+void test() -+{ -+ printf("test\n"); -+ Base ptr; -+ { -+ auto data = std::make_unique>(std::string("asdf")); -+ ptr.target = &*data; -+ ptr.previous = &*data; -+ data->next = &ptr; -+ -+ assert(ptr.target != nullptr); -+ } -+ assert(ptr.target == nullptr); -+} -+ -+int main(int, char**) -+{ -+ test(); -+ return 0; -+} -diff --git a/gcc/testsuite/g++.target/aarch64/acle/acle.exp b/gcc/testsuite/g++.target/aarch64/acle/acle.exp -new file mode 100644 -index 00000000000..9e1cbf4a0c6 ---- /dev/null -+++ b/gcc/testsuite/g++.target/aarch64/acle/acle.exp -@@ -0,0 +1,35 @@ -+# Copyright (C) 2014-2023 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with GCC; see the file COPYING3. If not see -+# . -+ -+# GCC testsuite that uses the `dg.exp' driver. -+ -+# Exit immediately if this isn't an AArch64 target. -+if ![istarget aarch64*-*-*] then { -+ return -+} -+ -+# Load support procs. -+load_lib g++-dg.exp -+ -+# Initialize `dg'. -+dg-init -+ -+# Main loop. -+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \ -+ "" "" -+ -+# All done. -+dg-finish -diff --git a/gcc/testsuite/g++.target/aarch64/acle/ls64.C b/gcc/testsuite/g++.target/aarch64/acle/ls64.C -new file mode 100644 -index 00000000000..d9002785b57 ---- /dev/null -+++ b/gcc/testsuite/g++.target/aarch64/acle/ls64.C -@@ -0,0 +1,10 @@ -+/* { dg-do compile } */ -+/* { dg-additional-options "-march=armv8.7-a" } */ -+#include -+int main() -+{ -+ data512_t d = __arm_ld64b ((const void *)0x1000); -+ __arm_st64b ((void *)0x2000, d); -+ uint64_t x = __arm_st64bv ((void *)0x3000, d); -+ x += __arm_st64bv0 ((void *)0x4000, d); -+} -diff --git a/gcc/testsuite/g++.target/aarch64/acle/ls64_lto.C b/gcc/testsuite/g++.target/aarch64/acle/ls64_lto.C -new file mode 100644 -index 00000000000..274a4771e1c ---- /dev/null -+++ b/gcc/testsuite/g++.target/aarch64/acle/ls64_lto.C -@@ -0,0 +1,10 @@ -+/* { dg-do link { target aarch64_asm_ls64_ok } } */ -+/* { dg-additional-options "-march=armv8.7-a -flto" } */ -+#include -+int main() -+{ -+ data512_t d = __arm_ld64b ((const void *)0x1000); -+ __arm_st64b ((void *)0x2000, d); -+ uint64_t x = __arm_st64bv ((void *)0x3000, d); -+ x += __arm_st64bv0 ((void *)0x4000, d); -+} -diff --git a/gcc/testsuite/g++.target/aarch64/pr103147-10.C b/gcc/testsuite/g++.target/aarch64/pr103147-10.C -index 914fdf9c692..e12771533f7 100644 ---- a/gcc/testsuite/g++.target/aarch64/pr103147-10.C -+++ b/gcc/testsuite/g++.target/aarch64/pr103147-10.C -@@ -1,4 +1,4 @@ --/* { dg-options "-O2 -fpack-struct -mstrict-align" } */ -+/* { dg-options "-O2 -fpack-struct -mstrict-align -fno-stack-protector" } */ - /* { dg-final { check-function-bodies "**" "" "" } } */ - - #include -diff --git a/gcc/testsuite/g++.target/i386/pr112443.C b/gcc/testsuite/g++.target/i386/pr112443.C -new file mode 100644 -index 00000000000..ebfa9b4a753 ---- /dev/null -+++ b/gcc/testsuite/g++.target/i386/pr112443.C -@@ -0,0 +1,108 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target avx512bw } */ -+/* { dg-require-effective-target avx512vl } */ -+/* { dg-options "-O2 -std=c++17 -mavx512bw -mavx512vl" } */ -+ -+#include -+#include -+#include -+#include -+ -+#define AVX512BW -+#define AVX512VL -+ -+#include "avx512f-helper.h" -+ -+struct TensorIteratorBase{ -+ char* in; -+ char* out; -+ -+ void for_each(std::function loop){ -+ loop(out, in, 32); -+ } -+}; -+ -+class Vectorized { -+protected: -+ __m256i values; -+ -+ static inline __m256i invert(const __m256i& v) { -+ const auto ones = _mm256_set1_epi64x(-1); -+ return _mm256_xor_si256(ones, v); -+ } -+public: -+ operator __m256i() const { -+ return values; -+ } -+ -+ static constexpr int size() { -+ return 32; -+ } -+ -+ Vectorized() {} -+ Vectorized(__m256i v) : values(v) {} -+ Vectorized(uint8_t v) { values = _mm256_set1_epi8(v); } -+ static Vectorized blendv(const Vectorized& a, const Vectorized& b, -+ const Vectorized& mask) { -+ return _mm256_blendv_epi8(a, b, mask); -+ } -+ static Vectorized loadu(const void* ptr) { -+ return _mm256_loadu_si256(reinterpret_cast(ptr)); -+ } -+ void store(void* ptr) const { -+ _mm256_storeu_si256(reinterpret_cast<__m256i*>(ptr), values); -+ } -+ -+ Vectorized operator<(const Vectorized& other) const { -+ __m256i max = _mm256_max_epu8(values, other); -+ return invert(_mm256_cmpeq_epi8(max, values)); -+ } -+ Vectorized operator-(const Vectorized& b) { -+ return _mm256_sub_epi8(values, b); -+ } -+}; -+ -+std::ostream& operator<<(std::ostream& stream, const Vectorized& vec) { -+ uint8_t buf[Vectorized::size()]; -+ vec.store(buf); -+ stream << "vec["; -+ for (int i = 0; i != Vectorized::size(); i++) { -+ if (i != 0) -+ stream << ", "; -+ stream << buf[i]*1; -+ } -+ stream << "]"; -+ return stream; -+} -+ -+void run(TensorIteratorBase iter){ -+ Vectorized zero_vec(0); -+ Vectorized one_vec(1); -+ -+ iter.for_each([=](char* out, char* in, int64_t size) { -+ for (int64_t i = 0; i <= size - Vectorized::size(); i += Vectorized::size()) { -+ auto self_vec = Vectorized::loadu(in + i); -+ auto left = Vectorized::blendv(zero_vec, one_vec, zero_vec < self_vec); -+ auto right = Vectorized::blendv(zero_vec, one_vec, self_vec < zero_vec); -+ auto outv = left - right; -+ outv.store(out + i); -+ } -+ }); -+} -+ -+void -+test_256 (){ -+ char in[32]; -+ char out[32]; -+ for(auto& x: in) x = 1; -+ run(TensorIteratorBase{in, out}); -+ Vectorized::loadu (out); -+ for (int i = 0; i != 32; i++) -+ if (out[i] != 1) -+ __builtin_abort (); -+} -+ -+void -+test_128 () -+{ -+} -diff --git a/gcc/testsuite/g++.target/powerpc/pr105325.C b/gcc/testsuite/g++.target/powerpc/pr105325.C -new file mode 100644 -index 00000000000..18a2e520d6c ---- /dev/null -+++ b/gcc/testsuite/g++.target/powerpc/pr105325.C -@@ -0,0 +1,28 @@ -+/* { dg-do assemble } */ -+/* { dg-require-effective-target lp64 } */ -+/* { dg-require-effective-target power10_ok } */ -+/* { dg-require-effective-target powerpc_prefixed_addr } */ -+/* { dg-options "-O2 -mdejagnu-cpu=power10 -fstack-protector" } */ -+ -+/* PR target/105324. Test that power10 fusion does not generate an LWA/CMPDI -+ with a large offset that the assembler rejects. Instead it should a -+ PLWZ/CMPWI combination. -+ -+ Originally, the code was dying because the fusion load + compare -1/0/1 -+ patterns did not handle the possibility that the load might be prefixed. -+ The -fstack-protector option is needed to show the bug. */ -+ -+struct Ath__array1D { -+ int _current; -+ int getCnt() { return _current; } -+}; -+struct extMeasure { -+ int _mapTable[10000]; -+ Ath__array1D _metRCTable; -+}; -+void measureRC() { -+ extMeasure m; -+ for (; m._metRCTable.getCnt();) -+ for (;;) -+ ; -+} -diff --git a/gcc/testsuite/g++.target/powerpc/pr110741.C b/gcc/testsuite/g++.target/powerpc/pr110741.C -new file mode 100644 -index 00000000000..0214936b06d ---- /dev/null -+++ b/gcc/testsuite/g++.target/powerpc/pr110741.C -@@ -0,0 +1,552 @@ -+/* { dg-do run { target { power10_hw } } } */ -+/* { dg-options "-O2 -mdejagnu-cpu=power10" } */ -+ -+#include -+ -+typedef unsigned char uint8_t; -+ -+template -+static inline vector unsigned long long -+VSXTernaryLogic (vector unsigned long long a, vector unsigned long long b, -+ vector unsigned long long c) -+{ -+ return vec_ternarylogic (a, b, c, kTernLogOp); -+} -+ -+static vector unsigned long long -+VSXTernaryLogic (vector unsigned long long a, vector unsigned long long b, -+ vector unsigned long long c, int ternary_logic_op) -+{ -+ switch (ternary_logic_op & 0xFF) -+ { -+ case 0: -+ return VSXTernaryLogic<0> (a, b, c); -+ case 1: -+ return VSXTernaryLogic<1> (a, b, c); -+ case 2: -+ return VSXTernaryLogic<2> (a, b, c); -+ case 3: -+ return VSXTernaryLogic<3> (a, b, c); -+ case 4: -+ return VSXTernaryLogic<4> (a, b, c); -+ case 5: -+ return VSXTernaryLogic<5> (a, b, c); -+ case 6: -+ return VSXTernaryLogic<6> (a, b, c); -+ case 7: -+ return VSXTernaryLogic<7> (a, b, c); -+ case 8: -+ return VSXTernaryLogic<8> (a, b, c); -+ case 9: -+ return VSXTernaryLogic<9> (a, b, c); -+ case 10: -+ return VSXTernaryLogic<10> (a, b, c); -+ case 11: -+ return VSXTernaryLogic<11> (a, b, c); -+ case 12: -+ return VSXTernaryLogic<12> (a, b, c); -+ case 13: -+ return VSXTernaryLogic<13> (a, b, c); -+ case 14: -+ return VSXTernaryLogic<14> (a, b, c); -+ case 15: -+ return VSXTernaryLogic<15> (a, b, c); -+ case 16: -+ return VSXTernaryLogic<16> (a, b, c); -+ case 17: -+ return VSXTernaryLogic<17> (a, b, c); -+ case 18: -+ return VSXTernaryLogic<18> (a, b, c); -+ case 19: -+ return VSXTernaryLogic<19> (a, b, c); -+ case 20: -+ return VSXTernaryLogic<20> (a, b, c); -+ case 21: -+ return VSXTernaryLogic<21> (a, b, c); -+ case 22: -+ return VSXTernaryLogic<22> (a, b, c); -+ case 23: -+ return VSXTernaryLogic<23> (a, b, c); -+ case 24: -+ return VSXTernaryLogic<24> (a, b, c); -+ case 25: -+ return VSXTernaryLogic<25> (a, b, c); -+ case 26: -+ return VSXTernaryLogic<26> (a, b, c); -+ case 27: -+ return VSXTernaryLogic<27> (a, b, c); -+ case 28: -+ return VSXTernaryLogic<28> (a, b, c); -+ case 29: -+ return VSXTernaryLogic<29> (a, b, c); -+ case 30: -+ return VSXTernaryLogic<30> (a, b, c); -+ case 31: -+ return VSXTernaryLogic<31> (a, b, c); -+ case 32: -+ return VSXTernaryLogic<32> (a, b, c); -+ case 33: -+ return VSXTernaryLogic<33> (a, b, c); -+ case 34: -+ return VSXTernaryLogic<34> (a, b, c); -+ case 35: -+ return VSXTernaryLogic<35> (a, b, c); -+ case 36: -+ return VSXTernaryLogic<36> (a, b, c); -+ case 37: -+ return VSXTernaryLogic<37> (a, b, c); -+ case 38: -+ return VSXTernaryLogic<38> (a, b, c); -+ case 39: -+ return VSXTernaryLogic<39> (a, b, c); -+ case 40: -+ return VSXTernaryLogic<40> (a, b, c); -+ case 41: -+ return VSXTernaryLogic<41> (a, b, c); -+ case 42: -+ return VSXTernaryLogic<42> (a, b, c); -+ case 43: -+ return VSXTernaryLogic<43> (a, b, c); -+ case 44: -+ return VSXTernaryLogic<44> (a, b, c); -+ case 45: -+ return VSXTernaryLogic<45> (a, b, c); -+ case 46: -+ return VSXTernaryLogic<46> (a, b, c); -+ case 47: -+ return VSXTernaryLogic<47> (a, b, c); -+ case 48: -+ return VSXTernaryLogic<48> (a, b, c); -+ case 49: -+ return VSXTernaryLogic<49> (a, b, c); -+ case 50: -+ return VSXTernaryLogic<50> (a, b, c); -+ case 51: -+ return VSXTernaryLogic<51> (a, b, c); -+ case 52: -+ return VSXTernaryLogic<52> (a, b, c); -+ case 53: -+ return VSXTernaryLogic<53> (a, b, c); -+ case 54: -+ return VSXTernaryLogic<54> (a, b, c); -+ case 55: -+ return VSXTernaryLogic<55> (a, b, c); -+ case 56: -+ return VSXTernaryLogic<56> (a, b, c); -+ case 57: -+ return VSXTernaryLogic<57> (a, b, c); -+ case 58: -+ return VSXTernaryLogic<58> (a, b, c); -+ case 59: -+ return VSXTernaryLogic<59> (a, b, c); -+ case 60: -+ return VSXTernaryLogic<60> (a, b, c); -+ case 61: -+ return VSXTernaryLogic<61> (a, b, c); -+ case 62: -+ return VSXTernaryLogic<62> (a, b, c); -+ case 63: -+ return VSXTernaryLogic<63> (a, b, c); -+ case 64: -+ return VSXTernaryLogic<64> (a, b, c); -+ case 65: -+ return VSXTernaryLogic<65> (a, b, c); -+ case 66: -+ return VSXTernaryLogic<66> (a, b, c); -+ case 67: -+ return VSXTernaryLogic<67> (a, b, c); -+ case 68: -+ return VSXTernaryLogic<68> (a, b, c); -+ case 69: -+ return VSXTernaryLogic<69> (a, b, c); -+ case 70: -+ return VSXTernaryLogic<70> (a, b, c); -+ case 71: -+ return VSXTernaryLogic<71> (a, b, c); -+ case 72: -+ return VSXTernaryLogic<72> (a, b, c); -+ case 73: -+ return VSXTernaryLogic<73> (a, b, c); -+ case 74: -+ return VSXTernaryLogic<74> (a, b, c); -+ case 75: -+ return VSXTernaryLogic<75> (a, b, c); -+ case 76: -+ return VSXTernaryLogic<76> (a, b, c); -+ case 77: -+ return VSXTernaryLogic<77> (a, b, c); -+ case 78: -+ return VSXTernaryLogic<78> (a, b, c); -+ case 79: -+ return VSXTernaryLogic<79> (a, b, c); -+ case 80: -+ return VSXTernaryLogic<80> (a, b, c); -+ case 81: -+ return VSXTernaryLogic<81> (a, b, c); -+ case 82: -+ return VSXTernaryLogic<82> (a, b, c); -+ case 83: -+ return VSXTernaryLogic<83> (a, b, c); -+ case 84: -+ return VSXTernaryLogic<84> (a, b, c); -+ case 85: -+ return VSXTernaryLogic<85> (a, b, c); -+ case 86: -+ return VSXTernaryLogic<86> (a, b, c); -+ case 87: -+ return VSXTernaryLogic<87> (a, b, c); -+ case 88: -+ return VSXTernaryLogic<88> (a, b, c); -+ case 89: -+ return VSXTernaryLogic<89> (a, b, c); -+ case 90: -+ return VSXTernaryLogic<90> (a, b, c); -+ case 91: -+ return VSXTernaryLogic<91> (a, b, c); -+ case 92: -+ return VSXTernaryLogic<92> (a, b, c); -+ case 93: -+ return VSXTernaryLogic<93> (a, b, c); -+ case 94: -+ return VSXTernaryLogic<94> (a, b, c); -+ case 95: -+ return VSXTernaryLogic<95> (a, b, c); -+ case 96: -+ return VSXTernaryLogic<96> (a, b, c); -+ case 97: -+ return VSXTernaryLogic<97> (a, b, c); -+ case 98: -+ return VSXTernaryLogic<98> (a, b, c); -+ case 99: -+ return VSXTernaryLogic<99> (a, b, c); -+ case 100: -+ return VSXTernaryLogic<100> (a, b, c); -+ case 101: -+ return VSXTernaryLogic<101> (a, b, c); -+ case 102: -+ return VSXTernaryLogic<102> (a, b, c); -+ case 103: -+ return VSXTernaryLogic<103> (a, b, c); -+ case 104: -+ return VSXTernaryLogic<104> (a, b, c); -+ case 105: -+ return VSXTernaryLogic<105> (a, b, c); -+ case 106: -+ return VSXTernaryLogic<106> (a, b, c); -+ case 107: -+ return VSXTernaryLogic<107> (a, b, c); -+ case 108: -+ return VSXTernaryLogic<108> (a, b, c); -+ case 109: -+ return VSXTernaryLogic<109> (a, b, c); -+ case 110: -+ return VSXTernaryLogic<110> (a, b, c); -+ case 111: -+ return VSXTernaryLogic<111> (a, b, c); -+ case 112: -+ return VSXTernaryLogic<112> (a, b, c); -+ case 113: -+ return VSXTernaryLogic<113> (a, b, c); -+ case 114: -+ return VSXTernaryLogic<114> (a, b, c); -+ case 115: -+ return VSXTernaryLogic<115> (a, b, c); -+ case 116: -+ return VSXTernaryLogic<116> (a, b, c); -+ case 117: -+ return VSXTernaryLogic<117> (a, b, c); -+ case 118: -+ return VSXTernaryLogic<118> (a, b, c); -+ case 119: -+ return VSXTernaryLogic<119> (a, b, c); -+ case 120: -+ return VSXTernaryLogic<120> (a, b, c); -+ case 121: -+ return VSXTernaryLogic<121> (a, b, c); -+ case 122: -+ return VSXTernaryLogic<122> (a, b, c); -+ case 123: -+ return VSXTernaryLogic<123> (a, b, c); -+ case 124: -+ return VSXTernaryLogic<124> (a, b, c); -+ case 125: -+ return VSXTernaryLogic<125> (a, b, c); -+ case 126: -+ return VSXTernaryLogic<126> (a, b, c); -+ case 127: -+ return VSXTernaryLogic<127> (a, b, c); -+ case 128: -+ return VSXTernaryLogic<128> (a, b, c); -+ case 129: -+ return VSXTernaryLogic<129> (a, b, c); -+ case 130: -+ return VSXTernaryLogic<130> (a, b, c); -+ case 131: -+ return VSXTernaryLogic<131> (a, b, c); -+ case 132: -+ return VSXTernaryLogic<132> (a, b, c); -+ case 133: -+ return VSXTernaryLogic<133> (a, b, c); -+ case 134: -+ return VSXTernaryLogic<134> (a, b, c); -+ case 135: -+ return VSXTernaryLogic<135> (a, b, c); -+ case 136: -+ return VSXTernaryLogic<136> (a, b, c); -+ case 137: -+ return VSXTernaryLogic<137> (a, b, c); -+ case 138: -+ return VSXTernaryLogic<138> (a, b, c); -+ case 139: -+ return VSXTernaryLogic<139> (a, b, c); -+ case 140: -+ return VSXTernaryLogic<140> (a, b, c); -+ case 141: -+ return VSXTernaryLogic<141> (a, b, c); -+ case 142: -+ return VSXTernaryLogic<142> (a, b, c); -+ case 143: -+ return VSXTernaryLogic<143> (a, b, c); -+ case 144: -+ return VSXTernaryLogic<144> (a, b, c); -+ case 145: -+ return VSXTernaryLogic<145> (a, b, c); -+ case 146: -+ return VSXTernaryLogic<146> (a, b, c); -+ case 147: -+ return VSXTernaryLogic<147> (a, b, c); -+ case 148: -+ return VSXTernaryLogic<148> (a, b, c); -+ case 149: -+ return VSXTernaryLogic<149> (a, b, c); -+ case 150: -+ return VSXTernaryLogic<150> (a, b, c); -+ case 151: -+ return VSXTernaryLogic<151> (a, b, c); -+ case 152: -+ return VSXTernaryLogic<152> (a, b, c); -+ case 153: -+ return VSXTernaryLogic<153> (a, b, c); -+ case 154: -+ return VSXTernaryLogic<154> (a, b, c); -+ case 155: -+ return VSXTernaryLogic<155> (a, b, c); -+ case 156: -+ return VSXTernaryLogic<156> (a, b, c); -+ case 157: -+ return VSXTernaryLogic<157> (a, b, c); -+ case 158: -+ return VSXTernaryLogic<158> (a, b, c); -+ case 159: -+ return VSXTernaryLogic<159> (a, b, c); -+ case 160: -+ return VSXTernaryLogic<160> (a, b, c); -+ case 161: -+ return VSXTernaryLogic<161> (a, b, c); -+ case 162: -+ return VSXTernaryLogic<162> (a, b, c); -+ case 163: -+ return VSXTernaryLogic<163> (a, b, c); -+ case 164: -+ return VSXTernaryLogic<164> (a, b, c); -+ case 165: -+ return VSXTernaryLogic<165> (a, b, c); -+ case 166: -+ return VSXTernaryLogic<166> (a, b, c); -+ case 167: -+ return VSXTernaryLogic<167> (a, b, c); -+ case 168: -+ return VSXTernaryLogic<168> (a, b, c); -+ case 169: -+ return VSXTernaryLogic<169> (a, b, c); -+ case 170: -+ return VSXTernaryLogic<170> (a, b, c); -+ case 171: -+ return VSXTernaryLogic<171> (a, b, c); -+ case 172: -+ return VSXTernaryLogic<172> (a, b, c); -+ case 173: -+ return VSXTernaryLogic<173> (a, b, c); -+ case 174: -+ return VSXTernaryLogic<174> (a, b, c); -+ case 175: -+ return VSXTernaryLogic<175> (a, b, c); -+ case 176: -+ return VSXTernaryLogic<176> (a, b, c); -+ case 177: -+ return VSXTernaryLogic<177> (a, b, c); -+ case 178: -+ return VSXTernaryLogic<178> (a, b, c); -+ case 179: -+ return VSXTernaryLogic<179> (a, b, c); -+ case 180: -+ return VSXTernaryLogic<180> (a, b, c); -+ case 181: -+ return VSXTernaryLogic<181> (a, b, c); -+ case 182: -+ return VSXTernaryLogic<182> (a, b, c); -+ case 183: -+ return VSXTernaryLogic<183> (a, b, c); -+ case 184: -+ return VSXTernaryLogic<184> (a, b, c); -+ case 185: -+ return VSXTernaryLogic<185> (a, b, c); -+ case 186: -+ return VSXTernaryLogic<186> (a, b, c); -+ case 187: -+ return VSXTernaryLogic<187> (a, b, c); -+ case 188: -+ return VSXTernaryLogic<188> (a, b, c); -+ case 189: -+ return VSXTernaryLogic<189> (a, b, c); -+ case 190: -+ return VSXTernaryLogic<190> (a, b, c); -+ case 191: -+ return VSXTernaryLogic<191> (a, b, c); -+ case 192: -+ return VSXTernaryLogic<192> (a, b, c); -+ case 193: -+ return VSXTernaryLogic<193> (a, b, c); -+ case 194: -+ return VSXTernaryLogic<194> (a, b, c); -+ case 195: -+ return VSXTernaryLogic<195> (a, b, c); -+ case 196: -+ return VSXTernaryLogic<196> (a, b, c); -+ case 197: -+ return VSXTernaryLogic<197> (a, b, c); -+ case 198: -+ return VSXTernaryLogic<198> (a, b, c); -+ case 199: -+ return VSXTernaryLogic<199> (a, b, c); -+ case 200: -+ return VSXTernaryLogic<200> (a, b, c); -+ case 201: -+ return VSXTernaryLogic<201> (a, b, c); -+ case 202: -+ return VSXTernaryLogic<202> (a, b, c); -+ case 203: -+ return VSXTernaryLogic<203> (a, b, c); -+ case 204: -+ return VSXTernaryLogic<204> (a, b, c); -+ case 205: -+ return VSXTernaryLogic<205> (a, b, c); -+ case 206: -+ return VSXTernaryLogic<206> (a, b, c); -+ case 207: -+ return VSXTernaryLogic<207> (a, b, c); -+ case 208: -+ return VSXTernaryLogic<208> (a, b, c); -+ case 209: -+ return VSXTernaryLogic<209> (a, b, c); -+ case 210: -+ return VSXTernaryLogic<210> (a, b, c); -+ case 211: -+ return VSXTernaryLogic<211> (a, b, c); -+ case 212: -+ return VSXTernaryLogic<212> (a, b, c); -+ case 213: -+ return VSXTernaryLogic<213> (a, b, c); -+ case 214: -+ return VSXTernaryLogic<214> (a, b, c); -+ case 215: -+ return VSXTernaryLogic<215> (a, b, c); -+ case 216: -+ return VSXTernaryLogic<216> (a, b, c); -+ case 217: -+ return VSXTernaryLogic<217> (a, b, c); -+ case 218: -+ return VSXTernaryLogic<218> (a, b, c); -+ case 219: -+ return VSXTernaryLogic<219> (a, b, c); -+ case 220: -+ return VSXTernaryLogic<220> (a, b, c); -+ case 221: -+ return VSXTernaryLogic<221> (a, b, c); -+ case 222: -+ return VSXTernaryLogic<222> (a, b, c); -+ case 223: -+ return VSXTernaryLogic<223> (a, b, c); -+ case 224: -+ return VSXTernaryLogic<224> (a, b, c); -+ case 225: -+ return VSXTernaryLogic<225> (a, b, c); -+ case 226: -+ return VSXTernaryLogic<226> (a, b, c); -+ case 227: -+ return VSXTernaryLogic<227> (a, b, c); -+ case 228: -+ return VSXTernaryLogic<228> (a, b, c); -+ case 229: -+ return VSXTernaryLogic<229> (a, b, c); -+ case 230: -+ return VSXTernaryLogic<230> (a, b, c); -+ case 231: -+ return VSXTernaryLogic<231> (a, b, c); -+ case 232: -+ return VSXTernaryLogic<232> (a, b, c); -+ case 233: -+ return VSXTernaryLogic<233> (a, b, c); -+ case 234: -+ return VSXTernaryLogic<234> (a, b, c); -+ case 235: -+ return VSXTernaryLogic<235> (a, b, c); -+ case 236: -+ return VSXTernaryLogic<236> (a, b, c); -+ case 237: -+ return VSXTernaryLogic<237> (a, b, c); -+ case 238: -+ return VSXTernaryLogic<238> (a, b, c); -+ case 239: -+ return VSXTernaryLogic<239> (a, b, c); -+ case 240: -+ return VSXTernaryLogic<240> (a, b, c); -+ case 241: -+ return VSXTernaryLogic<241> (a, b, c); -+ case 242: -+ return VSXTernaryLogic<242> (a, b, c); -+ case 243: -+ return VSXTernaryLogic<243> (a, b, c); -+ case 244: -+ return VSXTernaryLogic<244> (a, b, c); -+ case 245: -+ return VSXTernaryLogic<245> (a, b, c); -+ case 246: -+ return VSXTernaryLogic<246> (a, b, c); -+ case 247: -+ return VSXTernaryLogic<247> (a, b, c); -+ case 248: -+ return VSXTernaryLogic<248> (a, b, c); -+ case 249: -+ return VSXTernaryLogic<249> (a, b, c); -+ case 250: -+ return VSXTernaryLogic<250> (a, b, c); -+ case 251: -+ return VSXTernaryLogic<251> (a, b, c); -+ case 252: -+ return VSXTernaryLogic<252> (a, b, c); -+ case 253: -+ return VSXTernaryLogic<253> (a, b, c); -+ case 254: -+ return VSXTernaryLogic<254> (a, b, c); -+ case 255: -+ return VSXTernaryLogic<255> (a, b, c); -+ default: -+ return a; -+ } -+} -+ -+int -+main (int argc, char **argv) -+{ -+ vector unsigned long long a = {0xD8, 0xDB}; -+ vector unsigned long long b = {0x6C, 0x6C}; -+ vector unsigned long long c = {0x56, 0x56}; -+ vector unsigned long long ternlog_result = VSXTernaryLogic (a, b, c, 0xB6); -+ -+ if (ternlog_result[0] != 0xffffffffffffff3dull -+ || ternlog_result[1] != 0xffffffffffffff3eull) -+ __builtin_abort (); -+ -+ return 0; -+} -diff --git a/gcc/testsuite/g++.target/powerpc/pr111366.C b/gcc/testsuite/g++.target/powerpc/pr111366.C -new file mode 100644 -index 00000000000..6d3d8ebc552 ---- /dev/null -+++ b/gcc/testsuite/g++.target/powerpc/pr111366.C -@@ -0,0 +1,48 @@ -+/* { dg-do compile } */ -+/* Use -Wno-attributes to suppress the possible warning on always_inline. */ -+/* { dg-options "-O2 -mdejagnu-cpu=power9 -Wno-attributes" } */ -+ -+/* Verify it doesn't emit any error messages. */ -+ -+#include -+#define HWY_PRAGMA(tokens) _Pragma (#tokens) -+#define HWY_PUSH_ATTRIBUTES(targets_str) HWY_PRAGMA (GCC target targets_str) -+__attribute__ ((always_inline)) void -+PreventElision () -+{ -+ asm(""); -+} -+#define HWY_BEFORE_NAMESPACE() HWY_PUSH_ATTRIBUTES (",cpu=power10") -+HWY_BEFORE_NAMESPACE () namespace detail -+{ -+ template struct CappedTagChecker -+ { -+ }; -+} -+template -+using CappedTag = detail::CappedTagChecker; -+template struct ForeachCappedR -+{ -+ static void Do (size_t, size_t) -+ { -+ CappedTag d; -+ Test () (int(), d); -+ } -+}; -+template struct ForPartialVectors -+{ -+ template void operator() (T) -+ { -+ ForeachCappedR::Do (1, 1); -+ } -+}; -+struct TestFloorLog2 -+{ -+ template void operator() (T, DF) { PreventElision (); } -+}; -+void -+TestAllFloorLog2 () -+{ -+ ForPartialVectors () (float()); -+} -+ -diff --git a/gcc/testsuite/g++.target/powerpc/pr111367.C b/gcc/testsuite/g++.target/powerpc/pr111367.C -new file mode 100644 -index 00000000000..8f9d4415672 ---- /dev/null -+++ b/gcc/testsuite/g++.target/powerpc/pr111367.C -@@ -0,0 +1,22 @@ -+/* { dg-do assemble } */ -+/* { dg-require-effective-target power10_ok } */ -+/* { dg-options "-mdejagnu-cpu=power10 -fstack-protector-strong" } */ -+ -+/* Verify object file can be generated successfully. */ -+ -+struct SortAscending -+{ -+}; -+ -+typedef unsigned long long size_t; -+ -+void VQSort (long long *, size_t, SortAscending); -+ -+void -+BenchAllColdSort () -+{ -+ typedef long long T; -+ constexpr size_t kSize = 10 * 1000; -+ alignas (16) T items[kSize]; -+ VQSort (items, kSize, SortAscending ()); -+} -diff --git a/gcc/testsuite/g++.target/powerpc/pr111828-1.C b/gcc/testsuite/g++.target/powerpc/pr111828-1.C -new file mode 100644 -index 00000000000..d76a084bdcf ---- /dev/null -+++ b/gcc/testsuite/g++.target/powerpc/pr111828-1.C -@@ -0,0 +1,49 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target powerpc_as_p10_htm } */ -+/* Use -Wno-attributes to suppress the possible warning on always_inline. */ -+/* { dg-options "-O2 -mdejagnu-cpu=power9 -Wno-attributes" } */ -+ -+/* Verify it doesn't emit any error messages. */ -+ -+#include -+#define HWY_PRAGMA(tokens) _Pragma (#tokens) -+#define HWY_PUSH_ATTRIBUTES(targets_str) HWY_PRAGMA (GCC target targets_str) -+__attribute__ ((always_inline)) void -+PreventElision (int output) -+{ -+ asm("nop" : "+r"(output) : : "memory"); -+} -+#define HWY_BEFORE_NAMESPACE() HWY_PUSH_ATTRIBUTES (",cpu=power10") -+HWY_BEFORE_NAMESPACE () namespace detail -+{ -+ template struct CappedTagChecker -+ { -+ }; -+} -+template -+using CappedTag = detail::CappedTagChecker; -+template struct ForeachCappedR -+{ -+ static void Do (size_t, size_t) -+ { -+ CappedTag d; -+ Test () (int(), d); -+ } -+}; -+template struct ForPartialVectors -+{ -+ template void operator() (T) -+ { -+ ForeachCappedR::Do (1, 1); -+ } -+}; -+struct TestFloorLog2 -+{ -+ template void operator() (T, DF) { PreventElision (0x10); } -+}; -+void -+TestAllFloorLog2 () -+{ -+ ForPartialVectors () (float()); -+} -+ -diff --git a/gcc/testsuite/g++.target/powerpc/pr111828-2.C b/gcc/testsuite/g++.target/powerpc/pr111828-2.C -new file mode 100644 -index 00000000000..0b7331675f7 ---- /dev/null -+++ b/gcc/testsuite/g++.target/powerpc/pr111828-2.C -@@ -0,0 +1,52 @@ -+/* { dg-do compile } */ -+/* { dg-skip-if "HTM inline asm supported" { powerpc_as_p10_htm } } */ -+/* Use -Wno-attributes to suppress the possible warning on always_inline. */ -+/* { dg-options "-O2 -mdejagnu-cpu=power9 -Wno-attributes" } */ -+ -+/* Verify it emits error messages on non-empty inline asm. */ -+ -+#include -+#define HWY_PRAGMA(tokens) _Pragma (#tokens) -+#define HWY_PUSH_ATTRIBUTES(targets_str) HWY_PRAGMA (GCC target targets_str) -+__attribute__ ((always_inline)) void -+PreventElision (int output) /* { dg-error "inlining failed in call to .* target specific option mismatch" } */ -+{ -+ asm("nop" : "+r"(output) : : "memory"); -+} -+#define HWY_BEFORE_NAMESPACE() HWY_PUSH_ATTRIBUTES (",cpu=power10") -+HWY_BEFORE_NAMESPACE () namespace detail -+{ -+ template struct CappedTagChecker -+ { -+ }; -+} -+template -+using CappedTag = detail::CappedTagChecker; -+template struct ForeachCappedR -+{ -+ static void Do (size_t, size_t) -+ { -+ CappedTag d; -+ Test () (int(), d); -+ } -+}; -+template struct ForPartialVectors -+{ -+ template void operator() (T) -+ { -+ ForeachCappedR::Do (1, 1); -+ } -+}; -+struct TestFloorLog2 -+{ -+ template void operator() (T, DF) -+ { -+ PreventElision (0x10); /* { dg-message "called from here" } */ -+ } -+}; -+void -+TestAllFloorLog2 () -+{ -+ ForPartialVectors () (float()); -+} -+ -diff --git a/gcc/testsuite/gcc.c-torture/compile/asmgoto-6.c b/gcc/testsuite/gcc.c-torture/compile/asmgoto-6.c -new file mode 100644 -index 00000000000..0652bd4e4e1 ---- /dev/null -+++ b/gcc/testsuite/gcc.c-torture/compile/asmgoto-6.c -@@ -0,0 +1,26 @@ -+ -+/* { dg-do compile } */ -+/* PR middle-end/110420 */ -+/* PR middle-end/103979 */ -+/* PR middle-end/98619 */ -+/* Test that the middle-end does not remove the asm goto -+ with an output. */ -+ -+static int t; -+void g(void); -+ -+void f(void) -+{ -+ int __gu_val; -+ asm goto("#my asm " -+ : "=&r"(__gu_val) -+ : -+ : -+ : Efault); -+ t = __gu_val; -+ g(); -+Efault: -+} -+ -+/* Make sure "my asm " is still in the assembly. */ -+/* { dg-final { scan-assembler "my asm " } } */ -diff --git a/gcc/testsuite/gcc.c-torture/compile/pr111699-1.c b/gcc/testsuite/gcc.c-torture/compile/pr111699-1.c -new file mode 100644 -index 00000000000..87b127ed199 ---- /dev/null -+++ b/gcc/testsuite/gcc.c-torture/compile/pr111699-1.c -@@ -0,0 +1,7 @@ -+typedef unsigned char __attribute__((__vector_size__ (8))) V; -+ -+void -+foo (V *v) -+{ -+ *v = (V) 0x107B9A7FF >= (*v <= 0); -+} -diff --git a/gcc/testsuite/gcc.c-torture/execute/20230630-1.c b/gcc/testsuite/gcc.c-torture/execute/20230630-1.c -new file mode 100644 -index 00000000000..7c1f15c177f ---- /dev/null -+++ b/gcc/testsuite/gcc.c-torture/execute/20230630-1.c -@@ -0,0 +1,23 @@ -+struct S { -+ short int i : 12; -+ char c1 : 1; -+ char c2 : 1; -+ char c3 : 1; -+ char c4 : 1; -+}; -+ -+int main (void) -+{ -+ struct S s0 = { 341, 1, 1, 1, 1 }; -+ char *p = (char *) &s0; -+ -+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ -+ if (*p != 85) -+ __builtin_abort (); -+#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -+ if (*p != 21) -+ __builtin_abort (); -+#endif -+ -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.c-torture/execute/20230630-2.c b/gcc/testsuite/gcc.c-torture/execute/20230630-2.c -new file mode 100644 -index 00000000000..c05c1666516 ---- /dev/null -+++ b/gcc/testsuite/gcc.c-torture/execute/20230630-2.c -@@ -0,0 +1,29 @@ -+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ -+#define REVERSE_SSO __attribute__((scalar_storage_order("big-endian"))); -+#else -+#define REVERSE_SSO __attribute__((scalar_storage_order("little-endian"))); -+#endif -+ -+struct S { -+ short int i : 12; -+ char c1 : 1; -+ char c2 : 1; -+ char c3 : 1; -+ char c4 : 1; -+} REVERSE_SSO; -+ -+int main (void) -+{ -+ struct S s0 = { 341, 1, 1, 1, 1 }; -+ char *p = (char *) &s0; -+ -+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ -+ if (*p != 21) -+ __builtin_abort (); -+#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -+ if (*p != 85) -+ __builtin_abort (); -+#endif -+ -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.c-torture/execute/20230630-3.c b/gcc/testsuite/gcc.c-torture/execute/20230630-3.c -new file mode 100644 -index 00000000000..fc106c97b5b ---- /dev/null -+++ b/gcc/testsuite/gcc.c-torture/execute/20230630-3.c -@@ -0,0 +1,27 @@ -+struct S { -+ int i : 24; -+ char c1 : 1; -+ char c2 : 1; -+ char c3 : 1; -+ char c4 : 1; -+ char c5 : 1; -+ char c6 : 1; -+ char c7 : 1; -+ char c8 : 1; -+}; -+ -+int main (void) -+{ -+ struct S s0 = { 1193046, 1, 1, 1, 1, 1, 1, 1, 1 }; -+ char *p = (char *) &s0; -+ -+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ -+ if (*p != 86) -+ __builtin_abort (); -+#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -+ if (*p != 18) -+ __builtin_abort (); -+#endif -+ -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.c-torture/execute/20230630-4.c b/gcc/testsuite/gcc.c-torture/execute/20230630-4.c -new file mode 100644 -index 00000000000..df33c18a8cd ---- /dev/null -+++ b/gcc/testsuite/gcc.c-torture/execute/20230630-4.c -@@ -0,0 +1,33 @@ -+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ -+#define REVERSE_SSO __attribute__((scalar_storage_order("big-endian"))); -+#else -+#define REVERSE_SSO __attribute__((scalar_storage_order("little-endian"))); -+#endif -+ -+struct S { -+ int i : 24; -+ char c1 : 1; -+ char c2 : 1; -+ char c3 : 1; -+ char c4 : 1; -+ char c5 : 1; -+ char c6 : 1; -+ char c7 : 1; -+ char c8 : 1; -+} REVERSE_SSO; -+ -+int main (void) -+{ -+ struct S s0 = { 1193046, 1, 1, 1, 1, 1, 1, 1, 1 }; -+ char *p = (char *) &s0; -+ -+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ -+ if (*p != 18) -+ __builtin_abort (); -+#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -+ if (*p != 86) -+ __builtin_abort (); -+#endif -+ -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.c-torture/execute/pr109778.c b/gcc/testsuite/gcc.c-torture/execute/pr109778.c -new file mode 100644 -index 00000000000..309fbf413e0 ---- /dev/null -+++ b/gcc/testsuite/gcc.c-torture/execute/pr109778.c -@@ -0,0 +1,26 @@ -+/* PR tree-optimization/109778 */ -+ -+int a, b, c, d, *e = &c; -+ -+static inline unsigned -+foo (unsigned char x) -+{ -+ x = 1 | x << 1; -+ x = x >> 4 | x << 4; -+ return x; -+} -+ -+static inline void -+bar (unsigned x) -+{ -+ *e = 8 > foo (x + 86) - 86; -+} -+ -+int -+main () -+{ -+ d = a && b; -+ bar (d + 4); -+ if (c != 1) -+ __builtin_abort (); -+} -diff --git a/gcc/testsuite/gcc.c-torture/execute/pr110914.c b/gcc/testsuite/gcc.c-torture/execute/pr110914.c -new file mode 100644 -index 00000000000..ccc04e1bdd4 ---- /dev/null -+++ b/gcc/testsuite/gcc.c-torture/execute/pr110914.c -@@ -0,0 +1,22 @@ -+/* PR tree-optimization/110914 */ -+ -+__attribute__ ((noipa)) int -+foo (const char *s, unsigned long l) -+{ -+ unsigned char r = 0; -+ __builtin_memcpy (&r, s, l != 0); -+ return r; -+} -+ -+int -+main () -+{ -+ const char *p = "123456"; -+ int a = foo (p, __builtin_strlen (p) - 5); -+ int b = foo (p, __builtin_strlen (p) - 6); -+ if (a != '1') -+ __builtin_abort (); -+ if (b != 0) -+ __builtin_abort (); -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.c-torture/execute/pr111408.c b/gcc/testsuite/gcc.c-torture/execute/pr111408.c -new file mode 100644 -index 00000000000..6dfb0a384f1 ---- /dev/null -+++ b/gcc/testsuite/gcc.c-torture/execute/pr111408.c -@@ -0,0 +1,26 @@ -+/* PR target/111408 */ -+ -+int a, b, c, d; -+short e; -+ -+int -+foo () -+{ -+ c = a % (sizeof (int) * 8); -+ if (b & 1 << c) -+ return -1; -+ return 0; -+} -+ -+int -+main () -+{ -+ for (; e != 1; e++) -+ { -+ int g = foo (); -+ if (g + d - 9 + d) -+ continue; -+ for (;;) -+ __builtin_abort (); -+ } -+} -diff --git a/gcc/testsuite/gcc.dg/Wfree-nonheap-object-7.c b/gcc/testsuite/gcc.dg/Wfree-nonheap-object-7.c -new file mode 100644 -index 00000000000..6116bfa4d8e ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/Wfree-nonheap-object-7.c -@@ -0,0 +1,26 @@ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -Wfree-nonheap-object" } */ -+ -+struct local_caches *get_local_caches_lcs; -+void *calloc(long, long); -+void *realloc(); -+ -+struct local_caches { -+ int *t_mem_caches; -+}; -+ -+struct local_caches *get_local_caches() { -+ if (get_local_caches_lcs) -+ return get_local_caches_lcs; -+ get_local_caches_lcs = calloc(1, 0); -+ return get_local_caches_lcs; -+} -+ -+void libtrace_ocache_free() { -+ struct local_caches lcs = *get_local_caches(), __trans_tmp_1 = lcs; -+ { -+ struct local_caches *lcs = &__trans_tmp_1; -+ lcs->t_mem_caches += 10; -+ __trans_tmp_1.t_mem_caches = realloc(__trans_tmp_1.t_mem_caches, sizeof(int)); // { dg-warning "called on pointer (?:(?!PHI).)*nonzero offset" } -+ } -+} -diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/pr111080.c b/gcc/testsuite/gcc.dg/debug/dwarf2/pr111080.c -new file mode 100644 -index 00000000000..3949d7e7c64 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/pr111080.c -@@ -0,0 +1,18 @@ -+/* { dg-do compile } */ -+/* { dg-options "-save-temps -gdwarf-3 -dA" } */ -+ -+struct foo { -+ int field_number_1; -+ int field_number_2; -+ int field_number_3; -+ int field_number_4; -+ int field_number_5; -+}; -+ -+typedef int fun_t(struct foo *restrict); -+ -+int main() { -+ return 0; -+} -+ -+/* { dg-final { scan-assembler-not "DW_TAG_structure_type" } } */ -diff --git a/gcc/testsuite/gcc.dg/lto/pr109778_0.c b/gcc/testsuite/gcc.dg/lto/pr109778_0.c -new file mode 100644 -index 00000000000..3c6e1b8f7b7 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/lto/pr109778_0.c -@@ -0,0 +1,22 @@ -+/* PR tree-optimization/109778 */ -+/* { dg-lto-do run } */ -+/* { dg-lto-options { "-O2 -flto" } } */ -+/* { dg-require-effective-target int32 } */ -+ -+int bar (int); -+ -+__attribute__((noipa)) int -+foo (int x) -+{ -+ x = bar (x); -+ x = (x << 16) | (int) ((unsigned) x >> 16); -+ return x & 0x10000000; -+} -+ -+int -+main () -+{ -+ if (foo (0) || foo (-1)) -+ __builtin_abort (); -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.dg/lto/pr109778_1.c b/gcc/testsuite/gcc.dg/lto/pr109778_1.c -new file mode 100644 -index 00000000000..d18a7209983 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/lto/pr109778_1.c -@@ -0,0 +1,7 @@ -+int -+bar (int x) -+{ -+ x &= 0x22222222; -+ x |= (int) 0xf1234567U; -+ return x; -+} -diff --git a/gcc/testsuite/gcc.dg/pr105660-1.c b/gcc/testsuite/gcc.dg/pr105660-1.c -new file mode 100644 -index 00000000000..d4454f04c43 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/pr105660-1.c -@@ -0,0 +1,13 @@ -+/* PR105660 -+ * { dg-do compile } -+ * { dg-options "-std=c17" } -+ */ -+ -+void gatherConservativeVars(int, int, int, int, int, int, int Hnvar, int, -+ int Hnyt, int Hnxyt, int, int Hstep, double[Hnyt], -+ double[Hnvar][Hstep][Hnxyt]); -+void gatherConservativeVars(int, int, int, int, int, int, int Hnvar, int, int Hnyt, -+ int Hnxyt, int, int Hstep, double[Hnyt], -+ double[Hnvar][Hstep][Hnxyt]); -+ -+ -diff --git a/gcc/testsuite/gcc.dg/pr105660-2.c b/gcc/testsuite/gcc.dg/pr105660-2.c -new file mode 100644 -index 00000000000..29fd82f923b ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/pr105660-2.c -@@ -0,0 +1,12 @@ -+/* PR105660 -+ * { dg-do compile } -+ * { dg-options "-Wall -std=c17" } -+ */ -+ -+ -+struct bat_gen_conf_s; -+void batch_generator_create2(struct bat_gen_conf_s* config, int D, int N, const long bat_dims[D][N], const long tot_dims[D][N], const long tot_strs[D][N], const _Complex float* data[D]); -+void batch_generator_create2(struct bat_gen_conf_s* config, int D, int N, const long bat_dims[D][N], const long tot_dims[D][N], const long tot_strs[D][N], const _Complex float* data[D]); -+ -+ -+ -diff --git a/gcc/testsuite/gcc.dg/pr110731.c b/gcc/testsuite/gcc.dg/pr110731.c -new file mode 100644 -index 00000000000..7da905d3163 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/pr110731.c -@@ -0,0 +1,17 @@ -+/* PR tree-optimization/110731 */ -+/* { dg-do run { target int128 } } */ -+/* { dg-options "-O2" } */ -+ -+__int128 -+foo (void) -+{ -+ struct S { __int128 f : 119; } s = { ((__int128) -18014398509481984) << 64 }; -+ return s.f / 2; -+} -+ -+int -+main () -+{ -+ if (foo () != (((__int128) -9007199254740992) << 64)) -+ __builtin_abort (); -+} -diff --git a/gcc/testsuite/gcc.dg/pr111015.c b/gcc/testsuite/gcc.dg/pr111015.c -new file mode 100644 -index 00000000000..599a14e6ecc ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/pr111015.c -@@ -0,0 +1,28 @@ -+/* PR tree-optimization/111015 */ -+/* { dg-do run { target int128 } } */ -+/* { dg-options "-O2" } */ -+ -+struct S { unsigned a : 4, b : 4; unsigned __int128 c : 70; } d; -+ -+__attribute__((noipa)) void -+foo (unsigned __int128 x, unsigned char y, unsigned char z) -+{ -+ d.a = y; -+ d.b = z; -+ d.c = x; -+} -+ -+int -+main () -+{ -+ foo (-1, 12, 5); -+ if (d.a != 12 -+ || d.b != 5 -+ || d.c != (-1ULL | (((unsigned __int128) 0x3f) << 64))) -+ __builtin_abort (); -+ foo (0x123456789abcdef0ULL | (((unsigned __int128) 26) << 64), 7, 11); -+ if (d.a != 7 -+ || d.b != 11 -+ || d.c != (0x123456789abcdef0ULL | (((unsigned __int128) 26) << 64))) -+ __builtin_abort (); -+} -diff --git a/gcc/testsuite/gcc.dg/pr112733.c b/gcc/testsuite/gcc.dg/pr112733.c -new file mode 100644 -index 00000000000..d6f99f76077 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/pr112733.c -@@ -0,0 +1,16 @@ -+/* PR middle-end/112733 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2" } */ -+ -+signed char a, c; -+short b; -+ -+void -+foo (void) -+{ -+ signed char *e = &a; -+ c = foo != 0; -+ *e &= c; -+ for (; b; --b) -+ *e &= -128; -+} -diff --git a/gcc/testsuite/gcc.dg/pr112837.c b/gcc/testsuite/gcc.dg/pr112837.c -new file mode 100644 -index 00000000000..2de43f5479a ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/pr112837.c -@@ -0,0 +1,11 @@ -+/* PR target/112837 */ -+/* { dg-do compile } */ -+/* { dg-options "-fcompare-elim -fprofile" } */ -+/* { dg-additional-options "-fpie" { target pie } } */ -+/* { dg-require-profiling "-fprofile" } */ -+ -+void -+foo (int i) -+{ -+ foo (i); -+} -diff --git a/gcc/testsuite/gcc.dg/pr112845.c b/gcc/testsuite/gcc.dg/pr112845.c -new file mode 100644 -index 00000000000..ece6f451e75 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/pr112845.c -@@ -0,0 +1,9 @@ -+/* PR target/112845 */ -+/* { dg-do compile { target cet } } */ -+/* { dg-options "-Os -fcf-protection" } */ -+ -+unsigned long long -+foo (void) -+{ -+ return 0xfa1e0ff3ULL << 3; -+} -diff --git a/gcc/testsuite/gcc.dg/pr113013.c b/gcc/testsuite/gcc.dg/pr113013.c -new file mode 100644 -index 00000000000..b34964071b7 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/pr113013.c -@@ -0,0 +1,14 @@ -+/* PR tree-optimization/113013 */ -+/* { dg-do compile } */ -+/* { dg-options "-std=gnu99 -O2" } */ -+ -+struct S { short x; } s; -+void *foo () __attribute__((__alloc_size__(1))); -+struct S *p; -+ -+__SIZE_TYPE__ -+bar (void) -+{ -+ p = foo (s); -+ return __builtin_dynamic_object_size (p, 0); -+} -diff --git a/gcc/testsuite/gcc.dg/rtl/aarch64/pr111411.c b/gcc/testsuite/gcc.dg/rtl/aarch64/pr111411.c -new file mode 100644 -index 00000000000..ad07e9c6c89 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/rtl/aarch64/pr111411.c -@@ -0,0 +1,57 @@ -+/* { dg-do compile { target aarch64*-*-* } } */ -+/* { dg-require-effective-target lp64 } */ -+/* { dg-options "-O -fdisable-rtl-postreload -fpeephole2 -fno-schedule-fusion" } */ -+ -+extern int data[]; -+ -+void __RTL (startwith ("ira")) foo (void *ptr) -+{ -+ (function "foo" -+ (param "ptr" -+ (DECL_RTL (reg/v:DI <0> [ ptr ])) -+ (DECL_RTL_INCOMING (reg/v:DI x0 [ ptr ])) -+ ) ;; param "ptr" -+ (insn-chain -+ (block 2 -+ (edge-from entry (flags "FALLTHRU")) -+ (cnote 3 [bb 2] NOTE_INSN_BASIC_BLOCK) -+ (insn 4 (set (reg:DI <0>) (reg:DI x0))) -+ (insn 5 (set (reg:DI <1>) -+ (plus:DI (reg:DI <0>) (const_int 768)))) -+ (insn 6 (set (mem:SI (plus:DI (reg:DI <0>) -+ (const_int 508)) [1 &data+508 S4 A4]) -+ (const_int 0))) -+ (insn 7 (set (mem:SI (plus:DI (reg:DI <1>) -+ (const_int -256)) [1 &data+512 S4 A4]) -+ (const_int 0))) -+ (edge-to exit (flags "FALLTHRU")) -+ ) ;; block 2 -+ ) ;; insn-chain -+ ) ;; function -+} -+ -+void __RTL (startwith ("ira")) bar (void *ptr) -+{ -+ (function "bar" -+ (param "ptr" -+ (DECL_RTL (reg/v:DI <0> [ ptr ])) -+ (DECL_RTL_INCOMING (reg/v:DI x0 [ ptr ])) -+ ) ;; param "ptr" -+ (insn-chain -+ (block 2 -+ (edge-from entry (flags "FALLTHRU")) -+ (cnote 3 [bb 2] NOTE_INSN_BASIC_BLOCK) -+ (insn 4 (set (reg:DI <0>) (reg:DI x0))) -+ (insn 5 (set (reg:DI <1>) -+ (plus:DI (reg:DI <0>) (const_int 768)))) -+ (insn 6 (set (mem:SI (plus:DI (reg:DI <1>) -+ (const_int -256)) [1 &data+512 S4 A4]) -+ (const_int 0))) -+ (insn 7 (set (mem:SI (plus:DI (reg:DI <0>) -+ (const_int 508)) [1 &data+508 S4 A4]) -+ (const_int 0))) -+ (edge-to exit (flags "FALLTHRU")) -+ ) ;; block 2 -+ ) ;; insn-chain -+ ) ;; function -+} -diff --git a/gcc/testsuite/gcc.dg/tls/pr78796.c b/gcc/testsuite/gcc.dg/tls/pr78796.c -index 038e5366e41..96f87d47ba4 100644 ---- a/gcc/testsuite/gcc.dg/tls/pr78796.c -+++ b/gcc/testsuite/gcc.dg/tls/pr78796.c -@@ -1,7 +1,7 @@ - /* PR target/78796 */ - /* { dg-do run } */ - /* { dg-options "-O2" } */ --/* { dg-additional-options "-mcmodel=large" { target aarch64-*-* } } */ -+/* { dg-additional-options "-mcmodel=large -fno-pie -no-pie" { target aarch64-*-* } } */ - /* { dg-require-effective-target tls_runtime } */ - /* { dg-add-options tls } */ - -diff --git a/gcc/testsuite/gcc.dg/torture/pr110298.c b/gcc/testsuite/gcc.dg/torture/pr110298.c -new file mode 100644 -index 00000000000..139f5c77d89 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/torture/pr110298.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+ -+int a, b, c, d, e; -+int f() { -+ c = 0; -+ for (; c >= 0; c--) { -+ d = 0; -+ for (; d <= 0; d++) { -+ e = 0; -+ for (; d + c + e >= 0; e--) -+ ; -+ a = 1; -+ b = 0; -+ for (; a; ++b) -+ a *= 2; -+ for (; b + d >= 0;) -+ return 0; -+ } -+ } -+} -diff --git a/gcc/testsuite/gcc.dg/torture/pr110556.c b/gcc/testsuite/gcc.dg/torture/pr110556.c -new file mode 100644 -index 00000000000..bc60db885e2 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/torture/pr110556.c -@@ -0,0 +1,42 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target lp64 } */ -+/* { dg-additional-options "-fno-tree-fre -fno-delete-dead-exceptions -fnon-call-exceptions" } */ -+ -+typedef __INT32_TYPE__ int32_t; -+typedef __INT64_TYPE__ int64_t; -+ -+static int64_t __attribute__((noinline,noclone)) -+safe_mul_func_int64_t_s_s(int64_t si1, int64_t si2) -+{ -+ return ((((si1 > 0) && (si2 > 0) && (si1 > ( (9223372036854775807L) / si2))) -+ || ((si1 > 0) && (si2 <= 0) && (si2 < ( (-9223372036854775807L -1) / si1))) -+ || ((si1 <= 0) && (si2 > 0) && (si1 < ( (-9223372036854775807L -1) / si2))) -+ || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < ( (9223372036854775807L) / si1)))) -+ ? ((si1)) : si1 * si2); -+} -+ -+static int32_t g_93 = 0x947A4BBFL; -+static int32_t tt = 6; -+int64_t ty, ty1; -+ -+static void func_34(void) -+{ -+ ty=safe_mul_func_int64_t_s_s (g_93, -1L) ; -+} -+static void func_30(void) -+{ -+ ty1=safe_mul_func_int64_t_s_s(0, tt); -+} -+static void func_6(void) -+{ -+ for (int g_9 = 5; (g_9 >= 0); g_9 -= 1) -+ { -+ func_34(); -+ func_30 (); -+ } -+} -+ -+int main () -+{ -+ func_6(); -+} -diff --git a/gcc/testsuite/gcc.dg/torture/pr110702.c b/gcc/testsuite/gcc.dg/torture/pr110702.c -new file mode 100644 -index 00000000000..aab9c7d923e ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/torture/pr110702.c -@@ -0,0 +1,31 @@ -+/* { dg-do run } */ -+ -+void abort (void); -+ -+int a, b, c, d; -+long e[9][7][4]; -+ -+void f() -+{ -+ for (; a >= 0; a--) -+ { -+ b = 0; -+ for (; b <= 3; b++) -+ { -+ c = 0; -+ for (; c <= 3; c++) -+ { -+ int *g = &d; -+ *g = e[0][0][b] | e[a][b][a]; -+ } -+ } -+ } -+} -+ -+int main() -+{ -+ f(); -+ if (a != -1) -+ abort (); -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.dg/torture/pr111137.c b/gcc/testsuite/gcc.dg/torture/pr111137.c -new file mode 100644 -index 00000000000..77560487926 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/torture/pr111137.c -@@ -0,0 +1,30 @@ -+/* { dg-do run } */ -+ -+int b[3][8]; -+short d; -+volatile int t = 1; -+ -+void __attribute__((noipa)) -+foo() -+{ -+ int g = t; -+ for (int e = 1; e >= 0; e--) -+ { -+ d = 1; -+ for (; d >= 0; d--) -+ { -+ b[0][d * 2 + 1] = 0; -+ b[g - 1 + d][0] ^= 1; -+ b[0][d * 2 + 2] = 0; -+ b[g - 1 + d][1] ^= 1; -+ } -+ } -+} -+ -+int -+main() -+{ -+ foo (); -+ if (b[0][1] != 1) -+ __builtin_abort(); -+} -diff --git a/gcc/testsuite/gcc.dg/torture/pr111445.c b/gcc/testsuite/gcc.dg/torture/pr111445.c -new file mode 100644 -index 00000000000..320e0b90675 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/torture/pr111445.c -@@ -0,0 +1,29 @@ -+/* { dg-do run } */ -+ -+extern void abort (void); -+short a, b; -+unsigned char c = 255; -+unsigned cnt; -+void __attribute__((noipa)) -+check (int x) -+{ -+ if (x != 0) -+ abort (); -+ cnt++; -+} -+int main() -+{ -+ int d; -+ unsigned char e; -+ d = 0; -+ for (; a >= 0; a--) { -+ int *f = &d; -+ *f = c; -+ } -+ e = 0; -+ for (; (unsigned char)(d - 255) + e <= 1; e++) -+ check (b); -+ if (cnt != 2) -+ abort (); -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.dg/torture/pr111614.c b/gcc/testsuite/gcc.dg/torture/pr111614.c -new file mode 100644 -index 00000000000..0f3ecbae86c ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/torture/pr111614.c -@@ -0,0 +1,23 @@ -+/* { dg-do compile } */ -+ -+int a, b, c, d, e; -+static void f() { -+ int *g = &b; -+ b = 1; -+ for (; b >= 0; b--) { -+ c = 0; -+ for (; c <= 1; c++) -+ e = 0; -+ for (; e <= 1; e++) { -+ int h, i = h = 13; -+ for (; h; h--) -+ i = i << a; -+ d &= i + c + 9 + *g; -+ } -+ } -+} -+int main() { -+ f(); -+ for (;;) -+ ; -+} -diff --git a/gcc/testsuite/gcc.dg/torture/pr111815.c b/gcc/testsuite/gcc.dg/torture/pr111815.c -new file mode 100644 -index 00000000000..5e80b77d13e ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/torture/pr111815.c -@@ -0,0 +1,26 @@ -+/* { dg-do run } */ -+ -+char x[] = { -+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, -+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -+}; -+ -+__attribute__ ((noinline)) char * -+p (char *a, int o, int i) -+{ -+ return a + ++o + (1 << ++i); -+} -+ -+int -+main (void) -+{ -+ if (*p (x, 0, 0) != 3) -+ return 1; -+ if (*p (x, 1, 2) != 10) -+ return 1; -+ if (*p (x, 2, 1) != 7) -+ return 1; -+ if (*p (x, 3, 3) != 20) -+ return 1; -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.dg/torture/pr111818.c b/gcc/testsuite/gcc.dg/torture/pr111818.c -new file mode 100644 -index 00000000000..a7a91111d71 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/torture/pr111818.c -@@ -0,0 +1,11 @@ -+/* { dg-do compile } */ -+ -+static void foo(const volatile unsigned int x, void *p) -+{ -+ __builtin_memcpy(p, (void *)&x, sizeof x); -+} -+ -+void bar(void *number) -+{ -+ foo(0, number); -+} -diff --git a/gcc/testsuite/gcc.dg/torture/pr111917.c b/gcc/testsuite/gcc.dg/torture/pr111917.c -new file mode 100644 -index 00000000000..532e30200b5 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/torture/pr111917.c -@@ -0,0 +1,23 @@ -+/* { dg-do compile } */ -+/* { dg-additional-options "-funswitch-loops" } */ -+ -+long t; -+long a() { -+ long b = t, c = t; -+ for (; b < 31; b++) -+ c <<= 1; -+ return c; -+} -+long t1; -+static -+int d() { -+ if (!t1) -+ return 0; -+e: -+f: -+ for (; a();) -+ ; -+ goto f; -+ return 0; -+} -+int main() { d(); } -diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr111967.c b/gcc/testsuite/gcc.dg/tree-ssa/pr111967.c -new file mode 100644 -index 00000000000..bbef390228a ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr111967.c -@@ -0,0 +1,15 @@ -+/* PR tree-optimization/111967 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fno-tree-forwprop -fdump-tree-evrp-all" } */ -+ -+void bar (char *); -+int a; -+char *b; -+ -+void -+foo (void) -+{ -+ long c = a & 3; -+ if (c) -+ bar (b + c); -+} -diff --git a/gcc/testsuite/gcc.dg/vect/pr108950.c b/gcc/testsuite/gcc.dg/vect/pr108950.c -index ecf076c964b..563c4b9df38 100644 ---- a/gcc/testsuite/gcc.dg/vect/pr108950.c -+++ b/gcc/testsuite/gcc.dg/vect/pr108950.c -@@ -1,5 +1,5 @@ --/* { dg-require-effective-target vect_simd_clones } */ - /* { dg-do compile } */ -+/* { dg-require-effective-target vect_simd_clones } */ - - int m; - short int n; -diff --git a/gcc/testsuite/gcc.dg/vect/pr111764.c b/gcc/testsuite/gcc.dg/vect/pr111764.c -new file mode 100644 -index 00000000000..f4e110f3bbf ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/vect/pr111764.c -@@ -0,0 +1,16 @@ -+#include "tree-vect.h" -+ -+short b = 2; -+ -+int main() -+{ -+ check_vect (); -+ -+ for (int a = 1; a <= 9; a++) -+ b = b * b; -+ if (b != 0) -+ __builtin_abort (); -+ -+ return 0; -+} -+ -diff --git a/gcc/testsuite/gcc.dg/vect/pr97428.c b/gcc/testsuite/gcc.dg/vect/pr97428.c -index bbd743a76c4..ad6416096aa 100644 ---- a/gcc/testsuite/gcc.dg/vect/pr97428.c -+++ b/gcc/testsuite/gcc.dg/vect/pr97428.c -@@ -1,4 +1,5 @@ - /* { dg-do compile } */ -+/* { dg-require-effective-target vect_double } */ - - typedef struct { double re, im; } dcmlx_t; - typedef struct { double re[4], im[4]; } dcmlx4_t; -diff --git a/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp b/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp -index 3e652c483c7..eb7c531615c 100644 ---- a/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp -+++ b/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp -@@ -27,7 +27,7 @@ if { ![istarget aarch64*-*-*] } then { - - torture-init - set-torture-options $C_TORTURE_OPTIONS --set additional_flags "-W -Wall -Wno-abi" -+set additional_flags "-W -Wall -Wno-abi -fno-pie -no-pie" - - # Test parameter passing. This uses abitest.S which relies on weak - # symbols. -diff --git a/gcc/testsuite/gcc.target/aarch64/acle/ls64_lto.c b/gcc/testsuite/gcc.target/aarch64/acle/ls64_lto.c -new file mode 100644 -index 00000000000..8b4f2427771 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/acle/ls64_lto.c -@@ -0,0 +1,10 @@ -+/* { dg-do link { target aarch64_asm_ls64_ok } } */ -+/* { dg-additional-options "-march=armv8.7-a -flto" } */ -+#include -+int main(void) -+{ -+ data512_t d = __arm_ld64b ((const void *)0x1000); -+ __arm_st64b ((void *)0x2000, d); -+ uint64_t x = __arm_st64bv ((void *)0x3000, d); -+ x += __arm_st64bv0 ((void *)0x4000, d); -+} -diff --git a/gcc/testsuite/gcc.target/aarch64/acle/pr110100.c b/gcc/testsuite/gcc.target/aarch64/acle/pr110100.c -new file mode 100644 -index 00000000000..f56d5e619e8 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/acle/pr110100.c -@@ -0,0 +1,7 @@ -+/* { dg-do compile } */ -+/* { dg-options "-march=armv8.7-a -O2" } */ -+#include -+void do_st64b(data512_t data) { -+ __arm_st64b((void*)0x10000000, data); -+} -+/* { dg-final { scan-assembler {mov\tx([123])?[0-9], 268435456} } } */ -diff --git a/gcc/testsuite/gcc.target/aarch64/acle/pr110132.c b/gcc/testsuite/gcc.target/aarch64/acle/pr110132.c -new file mode 100644 -index 00000000000..fb88d633dd2 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/acle/pr110132.c -@@ -0,0 +1,15 @@ -+/* { dg-do compile } */ -+/* { dg-additional-options "-march=armv8.7-a" } */ -+ -+/* Check that ls64 builtins can be invoked using a preprocesed testcase -+ without triggering bogus builtin warnings, see PR110132. -+ -+ Note that this is purely to test GCC internals and user code should -+ include arm_acle.h to make use of these builtins. */ -+ -+#pragma GCC aarch64 "arm_acle.h" -+typedef __arm_data512_t data512_t; -+void f(void *p, data512_t d) -+{ -+ __arm_st64b (p, d); -+} -diff --git a/gcc/testsuite/gcc.target/aarch64/auto-init-7.c b/gcc/testsuite/gcc.target/aarch64/auto-init-7.c -index ac27fbe92f4..fde6e568532 100644 ---- a/gcc/testsuite/gcc.target/aarch64/auto-init-7.c -+++ b/gcc/testsuite/gcc.target/aarch64/auto-init-7.c -@@ -1,6 +1,6 @@ - /* Verify zero initialization for array, union, and structure type automatic variables. */ - /* { dg-do compile } */ --/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand" } */ -+/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand -fno-stack-protector" } */ - - struct S - { -diff --git a/gcc/testsuite/gcc.target/aarch64/fuse_adrp_add_1.c b/gcc/testsuite/gcc.target/aarch64/fuse_adrp_add_1.c -index e49aadaa639..d66fe3a4b23 100644 ---- a/gcc/testsuite/gcc.target/aarch64/fuse_adrp_add_1.c -+++ b/gcc/testsuite/gcc.target/aarch64/fuse_adrp_add_1.c -@@ -1,6 +1,6 @@ - /* { dg-do compile } */ - /* { dg-require-effective-target aarch64_small } */ --/* { dg-options "-O3 -mcpu=cortex-a57" } */ -+/* { dg-options "-O3 -mcpu=cortex-a57 -fno-pie" } */ - - enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS, - XGRF_REGS, ALL_REGS, LIM_REG_CLASSES }; -diff --git a/gcc/testsuite/gcc.target/aarch64/mops_4.c b/gcc/testsuite/gcc.target/aarch64/mops_4.c -index 1b87759cb5e..dd796115cb4 100644 ---- a/gcc/testsuite/gcc.target/aarch64/mops_4.c -+++ b/gcc/testsuite/gcc.target/aarch64/mops_4.c -@@ -50,6 +50,54 @@ copy3 (int *x, int *y, long z, long *res) - *res = z; - } - -+/* -+** move1: -+** mov (x[0-9]+), x0 -+** cpyp \[\1\]!, \[x1\]!, x2! -+** cpym \[\1\]!, \[x1\]!, x2! -+** cpye \[\1\]!, \[x1\]!, x2! -+** str x0, \[x3\] -+** ret -+*/ -+void -+move1 (int *x, int *y, long z, int **res) -+{ -+ __builtin_memmove (x, y, z); -+ *res = x; -+} -+ -+/* -+** move2: -+** mov (x[0-9]+), x1 -+** cpyp \[x0\]!, \[\1\]!, x2! -+** cpym \[x0\]!, \[\1\]!, x2! -+** cpye \[x0\]!, \[\1\]!, x2! -+** str x1, \[x3\] -+** ret -+*/ -+void -+move2 (int *x, int *y, long z, int **res) -+{ -+ __builtin_memmove (x, y, z); -+ *res = y; -+} -+ -+/* -+** move3: -+** mov (x[0-9]+), x2 -+** cpyp \[x0\]!, \[x1\]!, \1! -+** cpym \[x0\]!, \[x1\]!, \1! -+** cpye \[x0\]!, \[x1\]!, \1! -+** str x2, \[x3\] -+** ret -+*/ -+void -+move3 (int *x, int *y, long z, long *res) -+{ -+ __builtin_memmove (x, y, z); -+ *res = z; -+} -+ - /* - ** set1: - ** mov (x[0-9]+), x0 -diff --git a/gcc/testsuite/gcc.target/aarch64/pr103147-10.c b/gcc/testsuite/gcc.target/aarch64/pr103147-10.c -index b2c34e4155d..57942bfd10a 100644 ---- a/gcc/testsuite/gcc.target/aarch64/pr103147-10.c -+++ b/gcc/testsuite/gcc.target/aarch64/pr103147-10.c -@@ -1,4 +1,4 @@ --/* { dg-options "-O2 -fpack-struct -mstrict-align" } */ -+/* { dg-options "-O2 -fpack-struct -mstrict-align -fno-stack-protector" } */ - /* { dg-final { check-function-bodies "**" "" "" } } */ - - #include -diff --git a/gcc/testsuite/gcc.target/aarch64/pr104005.c b/gcc/testsuite/gcc.target/aarch64/pr104005.c -index 09dd81910eb..9f1ef2dc308 100644 ---- a/gcc/testsuite/gcc.target/aarch64/pr104005.c -+++ b/gcc/testsuite/gcc.target/aarch64/pr104005.c -@@ -1,4 +1,4 @@ --/* { dg-options "-O2 -funroll-loops" } */ -+/* { dg-options "-O2 -funroll-loops -fno-stack-protector" } */ - - typedef int v2 __attribute__((vector_size(8))); - -diff --git a/gcc/testsuite/gcc.target/aarch64/pr63304_1.c b/gcc/testsuite/gcc.target/aarch64/pr63304_1.c -index 9f1ed947806..5d519d817cc 100644 ---- a/gcc/testsuite/gcc.target/aarch64/pr63304_1.c -+++ b/gcc/testsuite/gcc.target/aarch64/pr63304_1.c -@@ -1,6 +1,6 @@ - /* { dg-do assemble } */ - /* { dg-require-effective-target lp64 } */ --/* { dg-options "-O1 --save-temps" } */ -+/* { dg-options "-O1 --save-temps -fno-pie" } */ - #pragma GCC push_options - #pragma GCC target ("+nothing+simd,cmodel=small") - -diff --git a/gcc/testsuite/gcc.target/aarch64/pr70120-2.c b/gcc/testsuite/gcc.target/aarch64/pr70120-2.c -index 663bf2ed147..8f5cdc93fe3 100644 ---- a/gcc/testsuite/gcc.target/aarch64/pr70120-2.c -+++ b/gcc/testsuite/gcc.target/aarch64/pr70120-2.c -@@ -1,6 +1,6 @@ - /* { dg-do compile } */ - /* { dg-require-effective-target lp64 } */ --/* { dg-options "-Og -freorder-functions -g3 -mcmodel=large" } */ -+/* { dg-options "-Og -freorder-functions -g3 -mcmodel=large -fno-pie" } */ - - typedef short v32u16 __attribute__ ((vector_size (32))); - typedef int v32u32 __attribute__ ((vector_size (32))); -diff --git a/gcc/testsuite/gcc.target/aarch64/pr78733.c b/gcc/testsuite/gcc.target/aarch64/pr78733.c -index 4695b5c1b2b..8556ef3f371 100644 ---- a/gcc/testsuite/gcc.target/aarch64/pr78733.c -+++ b/gcc/testsuite/gcc.target/aarch64/pr78733.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O2 -mcmodel=large -mpc-relative-literal-loads" } */ -+/* { dg-options "-O2 -mcmodel=large -mpc-relative-literal-loads -fno-pie" } */ - /* { dg-require-effective-target lp64 } */ - /* { dg-skip-if "-mcmodel=large, no support for -fpic" { aarch64-*-* } { "-fpic" } { "" } } */ - -diff --git a/gcc/testsuite/gcc.target/aarch64/pr79041-2.c b/gcc/testsuite/gcc.target/aarch64/pr79041-2.c -index 4695b5c1b2b..8556ef3f371 100644 ---- a/gcc/testsuite/gcc.target/aarch64/pr79041-2.c -+++ b/gcc/testsuite/gcc.target/aarch64/pr79041-2.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O2 -mcmodel=large -mpc-relative-literal-loads" } */ -+/* { dg-options "-O2 -mcmodel=large -mpc-relative-literal-loads -fno-pie" } */ - /* { dg-require-effective-target lp64 } */ - /* { dg-skip-if "-mcmodel=large, no support for -fpic" { aarch64-*-* } { "-fpic" } { "" } } */ - -diff --git a/gcc/testsuite/gcc.target/aarch64/pr94530.c b/gcc/testsuite/gcc.target/aarch64/pr94530.c -index 2797d116dcf..5dfdbe3311d 100644 ---- a/gcc/testsuite/gcc.target/aarch64/pr94530.c -+++ b/gcc/testsuite/gcc.target/aarch64/pr94530.c -@@ -1,6 +1,6 @@ - /* { dg-do compile } */ - /* { dg-require-effective-target lp64 } */ --/* { dg-options "-Os -mcpu=falkor -mpc-relative-literal-loads -mcmodel=large" } */ -+/* { dg-options "-Os -mcpu=falkor -mpc-relative-literal-loads -mcmodel=large -fno-pie" } */ - - extern void bar(const char *); - -diff --git a/gcc/testsuite/gcc.target/aarch64/pr94577.c b/gcc/testsuite/gcc.target/aarch64/pr94577.c -index 6f2d3612c26..d51799fb0bb 100644 ---- a/gcc/testsuite/gcc.target/aarch64/pr94577.c -+++ b/gcc/testsuite/gcc.target/aarch64/pr94577.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-mcmodel=large -mabi=ilp32" } */ -+/* { dg-options "-mcmodel=large -mabi=ilp32 -fno-pie" } */ - - void - foo () -diff --git a/gcc/testsuite/gcc.target/aarch64/reload-valid-spoff.c b/gcc/testsuite/gcc.target/aarch64/reload-valid-spoff.c -index 7b1982abb61..37e00ac9aa1 100644 ---- a/gcc/testsuite/gcc.target/aarch64/reload-valid-spoff.c -+++ b/gcc/testsuite/gcc.target/aarch64/reload-valid-spoff.c -@@ -1,6 +1,6 @@ - /* { dg-do compile } */ - /* { dg-require-effective-target lp64 } */ --/* { dg-options "-O2 -mcmodel=large -fno-builtin" } */ -+/* { dg-options "-O2 -mcmodel=large -fno-builtin -fno-pie" } */ - /* { dg-skip-if "-mcmodel=large -fPIC not currently supported" { aarch64-*-* } { "-fPIC" } { "" } } */ - - typedef long unsigned int size_t; -diff --git a/gcc/testsuite/gcc.target/aarch64/shrink_wrap_1.c b/gcc/testsuite/gcc.target/aarch64/shrink_wrap_1.c -index ab7cd74ec3b..067220c04a0 100644 ---- a/gcc/testsuite/gcc.target/aarch64/shrink_wrap_1.c -+++ b/gcc/testsuite/gcc.target/aarch64/shrink_wrap_1.c -@@ -1,5 +1,5 @@ - /* { dg-do compile { target { aarch64*-*-* } } } */ --/* { dg-options "-O2" } */ -+/* { dg-options "-O2 -fno-stack-protector" } */ - /* { dg-final { check-function-bodies "**" "" } } */ - - /* -diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-cfa-1.c b/gcc/testsuite/gcc.target/aarch64/stack-check-cfa-1.c -index 6885894a97e..412a9ed1aab 100644 ---- a/gcc/testsuite/gcc.target/aarch64/stack-check-cfa-1.c -+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-cfa-1.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O2 -fstack-clash-protection --param stack-clash-protection-guard-size=16 -funwind-tables" } */ -+/* { dg-options "-O2 -fstack-clash-protection --param stack-clash-protection-guard-size=16 -funwind-tables -fno-stack-protector" } */ - /* { dg-require-effective-target supports_stack_clash_protection } */ - - #define SIZE 128*1024 -diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-cfa-2.c b/gcc/testsuite/gcc.target/aarch64/stack-check-cfa-2.c -index 5796a53be06..e440569a078 100644 ---- a/gcc/testsuite/gcc.target/aarch64/stack-check-cfa-2.c -+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-cfa-2.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O2 -fstack-clash-protection --param stack-clash-protection-guard-size=16 -funwind-tables" } */ -+/* { dg-options "-O2 -fstack-clash-protection --param stack-clash-protection-guard-size=16 -funwind-tables -fno-stack-protector" } */ - /* { dg-require-effective-target supports_stack_clash_protection } */ - - #define SIZE 1280*1024 + 512 -diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-prologue-17.c b/gcc/testsuite/gcc.target/aarch64/stack-check-prologue-17.c -new file mode 100644 -index 00000000000..f0ec1389771 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-prologue-17.c -@@ -0,0 +1,55 @@ -+/* { dg-options "-O2 -fstack-clash-protection -fomit-frame-pointer --param stack-clash-protection-guard-size=12" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ -+ -+void f(int, ...); -+void g(); -+ -+/* -+** test1: -+** ... -+** str x30, \[sp\] -+** sub sp, sp, #1024 -+** cbnz w0, .* -+** bl g -+** ... -+*/ -+int test1(int z) { -+ __uint128_t x = 0; -+ int y[0x400]; -+ if (z) -+ { -+ f(0, 0, 0, 0, 0, 0, 0, &y, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x); -+ } -+ g(); -+ return 1; -+} -+ -+/* -+** test2: -+** ... -+** str x30, \[sp\] -+** sub sp, sp, #1040 -+** str xzr, \[sp, #?1024\] -+** cbnz w0, .* -+** bl g -+** ... -+*/ -+int test2(int z) { -+ __uint128_t x = 0; -+ int y[0x400]; -+ if (z) -+ { -+ f(0, 0, 0, 0, 0, 0, 0, &y, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x); -+ } -+ g(); -+ return 1; -+} -diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-prologue-18.c b/gcc/testsuite/gcc.target/aarch64/stack-check-prologue-18.c -new file mode 100644 -index 00000000000..6383bec5ebc ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-prologue-18.c -@@ -0,0 +1,100 @@ -+/* { dg-options "-O2 -fstack-clash-protection -fomit-frame-pointer --param stack-clash-protection-guard-size=12" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ -+ -+void f(int, ...); -+void g(); -+ -+/* -+** test1: -+** ... -+** str x30, \[sp\] -+** sub sp, sp, #4064 -+** str xzr, \[sp, #?1024\] -+** cbnz w0, .* -+** bl g -+** ... -+** str x26, \[sp, #?4128\] -+** ... -+*/ -+int test1(int z) { -+ __uint128_t x = 0; -+ int y[0x400]; -+ if (z) -+ { -+ asm volatile ("" ::: -+ "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26"); -+ f(0, 0, 0, 0, 0, 0, 0, &y, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x); -+ } -+ g(); -+ return 1; -+} -+ -+/* -+** test2: -+** ... -+** str x30, \[sp\] -+** sub sp, sp, #1040 -+** str xzr, \[sp, #?1024\] -+** cbnz w0, .* -+** bl g -+** ... -+*/ -+int test2(int z) { -+ __uint128_t x = 0; -+ int y[0x400]; -+ if (z) -+ { -+ asm volatile ("" ::: -+ "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26"); -+ f(0, 0, 0, 0, 0, 0, 0, &y, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x); -+ } -+ g(); -+ return 1; -+} -+ -+/* -+** test3: -+** ... -+** str x30, \[sp\] -+** sub sp, sp, #1024 -+** cbnz w0, .* -+** bl g -+** ... -+*/ -+int test3(int z) { -+ __uint128_t x = 0; -+ int y[0x400]; -+ if (z) -+ { -+ asm volatile ("" ::: -+ "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26"); -+ f(0, 0, 0, 0, 0, 0, 0, &y, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x); -+ } -+ g(); -+ return 1; -+} -diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-prologue-19.c b/gcc/testsuite/gcc.target/aarch64/stack-check-prologue-19.c -new file mode 100644 -index 00000000000..562039b5e9b ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-prologue-19.c -@@ -0,0 +1,100 @@ -+/* { dg-options "-O2 -fstack-clash-protection -fomit-frame-pointer --param stack-clash-protection-guard-size=12 -fsanitize=shadow-call-stack -ffixed-x18" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ -+ -+void f(int, ...); -+void g(); -+ -+/* -+** test1: -+** ... -+** str x30, \[sp\] -+** sub sp, sp, #4064 -+** str xzr, \[sp, #?1024\] -+** cbnz w0, .* -+** bl g -+** ... -+** str x26, \[sp, #?4128\] -+** ... -+*/ -+int test1(int z) { -+ __uint128_t x = 0; -+ int y[0x400]; -+ if (z) -+ { -+ asm volatile ("" ::: -+ "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26"); -+ f(0, 0, 0, 0, 0, 0, 0, &y, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x); -+ } -+ g(); -+ return 1; -+} -+ -+/* -+** test2: -+** ... -+** str x30, \[sp\] -+** sub sp, sp, #1040 -+** str xzr, \[sp, #?1024\] -+** cbnz w0, .* -+** bl g -+** ... -+*/ -+int test2(int z) { -+ __uint128_t x = 0; -+ int y[0x400]; -+ if (z) -+ { -+ asm volatile ("" ::: -+ "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26"); -+ f(0, 0, 0, 0, 0, 0, 0, &y, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x); -+ } -+ g(); -+ return 1; -+} -+ -+/* -+** test3: -+** ... -+** str x30, \[sp\] -+** sub sp, sp, #1024 -+** cbnz w0, .* -+** bl g -+** ... -+*/ -+int test3(int z) { -+ __uint128_t x = 0; -+ int y[0x400]; -+ if (z) -+ { -+ asm volatile ("" ::: -+ "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26"); -+ f(0, 0, 0, 0, 0, 0, 0, &y, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, -+ x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x); -+ } -+ g(); -+ return 1; -+} -diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-prologue-20.c b/gcc/testsuite/gcc.target/aarch64/stack-check-prologue-20.c -new file mode 100644 -index 00000000000..690aae8dfd5 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-prologue-20.c -@@ -0,0 +1,3 @@ -+/* { dg-options "-O2 -fstack-protector-all -fstack-clash-protection -fomit-frame-pointer --param stack-clash-protection-guard-size=12 -fsanitize=shadow-call-stack -ffixed-x18" } */ -+ -+#include "stack-check-prologue-19.c" -diff --git a/gcc/testsuite/gcc.target/aarch64/stack-protector-8.c b/gcc/testsuite/gcc.target/aarch64/stack-protector-8.c -new file mode 100644 -index 00000000000..e71d820e365 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/stack-protector-8.c -@@ -0,0 +1,95 @@ -+/* { dg-options " -O -fstack-protector-strong -mstack-protector-guard=sysreg -mstack-protector-guard-reg=tpidr2_el0 -mstack-protector-guard-offset=16" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ -+ -+void g(void *); -+__SVBool_t *h(void *); -+ -+/* -+** test1: -+** sub sp, sp, #288 -+** stp x29, x30, \[sp, #?272\] -+** add x29, sp, #?272 -+** mrs (x[0-9]+), tpidr2_el0 -+** ldr (x[0-9]+), \[\1, #?16\] -+** str \2, \[sp, #?264\] -+** mov \2, #?0 -+** add x0, sp, #?8 -+** bl g -+** ... -+** mrs .* -+** ... -+** bne .* -+** ... -+** ldp x29, x30, \[sp, #?272\] -+** add sp, sp, #?288 -+** ret -+** bl __stack_chk_fail -+*/ -+int test1() { -+ int y[0x40]; -+ g(y); -+ return 1; -+} -+ -+/* -+** test2: -+** stp x29, x30, \[sp, #?-16\]! -+** mov x29, sp -+** sub sp, sp, #1040 -+** mrs (x[0-9]+), tpidr2_el0 -+** ldr (x[0-9]+), \[\1, #?16\] -+** str \2, \[sp, #?1032\] -+** mov \2, #?0 -+** add x0, sp, #?8 -+** bl g -+** ... -+** mrs .* -+** ... -+** bne .* -+** ... -+** add sp, sp, #?1040 -+** ldp x29, x30, \[sp\], #?16 -+** ret -+** bl __stack_chk_fail -+*/ -+int test2() { -+ int y[0x100]; -+ g(y); -+ return 1; -+} -+ -+#pragma GCC target "+sve" -+ -+/* -+** test3: -+** stp x29, x30, \[sp, #?-16\]! -+** mov x29, sp -+** addvl sp, sp, #-18 -+** ... -+** str p4, \[sp\] -+** ... -+** sub sp, sp, #272 -+** mrs (x[0-9]+), tpidr2_el0 -+** ldr (x[0-9]+), \[\1, #?16\] -+** str \2, \[sp, #?264\] -+** mov \2, #?0 -+** add x0, sp, #?8 -+** bl h -+** ... -+** mrs .* -+** ... -+** bne .* -+** ... -+** add sp, sp, #?272 -+** ... -+** ldr p4, \[sp\] -+** ... -+** addvl sp, sp, #18 -+** ldp x29, x30, \[sp\], #?16 -+** ret -+** bl __stack_chk_fail -+*/ -+__SVBool_t test3() { -+ int y[0x40]; -+ return *h(y); -+} -diff --git a/gcc/testsuite/gcc.target/aarch64/stack-protector-9.c b/gcc/testsuite/gcc.target/aarch64/stack-protector-9.c -new file mode 100644 -index 00000000000..58f322aa480 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/stack-protector-9.c -@@ -0,0 +1,33 @@ -+/* { dg-options "-O2 -mcpu=neoverse-v1 -fstack-protector-all" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ -+ -+/* -+** main: -+** ... -+** stp x29, x30, \[sp, #?-[0-9]+\]! -+** ... -+** sub sp, sp, #[0-9]+ -+** ... -+** str x[0-9]+, \[x29, #?-8\] -+** ... -+*/ -+int f(const char *); -+void g(void *); -+int main(int argc, char* argv[]) -+{ -+ int a; -+ int b; -+ char c[2+f(argv[1])]; -+ int d[0x100]; -+ char y; -+ -+ y=42; a=4; b=10; -+ c[0] = 'h'; c[1] = '\0'; -+ -+ c[f(argv[2])] = '\0'; -+ -+ __builtin_printf("%d %d\n%s\n", a, b, c); -+ g(d); -+ -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp b/gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp -index 83786733f35..76f5fd4ffd8 100644 ---- a/gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp -+++ b/gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp -@@ -37,11 +37,12 @@ if ![info exists DEFAULT_CFLAGS] then { - # Initialize `dg'. - dg-init - --# Force SVE if we're not testing it already. -+# Force SVE if we're not testing it already. And, disable stack protector -+# to avoid test failures with --enable-default-ssp. - if { [check_effective_target_aarch64_sve] } { -- set sve_flags "" -+ set sve_flags "-fno-stack-protector" - } else { -- set sve_flags "-march=armv8.2-a+sve" -+ set sve_flags "-march=armv8.2-a+sve -fno-stack-protector" - } - - # Main loop. -diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_3.c b/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_3.c -index 3e01ec36c3a..3530a0d504b 100644 ---- a/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_3.c -+++ b/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_3.c -@@ -11,11 +11,10 @@ - ** mov x11, sp - ** ... - ** sub sp, sp, x13 --** str p4, \[sp\] - ** cbz w0, [^\n]* -+** str p4, \[sp\] - ** ... - ** ptrue p0\.b, all --** ldr p4, \[sp\] - ** addvl sp, sp, #1 - ** ldr x24, \[sp\], 32 - ** ret -@@ -39,13 +38,12 @@ test_1 (int n) - ** mov x11, sp - ** ... - ** sub sp, sp, x13 --** str p4, \[sp\] - ** cbz w0, [^\n]* -+** str p4, \[sp\] - ** str p5, \[sp, #1, mul vl\] - ** str p6, \[sp, #2, mul vl\] - ** ... - ** ptrue p0\.b, all --** ldr p4, \[sp\] - ** addvl sp, sp, #1 - ** ldr x24, \[sp\], 32 - ** ret -diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr109505.c b/gcc/testsuite/gcc.target/aarch64/sve/pr109505.c -new file mode 100644 -index 00000000000..b975ae75ae6 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr109505.c -@@ -0,0 +1,12 @@ -+/* PR tree-optimization/109505 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -march=armv8.2-a+sve" } */ -+ -+#pragma GCC aarch64 "arm_sve.h" -+ -+unsigned long -+foo (unsigned long x) -+{ -+ unsigned long y = svcntb (); -+ return (x | 15) & y; -+} -diff --git a/gcc/testsuite/gcc.target/aarch64/test_frame_17.c b/gcc/testsuite/gcc.target/aarch64/test_frame_17.c -index 44f13291128..5d432ad0854 100644 ---- a/gcc/testsuite/gcc.target/aarch64/test_frame_17.c -+++ b/gcc/testsuite/gcc.target/aarch64/test_frame_17.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O2" } */ -+/* { dg-options "-O2 -fno-stack-protector" } */ - - /* Test reuse of stack adjustment temporaries. */ - -diff --git a/gcc/testsuite/gcc.target/alpha/pr106966.c b/gcc/testsuite/gcc.target/alpha/pr106966.c -new file mode 100644 -index 00000000000..7145c2096c6 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/alpha/pr106966.c -@@ -0,0 +1,13 @@ -+/* PR target/106906 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -mbuild-constants" } */ -+ -+void -+do_console (unsigned short *vga) -+{ -+ vga[0] = 'H'; -+ vga[1] = 'e'; -+ vga[2] = 'l'; -+ vga[3] = 'l'; -+ vga[4] = 'o'; -+} -diff --git a/gcc/testsuite/gcc.target/arm/acle/cde-mve-full-assembly.c b/gcc/testsuite/gcc.target/arm/acle/cde-mve-full-assembly.c -index 501cc84da10..e3e7f7ef3e5 100644 ---- a/gcc/testsuite/gcc.target/arm/acle/cde-mve-full-assembly.c -+++ b/gcc/testsuite/gcc.target/arm/acle/cde-mve-full-assembly.c -@@ -567,80 +567,80 @@ - contain back references). */ - /* - ** test_cde_vcx1q_mfloat16x8_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1t p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1q_mfloat32x4_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1t p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1q_muint8x16_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1t p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1q_muint16x8_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1t p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1q_muint32x4_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1t p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1q_muint64x2_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1t p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1q_mint8x16_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1t p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1q_mint16x8_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1t p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1q_mint32x4_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1t p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1q_mint64x2_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1t p0, q0, #32 - ** bx lr -@@ -649,80 +649,80 @@ - - /* - ** test_cde_vcx1qa_mfloat16x8_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1at p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1qa_mfloat32x4_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1at p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1qa_muint8x16_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1at p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1qa_muint16x8_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1at p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1qa_muint32x4_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1at p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1qa_muint64x2_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1at p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1qa_mint8x16_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1at p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1qa_mint16x8_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1at p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1qa_mint32x4_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1at p0, q0, #32 - ** bx lr - */ - /* - ** test_cde_vcx1qa_mint64x2_tintint: --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) --** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr P0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) -+** (?:vldr\.64 d0, \.L[0-9]*\n\tvldr\.64 d1, \.L[0-9]*\+8|vmsr p0, r2 @ movhi) - ** vpst - ** vcx1at p0, q0, #32 - ** bx lr -@@ -731,8 +731,8 @@ - - /* - ** test_cde_vcx2q_mfloat16x8_tuint16x8_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2t p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -740,8 +740,8 @@ - */ - /* - ** test_cde_vcx2q_mfloat16x8_tfloat32x4_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2t p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -749,8 +749,8 @@ - */ - /* - ** test_cde_vcx2q_mfloat32x4_tuint8x16_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2t p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -758,8 +758,8 @@ - */ - /* - ** test_cde_vcx2q_mint64x2_tuint8x16_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2t p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -767,8 +767,8 @@ - */ - /* - ** test_cde_vcx2q_mint8x16_tuint8x16_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2t p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -776,8 +776,8 @@ - */ - /* - ** test_cde_vcx2q_muint16x8_tuint8x16_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2t p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -785,8 +785,8 @@ - */ - /* - ** test_cde_vcx2q_muint8x16_tint64x2_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2t p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -794,8 +794,8 @@ - */ - /* - ** test_cde_vcx2q_muint8x16_tint8x16_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2t p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -803,8 +803,8 @@ - */ - /* - ** test_cde_vcx2q_muint8x16_tuint16x8_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2t p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -812,8 +812,8 @@ - */ - /* - ** test_cde_vcx2q_muint8x16_tuint8x16_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2t p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -823,8 +823,8 @@ - - /* - ** test_cde_vcx2qa_mfloat16x8_tuint16x8_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2at p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -832,8 +832,8 @@ - */ - /* - ** test_cde_vcx2qa_mfloat16x8_tfloat32x4_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2at p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -841,8 +841,8 @@ - */ - /* - ** test_cde_vcx2qa_mfloat32x4_tuint8x16_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2at p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -850,8 +850,8 @@ - */ - /* - ** test_cde_vcx2qa_mint64x2_tuint8x16_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2at p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -859,8 +859,8 @@ - */ - /* - ** test_cde_vcx2qa_mint8x16_tuint8x16_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2at p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -868,8 +868,8 @@ - */ - /* - ** test_cde_vcx2qa_muint16x8_tuint8x16_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2at p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -877,8 +877,8 @@ - */ - /* - ** test_cde_vcx2qa_muint8x16_tint64x2_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2at p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -886,8 +886,8 @@ - */ - /* - ** test_cde_vcx2qa_muint8x16_tint8x16_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2at p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -895,8 +895,8 @@ - */ - /* - ** test_cde_vcx2qa_muint8x16_tuint16x8_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2at p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -904,8 +904,8 @@ - */ - /* - ** test_cde_vcx2qa_muint8x16_tuint8x16_tint: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r1 @ movhi) - ** vpst - ** vcx2at p0, (q[0-7]), q0, #32 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -915,8 +915,8 @@ - - /* - ** test_cde_vcx3q_muint8x16_tuint8x16_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3t p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -924,8 +924,8 @@ - */ - /* - ** test_cde_vcx3q_mfloat16x8_tfloat16x8_tfloat16x8_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3t p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -933,8 +933,8 @@ - */ - /* - ** test_cde_vcx3q_mfloat32x4_tuint64x2_tfloat16x8_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3t p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -942,8 +942,8 @@ - */ - /* - ** test_cde_vcx3q_muint16x8_tuint8x16_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3t p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -951,8 +951,8 @@ - */ - /* - ** test_cde_vcx3q_muint8x16_tuint16x8_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3t p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -960,8 +960,8 @@ - */ - /* - ** test_cde_vcx3q_muint8x16_tuint8x16_tuint16x8_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3t p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -969,8 +969,8 @@ - */ - /* - ** test_cde_vcx3q_mint8x16_tuint8x16_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3t p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -978,8 +978,8 @@ - */ - /* - ** test_cde_vcx3q_muint8x16_tint8x16_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3t p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -987,8 +987,8 @@ - */ - /* - ** test_cde_vcx3q_muint8x16_tuint8x16_tint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3t p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -996,8 +996,8 @@ - */ - /* - ** test_cde_vcx3q_mint64x2_tuint8x16_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3t p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1005,8 +1005,8 @@ - */ - /* - ** test_cde_vcx3q_muint8x16_tint64x2_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3t p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1014,8 +1014,8 @@ - */ - /* - ** test_cde_vcx3q_muint8x16_tuint8x16_tint64x2_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3t p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1023,8 +1023,8 @@ - */ - /* - ** test_cde_vcx3q_muint8x16_tint64x2_tint64x2_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3t p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1034,8 +1034,8 @@ - - /* - ** test_cde_vcx3qa_muint8x16_tuint8x16_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3at p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1043,8 +1043,8 @@ - */ - /* - ** test_cde_vcx3qa_mfloat16x8_tfloat16x8_tfloat16x8_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3at p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1052,8 +1052,8 @@ - */ - /* - ** test_cde_vcx3qa_mfloat32x4_tuint64x2_tfloat16x8_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3at p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1061,8 +1061,8 @@ - */ - /* - ** test_cde_vcx3qa_muint16x8_tuint8x16_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3at p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1070,8 +1070,8 @@ - */ - /* - ** test_cde_vcx3qa_muint8x16_tuint16x8_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3at p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1079,8 +1079,8 @@ - */ - /* - ** test_cde_vcx3qa_muint8x16_tuint8x16_tuint16x8_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3at p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1088,8 +1088,8 @@ - */ - /* - ** test_cde_vcx3qa_mint8x16_tuint8x16_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3at p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1097,8 +1097,8 @@ - */ - /* - ** test_cde_vcx3qa_muint8x16_tint8x16_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3at p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1106,8 +1106,8 @@ - */ - /* - ** test_cde_vcx3qa_muint8x16_tuint8x16_tint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3at p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1115,8 +1115,8 @@ - */ - /* - ** test_cde_vcx3qa_mint64x2_tuint8x16_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3at p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1124,8 +1124,8 @@ - */ - /* - ** test_cde_vcx3qa_muint8x16_tint64x2_tuint8x16_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3at p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1133,8 +1133,8 @@ - */ - /* - ** test_cde_vcx3qa_muint8x16_tuint8x16_tint64x2_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3at p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -@@ -1142,8 +1142,8 @@ - */ - /* - ** test_cde_vcx3qa_muint8x16_tint64x2_tint64x2_t: --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) --** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr P0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) -+** (?:vldr\.64 d(?:[02468]|1[024]), \.L[0-9]*\n\tvldr\.64 d(?:[13579]|1[135]), \.L[0-9]*\+8|vmsr p0, r0 @ movhi) - ** vpst - ** vcx3at p0, (q[0-7]), q0, q1, #15 - ** vmov q0, \1([[:space:]]+@ [^\n]*)? -diff --git a/gcc/testsuite/gcc.target/arm/mve/general/preserve_user_namespace_1.c b/gcc/testsuite/gcc.target/arm/mve/general/preserve_user_namespace_1.c -new file mode 100644 -index 00000000000..f107ac44ca9 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/general/preserve_user_namespace_1.c -@@ -0,0 +1,6 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#define __ARM_MVE_PRESERVE_USER_NAMESPACE -+#include -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl.c -index a2d5160e518..1aa576afae3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** asrl (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int64_t --asrl_reg (int64_t longval3, int32_t x) -+foo (int64_t value, int32_t shift) - { -- return asrl (longval3, x); -+ return asrl (value, shift); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "asrl\\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll.c -index 9c1b62fb9f2..5542ac8c316 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll.c -@@ -1,13 +1,40 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** lsll (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint64_t --lsll_reg (uint64_t longval3, int32_t x) -+foo (uint64_t value, int32_t shift) - { -- return lsll (longval3, x); -+ return lsll (value, shift); -+} -+ -+/* -+**foo1: -+** ... -+** lsll (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint64_t -+foo1 (int32_t shift) -+{ -+ return lsll (1, shift); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "lsll\\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fp_vaddq_n.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fp_vaddq_n.c -deleted file mode 100644 -index 714fbf9bfe7..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fp_vaddq_n.c -+++ /dev/null -@@ -1,47 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include --int8x16_t foo (int8x16_t a, int16_t b) --{ -- return vaddq (a, (b<<3)); --} --int16x8_t foo1 (int16x8_t a, int16_t b) --{ -- return vaddq (a, (b<<3)); --} --int32x4_t foo2 (int32x4_t a, int16_t b) --{ -- return vaddq (a, (b<<3)); --} --uint8x16_t foo3 (uint8x16_t a, int16_t b) --{ -- return vaddq (a, (b<<3)); --} --uint16x8_t foo4 (uint16x8_t a, int16_t b) --{ -- return vaddq (a, (b<<3)); --} --uint32x4_t foo5 (uint32x4_t a, int16_t b) --{ -- return vaddq (a, (b<<3)); --} --float16x8_t foo6 (float16x8_t a) --{ -- return vaddq (a, (float16_t)23.6); --} --float32x4_t foo7 (float32x4_t a) --{ -- return vaddq (a, (float32_t)23.46); --} --float16x8_t foo8 (float16x8_t a) --{ -- return vaddq (a, 23.6); --} --float32x4_t foo9 (float32x4_t a) --{ -- return vaddq (a, 23.46); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-fp.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-fp.c -new file mode 100644 -index 00000000000..ee52be54f7b ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-fp.c -@@ -0,0 +1,61 @@ -+/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ -+/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-additional-options "-O2 -Wno-pedantic -Wno-long-long -Wno-incompatible-pointer-types" { target c } } */ -+/* { dg-additional-options "-O2 -Wno-pedantic -Wno-long-long -fpermissive" { target c++ } } */ -+#include "arm_mve.h" -+ -+float f1; -+double f2; -+float16_t f3; -+float32_t f4; -+__fp16 f5; -+#ifndef __cplusplus -+_Float16 f6; -+#endif -+ -+float16x8_t floatvec; -+ -+/* Test a few different supported ways of passing a scalar int value. -+The intrinsic vmulq was chosen arbitrarily, but it is representative of -+all intrinsics that take a non-const scalar value. */ -+void -+test_scalars (void) -+{ -+ /* Test a few different supported ways of passing a float value. */ -+ floatvec = vmulq(floatvec, 0.5); -+ floatvec = vmulq(floatvec, 0.5f); -+ floatvec = vmulq(floatvec, (__fp16) 0.5); -+ floatvec = vmulq(floatvec, f1); -+ floatvec = vmulq(floatvec, f2); -+ floatvec = vmulq(floatvec, f3); -+ floatvec = vmulq(floatvec, f4); -+ floatvec = vmulq(floatvec, f5); -+#ifndef __cplusplus -+ floatvec = vmulq(floatvec, f6); -+ floatvec = vmulq(floatvec, 0.15f16); -+ floatvec = vmulq(floatvec, (_Float16) 0.15); -+#endif -+} -+ -+/* Next, test a number of valid pointer overloads. */ -+void -+foo11 (__fp16 * addr, float16x8_t value) -+{ -+ vst1q (addr, value); -+} -+ -+#ifndef __cplusplus -+void -+foo12 (_Float16 * addr, float16x8_t value) -+{ -+ vst1q (addr, value); -+} -+#endif -+ -+void -+foo13 (float * addr, float32x4_t value) -+{ -+ vst1q (addr, value); -+} -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-int.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-int.c -new file mode 100644 -index 00000000000..ab51cc8b323 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-int.c -@@ -0,0 +1,100 @@ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-additional-options "-O2 -Wno-pedantic -Wno-long-long -Wno-incompatible-pointer-types" { target c } } */ -+/* { dg-additional-options "-O2 -Wno-pedantic -Wno-long-long -fpermissive" { target c++ } } */ -+#include "arm_mve.h" -+ -+int i1; -+short i2; -+long i3; -+long long i4; -+int8_t i5; -+int16_t i6; -+int32_t i7; -+int64_t i8; -+ -+int16x8_t intvec; -+ -+/* Test a few different supported ways of passing a scalar int value. -+The intrinsic vmulq was chosen arbitrarily, but it is representative of -+all intrinsics that take a non-const scalar value. */ -+void -+test_scalars (void) -+{ -+ intvec = vmulq(intvec, 2); -+ intvec = vmulq(intvec, (int32_t) 2); -+ intvec = vmulq(intvec, (short) 2); -+ intvec = vmulq(intvec, i1); -+ intvec = vmulq(intvec, i2); -+ intvec = vmulq(intvec, i3); -+ intvec = vmulq(intvec, i4); -+ intvec = vmulq(intvec, i5); -+ intvec = vmulq(intvec, i6); -+ intvec = vmulq(intvec, i7); -+ intvec = vmulq(intvec, i8); -+} -+ -+/* Next, test a number of valid pointer overloads. */ -+void -+foo1 (signed char * addr, int8x16_t value) -+{ -+ vst1q (addr, value); -+} -+ -+void -+foo2 (short * addr, int16x8_t value) -+{ -+ vst1q (addr, value); -+} -+ -+/* Glibc defines int32_t as 'int' while newlib defines it as 'long int'. -+ -+ Although these correspond to the same size, g++ complains when using the -+ 'wrong' version: -+ invalid conversion from 'long int*' to 'int32_t*' {aka 'int*'} [-fpermissive] -+ -+ The trick below is to make this test pass whether using glibc-based or -+ newlib-based toolchains. */ -+ -+#if defined(__GLIBC__) -+#define word_type int -+#else -+#define word_type long int -+#endif -+void -+foo3 (word_type * addr, int32x4_t value) -+{ -+ vst1q (addr, value); -+} -+ -+void -+foo5 (long long * addr, uint64x2_t value) -+{ -+ vldrdq_gather_offset (addr, value); -+} -+ -+void -+foo6 (unsigned char * addr, uint8x16_t value) -+{ -+ vst1q (addr, value); -+} -+ -+void -+foo7 (unsigned short * addr, uint16x8_t value) -+{ -+ vst1q (addr, value); -+} -+ -+void -+foo8 (unsigned word_type * addr, uint32x4_t value) -+{ -+ vst1q (addr, value); -+} -+ -+void -+foo10 (unsigned long long * addr, uint64x2_t value) -+{ -+ vldrdq_gather_offset (addr, value); -+} -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vaddq_m.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vaddq_m.c -deleted file mode 100644 -index 719b95d9020..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vaddq_m.c -+++ /dev/null -@@ -1,48 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include --mve_pred16_t p; -- --int32x4_t fn1 (int32x4_t vecIdx) --{ -- return vaddq_m(vuninitializedq_s32(), vecIdx, 1, p); --} -- --int16x8_t fn2 (int16x8_t vecIdx) --{ -- return vaddq_m(vuninitializedq_s16(), vecIdx, 1, p); --} -- --int8x16_t fn3 (int8x16_t vecIdx) --{ -- return vaddq_m(vuninitializedq_s8(), vecIdx, 1, p); --} -- --uint32x4_t fn4 (uint32x4_t vecIdx) --{ -- return vaddq_m(vuninitializedq_u32(), vecIdx, 1, p); --} -- --uint16x8_t fn5 (uint16x8_t vecIdx) --{ -- return vaddq_m(vuninitializedq_u16(), vecIdx, 1, p); --} -- --uint8x16_t fn6 (uint8x16_t vecIdx) --{ -- return vaddq_m(vuninitializedq_u8(), vecIdx, 1, p); --} -- --float32x4_t fn7 (float32x4_t vecIdx) --{ -- return vaddq_m(vuninitializedq_f32(), vecIdx, (float32_t) 1.23, p); --} -- --float16x8_t fn8 (float16x8_t vecIdx) --{ -- return vaddq_m(vuninitializedq_f16(), vecIdx, (float16_t) 1.40, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vaddq_n.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vaddq_n.c -deleted file mode 100644 -index baa7fabe061..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vaddq_n.c -+++ /dev/null -@@ -1,31 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include --int8x16_t foo (int8x16_t a, int16_t b) --{ -- return vaddq (a, (b<<3)); --} --int16x8_t foo1 (int16x8_t a, int16_t b) --{ -- return vaddq (a, (b<<3)); --} --int32x4_t foo2 (int32x4_t a, int16_t b) --{ -- return vaddq (a, (b<<3)); --} --uint8x16_t foo3 (uint8x16_t a, int16_t b) --{ -- return vaddq (a, (b<<3)); --} --uint16x8_t foo4 (uint16x8_t a, int16_t b) --{ -- return vaddq (a, (b<<3)); --} --uint32x4_t foo5 (uint32x4_t a, int16_t b) --{ -- return vaddq (a, (b<<3)); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_m_n_u16.c -deleted file mode 100644 -index 15587802925..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_m_n_u16.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint16x8_t --foo1 (uint16x8_t inactive, int32_t a, mve_pred16_t p) --{ -- return vddupq_m (inactive, a, 1, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_m_n_u32.c -deleted file mode 100644 -index 8a9ed6327d3..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_m_n_u32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint32x4_t --foo1 (uint32x4_t inactive, int32_t a, mve_pred16_t p) --{ -- return vddupq_m (inactive, a, 4, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_m_n_u8.c -deleted file mode 100644 -index fe4aceeea97..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_m_n_u8.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint8x16_t --foo1 (uint8x16_t inactive, int32_t a, mve_pred16_t p) --{ -- return vddupq_m (inactive, a, 4, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_n_u16.c -deleted file mode 100644 -index 05a68cbe559..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_n_u16.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint16x8_t --foo1 (int32_t a) --{ -- return vddupq_u16 (a, 4); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_n_u32.c -deleted file mode 100644 -index f702c4cdb0a..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_n_u32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint32x4_t --foo1 (int32_t a) --{ -- return vddupq_u32 (a, 1); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_n_u8.c -deleted file mode 100644 -index f272056c423..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_n_u8.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint8x16_t --foo1 (int32_t a) --{ -- return vddupq_u8 (a, 1); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_x_n_u16.c -deleted file mode 100644 -index 31e37827e60..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_x_n_u16.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint16x8_t --foo1 (int32_t a, mve_pred16_t p) --{ -- return vddupq_x_u16 (a, 1, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_x_n_u32.c -deleted file mode 100644 -index 9989d0b0f00..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_x_n_u32.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint32x4_t --foo1 (int32_t a, mve_pred16_t p) --{ -- return vddupq_x_u32 (a, 4, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_x_n_u8.c -deleted file mode 100644 -index 19f1501fe4e..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vddupq_x_n_u8.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint8x16_t --foo1 (int32_t a, mve_pred16_t p) --{ -- return vddupq_x_u8 (a, 4, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vdwdupq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vdwdupq_x_n_u16.c -deleted file mode 100644 -index 07ea2d7d14c..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vdwdupq_x_n_u16.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint16x8_t --foo1 (int32_t a, uint32_t b, mve_pred16_t p) --{ -- return vdwdupq_x_u16 (a, b, 1, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vdwdupq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vdwdupq_x_n_u32.c -deleted file mode 100644 -index 9889b0b2b66..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vdwdupq_x_n_u32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint32x4_t --foo1 (int32_t a, uint32_t b, mve_pred16_t p) --{ -- return vdwdupq_x_u32 (a, b, 4, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vdwdupq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vdwdupq_x_n_u8.c -deleted file mode 100644 -index 13ad8d69e18..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vdwdupq_x_n_u8.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint8x16_t --foo1 (int32_t a, uint32_t b, mve_pred16_t p) --{ -- return vdwdupq_x_u8 (a, b, 4, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u16.c -deleted file mode 100644 -index cbe998e2faa..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u16.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint16x8_t --foo1 (uint16x8_t inactive, int32_t a, mve_pred16_t p) --{ -- return vidupq_m (inactive, a, 4, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u32.c -deleted file mode 100644 -index c9aa5c661de..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u32.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint32x4_t --foo1 (uint32x4_t inactive, int32_t a, mve_pred16_t p) --{ -- return vidupq_m (inactive, a, 1, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u8.c -deleted file mode 100644 -index 7b075744d9a..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u8.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint8x16_t --foo1 (uint8x16_t inactive, int32_t a, mve_pred16_t p) --{ -- return vidupq_m (inactive, a, 1, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_n_u16.c -deleted file mode 100644 -index a461a1e64b1..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_n_u16.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint16x8_t --foo1 (int32_t a) --{ -- return vidupq_u16 (a, 4); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_n_u32.c -deleted file mode 100644 -index c5b01a7ac90..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_n_u32.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint32x4_t --foo1 (int32_t a) --{ -- return vidupq_u32 (a, 1); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_n_u8.c -deleted file mode 100644 -index f963d51ac0f..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_n_u8.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint8x16_t --foo1 (int32_t a) --{ -- return vidupq_u8 (a, 1); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_x_n_u16.c -deleted file mode 100644 -index aecd4be5e71..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_x_n_u16.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint16x8_t --foo1 (int32_t a, mve_pred16_t p) --{ -- return vidupq_x_u16 (a, 4, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_x_n_u32.c -deleted file mode 100644 -index d3d33053f92..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_x_n_u32.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint32x4_t --foo1 (int32_t a, mve_pred16_t p) --{ -- return vidupq_x_u32 (a, 1, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_x_n_u8.c -deleted file mode 100644 -index f71953aeef4..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_x_n_u8.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint8x16_t --foo1 (int32_t a, mve_pred16_t p) --{ -- return vidupq_x_u8 (a, 1, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_viwdupq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_viwdupq_x_n_u16.c -deleted file mode 100644 -index 312966773e6..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_viwdupq_x_n_u16.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint16x8_t --foo1 (int32_t a, uint32_t b, mve_pred16_t p) --{ -- return viwdupq_x_u16 (a, b, 2, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_viwdupq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_viwdupq_x_n_u32.c -deleted file mode 100644 -index a5d758126d4..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_viwdupq_x_n_u32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint32x4_t --foo1 (int32_t a, uint32_t b, mve_pred16_t p) --{ -- return viwdupq_x_u32 (a, b, 4, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_viwdupq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_viwdupq_x_n_u8.c -deleted file mode 100644 -index aa4e7375d39..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_viwdupq_x_n_u8.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint8x16_t --foo1 (int32_t a, uint32_t b, mve_pred16_t p) --{ -- return viwdupq_x_u8 (a, b, 8, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_s64.c -deleted file mode 100644 -index e5b635983bf..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_s64.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --int64x2_t --foo1 (int64_t * base, uint64x2_t offset) --{ -- return vldrdq_gather_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_u64.c -deleted file mode 100644 -index 8d96527c6df..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_u64.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint64x2_t --foo1 (uint64_t * base, uint64x2_t offset) --{ -- return vldrdq_gather_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_z_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_z_s64.c -deleted file mode 100644 -index e66e4465b19..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_z_s64.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --int64x2_t --foo1 (int64_t * base, uint64x2_t offset, mve_pred16_t p) --{ -- return vldrdq_gather_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_z_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_z_u64.c -deleted file mode 100644 -index 7ca9590c12c..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_offset_z_u64.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint64x2_t --foo1 (uint64_t * base, uint64x2_t offset, mve_pred16_t p) --{ -- return vldrdq_gather_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_s64.c -deleted file mode 100644 -index b8491680536..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_s64.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --int64x2_t --foo1 (int64_t * base, uint64x2_t offset) --{ -- return vldrdq_gather_shifted_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_u64.c -deleted file mode 100644 -index 851d4a1f435..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_u64.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint64x2_t --foo1 (uint64_t * base, uint64x2_t offset) --{ -- return vldrdq_gather_shifted_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_z_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_z_s64.c -deleted file mode 100644 -index 586e38cfe43..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_z_s64.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --int64x2_t --foo1 (int64_t * base, uint64x2_t offset, mve_pred16_t p) --{ -- return vldrdq_gather_shifted_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_z_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_z_u64.c -deleted file mode 100644 -index dd6f482422f..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrdq_gather_shifted_offset_z_u64.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint64x2_t --foo1 (uint64_t * base, uint64x2_t offset, mve_pred16_t p) --{ -- return vldrdq_gather_shifted_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_f16.c -deleted file mode 100644 -index 3c0ae4b4262..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_f16.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16_t * base, uint16x8_t offset) --{ -- return vldrhq_gather_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_s16.c -deleted file mode 100644 -index bc7a51b38a5..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_s16.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --int16x8_t --foo1 (int16_t * base, uint16x8_t offset) --{ -- return vldrhq_gather_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_s32.c -deleted file mode 100644 -index d6e83072995..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_s32.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --int32x4_t --foo1 (int16_t * base, uint32x4_t offset) --{ -- return vldrhq_gather_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_u16.c -deleted file mode 100644 -index 21b0b1cf52e..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_u16.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint16x8_t --foo1 (uint16_t * base, uint16x8_t offset) --{ -- return vldrhq_gather_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_u32.c -deleted file mode 100644 -index 3a9c47e9c47..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_u32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint32x4_t --foo1 (uint16_t * base, uint32x4_t offset) --{ -- return vldrhq_gather_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_f16.c -deleted file mode 100644 -index e31d0bc05bb..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_f16.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16_t * base, uint16x8_t offset, mve_pred16_t p) --{ -- return vldrhq_gather_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_s16.c -deleted file mode 100644 -index 6a40159be42..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_s16.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --int16x8_t --foo1 (int16_t * base, uint16x8_t offset, mve_pred16_t p) --{ -- return vldrhq_gather_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_s32.c -deleted file mode 100644 -index 1d9a70db727..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_s32.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --int32x4_t --foo1 (int16_t * base, uint32x4_t offset, mve_pred16_t p) --{ -- return vldrhq_gather_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_u16.c -deleted file mode 100644 -index 8fedbef9aef..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_u16.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint16x8_t --foo1 (uint16_t * base, uint16x8_t offset, mve_pred16_t p) --{ -- return vldrhq_gather_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_u32.c -deleted file mode 100644 -index db410437c02..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_offset_z_u32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint32x4_t --foo1 (uint16_t * base, uint32x4_t offset, mve_pred16_t p) --{ -- return vldrhq_gather_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_f16.c -deleted file mode 100644 -index c12bd91a733..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_f16.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16_t * base, uint16x8_t offset) --{ -- return vldrhq_gather_shifted_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_s16.c -deleted file mode 100644 -index df291626299..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_s16.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --int16x8_t --foo1 (int16_t * base, uint16x8_t offset) --{ -- return vldrhq_gather_shifted_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_s32.c -deleted file mode 100644 -index 9bc6627accf..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_s32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --int32x4_t --foo1 (int16_t * base, uint32x4_t offset) --{ -- return vldrhq_gather_shifted_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_u16.c -deleted file mode 100644 -index c470871617d..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_u16.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint16x8_t --foo1 (uint16_t * base, uint16x8_t offset) --{ -- return vldrhq_gather_shifted_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_u32.c -deleted file mode 100644 -index 2d4fe4c1d25..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_u32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint32x4_t --foo1 (uint16_t * base, uint32x4_t offset) --{ -- return vldrhq_gather_shifted_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_f16.c -deleted file mode 100644 -index 755540d93b6..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_f16.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16_t * base, uint16x8_t offset, mve_pred16_t p) --{ -- return vldrhq_gather_shifted_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler "vldrht.f16" } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_s16.c -deleted file mode 100644 -index b9fc8d3242b..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_s16.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --int16x8_t --foo1 (int16_t * base, uint16x8_t offset, mve_pred16_t p) --{ -- return vldrhq_gather_shifted_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler "vldrht.u16" } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_s32.c -deleted file mode 100644 -index c65df114f15..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_s32.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --int32x4_t --foo1 (int16_t * base, uint32x4_t offset, mve_pred16_t p) --{ -- return vldrhq_gather_shifted_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_u16.c -deleted file mode 100644 -index 8bb493bc6c0..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_u16.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint16x8_t --foo1 (uint16_t * base, uint16x8_t offset, mve_pred16_t p) --{ -- return vldrhq_gather_shifted_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_u32.c -deleted file mode 100644 -index cac933f0f36..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrhq_gather_shifted_offset_z_u32.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --uint32x4_t --foo1 (uint16_t * base, uint32x4_t offset, mve_pred16_t p) --{ -- return vldrhq_gather_shifted_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_f32.c -deleted file mode 100644 -index 6d10e1ce9e8..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_f32.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32_t * base, uint32x4_t offset) --{ -- return vldrwq_gather_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_s32.c -deleted file mode 100644 -index 0f29a6a8aa1..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_s32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --int32x4_t --foo1 (int32_t * base, uint32x4_t offset) --{ -- return vldrwq_gather_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_u32.c -deleted file mode 100644 -index 29e231757ec..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_u32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint32x4_t --foo1 (uint32_t * base, uint32x4_t offset) --{ -- return vldrwq_gather_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_z_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_z_f32.c -deleted file mode 100644 -index 77a949fc1a6..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_z_f32.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32_t * base, uint32x4_t offset, mve_pred16_t p) --{ -- return vldrwq_gather_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_z_s32.c -deleted file mode 100644 -index 849783ab89f..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_z_s32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --int32x4_t --foo1 (int32_t * base, uint32x4_t offset, mve_pred16_t p) --{ -- return vldrwq_gather_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_z_u32.c -deleted file mode 100644 -index 3fe47cbeab5..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_offset_z_u32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint32x4_t --foo1 (uint32_t * base, uint32x4_t offset, mve_pred16_t p) --{ -- return vldrwq_gather_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_f32.c -deleted file mode 100644 -index 0d166348de5..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_f32.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32_t * base, uint32x4_t offset) --{ -- return vldrwq_gather_shifted_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_s32.c -deleted file mode 100644 -index 78e520b159e..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_s32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --int32x4_t --foo1 (int32_t * base, uint32x4_t offset) --{ -- return vldrwq_gather_shifted_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_u32.c -deleted file mode 100644 -index 6b8b72818d9..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_u32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint32x4_t --foo1 (uint32_t * base, uint32x4_t offset) --{ -- return vldrwq_gather_shifted_offset (base, offset); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_z_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_z_f32.c -deleted file mode 100644 -index db79e57a2f5..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_z_f32.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32_t * base, uint32x4_t offset, mve_pred16_t p) --{ -- return vldrwq_gather_shifted_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_z_s32.c -deleted file mode 100644 -index e060fee10ca..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_z_s32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --int32x4_t --foo1 (int32_t * base, uint32x4_t offset, mve_pred16_t p) --{ -- return vldrwq_gather_shifted_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_z_u32.c -deleted file mode 100644 -index 72446470ae3..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldrwq_gather_shifted_offset_z_u32.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_ok } */ --/* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --uint32x4_t --foo1 (uint32_t * base, uint32x4_t offset, mve_pred16_t p) --{ -- return vldrwq_gather_shifted_offset_z (base, offset, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset.c -deleted file mode 100644 -index 62dfb450a6d..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset.c -+++ /dev/null -@@ -1,141 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --int --foowu32( uint32_t * pDataSrc, uint32_t * pDataDest) --{ -- const uint32x4_t vecOffs1 = { 0, 3, 6, 1}; -- const uint32x4_t vecOffs2 = { 4, 7, 2, 5}; -- uint32x4_t vecIn1 = vldrwq_u32 ((uint32_t const *) pDataSrc); -- uint32x4_t vecIn2 = vldrwq_u32 ((uint32_t const *) &pDataSrc[4]); -- vstrwq_scatter_shifted_offset_u32 (pDataDest, vecOffs1, vecIn1); -- vstrwq_scatter_shifted_offset_u32 (pDataDest, vecOffs2, vecIn2); -- pDataDest[8] = pDataSrc[8]; -- return 0; --} -- --int --foowf32( float32_t * pDataSrc, float32_t * pDataDest) --{ -- const uint32x4_t vecOffs1 = { 0, 3, 6, 1}; -- const uint32x4_t vecOffs2 = { 4, 7, 2, 5}; -- float32x4_t vecIn1 = vldrwq_f32 ((float32_t const *) pDataSrc); -- float32x4_t vecIn2 = vldrwq_f32 ((float32_t const *) &pDataSrc[4]); -- vstrwq_scatter_shifted_offset_f32 (pDataDest, vecOffs1, vecIn1); -- vstrwq_scatter_shifted_offset_f32 (pDataDest, vecOffs2, vecIn2); -- pDataDest[8] = pDataSrc[8]; -- return 0; --} -- --int --foohu16( uint16_t * pDataSrc, uint16_t * pDataDest) --{ -- const uint16x8_t vecOffs1 = { 0, 3, 6, 1, 4, 7, 2, 5}; -- const uint16x8_t vecOffs2 = { 9, 11, 13, 10, 12, 15, 8, 14}; -- uint16x8_t vecIn1 = vldrhq_u16 ((uint16_t const *) pDataSrc); -- uint16x8_t vecIn2 = vldrhq_u16 ((uint16_t const *) &pDataSrc[8]); -- vstrhq_scatter_shifted_offset_u16 (pDataDest, vecOffs1, vecIn1); -- vstrhq_scatter_shifted_offset_u16 (pDataDest, vecOffs2, vecIn2); -- pDataDest[16] = pDataSrc[16]; -- return 0; --} -- --int --foohu32( uint32_t * pDataSrc, uint32_t * pDataDest) --{ -- const uint32x4_t vecOffs1 = { 0, 3, 6, 1}; -- const uint32x4_t vecOffs2 = { 4, 7, 2, 5}; -- uint32x4_t vecIn1 = vldrhq_u32 ((uint16_t const *) pDataSrc); -- uint32x4_t vecIn2 = vldrhq_u32 ((uint16_t const *) &pDataSrc[4]); -- vstrhq_scatter_shifted_offset_u32 ((uint16_t *)pDataDest, vecOffs1, vecIn1); -- vstrhq_scatter_shifted_offset_u32 ((uint16_t *)pDataDest, vecOffs2, vecIn2); -- pDataDest[8] = pDataSrc[8]; -- return 0; --} -- --int --foohf16( float16_t * pDataSrc, float16_t * pDataDest) --{ -- const uint16x8_t vecOffs1 = { 0, 3, 6, 1, 4, 7, 2, 5}; -- const uint16x8_t vecOffs2 = { 9, 11, 13, 10, 12, 15, 8, 14}; -- float16x8_t vecIn1 = vldrhq_f16 ((float16_t const *) pDataSrc); -- float16x8_t vecIn2 = vldrhq_f16 ((float16_t const *) &pDataSrc[8]); -- vstrhq_scatter_shifted_offset_f16 (pDataDest, vecOffs1, vecIn1); -- vstrhq_scatter_shifted_offset_f16 (pDataDest, vecOffs2, vecIn2); -- pDataDest[16] = pDataSrc[16]; -- return 0; --} -- --int --foodu64( uint64_t * pDataSrc, uint64_t * pDataDest) --{ -- const uint64x2_t vecOffs1 = { 0, 1}; -- const uint64x2_t vecOffs2 = { 2, 3}; -- uint32x4_t vecIn1 = vldrwq_u32 ((uint32_t const *) pDataSrc); -- uint32x4_t vecIn2 = vldrwq_u32 ((uint32_t const *) &pDataSrc[2]); -- -- vstrdq_scatter_shifted_offset_u64 (pDataDest, vecOffs1, (uint64x2_t) vecIn1); -- vstrdq_scatter_shifted_offset_u64 (pDataDest, vecOffs2, (uint64x2_t) vecIn2); -- -- pDataDest[2] = pDataSrc[2]; -- return 0; --} -- --int --foows32( int32_t * pDataSrc, int32_t * pDataDest) --{ -- const uint32x4_t vecOffs1 = { 0, 3, 6, 1}; -- const uint32x4_t vecOffs2 = { 4, 7, 2, 5}; -- int32x4_t vecIn1 = vldrwq_s32 ((int32_t const *) pDataSrc); -- int32x4_t vecIn2 = vldrwq_s32 ((int32_t const *) &pDataSrc[4]); -- vstrwq_scatter_shifted_offset_s32 (pDataDest, vecOffs1, vecIn1); -- vstrwq_scatter_shifted_offset_s32 (pDataDest, vecOffs2, vecIn2); -- pDataDest[8] = pDataSrc[8]; -- return 0; --} -- --int --foohs16( int16_t * pDataSrc, int16_t * pDataDest) --{ -- const uint16x8_t vecOffs1 = { 0, 3, 6, 1, 4, 7, 2, 5}; -- const uint16x8_t vecOffs2 = { 9, 11, 13, 10, 12, 15, 8, 14}; -- int16x8_t vecIn1 = vldrhq_s16 ((int16_t const *) pDataSrc); -- int16x8_t vecIn2 = vldrhq_s16 ((int16_t const *) &pDataSrc[8]); -- vstrhq_scatter_shifted_offset_s16 (pDataDest, vecOffs1, vecIn1); -- vstrhq_scatter_shifted_offset_s16 (pDataDest, vecOffs2, vecIn2); -- pDataDest[16] = pDataSrc[16]; -- return 0; --} -- --int --foohs32( int32_t * pDataSrc, int32_t * pDataDest) --{ -- const uint32x4_t vecOffs1 = { 0, 3, 6, 1}; -- const uint32x4_t vecOffs2 = { 4, 7, 2, 5}; -- int32x4_t vecIn1 = vldrhq_s32 ((int16_t const *) pDataSrc); -- int32x4_t vecIn2 = vldrhq_s32 ((int16_t const *) &pDataSrc[4]); -- vstrhq_scatter_shifted_offset_s32 ((int16_t *)pDataDest, vecOffs1, vecIn1); -- vstrhq_scatter_shifted_offset_s32 ((int16_t *)pDataDest, vecOffs2, vecIn2); -- pDataDest[8] = pDataSrc[8]; -- return 0; --} -- --int --foods64( int64_t * pDataSrc, int64_t * pDataDest) --{ -- const uint64x2_t vecOffs1 = { 0, 1}; -- const uint64x2_t vecOffs2 = { 2, 3}; -- int32x4_t vecIn1 = vldrwq_s32 ((int32_t const *) pDataSrc); -- int32x4_t vecIn2 = vldrwq_s32 ((int32_t const *) &pDataSrc[2]); -- -- vstrdq_scatter_shifted_offset_s64 (pDataDest, vecOffs1, (int64x2_t) vecIn1); -- vstrdq_scatter_shifted_offset_s64 (pDataDest, vecOffs2, (int64x2_t) vecIn2); -- -- pDataDest[2] = pDataSrc[2]; -- return 0; --} -- --/* { dg-final { scan-assembler-times "vstr\[a-z\]" 20 } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset_p.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset_p.c -deleted file mode 100644 -index a51d3a21167..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset_p.c -+++ /dev/null -@@ -1,142 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" -- --mve_pred16_t __p; --int --foowu32( uint32_t * pDataSrc, uint32_t * pDataDest) --{ -- const uint32x4_t vecOffs1 = { 0, 3, 6, 1}; -- const uint32x4_t vecOffs2 = { 4, 7, 2, 5}; -- uint32x4_t vecIn1 = vldrwq_z_u32 ((uint32_t const *) pDataSrc, __p); -- uint32x4_t vecIn2 = vldrwq_z_u32 ((uint32_t const *) &pDataSrc[4], __p); -- vstrwq_scatter_shifted_offset_p_u32 (pDataDest, vecOffs1, vecIn1, __p); -- vstrwq_scatter_shifted_offset_p_u32 (pDataDest, vecOffs2, vecIn2, __p); -- pDataDest[8] = pDataSrc[8]; -- return 0; --} -- --int --foowf32( float32_t * pDataSrc, float32_t * pDataDest) --{ -- const uint32x4_t vecOffs1 = { 0, 3, 6, 1}; -- const uint32x4_t vecOffs2 = { 4, 7, 2, 5}; -- float32x4_t vecIn1 = vldrwq_z_f32 ((float32_t const *) pDataSrc, __p); -- float32x4_t vecIn2 = vldrwq_z_f32 ((float32_t const *) &pDataSrc[4], __p); -- vstrwq_scatter_shifted_offset_p_f32 (pDataDest, vecOffs1, vecIn1, __p); -- vstrwq_scatter_shifted_offset_p_f32 (pDataDest, vecOffs2, vecIn2, __p); -- pDataDest[8] = pDataSrc[8]; -- return 0; --} -- --int --foohu16( uint16_t * pDataSrc, uint16_t * pDataDest) --{ -- const uint16x8_t vecOffs1 = { 0, 3, 6, 1, 4, 7, 2, 5}; -- const uint16x8_t vecOffs2 = { 9, 11, 13, 10, 12, 15, 8, 14}; -- uint16x8_t vecIn1 = vldrhq_z_u16 ((uint16_t const *) pDataSrc, __p); -- uint16x8_t vecIn2 = vldrhq_z_u16 ((uint16_t const *) &pDataSrc[8], __p); -- vstrhq_scatter_shifted_offset_p_u16 (pDataDest, vecOffs1, vecIn1, __p); -- vstrhq_scatter_shifted_offset_p_u16 (pDataDest, vecOffs2, vecIn2, __p); -- pDataDest[16] = pDataSrc[16]; -- return 0; --} -- --int --foohu32( uint32_t * pDataSrc, uint32_t * pDataDest) --{ -- const uint32x4_t vecOffs1 = { 0, 3, 6, 1}; -- const uint32x4_t vecOffs2 = { 4, 7, 2, 5}; -- uint32x4_t vecIn1 = vldrhq_z_u32 ((uint16_t const *) pDataSrc, __p); -- uint32x4_t vecIn2 = vldrhq_z_u32 ((uint16_t const *) &pDataSrc[4], __p); -- vstrhq_scatter_shifted_offset_p_u32 ((uint16_t *)pDataDest, vecOffs1, vecIn1, __p); -- vstrhq_scatter_shifted_offset_p_u32 ((uint16_t *)pDataDest, vecOffs2, vecIn2, __p); -- pDataDest[8] = pDataSrc[8]; -- return 0; --} -- --int --foohf16( float16_t * pDataSrc, float16_t * pDataDest) --{ -- const uint16x8_t vecOffs1 = { 0, 3, 6, 1, 4, 7, 2, 5}; -- const uint16x8_t vecOffs2 = { 9, 11, 13, 10, 12, 15, 8, 14}; -- float16x8_t vecIn1 = vldrhq_z_f16 ((float16_t const *) pDataSrc, __p); -- float16x8_t vecIn2 = vldrhq_z_f16 ((float16_t const *) &pDataSrc[8], __p); -- vstrhq_scatter_shifted_offset_p_f16 (pDataDest, vecOffs1, vecIn1, __p); -- vstrhq_scatter_shifted_offset_p_f16 (pDataDest, vecOffs2, vecIn2, __p); -- pDataDest[16] = pDataSrc[16]; -- return 0; --} -- --int --foodu64( uint64_t * pDataSrc, uint64_t * pDataDest) --{ -- const uint64x2_t vecOffs1 = { 0, 1}; -- const uint64x2_t vecOffs2 = { 2, 3}; -- uint32x4_t vecIn1 = vldrwq_z_u32 ((uint32_t const *) pDataSrc, __p); -- uint32x4_t vecIn2 = vldrwq_z_u32 ((uint32_t const *) &pDataSrc[2], __p); -- -- vstrdq_scatter_shifted_offset_p_u64 (pDataDest, vecOffs1, (uint64x2_t) vecIn1, __p); -- vstrdq_scatter_shifted_offset_p_u64 (pDataDest, vecOffs2, (uint64x2_t) vecIn2, __p); -- -- pDataDest[2] = pDataSrc[2]; -- return 0; --} -- --int --foows32( int32_t * pDataSrc, int32_t * pDataDest) --{ -- const uint32x4_t vecOffs1 = { 0, 3, 6, 1}; -- const uint32x4_t vecOffs2 = { 4, 7, 2, 5}; -- int32x4_t vecIn1 = vldrwq_z_s32 ((int32_t const *) pDataSrc, __p); -- int32x4_t vecIn2 = vldrwq_z_s32 ((int32_t const *) &pDataSrc[4], __p); -- vstrwq_scatter_shifted_offset_p_s32 (pDataDest, vecOffs1, vecIn1, __p); -- vstrwq_scatter_shifted_offset_p_s32 (pDataDest, vecOffs2, vecIn2, __p); -- pDataDest[8] = pDataSrc[8]; -- return 0; --} -- --int --foohs16( int16_t * pDataSrc, int16_t * pDataDest) --{ -- const uint16x8_t vecOffs1 = { 0, 3, 6, 1, 4, 7, 2, 5}; -- const uint16x8_t vecOffs2 = { 9, 11, 13, 10, 12, 15, 8, 14}; -- int16x8_t vecIn1 = vldrhq_z_s16 ((int16_t const *) pDataSrc, __p); -- int16x8_t vecIn2 = vldrhq_z_s16 ((int16_t const *) &pDataSrc[8], __p); -- vstrhq_scatter_shifted_offset_p_s16 (pDataDest, vecOffs1, vecIn1, __p); -- vstrhq_scatter_shifted_offset_p_s16 (pDataDest, vecOffs2, vecIn2, __p); -- pDataDest[16] = pDataSrc[16]; -- return 0; --} -- --int --foohs32( int32_t * pDataSrc, int32_t * pDataDest) --{ -- const uint32x4_t vecOffs1 = { 0, 3, 6, 1}; -- const uint32x4_t vecOffs2 = { 4, 7, 2, 5}; -- int32x4_t vecIn1 = vldrhq_z_s32 ((int16_t const *) pDataSrc, __p); -- int32x4_t vecIn2 = vldrhq_z_s32 ((int16_t const *) &pDataSrc[4], __p); -- vstrhq_scatter_shifted_offset_p_s32 ((int16_t *)pDataDest, vecOffs1, vecIn1, __p); -- vstrhq_scatter_shifted_offset_p_s32 ((int16_t *)pDataDest, vecOffs2, vecIn2, __p); -- pDataDest[8] = pDataSrc[8]; -- return 0; --} -- --int --foods64( int64_t * pDataSrc, int64_t * pDataDest) --{ -- const uint64x2_t vecOffs1 = { 0, 1}; -- const uint64x2_t vecOffs2 = { 2, 3}; -- int32x4_t vecIn1 = vldrwq_z_s32 ((int32_t const *) pDataSrc, __p); -- int32x4_t vecIn2 = vldrwq_z_s32 ((int32_t const *) &pDataSrc[2], __p); -- -- vstrdq_scatter_shifted_offset_p_s64 (pDataDest, vecOffs1, (int64x2_t) vecIn1, __p); -- vstrdq_scatter_shifted_offset_p_s64 (pDataDest, vecOffs2, (int64x2_t) vecIn2, __p); -- -- pDataDest[2] = pDataSrc[2]; -- return 0; --} -- --/* { dg-final { scan-assembler-times "vstr\[a-z\]t" 20 } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshr.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshr.c -index 1f0a228e4b4..ea8c7a0ce4a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshr.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshr.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** sqrshr (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32_t --sqrshr_reg (int32_t longval3, int32_t x) -+foo (int32_t value, int32_t shift) - { -- return sqrshr (longval3, x); -+ return sqrshr (value, shift); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "sqrshr\\tr\[0-9\]+, r\[0-9\]+" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshrl_sat48.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshrl_sat48.c -index 2f1612cde77..affa12c526d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshrl_sat48.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshrl_sat48.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** sqrshrl (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #48, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int64_t --sqrshrl_reg (int64_t longval3, int32_t x) -+foo (int64_t value, int32_t shift) - { -- return sqrshrl_sat48 (longval3, x); -+ return sqrshrl_sat48 (value, shift); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "sqrshrl\\tr\[0-9\]+, r\[0-9\]+, #48, r\[0-9\]+" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshl.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshl.c -index 8cb8c74b268..e8c9c441163 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshl.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshl.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** sqshl (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --sqshl_imm (int32_t longval3) -+foo (int32_t value) - { -- return sqshl (longval3, 25); -+ return sqshl (value, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "sqshl\\tr\[0-9\]+, #25" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshll.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshll.c -index 016ef2a336e..03dc91f3758 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshll.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshll.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** sqshll (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --sqshll_imm(int64_t value) -+foo (int64_t value) - { -- return sqshll (value, 21); -+ return sqshll (value, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "sqshll\\tr\[0-9\]+, r\[0-9\]+, #21" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshr.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshr.c -index 264f0bf09ce..734375d58c0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshr.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshr.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** srshr (?:ip|fp|r[0-9]+), #1(?: @.*|) -+** ... -+*/ - int32_t --srshr_imm (int32_t longval3) -+foo (int32_t value) - { -- return srshr (longval3, 25); -+ return srshr (value, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "srshr\\tr\[0-9\]+, #25" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshrl.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshrl.c -index ab12d0da635..a91943c38a0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshrl.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshrl.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** srshrl (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #1(?: @.*|) -+** ... -+*/ - int64_t --srshrl_imm(int64_t value) -+foo (int64_t value) - { -- return srshrl (value, 21); -+ return srshrl (value, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "srshrl\\tr\[0-9\]+, r\[0-9\]+, #21" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqrshl.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqrshl.c -index 0064aa19fbc..4b6fd041210 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqrshl.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqrshl.c -@@ -1,13 +1,40 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** uqrshl (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32_t --uqrshl_reg (uint32_t longval3, int32_t x) -+foo (uint32_t value, int32_t shift) - { -- return uqrshl (longval3, x); -+ return uqrshl (value, shift); -+} -+ -+/* -+**foo1: -+** ... -+** uqrshl (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32_t -+foo1 (int32_t shift) -+{ -+ return uqrshl (1, shift); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "uqrshl\\tr\[0-9\]+, r\[0-9\]+" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqrshll_sat48.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqrshll_sat48.c -index 24cd2324413..eaf36911eb6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqrshll_sat48.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqrshll_sat48.c -@@ -1,13 +1,40 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** uqrshll (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #48, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint64_t --uqrshll_reg (uint64_t longval3, int32_t x) -+foo (uint64_t value, int32_t shift) - { -- return uqrshll_sat48 (longval3, x); -+ return uqrshll_sat48 (value, shift); -+} -+ -+/* -+**foo1: -+** ... -+** uqrshll (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #48, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint64_t -+foo1 (int32_t shift) -+{ -+ return uqrshll_sat48 (1, shift); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "uqrshll\\tr\[0-9\]+, r\[0-9\]+, #48, r\[0-9\]+" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshl.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshl.c -index 9e6ff649805..462531cad54 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshl.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshl.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** uqshl (?:ip|fp|r[0-9]+), #1(?: @.*|) -+** ... -+*/ - uint32_t --uqshl_imm (uint32_t longval3) -+foo (uint32_t value) - { -- return uqshl (longval3, 21); -+ return uqshl (value, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "uqshl\\tr\[0-9\]+, #21" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshll.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshll.c -index 52560721d6f..6fa97a561e3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshll.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshll.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** uqshll (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #1(?: @.*|) -+** ... -+*/ - uint64_t --uqshll_imm(uint64_t value) -+foo (uint64_t value) - { -- return uqshll (value, 21); -+ return uqshll (value, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "uqshll\\tr\[0-9\]+, r\[0-9\]+, #21" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshr.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshr.c -index ec5d84bb009..ff97bf5c473 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshr.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshr.c -@@ -1,13 +1,40 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - --uint64_t --urshr_imm (uint32_t longval3) -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** urshr (?:ip|fp|r[0-9]+), #1(?: @.*|) -+** ... -+*/ -+uint32_t -+foo (uint32_t value) -+{ -+ return urshr (value, 1); -+} -+ -+/* -+**foo1: -+** ... -+** urshr (?:ip|fp|r[0-9]+), #1(?: @.*|) -+** ... -+*/ -+uint32_t -+foo1 () - { -- return urshr (longval3, 21); -+ return urshr (1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "urshr\\tr\[0-9\]+, #21" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshrl.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshrl.c -index ea29412ab7a..ff6a69d300f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshrl.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshrl.c -@@ -1,13 +1,40 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** urshrl (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #1(?: @.*|) -+** ... -+*/ - uint64_t --urshrl_imm(uint64_t value) -+foo (uint64_t value) - { -- return urshrl (value, 21); -+ return urshrl (value, 1); -+} -+ -+/* -+**foo1: -+** ... -+** urshrl (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #1(?: @.*|) -+** ... -+*/ -+uint64_t -+foo1 () -+{ -+ return urshrl (1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "urshrl\\tr\[0-9\]+, r\[0-9\]+, #21" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s16.c -index 78ac801fa3c..3b95fb140f7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s16.c -@@ -1,21 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) - { - return vabavq_p_s16 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vabavt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) - { - return vabavq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vabavt.s16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (int16x8_t b, int16x8_t c, mve_pred16_t p) -+{ -+ return vabavq_p (1, b, c, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s32.c -index af4e30b6127..b9f84e581bd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s32.c -@@ -1,21 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vabavq_p_s32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vabavt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vabavq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vabavt.s32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (int32x4_t b, int32x4_t c, mve_pred16_t p) -+{ -+ return vabavq_p (1, b, c, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s8.c -index a76b6bd4bda..fa76cd20e1b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s8.c -@@ -1,21 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, int8x16_t b, int8x16_t c, mve_pred16_t p) - { - return vabavq_p_s8 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vabavt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, int8x16_t b, int8x16_t c, mve_pred16_t p) - { - return vabavq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vabavt.s8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (int8x16_t b, int8x16_t c, mve_pred16_t p) -+{ -+ return vabavq_p (1, b, c, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u16.c -index 9627a00b812..93deb664eda 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u16.c -@@ -1,21 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint16x8_t b, uint16x8_t c, mve_pred16_t p) - { - return vabavq_p_u16 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vabavt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint16x8_t b, uint16x8_t c, mve_pred16_t p) - { - return vabavq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vabavt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint16x8_t b, uint16x8_t c, mve_pred16_t p) -+{ -+ return vabavq_p (1, b, c, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u32.c -index 298c2c38101..c11fc704b34 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u32.c -@@ -1,21 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint32x4_t b, uint32x4_t c, mve_pred16_t p) - { - return vabavq_p_u32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vabavt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint32x4_t b, uint32x4_t c, mve_pred16_t p) - { - return vabavq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vabavt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint32x4_t b, uint32x4_t c, mve_pred16_t p) -+{ -+ return vabavq_p (1, b, c, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u8.c -index 775072225f8..04b9a6e2e35 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u8.c -@@ -1,21 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint8x16_t b, uint8x16_t c, mve_pred16_t p) - { - return vabavq_p_u8 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vabavt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint8x16_t b, uint8x16_t c, mve_pred16_t p) - { - return vabavq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vabavt.u8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabavt.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint8x16_t b, uint8x16_t c, mve_pred16_t p) -+{ -+ return vabavq_p (1, b, c, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s16.c -index c2383f1865b..d1a1c967581 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabav.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, int16x8_t b, int16x8_t c) - { - return vabavq_s16 (a, b, c); - } - --/* { dg-final { scan-assembler "vabav.s16" } } */ - -+/* -+**foo1: -+** ... -+** vabav.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, int16x8_t b, int16x8_t c) - { - return vabavq (a, b, c); - } - --/* { dg-final { scan-assembler "vabav.s16" } } */ -+/* -+**foo2: -+** ... -+** vabav.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (int16x8_t b, int16x8_t c) -+{ -+ return vabavq (1, b, c); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s32.c -index 7170d013c3b..9ccfc73f79c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabav.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, int32x4_t b, int32x4_t c) - { - return vabavq_s32 (a, b, c); - } - --/* { dg-final { scan-assembler "vabav.s32" } } */ - -+/* -+**foo1: -+** ... -+** vabav.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, int32x4_t b, int32x4_t c) - { - return vabavq (a, b, c); - } - --/* { dg-final { scan-assembler "vabav.s32" } } */ -+/* -+**foo2: -+** ... -+** vabav.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (int32x4_t b, int32x4_t c) -+{ -+ return vabavq (1, b, c); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s8.c -index d75ecdbdbdf..5184d7a068d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabav.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, int8x16_t b, int8x16_t c) - { - return vabavq_s8 (a, b, c); - } - --/* { dg-final { scan-assembler "vabav.s8" } } */ - -+/* -+**foo1: -+** ... -+** vabav.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, int8x16_t b, int8x16_t c) - { - return vabavq (a, b, c); - } - --/* { dg-final { scan-assembler "vabav.s8" } } */ -+/* -+**foo2: -+** ... -+** vabav.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (int8x16_t b, int8x16_t c) -+{ -+ return vabavq (1, b, c); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u16.c -index 40ab94d9083..c800d79d351 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabav.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint16x8_t b, uint16x8_t c) - { - return vabavq_u16 (a, b, c); - } - --/* { dg-final { scan-assembler "vabav.u16" } } */ - -+/* -+**foo1: -+** ... -+** vabav.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint16x8_t b, uint16x8_t c) - { - return vabavq (a, b, c); - } - --/* { dg-final { scan-assembler "vabav.u16" } } */ -+/* -+**foo2: -+** ... -+** vabav.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint16x8_t b, uint16x8_t c) -+{ -+ return vabavq (1, b, c); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u32.c -index 4b9f5c32f3d..b1733bae333 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabav.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint32x4_t b, uint32x4_t c) - { - return vabavq_u32 (a, b, c); - } - --/* { dg-final { scan-assembler "vabav.u32" } } */ - -+/* -+**foo1: -+** ... -+** vabav.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint32x4_t b, uint32x4_t c) - { - return vabavq (a, b, c); - } - --/* { dg-final { scan-assembler "vabav.u32" } } */ -+/* -+**foo2: -+** ... -+** vabav.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint32x4_t b, uint32x4_t c) -+{ -+ return vabavq (1, b, c); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u8.c -index 3638e9d7106..897cd32b1bb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabav.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint8x16_t b, uint8x16_t c) - { - return vabavq_u8 (a, b, c); - } - --/* { dg-final { scan-assembler "vabav.u8" } } */ - -+/* -+**foo1: -+** ... -+** vabav.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint8x16_t b, uint8x16_t c) - { - return vabavq (a, b, c); - } - --/* { dg-final { scan-assembler "vabav.u8" } } */ -+/* -+**foo2: -+** ... -+** vabav.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint8x16_t b, uint8x16_t c) -+{ -+ return vabavq (1, b, c); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_f16.c -index b55e826e4b6..338514621ea 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabd.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vabdq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vabd.f16" } } */ - -+/* -+**foo1: -+** ... -+** vabd.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vabdq (a, b); - } - --/* { dg-final { scan-assembler "vabd.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_f32.c -index f1a95b14e03..9a600384822 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabd.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vabdq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vabd.f32" } } */ - -+/* -+**foo1: -+** ... -+** vabd.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vabdq (a, b); - } - --/* { dg-final { scan-assembler "vabd.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_f16.c -index f92e671edec..3584f182e9a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vabdq_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vabdq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_f32.c -index 5e30997c997..8b64f39a758 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vabdq_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vabdq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s16.c -index 35809895dea..aeb9879f91c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vabdq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vabdq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s32.c -index 77d97e1db63..294c6f17467 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vabdq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vabdq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s8.c -index a0004d9f290..c4c414691cb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vabdq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vabdq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u16.c -index c4dc9a469da..4567b0f7da8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vabdq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vabdq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u32.c -index 18a64d3a19d..fc58f5c9001 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vabdq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vabdq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u8.c -index 494f39cb857..6c5e2fe479a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vabdq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vabdq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s16.c -index 73773ac9ebc..ac300d287dc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabd.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vabdq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vabd.s16" } } */ - -+/* -+**foo1: -+** ... -+** vabd.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vabdq (a, b); - } - --/* { dg-final { scan-assembler "vabd.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s32.c -index 3c552a2969e..6170a59c0b8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabd.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vabdq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vabd.s32" } } */ - -+/* -+**foo1: -+** ... -+** vabd.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vabdq (a, b); - } - --/* { dg-final { scan-assembler "vabd.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s8.c -index f7de6f707ac..9cf62f9742d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabd.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vabdq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vabd.s8" } } */ - -+/* -+**foo1: -+** ... -+** vabd.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vabdq (a, b); - } - --/* { dg-final { scan-assembler "vabd.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u16.c -index 90d1c873cca..c283d7482cc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabd.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vabdq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vabd.u16" } } */ - -+/* -+**foo1: -+** ... -+** vabd.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vabdq (a, b); - } - --/* { dg-final { scan-assembler "vabd.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u32.c -index 405dca51466..be9abda0cab 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabd.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vabdq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vabd.u32" } } */ - -+/* -+**foo1: -+** ... -+** vabd.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vabdq (a, b); - } - --/* { dg-final { scan-assembler "vabd.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u8.c -index 2b693c16520..227af07d0e5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabd.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vabdq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vabd.u8" } } */ - -+/* -+**foo1: -+** ... -+** vabd.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vabdq (a, b); - } - --/* { dg-final { scan-assembler "vabd.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_f16.c -index 9d771a3325f..ae54ef21c3e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vabdq_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vabdq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_f32.c -index 498851348d5..d8781db3fb8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vabdq_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vabdq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s16.c -index 1fa77cc5cae..9d141616047 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vabdq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vabdq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s32.c -index 24a62702482..7eb6fad3499 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vabdq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vabdq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s8.c -index f96c2dfd147..8431703f4ef 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vabdq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vabdq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u16.c -index 820b8416330..7d2f3dcea48 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vabdq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vabdq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u32.c -index 2d81930348a..b94358fb4ae 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vabdq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vabdq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u8.c -index 7f956850b52..a88e1e5346f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vabdq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabdt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabdt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vabdq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_f16.c -index 08e141baedc..d4bc9110f38 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_f16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabs.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a) - { - return vabsq_f16 (a); - } - --/* { dg-final { scan-assembler "vabs.f16" } } */ -+ -+/* -+**foo1: -+** ... -+** vabs.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (float16x8_t a) -+{ -+ return vabsq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_f32.c -index 3614a44fbdc..9f2955829f8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_f32.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabs.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a) - { - return vabsq_f32 (a); - } - --/* { dg-final { scan-assembler "vabs.f32" } } */ -+ -+/* -+**foo1: -+** ... -+** vabs.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (float32x4_t a) -+{ -+ return vabsq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_f16.c -index 30c14a151af..33d113241e9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vabsq_m_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabst.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vabsq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_f32.c -index 652056aa98c..a588f5fc94c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vabsq_m_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabst.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vabsq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s16.c -index 2dcf488bd0d..360087db4e3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vabsq_m_s16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabst.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vabsq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s32.c -index 183909fef93..590d0204385 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vabsq_m_s32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabst.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vabsq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s8.c -index cd17974838e..518c19fdf79 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vabsq_m_s8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabst.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vabsq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s16.c -index 243afebc38c..6f40447eb1d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s16.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabs.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { - return vabsq_s16 (a); - } - --/* { dg-final { scan-assembler "vabs.s16" } } */ - -+/* -+**foo1: -+** ... -+** vabs.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { - return vabsq (a); - } - --/* { dg-final { scan-assembler "vabs.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s32.c -index d9843503a48..3da8b740fc8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s32.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabs.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { - return vabsq_s32 (a); - } - --/* { dg-final { scan-assembler "vabs.s32" } } */ - -+/* -+**foo1: -+** ... -+** vabs.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a) - { - return vabsq (a); - } - --/* { dg-final { scan-assembler "vabs.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s8.c -index 93bf1520dd3..5fa4ce42f5d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vabs.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { - return vabsq_s8 (a); - } - --/* { dg-final { scan-assembler "vabs.s8" } } */ - -+/* -+**foo1: -+** ... -+** vabs.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { - return vabsq (a); - } - --/* { dg-final { scan-assembler "vabs.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_f16.c -index d1fc7002ccb..fda43efcf96 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vabsq_x_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabst.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, mve_pred16_t p) - { - return vabsq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_f32.c -index 0beccac030d..281e07468ca 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vabsq_x_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabst.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, mve_pred16_t p) - { - return vabsq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s16.c -index fd67fd5ccac..93d4ff5a473 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, mve_pred16_t p) - { - return vabsq_x_s16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabst.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, mve_pred16_t p) - { - return vabsq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s32.c -index 22d561d1e46..1ddc8b81cf6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, mve_pred16_t p) - { - return vabsq_x_s32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabst.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, mve_pred16_t p) - { - return vabsq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s8.c -index 6908a6ca20c..0dfcf3e62fb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, mve_pred16_t p) - { - return vabsq_x_s8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vabst.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vabst.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, mve_pred16_t p) - { - return vabsq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_s32.c -index 1bfc101d5e8..a6a059a19e9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_s32.c -@@ -1,23 +1,57 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vadcit.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned * carry_out, mve_pred16_t p) -+foo (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned *carry_out, mve_pred16_t p) - { - return vadciq_m_s32 (inactive, a, b, carry_out, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vadcit.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vadcit.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned * carry_out, mve_pred16_t p) -+foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned *carry_out, mve_pred16_t p) - { - return vadciq_m (inactive, a, b, carry_out, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vadcit.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_u32.c -index f72fe34c33b..942111339f0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_u32.c -@@ -1,23 +1,57 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vadcit.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned * carry_out, mve_pred16_t p) -+foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned *carry_out, mve_pred16_t p) - { - return vadciq_m_u32 (inactive, a, b, carry_out, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vadcit.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vadcit.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned * carry_out, mve_pred16_t p) -+foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned *carry_out, mve_pred16_t p) - { - return vadciq_m (inactive, a, b, carry_out, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vadcit.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_s32.c -index ff13841c581..3b68bb6ac33 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadci.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, unsigned * carry_out) -+foo (int32x4_t a, int32x4_t b, unsigned *carry_out) - { - return vadciq_s32 (a, b, carry_out); - } - --/* { dg-final { scan-assembler "vadci.i32" } } */ - -+/* -+**foo1: -+** ... -+** vadci.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, unsigned * carry_out) -+foo1 (int32x4_t a, int32x4_t b, unsigned *carry_out) - { - return vadciq (a, b, carry_out); - } - --/* { dg-final { scan-assembler "vadci.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_u32.c -index e3560362225..82228491043 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadci.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t a, uint32x4_t b, unsigned * carry_out) -+foo (uint32x4_t a, uint32x4_t b, unsigned *carry_out) - { - return vadciq_u32 (a, b, carry_out); - } - --/* { dg-final { scan-assembler "vadci.i32" } } */ - -+/* -+**foo1: -+** ... -+** vadci.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t a, uint32x4_t b, unsigned * carry_out) -+foo1 (uint32x4_t a, uint32x4_t b, unsigned *carry_out) - { - return vadciq (a, b, carry_out); - } - --/* { dg-final { scan-assembler "vadci.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c -index 668c4fdc82c..da29bb765dd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c -@@ -1,23 +1,77 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vadct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned * carry, mve_pred16_t p) -+foo (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned *carry, mve_pred16_t p) - { - return vadcq_m_s32 (inactive, a, b, carry, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vadct.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vadct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned * carry, mve_pred16_t p) -+foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned *carry, mve_pred16_t p) - { - return vadcq_m (inactive, a, b, carry, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vadct.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c -index 368c7c5c5f2..be490aaaae7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c -@@ -1,23 +1,77 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vadct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned * carry, mve_pred16_t p) -+foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned *carry, mve_pred16_t p) - { - return vadcq_m_u32 (inactive, a, b, carry, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vadct.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vadct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned * carry, mve_pred16_t p) -+foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned *carry, mve_pred16_t p) - { - return vadcq_m (inactive, a, b, carry, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vadct.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_s32.c -index 9c8777c45ee..d72190d53b5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_s32.c -@@ -1,21 +1,69 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vadc.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, unsigned * carry) -+foo (int32x4_t a, int32x4_t b, unsigned *carry) - { - return vadcq_s32 (a, b, carry); - } - --/* { dg-final { scan-assembler "vadc.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vadc.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, unsigned * carry) -+foo1 (int32x4_t a, int32x4_t b, unsigned *carry) - { - return vadcq (a, b, carry); - } - --/* { dg-final { scan-assembler "vadc.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_u32.c -index 78f48da5107..dbc1ebf3c46 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_u32.c -@@ -1,21 +1,69 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vadc.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t a, uint32x4_t b, unsigned * carry) -+foo (uint32x4_t a, uint32x4_t b, unsigned *carry) - { - return vadcq_u32 (a, b, carry); - } - --/* { dg-final { scan-assembler "vadc.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vadc.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t a, uint32x4_t b, unsigned * carry) -+foo1 (uint32x4_t a, uint32x4_t b, unsigned *carry) - { - return vadcq (a, b, carry); - } - --/* { dg-final { scan-assembler "vadc.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c -index 0991ac1b355..174f3e3b958 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddlvat.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b, mve_pred16_t p) - { - return vaddlvaq_p_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vaddlvat.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddlvat.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b, mve_pred16_t p) - { - return vaddlvaq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vaddlvat.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_u32.c -index 5af786e8e76..41b93675b74 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_u32.c -@@ -1,21 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddlvat.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo (uint64_t a, uint32x4_t b, mve_pred16_t p) - { - return vaddlvaq_p_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vaddlvat.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddlvat.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo1 (uint64_t a, uint32x4_t b, mve_pred16_t p) - { - return vaddlvaq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vaddlvat.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddlvat.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint64_t -+foo2 (uint32x4_t b, mve_pred16_t p) -+{ -+ return vaddlvaq_p (1, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_s32.c -index 78f155f1586..d692df30d55 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddlva.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b) - { - return vaddlvaq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vaddlva.s32" } } */ - -+/* -+**foo1: -+** ... -+** vaddlva.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b) - { - return vaddlvaq (a, b); - } - --/* { dg-final { scan-assembler "vaddlva.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_u32.c -index a7dfa2541ab..4daba29620c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddlva.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo (uint64_t a, uint32x4_t b) - { - return vaddlvaq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vaddlva.u32" } } */ - -+/* -+**foo1: -+** ... -+** vaddlva.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo1 (uint64_t a, uint32x4_t b) - { - return vaddlvaq (a, b); - } - --/* { dg-final { scan-assembler "vaddlva.u32" } } */ -+/* -+**foo2: -+** ... -+** vaddlva.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint64_t -+foo2 (uint32x4_t b) -+{ -+ return vaddlvaq (1, b); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_p_s32.c -index 8aa18323b53..df71bf107b8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddlvt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a, mve_pred16_t p) - { - return vaddlvq_p_s32 (a, p); - } - --/* { dg-final { scan-assembler "vaddlvt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddlvt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a, mve_pred16_t p) - { - return vaddlvq_p (a, p); - } - --/* { dg-final { scan-assembler "vaddlvt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_p_u32.c -index a9cee74e2ee..40d6f4c1082 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddlvt.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo (uint32x4_t a, mve_pred16_t p) - { - return vaddlvq_p_u32 (a, p); - } - --/* { dg-final { scan-assembler "vaddlvt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddlvt.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo1 (uint32x4_t a, mve_pred16_t p) - { - return vaddlvq_p (a, p); - } - --/* { dg-final { scan-assembler "vaddlvt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_s32.c -index 4bd70aacc05..4c87fb6dd2a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_s32.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddlv.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a) - { - return vaddlvq_s32 (a); - } - --/* { dg-final { scan-assembler "vaddlv.s32" } } */ - -+/* -+**foo1: -+** ... -+** vaddlv.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a) - { -- return vaddlvq_s32 (a); -+ return vaddlvq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vaddlv.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_u32.c -index 2148bd9a32e..3a9037addbb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddlv.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo (uint32x4_t a) - { -- return vaddlvq_u32 (a); -+ return vaddlvq_u32 (a); - } - --/* { dg-final { scan-assembler "vaddlv.u32" } } */ - -+/* -+**foo1: -+** ... -+** vaddlv.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo1 (uint32x4_t a) - { -- return vaddlvq (a); -+ return vaddlvq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vaddlv.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_f16.c -index 3d1100a9e81..b0e6d5d2c59 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vaddq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vadd.f16" } } */ - -+/* -+**foo1: -+** ... -+** vadd.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_f32.c -index e15e0d13e4f..be459e68d3c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vaddq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vadd.f32" } } */ - -+/* -+**foo1: -+** ... -+** vadd.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_f16.c -index 51d7020bd1f..1631969a87f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vaddq_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_f32.c -index 7821bc241ff..bd00b2056a3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vaddq_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f16-1.c -deleted file mode 100644 -index 8348098f948..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16x8_t inactive, float16x8_t a, float16_t b, mve_pred16_t p) --{ -- return vaddq_m (inactive, a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f16.c -index 796bed47613..5622365dd96 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16_t b, mve_pred16_t p) - { - return vaddq_m_n_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t inactive, float16x8_t a, mve_pred16_t p) -+{ -+ return vaddq_m (inactive, a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f32-1.c -deleted file mode 100644 -index c34cc98385f..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32x4_t inactive, float32x4_t a, float32_t b, mve_pred16_t p) --{ -- return vaddq_m (inactive, a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f32.c -index afa3c4c722e..e8bdb6a6a98 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32_t b, mve_pred16_t p) - { - return vaddq_m_n_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t inactive, float32x4_t a, mve_pred16_t p) -+{ -+ return vaddq_m (inactive, a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s16.c -index 0ef433724ba..b1c41e2b3bf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vaddq_m_n_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s32.c -index 46ac88e940d..1ff3dff685a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vaddq_m_n_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s8.c -index 1867d5603d1..3c7ed0f8e3e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vaddq_m_n_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u16.c -index 1da993b5e31..a8e7b989ba9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vaddq_m_n_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) -+{ -+ return vaddq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u32.c -index d7404c9f4ce..0cbc89d37d8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vaddq_m_n_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) -+{ -+ return vaddq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u8.c -index 013e83938b2..db95f28d548 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vaddq_m_n_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) -+{ -+ return vaddq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s16.c -index 244c88fcf89..4306e61b57b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vaddq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s32.c -index 7a59d75af11..fad289c8a41 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vaddq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s8.c -index 5b8c74ab017..0b39c3dce21 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vaddq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u16.c -index f28e3d789ab..c7a846a2dba 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vaddq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u32.c -index aeb836ce87d..bbead6073ce 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vaddq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u8.c -index c698df3a146..3097756d53e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vaddq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_f16.c -index 024fab5c0b2..dbb86b7083c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_f16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16_t b) - { - return vaddq_n_f16 (a, b); - } - --/* { dg-final { scan-assembler "vadd.f16" } } */ - -+/* -+**foo1: -+** ... -+** vadd.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.f16" } } */ -+/* -+**foo2: -+** ... -+** vadd.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t a) -+{ -+ return vaddq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_f32.c -index 06b1528460e..61cbe4d03cc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_f32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32_t b) - { - return vaddq_n_f32 (a, b); - } - --/* { dg-final { scan-assembler "vadd.f32" } } */ - -+/* -+**foo1: -+** ... -+** vadd.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.f32" } } */ -+/* -+**foo2: -+** ... -+** vadd.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t a) -+{ -+ return vaddq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s16.c -index 63765f41deb..237838cb0e6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b) - { - return vaddq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vadd.i16" } } */ - -+/* -+**foo1: -+** ... -+** vadd.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s32.c -index e462fbfab8e..c2cee5dc69b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vaddq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vadd.i32" } } */ - -+/* -+**foo1: -+** ... -+** vadd.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s8.c -index ad7181fd8f5..d815eaaa16e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b) - { - return vaddq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vadd.i8" } } */ - -+/* -+**foo1: -+** ... -+** vadd.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u16.c -index dac7a9fb9ba..35527a63ef4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16_t b) - { - return vaddq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vadd.i16" } } */ - -+/* -+**foo1: -+** ... -+** vadd.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.i16" } } */ -+/* -+**foo2: -+** ... -+** vadd.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t a) -+{ -+ return vaddq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u32.c -index 2f1feb89d32..66de687bef0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32_t b) - { - return vaddq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vadd.i32" } } */ - -+/* -+**foo1: -+** ... -+** vadd.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.i32" } } */ -+/* -+**foo2: -+** ... -+** vadd.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t a) -+{ -+ return vaddq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u8.c -index 325bdade765..9d4f8073810 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8_t b) - { - return vaddq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vadd.i8" } } */ - -+/* -+**foo1: -+** ... -+** vadd.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.i8" } } */ -+/* -+**foo2: -+** ... -+** vadd.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t a) -+{ -+ return vaddq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s16.c -index 31f6cb42e9f..370e4332e65 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vaddq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vadd.i16" } } */ - -+/* -+**foo1: -+** ... -+** vadd.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s32.c -index 96aead168cc..8c3bd3316d6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vaddq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vadd.i32" } } */ - -+/* -+**foo1: -+** ... -+** vadd.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s8.c -index 6676a2e269b..3d126df3c3c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vaddq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vadd.i8" } } */ - -+/* -+**foo1: -+** ... -+** vadd.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u16.c -index 1b19876e09a..e8ed91457b3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vaddq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vadd.i16" } } */ - -+/* -+**foo1: -+** ... -+** vadd.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u32.c -index 8f5acc69e79..172ed24016a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vaddq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vadd.i32" } } */ - -+/* -+**foo1: -+** ... -+** vadd.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u8.c -index e5be2fa1b59..b60b877bdba 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vadd.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vaddq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vadd.i8" } } */ - -+/* -+**foo1: -+** ... -+** vadd.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vaddq (a, b); - } - --/* { dg-final { scan-assembler "vadd.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_f16.c -index bd2a198eb72..e7a3693f4a6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vaddq_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_f32.c -index 5369f4d4876..f38c6b1f7af 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vaddq_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f16-1.c -deleted file mode 100644 -index 3bb01676947..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16x8_t a, float16_t b, mve_pred16_t p) --{ -- return vaddq_x (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f16.c -index d2eed8cf66f..e092b28afa8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vaddq_x_n_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t a, mve_pred16_t p) -+{ -+ return vaddq_x (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f32-1.c -deleted file mode 100644 -index 66dedc7d7e5..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32x4_t a, float32_t b, mve_pred16_t p) --{ -- return vaddq_x (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f32.c -index 40d56da12b1..c58a5e50608 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vaddq_x_n_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.f32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t a, mve_pred16_t p) -+{ -+ return vaddq_x (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s16.c -index e974cdf914b..876afc7367b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vaddq_x_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s32.c -index a6ac9ccd3af..c25ec006918 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vaddq_x_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s8.c -index f5539ef9c67..b6389224fe6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vaddq_x_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u16.c -index f167df122a0..006a872034a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vaddq_x_n_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t a, mve_pred16_t p) -+{ -+ return vaddq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u32.c -index 653c3eed7a0..0cc940b449c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vaddq_x_n_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t a, mve_pred16_t p) -+{ -+ return vaddq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u8.c -index 0ad65c8dde5..214a8decd83 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vaddq_x_n_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t a, mve_pred16_t p) -+{ -+ return vaddq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s16.c -index 75b1491e17d..a79531abf14 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vaddq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s32.c -index 1aadebda459..019ed62813c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vaddq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s8.c -index d6b07cee79a..4f390d109dd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vaddq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u16.c -index 5c9abc2492a..e528a9ef1bf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vaddq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u32.c -index d55ec735460..fa622f0a520 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vaddq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u8.c -index bcc058b3769..8ce1fe36015 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vaddq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vaddt.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s16.c -index c4bfe34aa91..95224809f66 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int16x8_t b, mve_pred16_t p) - { - return vaddvaq_p_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vaddvat.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int16x8_t b, mve_pred16_t p) - { - return vaddvaq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vaddvat.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s32.c -index cdc32807a24..80281819f06 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int32x4_t b, mve_pred16_t p) - { - return vaddvaq_p_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vaddvat.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int32x4_t b, mve_pred16_t p) - { - return vaddvaq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vaddvat.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s8.c -index d330411115a..53a92513511 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int8x16_t b, mve_pred16_t p) - { - return vaddvaq_p_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vaddvat.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int8x16_t b, mve_pred16_t p) - { - return vaddvaq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vaddvat.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u16.c -index 74d9246cd63..da61820c552 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u16.c -@@ -1,21 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint16x8_t b, mve_pred16_t p) - { - return vaddvaq_p_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vaddvat.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint16x8_t b, mve_pred16_t p) - { - return vaddvaq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vaddvat.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint16x8_t b, mve_pred16_t p) -+{ -+ return vaddvaq_p (1, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u32.c -index e4ec42b2544..0b7892c8b9a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u32.c -@@ -1,21 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint32x4_t b, mve_pred16_t p) - { - return vaddvaq_p_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vaddvat.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint32x4_t b, mve_pred16_t p) - { - return vaddvaq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vaddvat.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint32x4_t b, mve_pred16_t p) -+{ -+ return vaddvaq_p (1, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u8.c -index f9bed8379a4..51cba0385a9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u8.c -@@ -1,21 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint8x16_t b, mve_pred16_t p) - { - return vaddvaq_p_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vaddvat.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint8x16_t b, mve_pred16_t p) - { - return vaddvaq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vaddvat.u8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvat.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint8x16_t b, mve_pred16_t p) -+{ -+ return vaddvaq_p (1, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s16.c -index 5f6a8cf9d89..2a4dd6c33d9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddva.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int16x8_t b) - { - return vaddvaq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vaddva.s16" } } */ - -+/* -+**foo1: -+** ... -+** vaddva.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int16x8_t b) - { - return vaddvaq (a, b); - } - --/* { dg-final { scan-assembler "vaddva.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s32.c -index 29e27f59328..9f1c8515142 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddva.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int32x4_t b) - { - return vaddvaq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vaddva.s32" } } */ - -+/* -+**foo1: -+** ... -+** vaddva.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int32x4_t b) - { - return vaddvaq (a, b); - } - --/* { dg-final { scan-assembler "vaddva.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s8.c -index cac43464679..6f77cdb46f2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddva.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int8x16_t b) - { - return vaddvaq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vaddva.s8" } } */ - -+/* -+**foo1: -+** ... -+** vaddva.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int8x16_t b) - { - return vaddvaq (a, b); - } - --/* { dg-final { scan-assembler "vaddva.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u16.c -index c943fa5789f..a3e0e39502f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddva.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint16x8_t b) - { - return vaddvaq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vaddva.u16" } } */ - -+/* -+**foo1: -+** ... -+** vaddva.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint16x8_t b) - { - return vaddvaq (a, b); - } - --/* { dg-final { scan-assembler "vaddva.u16" } } */ -+/* -+**foo2: -+** ... -+** vaddva.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint16x8_t b) -+{ -+ return vaddvaq (1, b); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u32.c -index 0950ff50d0f..e6b2f85cdae 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddva.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint32x4_t b) - { - return vaddvaq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vaddva.u32" } } */ - -+/* -+**foo1: -+** ... -+** vaddva.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint32x4_t b) - { - return vaddvaq (a, b); - } - --/* { dg-final { scan-assembler "vaddva.u32" } } */ -+/* -+**foo2: -+** ... -+** vaddva.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint32x4_t b) -+{ -+ return vaddvaq (1, b); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u8.c -index 2a58225fbe3..5bad0ca996e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddva.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint8x16_t b) - { - return vaddvaq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vaddva.u8" } } */ - -+/* -+**foo1: -+** ... -+** vaddva.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint8x16_t b) - { - return vaddvaq (a, b); - } - --/* { dg-final { scan-assembler "vaddva.u8" } } */ -+/* -+**foo2: -+** ... -+** vaddva.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint8x16_t b) -+{ -+ return vaddvaq (1, b); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s16.c -index a786b8974b7..f4e499b631e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int16x8_t a, mve_pred16_t p) - { - return vaddvq_p_s16 (a, p); - } - --/* { dg-final { scan-assembler "vaddvt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int16x8_t a, mve_pred16_t p) - { - return vaddvq_p (a, p); - } - --/* { dg-final { scan-assembler "vaddvt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s32.c -index c688782180f..9417d86d6fe 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32x4_t a, mve_pred16_t p) - { - return vaddvq_p_s32 (a, p); - } - --/* { dg-final { scan-assembler "vaddvt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32x4_t a, mve_pred16_t p) - { - return vaddvq_p (a, p); - } - --/* { dg-final { scan-assembler "vaddvt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s8.c -index 8438448f86c..757bc5759ca 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int8x16_t a, mve_pred16_t p) - { - return vaddvq_p_s8 (a, p); - } - --/* { dg-final { scan-assembler "vaddvt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int8x16_t a, mve_pred16_t p) - { - return vaddvq_p (a, p); - } - --/* { dg-final { scan-assembler "vaddvt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u16.c -index ec7a5fa5a7f..cc9673f7326 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvt.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint16x8_t a, mve_pred16_t p) - { - return vaddvq_p_u16 (a, p); - } - --/* { dg-final { scan-assembler "vaddvt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvt.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint16x8_t a, mve_pred16_t p) - { - return vaddvq_p (a, p); - } - --/* { dg-final { scan-assembler "vaddvt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u32.c -index b70968880ce..9ead886d3e9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvt.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32x4_t a, mve_pred16_t p) - { - return vaddvq_p_u32 (a, p); - } - --/* { dg-final { scan-assembler "vaddvt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvt.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32x4_t a, mve_pred16_t p) - { - return vaddvq_p (a, p); - } - --/* { dg-final { scan-assembler "vaddvt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u8.c -index 69381b78cc4..45ed62f8b58 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvt.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint8x16_t a, mve_pred16_t p) - { - return vaddvq_p_u8 (a, p); - } - --/* { dg-final { scan-assembler "vaddvt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vaddvt.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint8x16_t a, mve_pred16_t p) - { - return vaddvq_p (a, p); - } - --/* { dg-final { scan-assembler "vaddvt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s16.c -index b4fc11f4aa4..468cc810cc4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s16.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddv.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int16x8_t a) - { - return vaddvq_s16 (a); - } - --/* { dg-final { scan-assembler "vaddv.s16" } } */ - -+/* -+**foo1: -+** ... -+** vaddv.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int16x8_t a) - { -- return vaddvq_s16 (a); -+ return vaddvq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vaddv.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s32.c -index 438b46ec246..791e27bdbb5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s32.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddv.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32x4_t a) - { - return vaddvq_s32 (a); - } - --/* { dg-final { scan-assembler "vaddv.s32" } } */ - -+/* -+**foo1: -+** ... -+** vaddv.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32x4_t a) - { -- return vaddvq_s32 (a); -+ return vaddvq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vaddv.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s8.c -index b60b1f2da98..3a13efc93dd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s8.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddv.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int8x16_t a) - { - return vaddvq_s8 (a); - } - --/* { dg-final { scan-assembler "vaddv.s8" } } */ - -+/* -+**foo1: -+** ... -+** vaddv.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int8x16_t a) - { - return vaddvq (a); - } - --/* { dg-final { scan-assembler "vaddv.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u16.c -index de782127faf..6aabcdce2c6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddv.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint16x8_t a) - { -- return vaddvq_u16 (a); -+ return vaddvq_u16 (a); - } - --/* { dg-final { scan-assembler "vaddv.u16" } } */ - -+/* -+**foo1: -+** ... -+** vaddv.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint16x8_t a) - { -- return vaddvq (a); -+ return vaddvq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vaddv.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u32.c -index c4672e42288..8b5ba816623 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddv.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32x4_t a) - { -- return vaddvq_u32 (a); -+ return vaddvq_u32 (a); - } - --/* { dg-final { scan-assembler "vaddv.u32" } } */ - -+/* -+**foo1: -+** ... -+** vaddv.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32x4_t a) - { -- return vaddvq (a); -+ return vaddvq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vaddv.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u8.c -index e4e149cfb61..2576d9c66d0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vaddv.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint8x16_t a) - { -- return vaddvq_u8 (a); -+ return vaddvq_u8 (a); - } - --/* { dg-final { scan-assembler "vaddv.u8" } } */ - -+/* -+**foo1: -+** ... -+** vaddv.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint8x16_t a) - { -- return vaddvq (a); -+ return vaddvq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vaddv.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_f16.c -index 2303b598a28..cb1820347bc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vandq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ - -+/* -+**foo1: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vandq (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_f32.c -index 905f2b410c0..1034bcbaa62 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vandq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ - -+/* -+**foo1: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vandq (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_f16.c -index d061dbc390b..d6752a6fdc4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vandq_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vandq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_f32.c -index 77b2813dfad..fb8410d0b71 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vandq_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vandq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_s16.c -index 2840a33b433..5797ffa9a16 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vandq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vandq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_s32.c -index 2e8ec7e14de..d2ede670e40 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vandq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vandq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_s8.c -index 36226f6d9ac..76ed60c64a9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vandq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vandq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_u16.c -index 49f0502f607..b3f7833e546 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vandq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vandq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_u32.c -index 194c7800a05..7d761c86622 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vandq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vandq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_u8.c -index 9b27c44ee82..8fd17e4f258 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vandq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vandq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_s16.c -index 86aa64fec96..9f3e9b0c078 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vandq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ - -+/* -+**foo1: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vandq (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_s32.c -index 907fe89ced8..ab0e9627fb9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vandq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ - -+/* -+**foo1: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vandq (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_s8.c -index 783ad042c87..980ba6b5f7a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vandq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ - -+/* -+**foo1: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vandq (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_u16.c -index ae483869f11..fdd18e92476 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vandq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ - -+/* -+**foo1: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vandq (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_u32.c -index 532926d894a..01df1828788 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vandq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ - -+/* -+**foo1: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vandq (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_u8.c -index 4018308f66d..a4f0cec4483 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vandq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ - -+/* -+**foo1: -+** ... -+** vand q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vandq (a, b); - } - --/* { dg-final { scan-assembler "vand" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_f16.c -index 6aa98910c7b..99c586d5604 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vandq_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vandq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_f32.c -index fd74ee6eee7..eda9d618409 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vandq_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vandq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_s16.c -index d8821d59be7..f0159ee7668 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vandq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vandq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_s32.c -index 980b01436b6..09277b2d56b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vandq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vandq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_s8.c -index 93dead71416..f1232168a7d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vandq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vandq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_u16.c -index aa99c69bd84..836385f44f4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vandq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vandq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_u32.c -index 1178837d78a..06b5010738b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vandq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vandq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_u8.c -index d46e2b235b9..37f4fc51f9a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vandq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vandt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vandt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vandq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f16.c -index c15f1f91d07..38a1a4adafa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f16.c -@@ -1,22 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vbicq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ - -+/* -+**foo1: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vbicq (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f32.c -index c8659d460a0..224b535992b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f32.c -@@ -1,22 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vbicq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ - -+/* -+**foo1: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vbicq (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f16.c -index 39a12a9fba3..e197a2aa1e3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vbicq_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vbicq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f32.c -index 091027c4b19..b441e205a64 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vbicq_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vbicq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c -index 3d0d09859c1..4e2be3e4516 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, mve_pred16_t p) - { -- return vbicq_m_n_s16 (a, 16, p); -+ return vbicq_m_n_s16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, mve_pred16_t p) - { -- return vbicq_m_n (a, 16, p); -+ return vbicq_m_n (a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s32.c -index 47a9459580b..d8beab58024 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, mve_pred16_t p) - { - return vbicq_m_n_s32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, mve_pred16_t p) - { - return vbicq_m_n (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c -index 7c0c691fd46..34b62aa557f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, mve_pred16_t p) - { - return vbicq_m_n_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, mve_pred16_t p) - { - return vbicq_m_n (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u32.c -index e97b17aa27d..60681e3f045 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, mve_pred16_t p) - { - return vbicq_m_n_u32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, mve_pred16_t p) - { - return vbicq_m_n (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s16.c -index 31a9e986b8d..c30658cf34c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vbicq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vbicq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s32.c -index 9e7a2940b42..6a861cb80e5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vbicq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vbicq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s8.c -index b5e3253384c..c19caf53658 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vbicq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vbicq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u16.c -index 54370ab9548..443fcac6605 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vbicq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vbicq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u32.c -index cfcae7c74a9..31b1e22ef7a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vbicq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vbicq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u8.c -index cd9856f629e..6bddc5c2d30 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vbicq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vbicq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c -index 6258727d82f..8726b2c57a4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c -@@ -1,20 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbic.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { - return vbicq_n_s16 (a, 1); - } - -+ -+/* -+**foo1: -+** ... -+** vbic.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { - return vbicq (a, 1); - } - --/* { dg-final { scan-assembler-times "vbic.i16" 2 } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s32.c -index be641abf556..015af580ed0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s32.c -@@ -1,20 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbic.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { - return vbicq_n_s32 (a, 1); - } - -+ -+/* -+**foo1: -+** ... -+** vbic.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a) - { - return vbicq (a, 1); - } - --/* { dg-final { scan-assembler-times "vbic.i32" 2 } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c -index 0b26ffda0dc..1ad03b9d17f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c -@@ -1,20 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbic.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a) - { - return vbicq_n_u16 (a, 1); - } - -+ -+/* -+**foo1: -+** ... -+** vbic.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a) - { - return vbicq (a, 1); - } - --/* { dg-final { scan-assembler-times "vbic.i16" 2 } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u32.c -index 47820bd184a..f3fe58fdf37 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u32.c -@@ -1,20 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbic.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a) - { - return vbicq_n_u32 (a, 1); - } - -+ -+/* -+**foo1: -+** ... -+** vbic.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a) - { - return vbicq (a, 1); - } - --/* { dg-final { scan-assembler-times "vbic.i32" 2 } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s16.c -index 4ffacdd9733..6fd2a9e5c0c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s16.c -@@ -1,22 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vbicq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ - -+/* -+**foo1: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vbicq (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s32.c -index 13fbff40746..37859e0dc6e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s32.c -@@ -1,22 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vbicq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ - -+/* -+**foo1: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vbicq (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s8.c -index b9fba943a83..23db9afbcf1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s8.c -@@ -1,22 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vbicq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ - -+/* -+**foo1: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vbicq (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u16.c -index 5d94a6396c4..9ed4e533e52 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u16.c -@@ -1,22 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vbicq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ - -+/* -+**foo1: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vbicq (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u32.c -index 893dc3deefc..abaf2a9cf7b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u32.c -@@ -1,22 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vbicq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ - -+/* -+**foo1: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vbicq (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u8.c -index bd5e9bc0197..4a47bb9d0e7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u8.c -@@ -1,22 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vbicq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ - -+/* -+**foo1: -+** ... -+** vbic q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vbicq (a, b); - } - --/* { dg-final { scan-assembler "vbic" } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_f16.c -index 975d60c713e..aa4812568d7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vbicq_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vbicq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_f32.c -index e779224b5d5..db295df1cd5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vbicq_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vbicq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_s16.c -index be554c4b2fb..2b7a3594dd7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vbicq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vbicq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_s32.c -index e49aabf11d6..bf3b755f9ee 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vbicq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vbicq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_s8.c -index c36cd1e6dc5..30df0904539 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vbicq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vbicq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_u16.c -index 3b611591deb..eaa50a84fd4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vbicq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vbicq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_u32.c -index fce2fab3dd6..aea2592d9cf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vbicq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vbicq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_u8.c -index 672b3fb1e39..4ffee473ea6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vbicq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbict" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbict q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vbicq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f16.c -index 8f8d1bffd73..5985b7fed01 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m_n_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f32.c -index 336c8194cd7..1fff5a8bf95 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m_n_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s16.c -index f597d8ccb9d..a5221f8d864 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m_n_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s32.c -index 76f0463af1e..99106e81a30 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m_n_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s8.c -index 30c6519236c..6bd4c8f4455 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m_n_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u16.c -index 7052b8b5ff5..03ad4896029 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m_n_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u32.c -index e19e02fbbd8..e65077001ec 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m_n_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u8.c -index ce658432fd9..61ca255e431 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m_n_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_f16.c -index 9b8dea6e7e8..6dc4c657cbf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbrsr.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, int32_t b) - { - return vbrsrq_n_f16 (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.16" } } */ - -+/* -+**foo1: -+** ... -+** vbrsr.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, int32_t b) - { - return vbrsrq (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_f32.c -index cd335197c3b..810cd1b86ac 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbrsr.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, int32_t b) - { - return vbrsrq_n_f32 (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.32" } } */ - -+/* -+**foo1: -+** ... -+** vbrsr.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, int32_t b) - { - return vbrsrq (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_s16.c -index efb17dd5250..109ccd72f0a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbrsr.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32_t b) - { - return vbrsrq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.16" } } */ - -+/* -+**foo1: -+** ... -+** vbrsr.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32_t b) - { - return vbrsrq (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_s32.c -index fda78e6aa4b..78b2db49c87 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbrsr.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vbrsrq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.32" } } */ - -+/* -+**foo1: -+** ... -+** vbrsr.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vbrsrq (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_s8.c -index cd75a2b88fa..dfd485240ea 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbrsr.8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int32_t b) - { - return vbrsrq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.8" } } */ - -+/* -+**foo1: -+** ... -+** vbrsr.8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int32_t b) - { - return vbrsrq (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_u16.c -index ef7708e33f8..59e1fcc0fd9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbrsr.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32_t b) - { - return vbrsrq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.16" } } */ - -+/* -+**foo1: -+** ... -+** vbrsr.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32_t b) - { - return vbrsrq (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_u32.c -index b33c533aeda..2d7792dd1cb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbrsr.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32_t b) - { - return vbrsrq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.32" } } */ - -+/* -+**foo1: -+** ... -+** vbrsr.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32_t b) - { - return vbrsrq (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_u8.c -index 91156bd4325..5f4398ddbe1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_n_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vbrsr.8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int32_t b) - { - return vbrsrq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.8" } } */ - -+/* -+**foo1: -+** ... -+** vbrsr.8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int32_t b) - { - return vbrsrq (a, b); - } - --/* { dg-final { scan-assembler "vbrsr.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f16.c -index 0710b59b1ab..d9d404ccf82 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x_n_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f32.c -index 67ab8cf80c9..8b176fe701c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x_n_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s16.c -index ac0c13c0b4d..77f4f1852a8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s32.c -index 98c87f17588..fc4a1c9c7e0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s8.c -index 8159f5da999..10322ac328a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u16.c -index dbad2940616..72d8a9e23b0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x_n_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u32.c -index 04c812a2747..535af3600c7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x_n_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u8.c -index b3836936750..5f8f8c928fd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x_n_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vbrsrt.8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int32_t b, mve_pred16_t p) - { - return vbrsrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vbrsrt.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_f16.c -index b50a5d54bb2..fb83a1cd8fc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vcaddq_rot270_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vcaddq_rot270 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_f32.c -index 0a12ff6fdcf..f8341a74e4a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vcaddq_rot270_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vcaddq_rot270 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f16.c -index e78bbd5446c..b4e2ffda280 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcaddq_rot270_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcaddq_rot270_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f32.c -index 8b53c665463..e7adc1be243 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcaddq_rot270_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcaddq_rot270_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s16.c -index 61948bb3552..fdde2f56b20 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcaddq_rot270_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcaddq_rot270_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s32.c -index 0bbe24b3b4a..1cb6afb4e4d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcaddq_rot270_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcaddq_rot270_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s8.c -index e9cab3df37f..39f063970f7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcaddq_rot270_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcaddq_rot270_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u16.c -index 25c71257920..fd285288487 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcaddq_rot270_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcaddq_rot270_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u32.c -index ee437eeb41f..053a61197d6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcaddq_rot270_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcaddq_rot270_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u8.c -index 419ba7e98ee..869983a0a0b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcaddq_rot270_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcaddq_rot270_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s16.c -index 832be006af8..67b0d0a4d0f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.i16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vcaddq_rot270_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i16" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.i16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vcaddq_rot270 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s32.c -index dbebe22183c..ab28458130e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.i32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vcaddq_rot270_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i32" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.i32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vcaddq_rot270 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s8.c -index 5f7852f69d4..842d6adf96d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.i8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vcaddq_rot270_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i8" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.i8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vcaddq_rot270 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u16.c -index 80b6c0ff3a9..97773d8daa9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.i16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vcaddq_rot270_u16 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i16" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.i16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vcaddq_rot270 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u32.c -index 260c5b81e22..17d5c147295 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.i32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vcaddq_rot270_u32 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i32" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.i32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vcaddq_rot270 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u8.c -index ae9c4f436ad..faf01a18824 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.i8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vcaddq_rot270_u8 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i8" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.i8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vcaddq_rot270 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f16.c -index 4b99c638830..f35aaf01a59 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcaddq_rot270_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcaddq_rot270_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f32.c -index 2532ef7d535..6446d9edc42 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcaddq_rot270_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcaddq_rot270_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s16.c -index 676efa8cfd7..b92fd2ee8aa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcaddq_rot270_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcaddq_rot270_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s32.c -index 9aa05d5bfdf..b8acc67feb9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcaddq_rot270_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcaddq_rot270_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s8.c -index 4532296494c..78ec7862574 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcaddq_rot270_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcaddq_rot270_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u16.c -index 51db9379e9b..ea781622424 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcaddq_rot270_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcaddq_rot270_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u32.c -index a2e51c13268..a43d806ac3d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcaddq_rot270_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcaddq_rot270_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u8.c -index 6ae7f693664..eb9cf0cffb6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcaddq_rot270_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcaddq_rot270_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_f16.c -index e1b21e6c5c3..1e78bd144b2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vcaddq_rot90_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vcaddq_rot90 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_f32.c -index 118489e923f..9611f8938dc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vcaddq_rot90_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vcaddq_rot90 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f16.c -index e47e242f061..58608b4961e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcaddq_rot90_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcaddq_rot90_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f32.c -index 833aa9c2367..125dbe5405c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcaddq_rot90_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcaddq_rot90_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s16.c -index 46babedb949..38e0e47b500 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcaddq_rot90_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcaddq_rot90_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s32.c -index 15774e5a142..455d8388f0f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcaddq_rot90_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcaddq_rot90_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s8.c -index 6f2bb4da3e3..7217dadaac0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcaddq_rot90_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcaddq_rot90_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u16.c -index b9113fe4f39..d3edbaa478c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcaddq_rot90_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcaddq_rot90_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u32.c -index b7fe5106414..eb1bf2a4274 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcaddq_rot90_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcaddq_rot90_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u8.c -index e6c4e9f66fb..3343399b2c3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcaddq_rot90_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcaddq_rot90_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s16.c -index 8279da9ed45..134fba6280f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.i16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vcaddq_rot90_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i16" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.i16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vcaddq_rot90 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s32.c -index 6d59da7757d..b8e81679e9e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.i32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vcaddq_rot90_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i32" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.i32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vcaddq_rot90 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s8.c -index b4f5a22c03e..2a37b8e7b83 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.i8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vcaddq_rot90_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i8" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.i8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vcaddq_rot90 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u16.c -index e203bd017cd..51e1871b690 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.i16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vcaddq_rot90_u16 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i16" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.i16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vcaddq_rot90 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u32.c -index 0cba5d5bda8..5905062064a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.i32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vcaddq_rot90_u32 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i32" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.i32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vcaddq_rot90 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u8.c -index f4f0476427a..37374637eb3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcadd.i8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vcaddq_rot90_u8 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i8" } } */ - -+/* -+**foo1: -+** ... -+** vcadd.i8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vcaddq_rot90 (a, b); - } - --/* { dg-final { scan-assembler "vcadd.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f16.c -index 476648ad459..4223c4d0f33 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcaddq_rot90_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcaddq_rot90_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f32.c -index ae9a196af7f..9e67c56b5e8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcaddq_rot90_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcaddq_rot90_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s16.c -index 16b5949a2a2..553fc2801fb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcaddq_rot90_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcaddq_rot90_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s32.c -index d30150e0f1c..1cd7338d162 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcaddq_rot90_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcaddq_rot90_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s8.c -index fa79ce24eaf..13373d46154 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcaddq_rot90_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcaddq_rot90_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u16.c -index e18a39ed125..3f8957783e3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcaddq_rot90_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcaddq_rot90_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u32.c -index b9b95fe360e..34cb0363574 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcaddq_rot90_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcaddq_rot90_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u8.c -index b8b8978c1e6..d383404052d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcaddq_rot90_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcaddt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcaddt.i8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcaddq_rot90_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s16.c -index d0eb7008537..1996ac8b03e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclst.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vclsq_m_s16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclst.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclst.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vclsq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s32.c -index b6d7088a8e7..f51841d024e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclst.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vclsq_m_s32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclst.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclst.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vclsq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s8.c -index 28d4d966802..2975c4cda56 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclst.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vclsq_m_s8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclst.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclst.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vclsq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s16.c -index e57fbb97080..ed1b5c75b40 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s16.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcls.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { - return vclsq_s16 (a); - } - --/* { dg-final { scan-assembler "vcls.s16" } } */ - -+/* -+**foo1: -+** ... -+** vcls.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { - return vclsq (a); - } - --/* { dg-final { scan-assembler "vcls.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s32.c -index 7fa3038d361..9e5369e04c6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s32.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcls.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { - return vclsq_s32 (a); - } - --/* { dg-final { scan-assembler "vcls.s32" } } */ - -+/* -+**foo1: -+** ... -+** vcls.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a) - { - return vclsq (a); - } - --/* { dg-final { scan-assembler "vcls.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s8.c -index b0985484d1d..c4a9468f8e1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcls.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { - return vclsq_s8 (a); - } - --/* { dg-final { scan-assembler "vcls.s8" } } */ - -+/* -+**foo1: -+** ... -+** vcls.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { - return vclsq (a); - } - --/* { dg-final { scan-assembler "vcls.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s16.c -index ab09c9944ae..ea11eceb730 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclst.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, mve_pred16_t p) - { - return vclsq_x_s16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclst.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclst.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, mve_pred16_t p) - { - return vclsq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s32.c -index 09a8dab2f51..1737c561a0b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclst.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, mve_pred16_t p) - { - return vclsq_x_s32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclst.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclst.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, mve_pred16_t p) - { - return vclsq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s8.c -index af40f7fa510..a7cdb612ee1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclst.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, mve_pred16_t p) - { - return vclsq_x_s8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclst.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclst.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, mve_pred16_t p) - { - return vclsq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s16.c -index 9670f8f56f3..620314e4ff2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vclzq_m_s16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclzt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vclzq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s32.c -index 18427354570..dfda1e67287 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vclzq_m_s32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclzt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vclzq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s8.c -index 2697d039d70..1300fe6f8c4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vclzq_m_s8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclzt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vclzq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u16.c -index 8405b16314c..922819d388e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vclzq_m_u16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclzt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vclzq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u32.c -index 350e6e7e661..6e75a0463cf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { - return vclzq_m_u32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclzt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { - return vclzq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u8.c -index d455526f975..3c450e8eca0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vclzq_m_u8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclzt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vclzq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s16.c -index f71a0a4eded..17be53f395b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s16.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vclz.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { - return vclzq_s16 (a); - } - --/* { dg-final { scan-assembler "vclz.i16" } } */ - -+/* -+**foo1: -+** ... -+** vclz.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { - return vclzq (a); - } - --/* { dg-final { scan-assembler "vclz.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s32.c -index 46a002bc1c5..5e440febb29 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s32.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vclz.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { - return vclzq_s32 (a); - } - --/* { dg-final { scan-assembler "vclz.i32" } } */ - -+/* -+**foo1: -+** ... -+** vclz.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a) - { - return vclzq (a); - } - --/* { dg-final { scan-assembler "vclz.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s8.c -index 3cab6f32310..9eaa9a4269a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vclz.i8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { - return vclzq_s8 (a); - } - --/* { dg-final { scan-assembler "vclz.i8" } } */ - -+/* -+**foo1: -+** ... -+** vclz.i8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { - return vclzq (a); - } - --/* { dg-final { scan-assembler "vclz.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u16.c -index cada68b6d65..37179b22a5c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vclz.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a) - { -- return vclzq_u16 (a); -+ return vclzq_u16 (a); - } - --/* { dg-final { scan-assembler "vclz.i16" } } */ - -+/* -+**foo1: -+** ... -+** vclz.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a) - { -- return vclzq (a); -+ return vclzq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vclz.i16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u32.c -index 0291b0cea4c..65ee44d41d5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vclz.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a) - { -- return vclzq_u32 (a); -+ return vclzq_u32 (a); - } - --/* { dg-final { scan-assembler "vclz.i32" } } */ - -+/* -+**foo1: -+** ... -+** vclz.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a) - { -- return vclzq (a); -+ return vclzq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vclz.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u8.c -index 5eb7bab5e0d..bed4ab1878a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vclz.i8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a) - { -- return vclzq_u8 (a); -+ return vclzq_u8 (a); - } - --/* { dg-final { scan-assembler "vclz.i8" } } */ - -+/* -+**foo1: -+** ... -+** vclz.i8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a) - { -- return vclzq (a); -+ return vclzq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vclz.i8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s16.c -index daddd1b4421..ea78bf20066 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, mve_pred16_t p) - { - return vclzq_x_s16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclzt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, mve_pred16_t p) - { - return vclzq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s32.c -index d4f443f7f56..cc85d4d27e2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, mve_pred16_t p) - { - return vclzq_x_s32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclzt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, mve_pred16_t p) - { - return vclzq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s8.c -index b33d2c51c3f..0f809167a4f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, mve_pred16_t p) - { - return vclzq_x_s8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclzt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, mve_pred16_t p) - { - return vclzq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u16.c -index 6d9bc79261b..a9b662d40f2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, mve_pred16_t p) - { - return vclzq_x_u16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclzt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, mve_pred16_t p) - { - return vclzq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u32.c -index c3b053b9f1f..5446938c3fd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, mve_pred16_t p) - { - return vclzq_x_u32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclzt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, mve_pred16_t p) - { - return vclzq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u8.c -index 678b2eb898d..548a74e8367 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, mve_pred16_t p) - { - return vclzq_x_u8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vclzt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vclzt.i8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, mve_pred16_t p) - { - return vclzq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_f16.c -index fa7d0c05e8c..bb8a99790a0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmla.f16 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, float16x8_t c) - { - return vcmlaq_f16 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmla.f16 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, float16x8_t c) - { - return vcmlaq (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_f32.c -index 166bf421f14..71ec4b8479c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmla.f32 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, float32x4_t c) - { - return vcmlaq_f32 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmla.f32 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, float32x4_t c) - { - return vcmlaq (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_m_f16.c -index 0929f5a0a89..3db345d0791 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f16 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, float16x8_t c, mve_pred16_t p) - { - return vcmlaq_m_f16 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f16 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, float16x8_t c, mve_pred16_t p) - { - return vcmlaq_m (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_m_f32.c -index 1f4ba453cbc..dcbd2dccce5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f32 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, float32x4_t c, mve_pred16_t p) - { - return vcmlaq_m_f32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f32 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, float32x4_t c, mve_pred16_t p) - { - return vcmlaq_m (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f16.c -index fc6ba30b36a..f76ae2383a2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmla.f16 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, float16x8_t c) - { - return vcmlaq_rot180_f16 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmla.f16 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, float16x8_t c) - { - return vcmlaq_rot180 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f32.c -index dbe3f26b3b9..c97d0d0d852 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmla.f32 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, float32x4_t c) - { - return vcmlaq_rot180_f32 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmla.f32 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, float32x4_t c) - { - return vcmlaq_rot180 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f16.c -index 84a3bd81ad9..132cdf9954f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f16 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, float16x8_t c, mve_pred16_t p) - { - return vcmlaq_rot180_m_f16 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f16 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, float16x8_t c, mve_pred16_t p) - { - return vcmlaq_rot180_m (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f32.c -index 61f5716f0b7..99e96ebe3a9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f32 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, float32x4_t c, mve_pred16_t p) - { - return vcmlaq_rot180_m_f32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f32 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, float32x4_t c, mve_pred16_t p) - { - return vcmlaq_rot180_m (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f16.c -index 1b0bef91f37..fae85105feb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmla.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, float16x8_t c) - { - return vcmlaq_rot270_f16 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmla.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, float16x8_t c) - { - return vcmlaq_rot270 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f32.c -index 83e15025e44..54a9b662772 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmla.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, float32x4_t c) - { - return vcmlaq_rot270_f32 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmla.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, float32x4_t c) - { - return vcmlaq_rot270 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f16.c -index 6e033b1d7ab..e34f83165c3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, float16x8_t c, mve_pred16_t p) - { - return vcmlaq_rot270_m_f16 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, float16x8_t c, mve_pred16_t p) - { - return vcmlaq_rot270_m (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f32.c -index 4928341076d..cdba91b8e8c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, float32x4_t c, mve_pred16_t p) - { - return vcmlaq_rot270_m_f32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, float32x4_t c, mve_pred16_t p) - { - return vcmlaq_rot270_m (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f16.c -index 16744a4582c..f767b2b6e6b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmla.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, float16x8_t c) - { - return vcmlaq_rot90_f16 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmla.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, float16x8_t c) - { - return vcmlaq_rot90 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f32.c -index f1f19a87ba7..6c9b24f271d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmla.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, float32x4_t c) - { - return vcmlaq_rot90_f32 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmla.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, float32x4_t c) - { - return vcmlaq_rot90 (a, b, c); - } - --/* { dg-final { scan-assembler "vcmla.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f16.c -index 7133ddc7ad5..9141c9e6f90 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, float16x8_t c, mve_pred16_t p) - { - return vcmlaq_rot90_m_f16 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, float16x8_t c, mve_pred16_t p) - { - return vcmlaq_rot90_m (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f32.c -index 6022e3be538..f317d411806 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, float32x4_t c, mve_pred16_t p) - { - return vcmlaq_rot90_m_f32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmlat.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, float32x4_t c, mve_pred16_t p) - { - return vcmlaq_rot90_m (a, b, c, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmlat.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c -index a1640133012..373acbd31b9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u16 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vcmpcsq_m_n_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u16 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vcmpcsq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u16 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint16x8_t a, mve_pred16_t p) -+{ -+ return vcmpcsq_m (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c -index d269ec7e3ab..25263654930 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u32 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vcmpcsq_m_n_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u32 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vcmpcsq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u32 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint32x4_t a, mve_pred16_t p) -+{ -+ return vcmpcsq_m (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c -index 52c16b3e70f..60120e88ef9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u8 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vcmpcsq_m_n_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u8 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vcmpcsq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u8 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint8x16_t a, mve_pred16_t p) -+{ -+ return vcmpcsq_m (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u16.c -index e68afa316a9..fcdc41fdc81 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u16 cs, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcmpcsq_m_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u16 cs, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcmpcsq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u32.c -index 05d1b21b279..b294c8593d1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u32 cs, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcmpcsq_m_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u32 cs, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcmpcsq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u8.c -index 4c8a9d0aa2c..00c118a68c6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u8 cs, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcmpcsq_m_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u8 cs, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcmpcsq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u16.c -index 4124036003e..9f8111438a1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u16.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.u16 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16_t b) - { - return vcmpcsq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.u16 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16_t b) - { - return vcmpcsq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u16" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.u16 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint16x8_t a) -+{ -+ return vcmpcsq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u32.c -index 463c1ee12b4..799d3bcdab1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u32.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.u32 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32_t b) - { - return vcmpcsq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.u32 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32_t b) - { - return vcmpcsq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u32" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.u32 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint32x4_t a) -+{ -+ return vcmpcsq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u8.c -index 92bc44a4bb6..16c3617c104 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u8.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.u8 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8_t b) - { - return vcmpcsq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.u8 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8_t b) - { - return vcmpcsq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u8" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.u8 cs, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint8x16_t a) -+{ -+ return vcmpcsq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u16.c -index 26c7d750cef..5ae4d0ceaef 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.u16 cs, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16x8_t b) - { - return vcmpcsq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.u16 cs, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vcmpcsq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u32.c -index c91b0e1c2e3..4695e7e3405 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.u32 cs, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32x4_t b) - { - return vcmpcsq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.u32 cs, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vcmpcsq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u8.c -index 51ddab91500..3075050a943 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.u8 cs, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vcmpcsq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.u8 cs, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vcmpcsq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_f16.c -index 556351f4984..82b24a83f8b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_f16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f16 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16x8_t b) - { - return vcmpeqq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f16 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16x8_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_f32.c -index 65b2f240520..1d7bda0a986 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_f32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f32 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32x4_t b) - { - return vcmpeqq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f32 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32x4_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_f16.c -index 91b0ffa0afd..0a0406b3b74 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_f16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmpeqq_m_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_f32.c -index d66e9c8be34..ba8a946591c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_f32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmpeqq_m_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16-1.c -deleted file mode 100644 -index 909ca936492..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float16x8_t a, float16_t b, mve_pred16_t p) --{ -- return vcmpeqq_m (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16.c -index 46b3f4499d3..f095b4aff1e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vcmpeqq_m_n_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float16x8_t a, mve_pred16_t p) -+{ -+ return vcmpeqq_m (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32-1.c -deleted file mode 100644 -index 8f993af20af..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float32x4_t a, float32_t b, mve_pred16_t p) --{ -- return vcmpeqq_m (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32.c -index 7d672c129db..dd244db5e46 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vcmpeqq_m_n_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float32x4_t a, mve_pred16_t p) -+{ -+ return vcmpeqq_m (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s16.c -index 912d4ad893d..bbf5326d2b3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vcmpeqq_m_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s32.c -index 947c331622d..b66949b7633 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vcmpeqq_m_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s8.c -index e215d655ea2..5730eebb47b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vcmpeqq_m_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u16.c -index ea4716c450e..6009e951beb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u16.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vcmpeqq_m_n_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint16x8_t a, mve_pred16_t p) -+{ -+ return vcmpeqq_m (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u32.c -index 489c6ec0cb3..2bce70de33e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u32.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vcmpeqq_m_n_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint32x4_t a, mve_pred16_t p) -+{ -+ return vcmpeqq_m (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u8.c -index e8dfce432d1..6c6fa8a7720 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u8.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vcmpeqq_m_n_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint8x16_t a, mve_pred16_t p) -+{ -+ return vcmpeqq_m (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s16.c -index 7e4c141e5d2..4b5feb26a62 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcmpeqq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s32.c -index 904cfb6fe37..60db456c60d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcmpeqq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s8.c -index a7e12164e32..45cdc28fb2b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcmpeqq_m_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u16.c -index 283e1fd036e..41c3653b892 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcmpeqq_m_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u32.c -index ad1739bd609..2e7bf175e63 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcmpeqq_m_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u8.c -index 595142e9cda..e9d333f6661 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcmpeqq_m_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcmpeqq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16-1.c -deleted file mode 100644 -index 223cffc17e5..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float16x8_t a, float16_t b) --{ -- return vcmpeqq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c -index f97209d2322..2f84d751c53 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16_t b) - { - return vcmpeqq_n_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.f16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float16x8_t a) -+{ -+ return vcmpeqq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32-1.c -deleted file mode 100644 -index 81669bd7c60..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float32x4_t a, float32_t b) --{ -- return vcmpeqq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c -index c80843288b2..6cfe7338fce 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32_t b) - { - return vcmpeqq_n_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.f32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float32x4_t a) -+{ -+ return vcmpeqq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s16.c -index 69f1f531af4..2f146d937ec 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16_t b) - { - return vcmpeqq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s32.c -index 06032dbcc20..f77743c00d3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32_t b) - { - return vcmpeqq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s8.c -index 3ebd88be85b..690ed1b811d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i8 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8_t b) - { - return vcmpeqq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i8 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u16.c -index 2f6c53a525e..362e830c908 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u16.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16_t b) - { - return vcmpeqq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.i16 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint16x8_t a) -+{ -+ return vcmpeqq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u32.c -index 22fb5be97c5..583beb97849 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u32.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32_t b) - { - return vcmpeqq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.i32 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint32x4_t a) -+{ -+ return vcmpeqq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u8.c -index 79eaeed6950..db7f1877d73 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u8.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i8 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8_t b) - { - return vcmpeqq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i8 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.i8 eq, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint8x16_t a) -+{ -+ return vcmpeqq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s16.c -index 7951ead8a31..24f34a24ee3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i16 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16x8_t b) - { - return vcmpeqq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i16 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16x8_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s32.c -index 659ccb4ac14..ae5d870d2b4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i32 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32x4_t b) - { - return vcmpeqq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i32 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32x4_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s8.c -index 9282ec2a97a..81538a9957a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i8 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8x16_t b) - { - return vcmpeqq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i8 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u16.c -index 318b7aa9306..39778cf1b6c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i16 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16x8_t b) - { - return vcmpeqq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i16 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u32.c -index 88e015f1fa3..8afd39e89b5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i32 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32x4_t b) - { - return vcmpeqq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i32 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u8.c -index 990a96f7b3f..84610a10445 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i8 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vcmpeqq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i8 eq, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vcmpeqq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_f16.c -index eea63a2fe50..f11dc28376d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_f16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f16 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16x8_t b) - { - return vcmpgeq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f16 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16x8_t b) - { - return vcmpgeq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_f32.c -index 64243fe3e8c..8eb38db2021 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_f32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f32 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32x4_t b) - { - return vcmpgeq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f32 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32x4_t b) - { - return vcmpgeq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_f16.c -index 3588b0a536f..c3a8df2ec46 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_f16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmpgeq_m_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmpgeq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_f32.c -index 8ed1d22e919..8069e426b73 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_f32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmpgeq_m_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmpgeq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16-1.c -deleted file mode 100644 -index 4a4e4b34fde..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float16x8_t a, float16_t b, mve_pred16_t p) --{ -- return vcmpgeq_m (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16.c -index d106af8f53b..3a9be99bc0a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vcmpgeq_m_n_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vcmpgeq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float16x8_t a, mve_pred16_t p) -+{ -+ return vcmpgeq_m (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32-1.c -deleted file mode 100644 -index c406a63aae2..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float32x4_t a, float32_t b, mve_pred16_t p) --{ -- return vcmpgeq_m (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32.c -index 1feef8adb7f..a785cfb52f8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vcmpgeq_m_n_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vcmpgeq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float32x4_t a, mve_pred16_t p) -+{ -+ return vcmpgeq_m (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c -index c0ad38f6c6f..0a2544e7ac4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vcmpgeq_m_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vcmpgeq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c -index 8974ce4d11a..fa453774d06 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vcmpgeq_m_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vcmpgeq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c -index 981aa1b516c..34d632b03e7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vcmpgeq_m_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vcmpgeq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s16.c -index 587432a6af1..1c5ce785a63 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcmpgeq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcmpgeq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s32.c -index e460a8dcafc..3ac4d59bf1f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcmpgeq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcmpgeq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s8.c -index cde28a314b9..3c3a584e075 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcmpgeq_m_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcmpgeq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16-1.c -deleted file mode 100644 -index a65ed4421a8..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float16x8_t a, float16_t b) --{ -- return vcmpgeq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c -index 907fa5d50f6..978bd7d4b52 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f16 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16_t b) - { - return vcmpgeq_n_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f16 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16_t b) - { - return vcmpgeq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.f16 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float16x8_t a) -+{ -+ return vcmpgeq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32-1.c -deleted file mode 100644 -index 2e2fc0170eb..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float32x4_t a, float32_t b) --{ -- return vcmpgeq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c -index e4d1406c049..66b6d8b0056 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f32 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32_t b) - { - return vcmpgeq_n_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f32 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32_t b) - { - return vcmpgeq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.f32 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float32x4_t a) -+{ -+ return vcmpgeq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s16.c -index f4aad09e783..e0488dc0003 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s16 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16_t b) - { - return vcmpgeq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s16 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16_t b) - { - return vcmpgeq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s32.c -index 2baa5204819..b448e8a15e3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s32 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32_t b) - { - return vcmpgeq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s32 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32_t b) - { - return vcmpgeq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s8.c -index 1dcffcc3050..9f609b9f243 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s8 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8_t b) - { - return vcmpgeq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s8 ge, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8_t b) - { - return vcmpgeq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s16.c -index 817ffb2d8ac..c835d99b47a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s16 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16x8_t b) - { - return vcmpgeq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s16 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16x8_t b) - { - return vcmpgeq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s32.c -index d608b7fc9cf..37d9524b4f8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s32 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32x4_t b) - { - return vcmpgeq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s32 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32x4_t b) - { - return vcmpgeq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s8.c -index 506e6cede95..a752510621b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s8 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8x16_t b) - { - return vcmpgeq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s8 ge, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vcmpgeq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_f16.c -index e2bfd7ed156..d8f151a19f3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_f16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f16 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16x8_t b) - { - return vcmpgtq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f16 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16x8_t b) - { - return vcmpgtq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_f32.c -index 1b4433f0e76..6f601889e85 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_f32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f32 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32x4_t b) - { - return vcmpgtq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f32 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32x4_t b) - { - return vcmpgtq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_f16.c -index def3f90a79d..f724387023e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_f16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmpgtq_m_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmpgtq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_f32.c -index 41a11563f36..6eebe92b797 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_f32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmpgtq_m_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmpgtq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16-1.c -deleted file mode 100644 -index 08c91a72e05..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float16x8_t a, float16_t b, mve_pred16_t p) --{ -- return vcmpgtq_m (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c -index 80c86f65825..be4da4b50da 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vcmpgtq_m_n_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vcmpgtq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float16x8_t a, mve_pred16_t p) -+{ -+ return vcmpgtq_m (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32-1.c -deleted file mode 100644 -index 0b74482211d..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float32x4_t a, float32_t b, mve_pred16_t p) --{ -- return vcmpgtq_m (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c -index 9b7aaadfe71..e8244345eb2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vcmpgtq_m_n_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vcmpgtq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float32x4_t a, mve_pred16_t p) -+{ -+ return vcmpgtq_m (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s16.c -index c0719d0110c..12d5540ba39 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vcmpgtq_m_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vcmpgtq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s32.c -index 26df8cea9fc..dca726fde38 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vcmpgtq_m_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vcmpgtq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s8.c -index f20c50d69c1..07216ac242f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vcmpgtq_m_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vcmpgtq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s16.c -index da97abceb2e..bd0ac3d927a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcmpgtq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcmpgtq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s32.c -index ab7c218c7af..0c2f3acf2bd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcmpgtq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcmpgtq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s8.c -index 13520d1067b..3f2f28b839b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcmpgtq_m_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcmpgtq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16-1.c -deleted file mode 100644 -index 3b2faeaf64f..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float16x8_t a, float16_t b) --{ -- return vcmpgtq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c -index 98e152cd999..9c5f1f2f5c8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f16 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16_t b) - { - return vcmpgtq_n_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f16 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16_t b) - { - return vcmpgtq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.f16 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float16x8_t a) -+{ -+ return vcmpgtq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32-1.c -deleted file mode 100644 -index 16862e0209c..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float32x4_t a, float32_t b) --{ -- return vcmpgtq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c -index 5691e2f9d35..2723aa7f98f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f32 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32_t b) - { - return vcmpgtq_n_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f32 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32_t b) - { - return vcmpgtq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.f32 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float32x4_t a) -+{ -+ return vcmpgtq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s16.c -index bc3bdbae2da..9c8611d924c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s16 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16_t b) - { - return vcmpgtq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s16 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16_t b) - { - return vcmpgtq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s32.c -index 409a3f9d808..ef285c9692b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s32 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32_t b) - { - return vcmpgtq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s32 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32_t b) - { - return vcmpgtq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s8.c -index 2624307be9d..8cabf987c9a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s8 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8_t b) - { - return vcmpgtq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s8 gt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8_t b) - { - return vcmpgtq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s16.c -index be19e19f09f..da107d414b2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s16 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16x8_t b) - { - return vcmpgtq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s16 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16x8_t b) - { - return vcmpgtq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s32.c -index 95f6c703b9d..4508698a856 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s32 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32x4_t b) - { - return vcmpgtq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s32 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32x4_t b) - { - return vcmpgtq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s8.c -index 8ba180d8e39..d65d27704d0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s8 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8x16_t b) - { - return vcmpgtq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s8 gt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vcmpgtq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u16.c -index 26e5fe3f900..403ad11fee8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u16.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u16 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vcmphiq_m_n_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u16 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vcmphiq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u16 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint16x8_t a, mve_pred16_t p) -+{ -+ return vcmphiq_m (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u32.c -index 51396b8d0cd..a9c9816976d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u32.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u32 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vcmphiq_m_n_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u32 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vcmphiq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u32 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint32x4_t a, mve_pred16_t p) -+{ -+ return vcmphiq_m (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u8.c -index 475f2e82345..16e3af1d556 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u8.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u8 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vcmphiq_m_n_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u8 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vcmphiq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u8 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint8x16_t a, mve_pred16_t p) -+{ -+ return vcmphiq_m (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u16.c -index 98ba895fde0..139f69e392b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u16 hi, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcmphiq_m_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u16 hi, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcmphiq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u32.c -index ee561b02d0c..a33aed0a005 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u32 hi, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcmphiq_m_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u32 hi, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcmphiq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u8.c -index 0c5b29e2673..18e9b1907b8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u8 hi, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcmphiq_m_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.u8 hi, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcmphiq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u16.c -index d39b755441d..5712db2ceef 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u16.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.u16 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16_t b) - { - return vcmphiq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.u16 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16_t b) - { - return vcmphiq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u16" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.u16 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint16x8_t a) -+{ -+ return vcmphiq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u32.c -index dbedea9b078..f7a25af8574 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u32.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.u32 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32_t b) - { - return vcmphiq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.u32 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32_t b) - { - return vcmphiq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u32" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.u32 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint32x4_t a) -+{ -+ return vcmphiq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u8.c -index 967bb206886..8cd28fb1681 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u8.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.u8 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8_t b) - { - return vcmphiq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.u8 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8_t b) - { - return vcmphiq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u8" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.u8 hi, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint8x16_t a) -+{ -+ return vcmphiq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u16.c -index f9399498a99..3cff050425d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.u16 hi, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16x8_t b) - { - return vcmphiq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.u16 hi, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vcmphiq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u32.c -index becdef0696a..39f0c12a75b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.u32 hi, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32x4_t b) - { - return vcmphiq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.u32 hi, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vcmphiq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u8.c -index 933cc69507d..69103f502f5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.u8 hi, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vcmphiq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.u8 hi, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vcmphiq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_f16.c -index c2e69a5de92..fb92b67325f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_f16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f16 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16x8_t b) - { - return vcmpleq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f16 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16x8_t b) - { - return vcmpleq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_f32.c -index 923aee050d3..61ab55d83da 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_f32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f32 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32x4_t b) - { - return vcmpleq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f32 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32x4_t b) - { - return vcmpleq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_f16.c -index 66a37192985..f866469eadb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_f16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmpleq_m_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmpleq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_f32.c -index e679b338d58..5704e6d7a0b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_f32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmpleq_m_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmpleq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16-1.c -deleted file mode 100644 -index 50e53bdac47..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float16x8_t a, float16_t b, mve_pred16_t p) --{ -- return vcmpleq_m (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c -index 42049fd57a4..5fa3be11c2a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vcmpleq_m_n_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vcmpleq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float16x8_t a, mve_pred16_t p) -+{ -+ return vcmpleq_m (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32-1.c -deleted file mode 100644 -index b16da273a91..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float32x4_t a, float32_t b, mve_pred16_t p) --{ -- return vcmpleq_m (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c -index c68bd4e5900..cbab9606b3c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vcmpleq_m_n_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vcmpleq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float32x4_t a, mve_pred16_t p) -+{ -+ return vcmpleq_m (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s16.c -index 0cdc14455a3..d16b5c49e83 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vcmpleq_m_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vcmpleq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s32.c -index a955af8fa2b..e9504fad271 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vcmpleq_m_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vcmpleq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s8.c -index d9951e4a8cf..10709a8520c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vcmpleq_m_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vcmpleq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s16.c -index f16aff86ef0..59102a6eb60 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcmpleq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcmpleq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s32.c -index 2c4e659e9cf..42d7d7fdbb3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcmpleq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcmpleq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s8.c -index 69b88cfb389..3d1407baebf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcmpleq_m_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcmpleq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f16-1.c -deleted file mode 100644 -index 4a4b97312b0..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float16x8_t a, float16_t b) --{ -- return vcmpleq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c -index 3fa3c5e0310..1d1f4bf0e58 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f16 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16_t b) - { - return vcmpleq_n_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f16 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16_t b) - { - return vcmpleq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.f16 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float16x8_t a) -+{ -+ return vcmpleq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f32-1.c -deleted file mode 100644 -index 8d8f1051933..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float32x4_t a, float32_t b) --{ -- return vcmpleq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c -index 8349de7b68c..bf77a808064 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f32 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32_t b) - { - return vcmpleq_n_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f32 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32_t b) - { - return vcmpleq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.f32 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float32x4_t a) -+{ -+ return vcmpleq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s16.c -index 5ecae572227..6aad8de937a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s16 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16_t b) - { - return vcmpleq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s16 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16_t b) - { - return vcmpleq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s32.c -index 02320e7a552..fedc87fa318 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s32 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32_t b) - { - return vcmpleq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s32 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32_t b) - { - return vcmpleq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s8.c -index a0ac97328b7..066dd808771 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s8 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8_t b) - { - return vcmpleq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s8 le, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8_t b) - { - return vcmpleq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s16.c -index 2fb4acd3d74..00872c3503c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s16 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16x8_t b) - { - return vcmpleq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s16 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16x8_t b) - { - return vcmpleq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s32.c -index 2ae998efb7c..8f595a0d24b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s32 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32x4_t b) - { - return vcmpleq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s32 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32x4_t b) - { - return vcmpleq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s8.c -index da06b019cc1..a827b9b6f5d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s8 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8x16_t b) - { - return vcmpleq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s8 le, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vcmpleq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_f16.c -index eab80b2ddd9..15855e1bbed 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_f16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f16 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16x8_t b) - { - return vcmpltq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f16 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16x8_t b) - { - return vcmpltq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_f32.c -index f17d16482dd..d11c9e2f1e5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_f32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f32 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32x4_t b) - { - return vcmpltq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f32 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32x4_t b) - { - return vcmpltq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_f16.c -index 93c36f3a613..efb525cacce 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_f16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmpltq_m_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmpltq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_f32.c -index a17f0b02a95..6c788202199 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_f32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmpltq_m_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmpltq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16-1.c -deleted file mode 100644 -index 62ab53fb2ef..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float16x8_t a, float16_t b, mve_pred16_t p) --{ -- return vcmpltq_m (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c -index 45d0f51b4d7..2b29d72bbf6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vcmpltq_m_n_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vcmpltq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float16x8_t a, mve_pred16_t p) -+{ -+ return vcmpltq_m (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32-1.c -deleted file mode 100644 -index 55886fccff1..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float32x4_t a, float32_t b, mve_pred16_t p) --{ -- return vcmpltq_m (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c -index 16e37ccaf8d..0c89d2982e5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vcmpltq_m_n_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vcmpltq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float32x4_t a, mve_pred16_t p) -+{ -+ return vcmpltq_m (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s16.c -index d0e322fbede..34984fa7772 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vcmpltq_m_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vcmpltq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s32.c -index 7ec7963267a..bb7c0a26bf1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vcmpltq_m_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vcmpltq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s8.c -index 22434e88cd6..035ce454073 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vcmpltq_m_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vcmpltq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s16.c -index 359c0640784..9776a4a64e9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcmpltq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s16 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcmpltq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s32.c -index 3df7e89a6f5..6a7459806ef 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcmpltq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s32 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcmpltq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s8.c -index 1055c2b661c..ca08e1dadf1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcmpltq_m_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.s8 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcmpltq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f16-1.c -deleted file mode 100644 -index cd95daea48c..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float16x8_t a, float16_t b) --{ -- return vcmpltq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c -index 2d55af20dd3..f9f091cd9b3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f16 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16_t b) - { - return vcmpltq_n_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f16 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16_t b) - { - return vcmpltq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.f16 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float16x8_t a) -+{ -+ return vcmpltq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f32-1.c -deleted file mode 100644 -index db76687d53e..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float32x4_t a, float32_t b) --{ -- return vcmpltq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c -index 2590ca83c45..d22ea1aca30 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f32 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32_t b) - { - return vcmpltq_n_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f32 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32_t b) - { - return vcmpltq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.f32 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float32x4_t a) -+{ -+ return vcmpltq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s16.c -index 169f6ad4610..4c9d1d3d887 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s16 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16_t b) - { - return vcmpltq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s16 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16_t b) - { - return vcmpltq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s32.c -index 534047c2df3..632c4aeca13 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s32 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32_t b) - { - return vcmpltq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s32 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32_t b) - { - return vcmpltq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s8.c -index da659f1f2be..1eabc2e70bd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s8 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8_t b) - { - return vcmpltq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s8 lt, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8_t b) - { - return vcmpltq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s16.c -index da4c90a07de..85117199a90 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s16 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16x8_t b) - { - return vcmpltq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s16 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16x8_t b) - { - return vcmpltq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s32.c -index 5dc218a5f40..11379cf7ff8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s32 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32x4_t b) - { - return vcmpltq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s32 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32x4_t b) - { - return vcmpltq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s8.c -index ea5853c212c..686ccd8eedb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.s8 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8x16_t b) - { - return vcmpltq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.s8 lt, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vcmpltq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_f16.c -index 8d1c6096c56..20d722ca649 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_f16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f16 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16x8_t b) - { - return vcmpneq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f16 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16x8_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_f32.c -index 860bd69c129..1e4dcde89b1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_f32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f32 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32x4_t b) - { - return vcmpneq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f32 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32x4_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_f16.c -index a4e62de7272..bafb7e8a956 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_f16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmpneq_m_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_f32.c -index b18a2e5fd88..168633d05c3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_f32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmpneq_m_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16-1.c -deleted file mode 100644 -index 30618e87101..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float16x8_t a, float16_t b, mve_pred16_t p) --{ -- return vcmpneq_m (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c -index c127b3a68f6..3b7951f4ee1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vcmpneq_m_n_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float16x8_t a, mve_pred16_t p) -+{ -+ return vcmpneq_m (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32-1.c -deleted file mode 100644 -index 4ecfda6d75c..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float32x4_t a, float32_t b, mve_pred16_t p) --{ -- return vcmpneq_m (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c -index a8423d45708..47b972cdeeb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vcmpneq_m_n_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.f32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float32x4_t a, mve_pred16_t p) -+{ -+ return vcmpneq_m (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s16.c -index 63ee1c3bffb..b16c6445942 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vcmpneq_m_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s32.c -index 10f6d448d76..2f8057050f1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vcmpneq_m_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s8.c -index 66e5d158c51..4637bd10d2e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vcmpneq_m_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u16.c -index ffe6ff919cf..90b23531f49 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u16.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vcmpneq_m_n_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint16x8_t a, mve_pred16_t p) -+{ -+ return vcmpneq_m (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u32.c -index 55e796a1138..c8b0c952730 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u32.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vcmpneq_m_n_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint32x4_t a, mve_pred16_t p) -+{ -+ return vcmpneq_m (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u8.c -index 3c8bd16647a..d458b9ad15b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u8.c -@@ -1,22 +1,71 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vcmpneq_m_n_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint8x16_t a, mve_pred16_t p) -+{ -+ return vcmpneq_m (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s16.c -index d3e1ce0e690..ea83993bd72 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcmpneq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s32.c -index f5602ffd0da..817060f8d73 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcmpneq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s8.c -index 84b8b1617b0..9c0473d228e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcmpneq_m_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u16.c -index 3c8943719bb..4f10b5a787e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcmpneq_m_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i16 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u32.c -index 980cc4124b2..ba440459d5d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcmpneq_m_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i32 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u8.c -index 2615dcb37b9..ffe091bd082 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcmpneq_m_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmpt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmpt.i8 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vcmpneq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f16-1.c -deleted file mode 100644 -index 75a0090fcdc..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float16x8_t a, float16_t b) --{ -- return vcmpneq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c -index e9e2a9c7b04..83beca964d6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float16x8_t a, float16_t b) - { - return vcmpneq_n_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float16x8_t a, float16_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f16" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.f16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float16x8_t a) -+{ -+ return vcmpneq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f32-1.c -deleted file mode 100644 -index 11ae14cff56..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --mve_pred16_t --foo1 (float32x4_t a, float32_t b) --{ -- return vcmpneq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c -index eb64b17969c..abe1abfed2a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.f32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (float32x4_t a, float32_t b) - { - return vcmpneq_n_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.f32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (float32x4_t a, float32_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.f32" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.f32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (float32x4_t a) -+{ -+ return vcmpneq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s16.c -index 14689242ee4..2e39b66b34c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16_t b) - { - return vcmpneq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s32.c -index 53418ff3923..9471935d96f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32_t b) - { - return vcmpneq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s8.c -index fa405c281b4..7d3d4ddd2c5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i8 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8_t b) - { - return vcmpneq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i8 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u16.c -index cc8540b3a6c..ca55fe2f76c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u16.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16_t b) - { - return vcmpneq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.i16 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint16x8_t a) -+{ -+ return vcmpneq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u32.c -index 07c9b1ade96..77bac757d68 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u32.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32_t b) - { - return vcmpneq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.i32 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint32x4_t a) -+{ -+ return vcmpneq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u8.c -index eac5e96384e..352afa798d1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u8.c -@@ -1,21 +1,59 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i8 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8_t b) - { - return vcmpneq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i8 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ -+/* -+**foo2: { xfail *-*-* } -+** ... -+** vcmp.i8 ne, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ -+mve_pred16_t -+foo2 (uint8x16_t a) -+{ -+ return vcmpneq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s16.c -index 6b04ce70ffc..a3b0572c011 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i16 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int16x8_t a, int16x8_t b) - { - return vcmpneq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i16 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int16x8_t a, int16x8_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s32.c -index cfb98d7e650..c6bf6ca82d7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i32 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int32x4_t a, int32x4_t b) - { - return vcmpneq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i32 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int32x4_t a, int32x4_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s8.c -index ae69be4ba0b..99b343b0427 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i8 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (int8x16_t a, int8x16_t b) - { - return vcmpneq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i8 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u16.c -index 51059f21191..d676d9b3c22 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i16 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint16x8_t a, uint16x8_t b) - { - return vcmpneq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i16 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u32.c -index 42e4a3f4f2d..56c39968035 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i32 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32x4_t a, uint32x4_t b) - { - return vcmpneq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i32 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u8.c -index addacc15833..f906574d5e4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmp.i8 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vcmpneq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ - -+/* -+**foo1: -+** ... -+** vcmp.i8 ne, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vcmpneq (a, b); - } - --/* { dg-final { scan-assembler "vcmp.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_f16.c -index 142c315ecf5..456370e1de1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmul.f16 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vcmulq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmul.f16 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vcmulq (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_f32.c -index 158d750793d..64db652a1a1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmul.f32 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vcmulq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmul.f32 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vcmulq (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_m_f16.c -index b38e0d9fb52..b60f5d718f8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_m_f32.c -index 7bf68735e52..22157d4e58f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_f16.c -index fc7162aaa9c..f01b0f3421f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmul.f16 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vcmulq_rot180_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmul.f16 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vcmulq_rot180 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_f32.c -index 13a4553b6bd..537385c5209 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmul.f32 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vcmulq_rot180_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmul.f32 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vcmulq_rot180 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f16.c -index 8767e2beee8..bc8692eb043 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_rot180_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_rot180_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f32.c -index 3f951039f35..d2a0b6d3f2c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_rot180_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_rot180_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f16.c -index f8e835f158f..37d7b79a75c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_rot180_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_rot180_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f32.c -index d0d30c59d44..1e57fba4bd3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_rot180_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #180(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_rot180_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_f16.c -index 225b8910f88..05c444af804 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmul.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vcmulq_rot270_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmul.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vcmulq_rot270 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_f32.c -index 1c8b0ebcf7e..b599c9fc171 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmul.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vcmulq_rot270_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmul.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vcmulq_rot270 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f16.c -index 20ccb5e9423..fded8a05089 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_rot270_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_rot270_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f32.c -index 7499f4271a6..54d939eb378 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_rot270_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_rot270_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f16.c -index d1b52e74d6d..d1e58cb84bb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_rot270_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_rot270_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f32.c -index 35da5936f66..07c781f5103 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_rot270_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_rot270_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_f16.c -index 17f96cb0a78..53b1930c045 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmul.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vcmulq_rot90_f16 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f16" } } */ - -+/* -+**foo1: -+** ... -+** vcmul.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vcmulq_rot90 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_f32.c -index 739fc9cd1fa..147f1807c29 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcmul.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vcmulq_rot90_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f32" } } */ - -+/* -+**foo1: -+** ... -+** vcmul.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vcmulq_rot90 (a, b); - } - --/* { dg-final { scan-assembler "vcmul.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f16.c -index 8259baa82cc..8c4b0902b09 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_rot90_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_rot90_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f32.c -index 751a9a6c03d..b3131a5e984 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_rot90_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_rot90_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f16.c -index c4aef6cbf30..000610367b9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_rot90_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_rot90_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f32.c -index 9c54f0870e7..8e31ad563c6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_rot90_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_rot90_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_x_f16.c -index 7634d61b6ea..b53324738f2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f16 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vcmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_x_f32.c -index 21b6acf9733..a73482a09e1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcmult.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcmult.f32 q[0-9]+, q[0-9]+, q[0-9]+, #0(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vcmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_f16.c -index fb3601edb94..8d6764d8938 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_f16.c -@@ -1,13 +1,42 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r0, r2 -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r1, r3 -+** ... -+*/ - float16x8_t - foo (uint64_t a, uint64_t b) - { - return vcreateq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vmov" } } */ -+/* -+**foo1: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r[0-9+], r[0-9+] -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r[0-9+], r[0-9+] -+** ... -+*/ -+float16x8_t -+foo1 () -+{ -+ return vcreateq_f16 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_f32.c -index 4f4da62eed7..6ab05ced809 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_f32.c -@@ -1,13 +1,42 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r0, r2 -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r1, r3 -+** ... -+*/ - float32x4_t - foo (uint64_t a, uint64_t b) - { - return vcreateq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vmov" } } */ -+/* -+**foo1: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r[0-9+], r[0-9+] -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r[0-9+], r[0-9+] -+** ... -+*/ -+float32x4_t -+foo1 () -+{ -+ return vcreateq_f32 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s16.c -index 103be6310bd..290637595a4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s16.c -@@ -1,13 +1,42 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r0, r2 -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r1, r3 -+** ... -+*/ - int16x8_t - foo (uint64_t a, uint64_t b) - { - return vcreateq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmov" } } */ -+/* -+**foo1: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r[0-9+], r[0-9+] -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r[0-9+], r[0-9+] -+** ... -+*/ -+int16x8_t -+foo1 () -+{ -+ return vcreateq_s16 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s32.c -index 96f7a972d93..4aeead1175e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s32.c -@@ -1,13 +1,42 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r0, r2 -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r1, r3 -+** ... -+*/ - int32x4_t - foo (uint64_t a, uint64_t b) - { - return vcreateq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmov" } } */ -+/* -+**foo1: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r[0-9+], r[0-9+] -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r[0-9+], r[0-9+] -+** ... -+*/ -+int32x4_t -+foo1 () -+{ -+ return vcreateq_s32 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s64.c -index 74c554506c0..9f6df427a8f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s64.c -@@ -1,13 +1,42 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r0, r2 -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r1, r3 -+** ... -+*/ - int64x2_t - foo (uint64_t a, uint64_t b) - { - return vcreateq_s64 (a, b); - } - --/* { dg-final { scan-assembler "vmov" } } */ -+/* -+**foo1: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r[0-9+], r[0-9+] -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r[0-9+], r[0-9+] -+** ... -+*/ -+int64x2_t -+foo1 () -+{ -+ return vcreateq_s64 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s8.c -index 03c50a0928a..196c147fb65 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s8.c -@@ -1,13 +1,42 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r0, r2 -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r1, r3 -+** ... -+*/ - int8x16_t - foo (uint64_t a, uint64_t b) - { - return vcreateq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vmov" } } */ -+/* -+**foo1: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r[0-9+], r[0-9+] -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r[0-9+], r[0-9+] -+** ... -+*/ -+int8x16_t -+foo1 () -+{ -+ return vcreateq_s8 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u16.c -index 411cec8471e..20b18e2ac15 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u16.c -@@ -1,13 +1,42 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r0, r2 -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r1, r3 -+** ... -+*/ - uint16x8_t - foo (uint64_t a, uint64_t b) - { - return vcreateq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vmov" } } */ -+/* -+**foo1: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r[0-9+], r[0-9+] -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r[0-9+], r[0-9+] -+** ... -+*/ -+uint16x8_t -+foo1 () -+{ -+ return vcreateq_u16 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u32.c -index 8bc8f60640e..febfd3bd782 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u32.c -@@ -1,13 +1,42 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r0, r2 -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r1, r3 -+** ... -+*/ - uint32x4_t - foo (uint64_t a, uint64_t b) - { - return vcreateq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vmov" } } */ -+/* -+**foo1: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r[0-9+], r[0-9+] -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r[0-9+], r[0-9+] -+** ... -+*/ -+uint32x4_t -+foo1 () -+{ -+ return vcreateq_u32 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u64.c -index e74641c32f3..5a49b346bf4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u64.c -@@ -1,13 +1,42 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r0, r2 -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r1, r3 -+** ... -+*/ - uint64x2_t - foo (uint64_t a, uint64_t b) - { - return vcreateq_u64 (a, b); - } - --/* { dg-final { scan-assembler "vmov" } } */ -+/* -+**foo1: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r[0-9+], r[0-9+] -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r[0-9+], r[0-9+] -+** ... -+*/ -+uint64x2_t -+foo1 () -+{ -+ return vcreateq_u64 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u8.c -index de79f471d63..c0ac5e51225 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u8.c -@@ -1,13 +1,42 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r0, r2 -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r1, r3 -+** ... -+*/ - uint8x16_t - foo (uint64_t a, uint64_t b) - { - return vcreateq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vmov" } } */ -+/* -+**foo1: -+** ... -+** vmov q[0-9+]\[2\], q[0-9+]\[0\], r[0-9+], r[0-9+] -+** vmov q[0-9+]\[3\], q[0-9+]\[1\], r[0-9+], r[0-9+] -+** ... -+*/ -+uint8x16_t -+foo1 () -+{ -+ return vcreateq_u8 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp16q.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp16q.c -index 2659f061cd9..1575966073d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp16q.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp16q.c -@@ -1,21 +1,44 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vctp.16 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32_t a) - { - return vctp16q (a); - } - --/* { dg-final { scan-assembler "vctp.16" } } */ -- -+/* -+**foo1: -+** ... -+** vctp.16 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t --foo1 (uint32_t a) -+foo1 () - { -- return vctp16q (a); -+ return vctp16q (1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vctp.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp16q_m.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp16q_m.c -index d901c9ece0d..a14fbe97f86 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp16q_m.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp16q_m.c -@@ -1,22 +1,52 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vctpt.16 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32_t a, mve_pred16_t p) - { - return vctp16q_m (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vctpt.16" } } */ -- -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vctpt.16 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t --foo1 (uint32_t a, mve_pred16_t p) -+foo1 (mve_pred16_t p) - { -- return vctp16q_m (a, p); -+ return vctp16q_m (1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp32q.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp32q.c -index f54ecc33e4a..c53b6190019 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp32q.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp32q.c -@@ -1,21 +1,44 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vctp.32 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32_t a) - { - return vctp32q (a); - } - --/* { dg-final { scan-assembler "vctp.32" } } */ -- -+/* -+**foo1: -+** ... -+** vctp.32 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t --foo1 (uint32_t a) -+foo1 () - { -- return vctp32q (a); -+ return vctp32q (1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vctp.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp32q_m.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp32q_m.c -index 3d2f101fb0c..6fa790d7039 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp32q_m.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp32q_m.c -@@ -1,22 +1,52 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vctpt.32 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32_t a, mve_pred16_t p) - { - return vctp32q_m (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vctpt.32" } } */ -- -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vctpt.32 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t --foo1 (uint32_t a, mve_pred16_t p) -+foo1 (mve_pred16_t p) - { -- return vctp32q_m (a, p); -+ return vctp32q_m (1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp64q.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp64q.c -index 8502ad3b600..dba63bae1a8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp64q.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp64q.c -@@ -1,21 +1,44 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vctp.64 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32_t a) - { - return vctp64q (a); - } - --/* { dg-final { scan-assembler "vctp.64" } } */ -- -+/* -+**foo1: -+** ... -+** vctp.64 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t --foo1 (uint32_t a) -+foo1 () - { -- return vctp64q (a); -+ return vctp64q (1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vctp.64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp64q_m.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp64q_m.c -index 6f3d1c21d01..1faf8a0063c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp64q_m.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp64q_m.c -@@ -1,22 +1,52 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vctpt.64 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32_t a, mve_pred16_t p) - { - return vctp64q_m (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vctpt.64" } } */ -- -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vctpt.64 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t --foo1 (uint32_t a, mve_pred16_t p) -+foo1 (mve_pred16_t p) - { -- return vctp64q_m (a, p); -+ return vctp64q_m (1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp8q.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp8q.c -index 91283f82db1..56267fd861d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp8q.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp8q.c -@@ -1,21 +1,44 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vctp.8 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32_t a) - { - return vctp8q (a); - } - --/* { dg-final { scan-assembler "vctp.8" } } */ -- -+/* -+**foo1: -+** ... -+** vctp.8 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t --foo1 (uint32_t a) -+foo1 () - { -- return vctp8q (a); -+ return vctp8q (1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vctp.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp8q_m.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp8q_m.c -index 2c640ba6801..937c33cbb83 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp8q_m.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp8q_m.c -@@ -1,22 +1,52 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vctpt.8 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (uint32_t a, mve_pred16_t p) - { - return vctp8q_m (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vctpt.8" } } */ -- -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vctpt.8 (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t --foo1 (uint32_t a, mve_pred16_t p) -+foo1 (mve_pred16_t p) - { -- return vctp8q_m (a, p); -+ return vctp8q_m (1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_s16_f16.c -index ad8b7d9eb06..fcf4cf817ff 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_s16_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtat.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtaq_m_s16_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtat.s16.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtat.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtaq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_s32_f32.c -index 5649e342d1a..8aa640de6ac 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_s32_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtat.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtaq_m_s32_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtat.s32.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtat.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtaq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_u16_f16.c -index b73c3418758..8fdd3c1b1b0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_u16_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtat.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtaq_m_u16_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtat.u16.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtat.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtaq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_u32_f32.c -index 56c04f9f782..246941e7523 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_m_u32_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtat.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtaq_m_u32_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtat.u32.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtat.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtaq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_s16_f16.c -index e2d70e8901f..c45ba6ccfbf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_s16_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvta.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (float16x8_t a) - { - return vcvtaq_s16_f16 (a); - } - --/* { dg-final { scan-assembler "vcvta.s16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_s32_f32.c -index d6fd45ae01e..baa20cc5f9a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_s32_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvta.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (float32x4_t a) - { - return vcvtaq_s32_f32 (a); - } - --/* { dg-final { scan-assembler "vcvta.s32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_u16_f16.c -index 8f3b12d9101..de4ea927385 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_u16_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvta.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (float16x8_t a) - { -- return vcvtaq_u16_f16 (a); -+ return vcvtaq_u16_f16 (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vcvta.u16.f16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_u32_f32.c -index 45e2916e288..93bf292980e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_u32_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvta.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (float32x4_t a) - { -- return vcvtaq_u32_f32 (a); -+ return vcvtaq_u32_f32 (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vcvta.u32.f32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_s16_f16.c -index 26ff128217e..b046b7ad94d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_s16_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtat.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvtaq_x_s16_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtat.s16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_s32_f32.c -index 3a79e3aecd4..77a740867be 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_s32_f32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtat.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vcvtaq_x_s32_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtat.s32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_u16_f16.c -index 1f26e7f52d4..b8a10822bdb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_u16_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtat.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvtaq_x_u16_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtat.u16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_u32_f32.c -index 987e524d789..51184231b7a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtaq_x_u32_f32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtat.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vcvtaq_x_u32_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtat.u32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_f16_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_f16_f32.c -index f45e07de375..76b76a2f66e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_f16_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_f16_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtb.f16.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float32x4_t b) - { - return vcvtbq_f16_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcvtb.f16.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_f32_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_f32_f16.c -index 39471a0a43b..347d4129b99 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_f32_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_f32_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtb.f32.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float16x8_t a) - { - return vcvtbq_f32_f16 (a); - } - --/* { dg-final { scan-assembler "vcvtb.f32.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_m_f16_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_m_f16_f32.c -index 6c8d9192417..0545d1e8e27 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_m_f16_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_m_f16_f32.c -@@ -1,22 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtbt.f16.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float32x4_t b, mve_pred16_t p) - { - return vcvtbq_m_f16_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtbt.f16.f32" } } */ -- --float16x8_t --foo1 (float16x8_t a, float32x4_t b, mve_pred16_t p) --{ -- return vcvtbq_m (a, b, p); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_m_f32_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_m_f32_f16.c -index 91775436e67..1b220ddfa19 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_m_f32_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_m_f32_f16.c -@@ -1,22 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtbt.f32.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtbq_m_f32_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtbt.f32.f16" } } */ -- --float32x4_t --foo1 (float32x4_t inactive, float16x8_t a, mve_pred16_t p) --{ -- return vcvtbq_m (inactive, a, p); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_x_f32_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_x_f32_f16.c -index 0dcdb19d1e4..2a3559d2522 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_x_f32_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtbq_x_f32_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtbt.f32.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvtbq_x_f32_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtbt.f32.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_s16_f16.c -index 75ff107ab15..b8f6ed855d6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_s16_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtmt.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtmq_m_s16_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtmt.s16.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtmt.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtmq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_s32_f32.c -index b364533e08d..61445594524 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_s32_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtmt.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtmq_m_s32_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtmt.s32.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtmt.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtmq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_u16_f16.c -index 249ef0e92b1..3e57ba58d0f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_u16_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtmt.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtmq_m_u16_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtmt.u16.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtmt.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtmq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_u32_f32.c -index 52ff77ca4c5..8b8a1565332 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_m_u32_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtmt.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtmq_m_u32_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtmt.u32.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtmt.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtmq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_s16_f16.c -index 70f43ddc220..4eafb5783b2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_s16_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtm.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (float16x8_t a) - { - return vcvtmq_s16_f16 (a); - } - --/* { dg-final { scan-assembler "vcvtm.s16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_s32_f32.c -index c2f62cf0717..bd3bfc1b4bd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_s32_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtm.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (float32x4_t a) - { - return vcvtmq_s32_f32 (a); - } - --/* { dg-final { scan-assembler "vcvtm.s32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_u16_f16.c -index 62e4acd73b5..a1917eaf11a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_u16_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtm.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (float16x8_t a) - { -- return vcvtmq_u16_f16 (a); -+ return vcvtmq_u16_f16 (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vcvtm.u16.f16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_u32_f32.c -index f7f59df1be9..c9f62479e85 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_u32_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtm.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (float32x4_t a) - { -- return vcvtmq_u32_f32 (a); -+ return vcvtmq_u32_f32 (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vcvtm.u32.f32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_s16_f16.c -index 22597fb9cb1..211c2d0df83 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_s16_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtmt.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvtmq_x_s16_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtmt.s16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_s32_f32.c -index 17a583c2641..7ca2cb6eb15 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_s32_f32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtmt.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vcvtmq_x_s32_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtmt.s32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_u16_f16.c -index b6e296f29ea..df212089bf5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_u16_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtmt.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvtmq_x_u16_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtmt.u16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_u32_f32.c -index 5f9909b5adb..8b5818fd029 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtmq_x_u32_f32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtmt.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vcvtmq_x_u32_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtmt.u32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_s16_f16.c -index a7c3b66a2eb..67fa9cb720d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_s16_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtnt.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtnq_m_s16_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtnt.s16.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtnt.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtnq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_s32_f32.c -index 38913a9e26c..26c0b09f7b5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_s32_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtnt.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtnq_m_s32_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtnt.s32.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtnt.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtnq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_u16_f16.c -index 42d9e5ea79c..ee2a64747a2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_u16_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtnt.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtnq_m_u16_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtnt.u16.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtnt.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtnq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_u32_f32.c -index 321fa35ceb3..cc61951abf5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_m_u32_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtnt.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtnq_m_u32_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtnt.u32.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtnt.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtnq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_s16_f16.c -index d66c058834e..39c00f6ed04 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_s16_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtn.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (float16x8_t a) - { - return vcvtnq_s16_f16 (a); - } - --/* { dg-final { scan-assembler "vcvtn.s16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_s32_f32.c -index 3dec6661411..c371598db24 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_s32_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtn.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (float32x4_t a) - { - return vcvtnq_s32_f32 (a); - } - --/* { dg-final { scan-assembler "vcvtn.s32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_u16_f16.c -index 07637e84bf7..17ae06a57be 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_u16_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtn.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (float16x8_t a) - { -- return vcvtnq_u16_f16 (a); -+ return vcvtnq_u16_f16 (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vcvtn.u16.f16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_u32_f32.c -index b6d5eb90493..4777b1b205a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_u32_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtn.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (float32x4_t a) - { - return vcvtnq_u32_f32 (a); - } - --/* { dg-final { scan-assembler "vcvtn.u32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_s16_f16.c -index f552d633231..a9c91831881 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_s16_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtnt.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvtnq_x_s16_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtnt.s16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_s32_f32.c -index c3aa2e3daed..2ffb1d98736 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_s32_f32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtnt.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vcvtnq_x_s32_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtnt.s32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_u16_f16.c -index 9d9d12f9f2c..ce2ceb108b2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_u16_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtnt.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvtnq_x_u16_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtnt.u16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_u32_f32.c -index e7df48de88d..c2c48ef1558 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtnq_x_u32_f32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtnt.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vcvtnq_x_u32_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtnt.u32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_s16_f16.c -index c613fc8883d..f09c78b77c2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_s16_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtpt.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtpq_m_s16_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtpt.s16.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtpt.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtpq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_s32_f32.c -index 7f4c7f600e5..7a3d7763406 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_s32_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtpt.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtpq_m_s32_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtpt.s32.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtpt.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtpq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_u16_f16.c -index 192891021f0..f82103ca831 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_u16_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtpt.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtpq_m_u16_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtpt.u16.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtpt.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtpq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_u32_f32.c -index 61858f7844a..7c848aa5157 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_m_u32_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtpt.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtpq_m_u32_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtpt.u32.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtpt.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtpq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_s16_f16.c -index 8615e50bbaa..87258346b53 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_s16_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtp.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (float16x8_t a) - { - return vcvtpq_s16_f16 (a); - } - --/* { dg-final { scan-assembler "vcvtp.s16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_s32_f32.c -index fed7a4b83f7..e4a7d0baaf1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_s32_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtp.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (float32x4_t a) - { - return vcvtpq_s32_f32 (a); - } - --/* { dg-final { scan-assembler "vcvtp.s32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_u16_f16.c -index 37d1411067f..94edfcb0244 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_u16_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtp.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (float16x8_t a) - { -- return vcvtpq_u16_f16 (a); -+ return vcvtpq_u16_f16 (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vcvtp.u16.f16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_u32_f32.c -index fcea4c51885..b84501ca72c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_u32_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtp.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (float32x4_t a) - { -- return vcvtpq_u32_f32 (a); -+ return vcvtpq_u32_f32 (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vcvtp.u32.f32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_s16_f16.c -index 5d550772bfc..2b51cc56867 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_s16_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtpt.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvtpq_x_s16_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtpt.s16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_s32_f32.c -index 31823ab9528..6c4d6655300 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_s32_f32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtpt.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vcvtpq_x_s32_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtpt.s32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_u16_f16.c -index 0d1808c0fe8..2e663c8a472 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_u16_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtpt.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvtpq_x_u16_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtpt.u16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_u32_f32.c -index d73df212942..2d32425fdbf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtpq_x_u32_f32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtpt.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vcvtpq_x_u32_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtpt.u32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f16_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f16_s16.c -index 560127b7c9f..9f1647c1ac8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f16_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f16_s16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.f16.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (int16x8_t a) - { - return vcvtq_f16_s16 (a); - } - --/* { dg-final { scan-assembler "vcvt.f16.s16" } } */ -+ -+/* -+**foo1: -+** ... -+** vcvt.f16.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (int16x8_t a) -+{ -+ return vcvtq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f16_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f16_u16.c -index f571c535778..6704626bd1e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f16_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f16_u16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.f16.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (uint16x8_t a) - { - return vcvtq_f16_u16 (a); - } - --/* { dg-final { scan-assembler "vcvt.f16.u16" } } */ -+ -+/* -+**foo1: -+** ... -+** vcvt.f16.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (uint16x8_t a) -+{ -+ return vcvtq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f32_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f32_s32.c -index 898c74bfba4..898126468d9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f32_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f32_s32.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.f32.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (int32x4_t a) - { - return vcvtq_f32_s32 (a); - } - --/* { dg-final { scan-assembler "vcvt.f32.s32" } } */ -+ -+/* -+**foo1: -+** ... -+** vcvt.f32.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (int32x4_t a) -+{ -+ return vcvtq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f32_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f32_u32.c -index a44add5d178..9e9aa1d703e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f32_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_f32_u32.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.f32.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (uint32x4_t a) - { - return vcvtq_f32_u32 (a); - } - --/* { dg-final { scan-assembler "vcvt.f32.u32" } } */ -+ -+/* -+**foo1: -+** ... -+** vcvt.f32.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (uint32x4_t a) -+{ -+ return vcvtq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f16_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f16_s16.c -index 45e9b045af6..b01a9a148c6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f16_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f16_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vcvtq_m_f16_s16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vcvtq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f16_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f16_u16.c -index b50f57234c3..805e26e72fd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f16_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f16_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vcvtq_m_f16_u16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vcvtq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f32_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f32_s32.c -index 4c1af180b58..7faa130fa3f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f32_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f32_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vcvtq_m_f32_s32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vcvtq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f32_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f32_u32.c -index 49acef80489..589d4efa61b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f32_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_f32_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { - return vcvtq_m_f32_u32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { - return vcvtq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_s16.c -index d5ba7a690a6..3e23f1d88d8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vcvtq_m_n_f16_s16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vcvtq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_u16.c -index e53d7fa6ef1..f6f309cba25 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vcvtq_m_n_f16_u16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vcvtq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_s32.c -index 58519c04ff4..e6ff2fd6f44 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vcvtq_m_n_f32_s32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vcvtq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_u32.c -index 782d1f9e259..7368f127aab 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { -- return vcvtq_m_n_f32_u32 (inactive, a, 16, p); -+ return vcvtq_m_n_f32_u32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { -- return vcvtq_m_n (inactive, a, 16, p); -+ return vcvtq_m_n (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_s16_f16.c -index cd3f373aa77..edfb01203dd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_s16_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.s16.f16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtq_m_n_s16_f16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.s16.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.s16.f16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.s16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_s32_f32.c -index d1ff5072223..8084160e7e9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_s32_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.s32.f32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtq_m_n_s32_f32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.s32.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.s32.f32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.s32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_u16_f16.c -index 4bf12e8b64e..1d217387ac6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_u16_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.u16.f16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtq_m_n_u16_f16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.u16.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.u16.f16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.u16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_u32_f32.c -index 4d0b1bf7a7f..868a1bcc1b8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_n_u32_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.u32.f32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtq_m_n_u32_f32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.u32.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.u32.f32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.u32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_s16_f16.c -index 606e43614ea..a998cdcb11a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_s16_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtq_m_s16_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.s16.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_s32_f32.c -index 2204e7929ec..fdaeac453a4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_s32_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtq_m_s32_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.s32.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_u16_f16.c -index 1f814251c4f..f168d371615 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_u16_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtq_m_u16_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.u16.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvtq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_u32_f32.c -index 13cd6f28884..83e5ae38106 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_m_u32_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtq_m_u32_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.u32.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vcvtq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f16_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f16_s16.c -index 565012e4e93..5c017221889 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f16_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f16_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.f16.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (int16x8_t a) - { - return vcvtq_n_f16_s16 (a, 1); - } - --/* { dg-final { scan-assembler "vcvt.f16.s16" } } */ - -+/* -+**foo1: -+** ... -+** vcvt.f16.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (int16x8_t a) - { - return vcvtq_n (a, 1); - } - --/* { dg-final { scan-assembler "vcvt.f16.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f16_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f16_u16.c -index 95acc29683f..1080a5a0309 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f16_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f16_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.f16.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (uint16x8_t a) - { - return vcvtq_n_f16_u16 (a, 1); - } - --/* { dg-final { scan-assembler "vcvt.f16.u16" } } */ - -+/* -+**foo1: -+** ... -+** vcvt.f16.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (uint16x8_t a) - { - return vcvtq_n (a, 1); - } - --/* { dg-final { scan-assembler "vcvt.f16.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f32_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f32_s32.c -index 5285099bc2a..020138b0084 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f32_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f32_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.f32.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (int32x4_t a) - { - return vcvtq_n_f32_s32 (a, 1); - } - --/* { dg-final { scan-assembler "vcvt.f32.s32" } } */ - -+/* -+**foo1: -+** ... -+** vcvt.f32.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (int32x4_t a) - { - return vcvtq_n (a, 1); - } - --/* { dg-final { scan-assembler "vcvt.f32.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f32_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f32_u32.c -index ad6335116bc..3f1c3c8c9e4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f32_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_f32_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.f32.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (uint32x4_t a) - { - return vcvtq_n_f32_u32 (a, 1); - } - --/* { dg-final { scan-assembler "vcvt.f32.u32" } } */ - -+/* -+**foo1: -+** ... -+** vcvt.f32.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (uint32x4_t a) - { - return vcvtq_n (a, 1); - } - --/* { dg-final { scan-assembler "vcvt.f32.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_s16_f16.c -index ed3dd1a87d6..d16c114e00b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_s16_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.s16.f16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (float16x8_t a) - { - return vcvtq_n_s16_f16 (a, 1); - } - --/* { dg-final { scan-assembler "vcvt.s16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_s32_f32.c -index e7f63f8cdd2..9256cb48a26 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_s32_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.s32.f32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (float32x4_t a) - { - return vcvtq_n_s32_f32 (a, 1); - } - --/* { dg-final { scan-assembler "vcvt.s32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_u16_f16.c -index ca2fdca9b49..1038af8f890 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_u16_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.u16.f16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (float16x8_t a) - { - return vcvtq_n_u16_f16 (a, 1); - } - --/* { dg-final { scan-assembler "vcvt.u16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_u32_f32.c -index 2919ea5b364..5c06365b320 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_n_u32_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.u32.f32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (float32x4_t a) - { - return vcvtq_n_u32_f32 (a, 1); - } - --/* { dg-final { scan-assembler "vcvt.u32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_s16_f16.c -index 8269bf949bf..ecec3727529 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_s16_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (float16x8_t a) - { - return vcvtq_s16_f16 (a); - } - --/* { dg-final { scan-assembler "vcvt.s16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_s32_f32.c -index 2af96d25917..9be17c0696c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_s32_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (float32x4_t a) - { - return vcvtq_s32_f32 (a); - } - --/* { dg-final { scan-assembler "vcvt.s32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_u16_f16.c -index afac0f4d414..3c33f2ce5b1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_u16_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (float16x8_t a) - { -- return vcvtq_u16_f16 (a); -+ return vcvtq_u16_f16 (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vcvt.u16.f16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_u32_f32.c -index 7380f73301a..8e70df955b9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_u32_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvt.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (float32x4_t a) - { -- return vcvtq_u32_f32 (a); -+ return vcvtq_u32_f32 (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vcvt.u32.f32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f16_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f16_s16.c -index c6b9c1005f5..73b368fdd4f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f16_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f16_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (int16x8_t a, mve_pred16_t p) - { - return vcvtq_x_f16_s16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (int16x8_t a, mve_pred16_t p) - { - return vcvtq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f16_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f16_u16.c -index d3ef02c1931..13d7fed2f5b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f16_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f16_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (uint16x8_t a, mve_pred16_t p) - { - return vcvtq_x_f16_u16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (uint16x8_t a, mve_pred16_t p) - { - return vcvtq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f32_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f32_s32.c -index fa73ad69ce5..d14099c87a6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f32_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f32_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (int32x4_t a, mve_pred16_t p) - { - return vcvtq_x_f32_s32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (int32x4_t a, mve_pred16_t p) - { - return vcvtq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f32_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f32_u32.c -index 99ca3881553..800d8aa8e8e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f32_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_f32_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (uint32x4_t a, mve_pred16_t p) - { - return vcvtq_x_f32_u32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (uint32x4_t a, mve_pred16_t p) - { - return vcvtq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_s16.c -index 718c83e74df..f91021d5735 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (int16x8_t a, mve_pred16_t p) - { - return vcvtq_x_n_f16_s16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (int16x8_t a, mve_pred16_t p) - { - return vcvtq_x_n (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_u16.c -index 510c29c383a..f4c444b5540 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (uint16x8_t a, mve_pred16_t p) - { - return vcvtq_x_n_f16_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f16.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (uint16x8_t a, mve_pred16_t p) - { - return vcvtq_x_n (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f16.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_s32.c -index 34f7cc1e061..7c11f1f0c34 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (int32x4_t a, mve_pred16_t p) - { - return vcvtq_x_n_f32_s32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (int32x4_t a, mve_pred16_t p) - { - return vcvtq_x_n (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_u32.c -index b5b20efc1b8..96a1d2c8876 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (uint32x4_t a, mve_pred16_t p) - { -- return vcvtq_x_n_f32_u32 (a, 16, p); -+ return vcvtq_x_n_f32_u32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.f32.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (uint32x4_t a, mve_pred16_t p) - { -- return vcvtq_x_n (a, 16, p); -+ return vcvtq_x_n (a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.f32.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_s16_f16.c -index 3c3343ae4e1..7c0f551d66f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_s16_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.s16.f16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvtq_x_n_s16_f16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.s16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_s32_f32.c -index 17ef866af39..c22eeb75a17 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_s32_f32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.s32.f32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vcvtq_x_n_s32_f32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.s32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_u16_f16.c -index 62e6f1638d5..7f07b0fac53 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_u16_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.u16.f16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvtq_x_n_u16_f16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.u16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_u32_f32.c -index 306e32016ff..7531db7d575 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_n_u32_f32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.u32.f32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vcvtq_x_n_u32_f32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.u32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_s16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_s16_f16.c -index 56867da3bb0..fd90d67b46c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_s16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_s16_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.s16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvtq_x_s16_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.s16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_s32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_s32_f32.c -index 4449bd68c54..e6cbbeaca2a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_s32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_s32_f32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.s32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vcvtq_x_s32_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.s32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_u16_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_u16_f16.c -index 580bb775c59..29d1d9d5c56 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_u16_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_u16_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.u16.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvtq_x_u16_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.u16.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_u32_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_u32_f32.c -index 3722de632e5..0181850d857 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_u32_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvtq_x_u32_f32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvtt.u32.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vcvtq_x_u32_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvtt.u32.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_f16_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_f16_f32.c -index 599e30e3d26..3c9a6844e01 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_f16_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_f16_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtt.f16.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float32x4_t b) - { - return vcvttq_f16_f32 (a, b); - } - --/* { dg-final { scan-assembler "vcvtt.f16.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_f32_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_f32_f16.c -index a4a7997d2dd..9d389382ae9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_f32_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_f32_f16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vcvtt.f32.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float16x8_t a) - { - return vcvttq_f32_f16 (a); - } - --/* { dg-final { scan-assembler "vcvtt.f32.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_m_f16_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_m_f16_f32.c -index 065974d7e76..2eeb670a5a2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_m_f16_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_m_f16_f32.c -@@ -1,22 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvttt.f16.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float32x4_t b, mve_pred16_t p) - { - return vcvttq_m_f16_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvttt.f16.f32" } } */ -- --float16x8_t --foo1 (float16x8_t a, float32x4_t b, mve_pred16_t p) --{ -- return vcvttq_m (a, b, p); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_m_f32_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_m_f32_f16.c -index 1eb69e4fee9..ba309114dae 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_m_f32_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_m_f32_f16.c -@@ -1,22 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvttt.f32.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float16x8_t a, mve_pred16_t p) - { - return vcvttq_m_f32_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvttt.f32.f16" } } */ -- --float32x4_t --foo1 (float32x4_t inactive, float16x8_t a, mve_pred16_t p) --{ -- return vcvttq_m (inactive, a, p); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_x_f32_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_x_f32_f16.c -index 921caba0e1b..29688a939dd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_x_f32_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_x_f32_f16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vcvttt.f32.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float16x8_t a, mve_pred16_t p) - { - return vcvttq_x_f32_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vcvttt.f32.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u16.c -index 7332711f6a7..86e6e0ed5c0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint32_t a, mve_pred16_t p) - { - return vddupq_m_n_u16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint32_t a, mve_pred16_t p) - { - return vddupq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, mve_pred16_t p) -+{ -+ return vddupq_m (inactive, 1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u32.c -index 54ad91f2803..c5aa5323edc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32_t a, mve_pred16_t p) - { -- return vddupq_m_n_u32 (inactive, a, 4, p); -+ return vddupq_m_n_u32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32_t a, mve_pred16_t p) - { -- return vddupq_m (inactive, a, 4, p); -+ return vddupq_m (inactive, a, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, mve_pred16_t p) -+{ -+ return vddupq_m (inactive, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u8.c -index 3746b5db6e5..e326a00062f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint32_t a, mve_pred16_t p) - { -- return vddupq_m_n_u8 (inactive, a, 4, p); -+ return vddupq_m_n_u8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint32_t a, mve_pred16_t p) - { -- return vddupq_m (inactive, a, 4, p); -+ return vddupq_m (inactive, a, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, mve_pred16_t p) -+{ -+ return vddupq_m (inactive, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u16.c -index 8b5d9e86469..2a907417b40 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint32_t *a, mve_pred16_t p) - { - return vddupq_m_wb_u16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint32_t *a, mve_pred16_t p) - { - return vddupq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, mve_pred16_t p) -+{ -+ return vddupq_m (inactive, 1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u32.c -index 7a8c363ac70..ffaf3734923 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32_t *a, mve_pred16_t p) - { -- return vddupq_m_wb_u32 (inactive, a, 4, p); -+ return vddupq_m_wb_u32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32_t *a, mve_pred16_t p) - { -- return vddupq_m (inactive, a, 4, p); -+ return vddupq_m (inactive, a, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, mve_pred16_t p) -+{ -+ return vddupq_m (inactive, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u8.c -index 45784a5c9cd..ae7a4e25fe2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint32_t *a, mve_pred16_t p) - { -- return vddupq_m_wb_u8 (inactive, a, 4, p); -+ return vddupq_m_wb_u8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint32_t *a, mve_pred16_t p) - { -- return vddupq_m (inactive, a, 4, p); -+ return vddupq_m (inactive, a, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, mve_pred16_t p) -+{ -+ return vddupq_m (inactive, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u16.c -index 4684e2af553..dbaf372e446 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vddup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint32_t a) - { -- return vddupq_n_u16 (a, 4); -+ return vddupq_n_u16 (a, 1); - } - --/* { dg-final { scan-assembler "vddup.u16" } } */ - -+/* -+**foo1: -+** ... -+** vddup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint32_t a) - { -- return vddupq_u16 (a, 4); -+ return vddupq_u16 (a, 1); -+} -+ -+/* -+**foo2: -+** ... -+** vddup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 () -+{ -+ return vddupq_u16 (1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vddup.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u32.c -index aeaa83eb6bc..cf932541023 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vddup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t a) - { - return vddupq_n_u32 (a, 1); - } - --/* { dg-final { scan-assembler "vddup.u32" } } */ - -+/* -+**foo1: -+** ... -+** vddup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32_t a) - { - return vddupq_u32 (a, 1); - } - --/* { dg-final { scan-assembler "vddup.u32" } } */ -+/* -+**foo2: -+** ... -+** vddup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 () -+{ -+ return vddupq_u32 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u8.c -index 255a9f80b6b..60088880776 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vddup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint32_t a) - { - return vddupq_n_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vddup.u8" } } */ - -+/* -+**foo1: -+** ... -+** vddup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint32_t a) - { - return vddupq_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vddup.u8" } } */ -+/* -+**foo2: -+** ... -+** vddup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 () -+{ -+ return vddupq_u8 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u16.c -index 40fc6cf2197..6c54e325155 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vddup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint32_t *a) - { -- return vddupq_wb_u16 (a, 4); -+ return vddupq_wb_u16 (a, 1); - } - --/* { dg-final { scan-assembler "vddup.u16" } } */ - -+/* -+**foo1: -+** ... -+** vddup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint32_t *a) - { -- return vddupq_u16 (a, 4); -+ return vddupq_u16 (a, 1); -+} -+ -+/* -+**foo2: -+** ... -+** vddup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 () -+{ -+ return vddupq_u16 (1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vddup.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u32.c -index 09b5b1f2f80..a8de90f7b12 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vddup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t *a) - { - return vddupq_wb_u32 (a, 1); - } - --/* { dg-final { scan-assembler "vddup.u32" } } */ - -+/* -+**foo1: -+** ... -+** vddup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32_t *a) - { - return vddupq_u32 (a, 1); - } - --/* { dg-final { scan-assembler "vddup.u32" } } */ -+/* -+**foo2: -+** ... -+** vddup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 () -+{ -+ return vddupq_u32 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u8.c -index 00dfa906748..5a90e069b1d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vddup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint32_t *a) - { - return vddupq_wb_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vddup.u8" } } */ - -+/* -+**foo1: -+** ... -+** vddup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint32_t *a) - { - return vddupq_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vddup.u8" } } */ -+/* -+**foo2: -+** ... -+** vddup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 () -+{ -+ return vddupq_u8 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u16.c -index 5b0fc0b6340..12e13ad5af7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint32_t a, mve_pred16_t p) - { - return vddupq_x_n_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint32_t a, mve_pred16_t p) - { - return vddupq_x_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (mve_pred16_t p) -+{ -+ return vddupq_x_u16 (1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u32.c -index 66def991b65..ebe7270f28d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t a, mve_pred16_t p) - { -- return vddupq_x_n_u32 (a, 4, p); -+ return vddupq_x_n_u32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32_t a, mve_pred16_t p) - { -- return vddupq_x_u32 (a, 4, p); -+ return vddupq_x_u32 (a, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (mve_pred16_t p) -+{ -+ return vddupq_x_u32 (1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u8.c -index 8ac322ed52d..d53d45fc852 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint32_t a, mve_pred16_t p) - { -- return vddupq_x_n_u8 (a, 4, p); -+ return vddupq_x_n_u8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint32_t a, mve_pred16_t p) - { -- return vddupq_x_u8 (a, 4, p); -+ return vddupq_x_u8 (a, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (mve_pred16_t p) -+{ -+ return vddupq_x_u8 (1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u16.c -index 030048f840a..dab65e08320 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u16.c -@@ -1,25 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - --uint32_t *a; -+#ifdef __cplusplus -+extern "C" { -+#endif - -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo (mve_pred16_t p) -+foo (uint32_t *a, mve_pred16_t p) - { -- return vddupq_x_wb_u16 (a, 2, p); -+ return vddupq_x_wb_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (mve_pred16_t p) -+foo1 (uint32_t *a, mve_pred16_t p) - { -- return vddupq_x_u16 (a, 2, p); -+ return vddupq_x_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (mve_pred16_t p) -+{ -+ return vddupq_x_u16 (1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u32.c -index 95bf28e4052..c7abcaef942 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u32.c -@@ -1,25 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - --uint32_t *a; -+#ifdef __cplusplus -+extern "C" { -+#endif - -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (mve_pred16_t p) -+foo (uint32_t *a, mve_pred16_t p) - { -- return vddupq_x_wb_u32 (a, 8, p); -+ return vddupq_x_wb_u32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (mve_pred16_t p) -+foo1 (uint32_t *a, mve_pred16_t p) - { -- return vddupq_x_u32 (a, 8, p); -+ return vddupq_x_u32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (mve_pred16_t p) -+{ -+ return vddupq_x_u32 (1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u8.c -index 2fe81dded55..d2c299d4e3f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u8.c -@@ -1,25 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - --uint32_t *a; -+#ifdef __cplusplus -+extern "C" { -+#endif - -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo (mve_pred16_t p) -+foo (uint32_t *a, mve_pred16_t p) - { -- return vddupq_x_wb_u8 (a, 8, p); -+ return vddupq_x_wb_u8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (mve_pred16_t p) -+foo1 (uint32_t *a, mve_pred16_t p) - { -- return vddupq_x_u8 (a, 8, p); -+ return vddupq_x_u8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vddupt.u8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vddupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (mve_pred16_t p) -+{ -+ return vddupq_x_u8 (1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_f16.c -index 0b749be3527..df7438bf0a0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_f16.c -@@ -1,22 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16_t a, mve_pred16_t p) - { - return vdupq_m_n_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16_t a, mve_pred16_t p) - { - return vdupq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t inactive, mve_pred16_t p) -+{ -+ return vdupq_m (inactive, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_f32.c -index 9cca5310c7a..6397b902705 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_f32.c -@@ -1,22 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32_t a, mve_pred16_t p) - { - return vdupq_m_n_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32_t a, mve_pred16_t p) - { - return vdupq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t inactive, mve_pred16_t p) -+{ -+ return vdupq_m (inactive, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s16.c -index b521f13e94f..bf05c73fc1d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16_t a, mve_pred16_t p) - { - return vdupq_m_n_s16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16_t a, mve_pred16_t p) - { - return vdupq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s32.c -index 96aa195dc18..71789bb620e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32_t a, mve_pred16_t p) - { - return vdupq_m_n_s32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32_t a, mve_pred16_t p) - { - return vdupq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s8.c -index f1d222000c1..48c4fbd1f82 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8_t a, mve_pred16_t p) - { - return vdupq_m_n_s8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8_t a, mve_pred16_t p) - { - return vdupq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u16.c -index 39d0c9f502d..511be48ebae 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u16.c -@@ -1,22 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16_t a, mve_pred16_t p) - { - return vdupq_m_n_u16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16_t a, mve_pred16_t p) - { - return vdupq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, mve_pred16_t p) -+{ -+ return vdupq_m (inactive, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u32.c -index fc107172e16..f3a2c25f5ab 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u32.c -@@ -1,22 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32_t a, mve_pred16_t p) - { - return vdupq_m_n_u32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32_t a, mve_pred16_t p) - { - return vdupq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, mve_pred16_t p) -+{ -+ return vdupq_m (inactive, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u8.c -index 9fd3bc443cb..a99d8f3d86b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u8.c -@@ -1,22 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8_t a, mve_pred16_t p) - { - return vdupq_m_n_u8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8_t a, mve_pred16_t p) - { - return vdupq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, mve_pred16_t p) -+{ -+ return vdupq_m (inactive, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_f16.c -index 62bfc194533..44112190fb8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_f16.c -@@ -1,13 +1,40 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdup.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16_t a) - { - return vdupq_n_f16 (a); - } - --/* { dg-final { scan-assembler "vdup.16" } } */ -+/* -+**foo1: -+** ... -+** vdup.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 () -+{ -+ return vdupq_n_f16 (1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_f32.c -index f5ad2286d8d..059e3e42dd0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_f32.c -@@ -1,13 +1,40 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdup.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32_t a) - { - return vdupq_n_f32 (a); - } - --/* { dg-final { scan-assembler "vdup.32" } } */ -+/* -+**foo1: -+** ... -+** vdup.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 () -+{ -+ return vdupq_n_f32 (1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s16.c -index 1378522a18e..d8ba299cb15 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s16.c -@@ -1,13 +1,28 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdup.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16_t a) - { - return vdupq_n_s16 (a); - } - --/* { dg-final { scan-assembler "vdup.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s32.c -index 43affe856c0..a81c6d1e220 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s32.c -@@ -1,13 +1,28 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdup.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32_t a) - { - return vdupq_n_s32 (a); - } - --/* { dg-final { scan-assembler "vdup.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s8.c -index 3f934dc5d59..b0bac4fce89 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s8.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdup.8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8_t a) - { - return vdupq_n_s8 (a); - } - --/* { dg-final { scan-assembler "vdup.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u16.c -index 93268643fec..55e0a601110 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u16.c -@@ -1,13 +1,40 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdup.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16_t a) - { -- return vdupq_n_u16 (a); -+ return vdupq_n_u16 (a); -+} -+ -+/* -+**foo1: -+** ... -+** vdup.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo1 () -+{ -+ return vdupq_n_u16 (1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vdup.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u32.c -index 276e9ddc67f..bf73bc17fc7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u32.c -@@ -1,13 +1,40 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdup.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t a) - { -- return vdupq_n_u32 (a); -+ return vdupq_n_u32 (a); -+} -+ -+/* -+**foo1: -+** ... -+** vdup.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo1 () -+{ -+ return vdupq_n_u32 (1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vdup.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u8.c -index d0361c15047..48cbdb2a1da 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u8.c -@@ -1,13 +1,40 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdup.8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8_t a) - { -- return vdupq_n_u8 (a); -+ return vdupq_n_u8 (a); -+} -+ -+/* -+**foo1: -+** ... -+** vdup.8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo1 () -+{ -+ return vdupq_n_u8 (1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vdup.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_f16.c -index c91ee62791c..7821e365293 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_f16.c -@@ -1,14 +1,48 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16_t a, mve_pred16_t p) - { - return vdupq_x_n_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.16" } } */ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (mve_pred16_t p) -+{ -+ return vdupq_x_n_f16 (1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_f32.c -index c2b39051f5b..af82b3ebdbc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_f32.c -@@ -1,14 +1,48 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32_t a, mve_pred16_t p) - { - return vdupq_x_n_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.32" } } */ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (mve_pred16_t p) -+{ -+ return vdupq_x_n_f32 (1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s16.c -index cc8a5bfeca1..6756502ab21 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16_t a, mve_pred16_t p) - { - return vdupq_x_n_s16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s32.c -index b3ed3eb68e8..b04afb3834b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32_t a, mve_pred16_t p) - { - return vdupq_x_n_s32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s8.c -index 3be865dcc84..b23facd5e94 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s8.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8_t a, mve_pred16_t p) - { - return vdupq_x_n_s8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u16.c -index d01338aeb91..62dc42c6eae 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u16.c -@@ -1,14 +1,48 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16_t a, mve_pred16_t p) - { - return vdupq_x_n_u16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.16" } } */ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo1 (mve_pred16_t p) -+{ -+ return vdupq_x_n_u16 (1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u32.c -index 8fa7d4552bc..098fdfbd233 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u32.c -@@ -1,14 +1,48 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t a, mve_pred16_t p) - { - return vdupq_x_n_u32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.32" } } */ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo1 (mve_pred16_t p) -+{ -+ return vdupq_x_n_u32 (1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u8.c -index 96ad899c9c2..02a4253e74a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u8.c -@@ -1,14 +1,48 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8_t a, mve_pred16_t p) - { - return vdupq_x_n_u8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdupt.8" } } */ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdupt.8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo1 (mve_pred16_t p) -+{ -+ return vdupq_x_n_u8 (1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c -index 5303fd7d361..dc4dbb9f432 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_m (inactive, a, b, 1, p); -+ return vdwdupq_m_n_u16 (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) - { - return vdwdupq_m (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, mve_pred16_t p) -+{ -+ return vdwdupq_m (inactive, 1, 1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c -index 9f22bd7f852..edfc4c464be 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_m (inactive, a, b, 4, p); -+ return vdwdupq_m_n_u32 (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_m (inactive, a, b, 4, p); -+ return vdwdupq_m (inactive, a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, mve_pred16_t p) -+{ -+ return vdwdupq_m (inactive, 1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c -index 0591e731958..009048fdb05 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_m (inactive, a, b, 4, p); -+ return vdwdupq_m_n_u8 (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_m (inactive, a, b, 4, p); -+ return vdwdupq_m (inactive, a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, mve_pred16_t p) -+{ -+ return vdwdupq_m (inactive, 1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c -index e4e7b47e082..b24e7a2f5af 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16x8_t inactive, uint32_t * a, uint32_t b, mve_pred16_t p) -+foo (uint16x8_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_m (inactive, a, b, 8, p); -+ return vdwdupq_m_wb_u16 (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint16x8_t inactive, uint32_t * a, uint32_t b, mve_pred16_t p) -+foo1 (uint16x8_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_m (inactive, a, b, 8, p); -+ return vdwdupq_m (inactive, a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, mve_pred16_t p) -+{ -+ return vdwdupq_m (inactive, 1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c -index 42917dc9886..75c41450a38 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t inactive, uint32_t * a, uint32_t b, mve_pred16_t p) -+foo (uint32x4_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_m (inactive, a, b, 1, p); -+ return vdwdupq_m_wb_u32 (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t inactive, uint32_t * a, uint32_t b, mve_pred16_t p) -+foo1 (uint32x4_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) - { - return vdwdupq_m (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, mve_pred16_t p) -+{ -+ return vdwdupq_m (inactive, 1, 1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c -index 32c3153ffb3..90d64671dcf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint8x16_t inactive, uint32_t * a, uint32_t b, mve_pred16_t p) -+foo (uint8x16_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_m (inactive, a, b, 2, p); -+ return vdwdupq_m_wb_u8 (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint8x16_t inactive, uint32_t * a, uint32_t b, mve_pred16_t p) -+foo1 (uint8x16_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_m (inactive, a, b, 2, p); -+ return vdwdupq_m (inactive, a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, mve_pred16_t p) -+{ -+ return vdwdupq_m (inactive, 1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c -index 725a6e4bc0e..6235b1422b1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint32_t a, uint32_t b) - { -- return vdwdupq_n_u16 (a, b, 2); -+ return vdwdupq_n_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vdwdup.u16" } } */ - -+/* -+**foo1: -+** ... -+** vdwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint32_t a, uint32_t b) - { -- return vdwdupq_u16 (a, b, 2); -+ return vdwdupq_u16 (a, b, 1); -+} -+ -+/* -+**foo2: -+** ... -+** vdwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 () -+{ -+ return vdwdupq_u16 (1, 1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vdwdup.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c -index 6ceaadb984d..b6ce427015a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t a, uint32_t b) - { -- return vdwdupq_n_u32 (a, b, 8); -+ return vdwdupq_n_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vdwdup.u32" } } */ - -+/* -+**foo1: -+** ... -+** vdwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32_t a, uint32_t b) - { -- return vdwdupq_u32 (a, b, 8); -+ return vdwdupq_u32 (a, b, 1); -+} -+ -+/* -+**foo2: -+** ... -+** vdwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 () -+{ -+ return vdwdupq_u32 (1, 1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vdwdup.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c -index a1712e418be..bec1eb5165d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint32_t a, uint32_t b) - { -- return vdwdupq_n_u8 (a, b, 4); -+ return vdwdupq_n_u8 (a, b, 1); - } - --/* { dg-final { scan-assembler "vdwdup.u8" } } */ - -+/* -+**foo1: -+** ... -+** vdwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint32_t a, uint32_t b) - { -- return vdwdupq_u8 (a, b, 4); -+ return vdwdupq_u8 (a, b, 1); -+} -+ -+/* -+**foo2: -+** ... -+** vdwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 () -+{ -+ return vdwdupq_u8 (1, 1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vdwdup.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c -index 0164ea9502c..87af2b6817a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint32_t *a, uint32_t b) - { -- return vdwdupq_wb_u16 (a, b, 2); -+ return vdwdupq_wb_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vdwdup.u16" } } */ - -+/* -+**foo1: -+** ... -+** vdwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint32_t *a, uint32_t b) - { -- return vdwdupq_u16 (a, b, 2); -+ return vdwdupq_u16 (a, b, 1); -+} -+ -+/* -+**foo2: -+** ... -+** vdwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 () -+{ -+ return vdwdupq_u16 (1, 1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vdwdup.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c -index 7681371b016..ec136dc3222 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t *a, uint32_t b) - { -- return vdwdupq_wb_u32 (a, b, 8); -+ return vdwdupq_wb_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vdwdup.u32" } } */ - -+/* -+**foo1: -+** ... -+** vdwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32_t *a, uint32_t b) - { -- return vdwdupq_u32 (a, b, 8); -+ return vdwdupq_u32 (a, b, 1); -+} -+ -+/* -+**foo2: -+** ... -+** vdwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 () -+{ -+ return vdwdupq_u32 (1, 1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vdwdup.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c -index 6f60bb09b24..3653d00bc5d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vdwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint32_t *a, uint32_t b) - { -- return vdwdupq_wb_u8 (a, b, 4); -+ return vdwdupq_wb_u8 (a, b, 1); - } - --/* { dg-final { scan-assembler "vdwdup.u8" } } */ - -+/* -+**foo1: -+** ... -+** vdwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint32_t *a, uint32_t b) - { -- return vdwdupq_u8 (a, b, 4); -+ return vdwdupq_u8 (a, b, 1); -+} -+ -+/* -+**foo2: -+** ... -+** vdwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 () -+{ -+ return vdwdupq_u8 (1, 1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vdwdup.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c -index ce975267531..e9ef2df77c8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint32_t a, uint32_t b, mve_pred16_t p) - { - return vdwdupq_x_n_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint32_t a, uint32_t b, mve_pred16_t p) - { - return vdwdupq_x_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (mve_pred16_t p) -+{ -+ return vdwdupq_x_u16 (1, 1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c -index 9ed75d292d8..6cc1582c22b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_x_n_u32 (a, b, 4, p); -+ return vdwdupq_x_n_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32_t a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_x_u32 (a, b, 4, p); -+ return vdwdupq_x_u32 (a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (mve_pred16_t p) -+{ -+ return vdwdupq_x_u32 (1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c -index 3705094c4df..3216d250aa4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint32_t a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_x_n_u8 (a, b, 4, p); -+ return vdwdupq_x_n_u8 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint32_t a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_x_u8 (a, b, 4, p); -+ return vdwdupq_x_u8 (a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (mve_pred16_t p) -+{ -+ return vdwdupq_x_u8 (1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c -index caf744d7255..e9d994ccfc5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint32_t * a, uint32_t b, mve_pred16_t p) -+foo (uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_x_wb_u16 (a, b, 8, p); -+ return vdwdupq_x_wb_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint32_t * a, uint32_t b, mve_pred16_t p) -+foo1 (uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_x_u16 (a, b, 8, p); -+ return vdwdupq_x_u16 (a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (mve_pred16_t p) -+{ -+ return vdwdupq_x_u16 (1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c -index 8c8be86bce6..07438b02351 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32_t * a, uint32_t b, mve_pred16_t p) -+foo (uint32_t *a, uint32_t b, mve_pred16_t p) - { - return vdwdupq_x_wb_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32_t * a, uint32_t b, mve_pred16_t p) -+foo1 (uint32_t *a, uint32_t b, mve_pred16_t p) - { - return vdwdupq_x_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (mve_pred16_t p) -+{ -+ return vdwdupq_x_u32 (1, 1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c -index 1c6ef4ed33f..96280225351 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint32_t * a, uint32_t b, mve_pred16_t p) -+foo (uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_x_wb_u8 (a, b, 2, p); -+ return vdwdupq_x_wb_u8 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint32_t * a, uint32_t b, mve_pred16_t p) -+foo1 (uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return vdwdupq_x_u8 (a, b, 2, p); -+ return vdwdupq_x_u8 (a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vdwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (mve_pred16_t p) -+{ -+ return vdwdupq_x_u8 (1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vdwdupt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_f16.c -index 90cd663c7f3..0c27a1c5664 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return veorq_f16 (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ - -+/* -+**foo1: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return veorq (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_f32.c -index e9ad87a9796..cbf67e335ef 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return veorq_f32 (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ - -+/* -+**foo1: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return veorq (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_f16.c -index a39d680e0cd..5d9831f8d34 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return veorq_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return veorq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_f32.c -index a5dbfc4725e..ea992de1fbc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return veorq_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return veorq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_s16.c -index 9ab271ac987..f2b8b91aa13 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return veorq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return veorq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_s32.c -index 45d5074e32b..c9573f732aa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return veorq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return veorq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_s8.c -index 5b8ac0a286e..86cb8ed31c8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return veorq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return veorq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_u16.c -index e436a9e6536..7b2b1ea1596 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return veorq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return veorq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_u32.c -index 631abb515fd..3d3b2bbb4e6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return veorq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return veorq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_u8.c -index ba65042f986..7d2baba6e8e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return veorq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return veorq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_s16.c -index b49e35c887f..8275da1d7fe 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return veorq_s16 (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ - -+/* -+**foo1: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return veorq (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_s32.c -index 9b6414b8458..ea111b4256d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return veorq_s32 (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ - -+/* -+**foo1: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return veorq (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_s8.c -index 4a18bf5a165..f40dddcbb6e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return veorq_s8 (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ - -+/* -+**foo1: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return veorq (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_u16.c -index 90d5a5a6021..f16ddc14e09 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return veorq_u16 (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ - -+/* -+**foo1: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return veorq (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_u32.c -index b6103d68638..33213c53aa7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return veorq_u32 (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ - -+/* -+**foo1: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return veorq (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_u8.c -index 86fccc1bef0..aba155b1023 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return veorq_u8 (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ - -+/* -+**foo1: -+** ... -+** veor q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return veorq (a, b); - } - --/* { dg-final { scan-assembler "veor" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_f16.c -index eb9e44cb777..8eac5ee6ae0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return veorq_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return veorq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_f32.c -index 3503250e5c3..3e71870daf0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return veorq_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return veorq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_s16.c -index 837210bb609..fd032647117 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return veorq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return veorq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_s32.c -index 93796e333ab..ec67ddc761b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return veorq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return veorq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_s8.c -index ed88d43834d..35a1dfdab8a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return veorq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return veorq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_u16.c -index e6e82d8076d..7aad6d6f5c1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return veorq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return veorq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_u32.c -index 17393d80233..315241581f8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return veorq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return veorq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_u8.c -index 027968dab2d..615b1e645b1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_x_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return veorq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** veort q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return veorq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "veort" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_f16.c -index 8c926bdf1c3..18a184a0e98 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vfma.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16x8_t a, float16x8_t b, float16x8_t c) -+foo (float16x8_t add, float16x8_t m1, float16x8_t m2) - { -- return vfmaq_f16 (a, b, c); -+ return vfmaq_f16 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vfma.f16" } } */ - -+/* -+**foo1: -+** ... -+** vfma.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16x8_t a, float16x8_t b, float16x8_t c) -+foo1 (float16x8_t add, float16x8_t m1, float16x8_t m2) - { -- return vfmaq (a, b, c); -+ return vfmaq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vfma.f16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_f32.c -index c2fff9a43ea..5d67439b11e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vfma.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32x4_t a, float32x4_t b, float32x4_t c) -+foo (float32x4_t add, float32x4_t m1, float32x4_t m2) - { -- return vfmaq_f32 (a, b, c); -+ return vfmaq_f32 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vfma.f32" } } */ - -+/* -+**foo1: -+** ... -+** vfma.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32x4_t a, float32x4_t b, float32x4_t c) -+foo1 (float32x4_t add, float32x4_t m1, float32x4_t m2) - { -- return vfmaq (a, b, c); -+ return vfmaq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vfma.f32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_f16.c -index e8453e0cb41..e094cba8acb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmat.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16x8_t a, float16x8_t b, float16x8_t c, mve_pred16_t p) -+foo (float16x8_t add, float16x8_t m1, float16x8_t m2, mve_pred16_t p) - { -- return vfmaq_m_f16 (a, b, c, p); -+ return vfmaq_m_f16 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmat.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmat.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16x8_t a, float16x8_t b, float16x8_t c, mve_pred16_t p) -+foo1 (float16x8_t add, float16x8_t m1, float16x8_t m2, mve_pred16_t p) - { -- return vfmaq_m (a, b, c, p); -+ return vfmaq_m (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmat.f16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_f32.c -index 9d1844eba5a..3003eff236a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmat.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32x4_t a, float32x4_t b, float32x4_t c, mve_pred16_t p) -+foo (float32x4_t add, float32x4_t m1, float32x4_t m2, mve_pred16_t p) - { -- return vfmaq_m_f32 (a, b, c, p); -+ return vfmaq_m_f32 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmat.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmat.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32x4_t a, float32x4_t b, float32x4_t c, mve_pred16_t p) -+foo1 (float32x4_t add, float32x4_t m1, float32x4_t m2, mve_pred16_t p) - { -- return vfmaq_m (a, b, c, p); -+ return vfmaq_m (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmat.f32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16-1.c -deleted file mode 100644 -index e47ae6d8e3b..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16x8_t a, float16x8_t b, float16_t c, mve_pred16_t p) --{ -- return vfmaq_m (a, b, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16.c -index 888016e8164..4603f038467 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmat.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16x8_t a, float16x8_t b, float16_t c, mve_pred16_t p) -+foo (float16x8_t add, float16x8_t m1, float16_t m2, mve_pred16_t p) - { -- return vfmaq_m_n_f16 (a, b, c, p); -+ return vfmaq_m_n_f16 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmat.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmat.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16x8_t a, float16x8_t b, float16_t c, mve_pred16_t p) -+foo1 (float16x8_t add, float16x8_t m1, float16_t m2, mve_pred16_t p) - { -- return vfmaq_m (a, b, c, p); -+ return vfmaq_m (add, m1, m2, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmat.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t add, float16x8_t m1, mve_pred16_t p) -+{ -+ return vfmaq_m (add, m1, 1.1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmat.f16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32-1.c -deleted file mode 100644 -index 78c39f0b2c9..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32x4_t a, float32x4_t b, float32_t c, mve_pred16_t p) --{ -- return vfmaq_m (a, b, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32.c -index f9afc8845b0..ad0ff907810 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmat.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32x4_t a, float32x4_t b, float32_t c, mve_pred16_t p) -+foo (float32x4_t add, float32x4_t m1, float32_t m2, mve_pred16_t p) - { -- return vfmaq_m_n_f32 (a, b, c, p); -+ return vfmaq_m_n_f32 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmat.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmat.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32x4_t a, float32x4_t b, float32_t c, mve_pred16_t p) -+foo1 (float32x4_t add, float32x4_t m1, float32_t m2, mve_pred16_t p) - { -- return vfmaq_m (a, b, c, p); -+ return vfmaq_m (add, m1, m2, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmat.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t add, float32x4_t m1, mve_pred16_t p) -+{ -+ return vfmaq_m (add, m1, 1.1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmat.f32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f16-1.c -deleted file mode 100644 -index f7867f2c0c3..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16x8_t a, float16x8_t b, float16_t c) --{ -- return vfmaq (a, b, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f16.c -index 208c46f5960..8e8738bc10a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vfma.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16x8_t a, float16x8_t b, float16_t c) -+foo (float16x8_t add, float16x8_t m1, float16_t m2) - { -- return vfmaq_n_f16 (a, b, c); -+ return vfmaq_n_f16 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vfma.f16" } } */ - -+/* -+**foo1: -+** ... -+** vfma.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16x8_t a, float16x8_t b, float16_t c) -+foo1 (float16x8_t add, float16x8_t m1, float16_t m2) - { -- return vfmaq (a, b, c); -+ return vfmaq (add, m1, m2); -+} -+ -+/* -+**foo2: -+** ... -+** vfma.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t add, float16x8_t m1) -+{ -+ return vfmaq (add, m1, 1.1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vfma.f16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f32-1.c -deleted file mode 100644 -index f0bc45bfed9..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32x4_t a, float32x4_t b, float32_t c) --{ -- return vfmaq (a, b, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f32.c -index 664533239b7..4781e089ffb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vfma.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32x4_t a, float32x4_t b, float32_t c) -+foo (float32x4_t add, float32x4_t m1, float32_t m2) - { -- return vfmaq_n_f32 (a, b, c); -+ return vfmaq_n_f32 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vfma.f32" } } */ - -+/* -+**foo1: -+** ... -+** vfma.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32x4_t a, float32x4_t b, float32_t c) -+foo1 (float32x4_t add, float32x4_t m1, float32_t m2) - { -- return vfmaq (a, b, c); -+ return vfmaq (add, m1, m2); -+} -+ -+/* -+**foo2: -+** ... -+** vfma.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t add, float32x4_t m1) -+{ -+ return vfmaq (add, m1, 1.1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vfma.f32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16-1.c -deleted file mode 100644 -index 4750e108b6d..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16x8_t a, float16x8_t b, float16_t c, mve_pred16_t p) --{ -- return vfmasq_m (a, b, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16.c -index 06d2d114e46..3f57b80874e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmast.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16x8_t a, float16x8_t b, float16_t c, mve_pred16_t p) -+foo (float16x8_t m1, float16x8_t m2, float16_t add, mve_pred16_t p) - { -- return vfmasq_m_n_f16 (a, b, c, p); -+ return vfmasq_m_n_f16 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmast.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmast.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16x8_t a, float16x8_t b, float16_t c, mve_pred16_t p) -+foo1 (float16x8_t m1, float16x8_t m2, float16_t add, mve_pred16_t p) - { -- return vfmasq_m (a, b, c, p); -+ return vfmasq_m (m1, m2, add, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmast.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t m1, float16x8_t m2, mve_pred16_t p) -+{ -+ return vfmasq_m (m1, m2, 1.1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmast.f16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32-1.c -deleted file mode 100644 -index 4a379711386..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32x4_t a, float32x4_t b, float32_t c, mve_pred16_t p) --{ -- return vfmasq_m (a, b, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32.c -index bf1773d0eeb..728633f5c9e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmast.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32x4_t a, float32x4_t b, float32_t c, mve_pred16_t p) -+foo (float32x4_t m1, float32x4_t m2, float32_t add, mve_pred16_t p) - { -- return vfmasq_m_n_f32 (a, b, c, p); -+ return vfmasq_m_n_f32 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmast.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmast.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32x4_t a, float32x4_t b, float32_t c, mve_pred16_t p) -+foo1 (float32x4_t m1, float32x4_t m2, float32_t add, mve_pred16_t p) - { -- return vfmasq_m (a, b, c, p); -+ return vfmasq_m (m1, m2, add, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmast.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t m1, float32x4_t m2, mve_pred16_t p) -+{ -+ return vfmasq_m (m1, m2, 1.1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmast.f32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f16-1.c -deleted file mode 100644 -index db824512b2b..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16x8_t a, float16x8_t b, float16_t c) --{ -- return vfmasq (a, b, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f16.c -index ce9bf48d657..def309387fa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vfmas.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16x8_t a, float16x8_t b, float16_t c) -+foo (float16x8_t m1, float16x8_t m2, float16_t add) - { -- return vfmasq_n_f16 (a, b, c); -+ return vfmasq_n_f16 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vfmas.f16" } } */ - -+/* -+**foo1: -+** ... -+** vfmas.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16x8_t a, float16x8_t b, float16_t c) -+foo1 (float16x8_t m1, float16x8_t m2, float16_t add) - { -- return vfmasq (a, b, c); -+ return vfmasq (m1, m2, add); -+} -+ -+/* -+**foo2: -+** ... -+** vfmas.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t m1, float16x8_t m2) -+{ -+ return vfmasq (m1, m2, 1.1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vfmas.f16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f32-1.c -deleted file mode 100644 -index 12b1410c008..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32x4_t a, float32x4_t b, float32_t c) --{ -- return vfmasq (a, b, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f32.c -index 46c5a320644..c761bdcb109 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vfmas.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32x4_t a, float32x4_t b, float32_t c) -+foo (float32x4_t m1, float32x4_t m2, float32_t add) - { -- return vfmasq_n_f32 (a, b, c); -+ return vfmasq_n_f32 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vfmas.f32" } } */ - -+/* -+**foo1: -+** ... -+** vfmas.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32x4_t a, float32x4_t b, float32_t c) -+foo1 (float32x4_t m1, float32x4_t m2, float32_t add) - { -- return vfmasq (a, b, c); -+ return vfmasq (m1, m2, add); -+} -+ -+/* -+**foo2: -+** ... -+** vfmas.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t m1, float32x4_t m2) -+{ -+ return vfmasq (m1, m2, 1.1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vfmas.f32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_f16.c -index 32475013fd4..607668ebc47 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vfms.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16x8_t a, float16x8_t b, float16x8_t c) -+foo (float16x8_t add, float16x8_t m1, float16x8_t m2) - { -- return vfmsq_f16 (a, b, c); -+ return vfmsq_f16 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vfms.f16" } } */ - -+/* -+**foo1: -+** ... -+** vfms.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16x8_t a, float16x8_t b, float16x8_t c) -+foo1 (float16x8_t add, float16x8_t m1, float16x8_t m2) - { -- return vfmsq (a, b, c); -+ return vfmsq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vfms.f16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_f32.c -index fbdabd188d5..ac18e9e3d9c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vfms.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32x4_t a, float32x4_t b, float32x4_t c) -+foo (float32x4_t add, float32x4_t m1, float32x4_t m2) - { -- return vfmsq_f32 (a, b, c); -+ return vfmsq_f32 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vfms.f32" } } */ - -+/* -+**foo1: -+** ... -+** vfms.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32x4_t a, float32x4_t b, float32x4_t c) -+foo1 (float32x4_t add, float32x4_t m1, float32x4_t m2) - { -- return vfmsq (a, b, c); -+ return vfmsq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vfms.f32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f16.c -index ccbbfc1606c..f530e0b0614 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmst.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16x8_t a, float16x8_t b, float16x8_t c, mve_pred16_t p) -+foo (float16x8_t add, float16x8_t m1, float16x8_t m2, mve_pred16_t p) - { -- return vfmsq_m_f16 (a, b, c, p); -+ return vfmsq_m_f16 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmst.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmst.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16x8_t a, float16x8_t b, float16x8_t c, mve_pred16_t p) -+foo1 (float16x8_t add, float16x8_t m1, float16x8_t m2, mve_pred16_t p) - { -- return vfmsq_m (a, b, c, p); -+ return vfmsq_m (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmst.f16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f32.c -index 219492a2ad9..6faca5a2e84 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmst.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32x4_t a, float32x4_t b, float32x4_t c, mve_pred16_t p) -+foo (float32x4_t add, float32x4_t m1, float32x4_t m2, mve_pred16_t p) - { -- return vfmsq_m_f32 (a, b, c, p); -+ return vfmsq_m_f32 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmst.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vfmst.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32x4_t a, float32x4_t b, float32x4_t c, mve_pred16_t p) -+foo1 (float32x4_t add, float32x4_t m1, float32x4_t m2, mve_pred16_t p) - { -- return vfmsq_m (a, b, c, p); -+ return vfmsq_m (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vfmst.f32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c -index e90af963697..dbcc3b3aec2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vhaddq_m_n_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c -index fcce85fd1bd..134409e8f09 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vhaddq_m_n_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c -index 56558b7033a..fb295f2d245 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vhaddq_m_n_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u16.c -index d7ee0febab9..2ed1262e5ec 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vhaddq_m_n_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) -+{ -+ return vhaddq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u32.c -index 1117b9813ce..852fe64cf8e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vhaddq_m_n_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) -+{ -+ return vhaddq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u8.c -index 90c66595d3f..5700f7ec818 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vhaddq_m_n_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) -+{ -+ return vhaddq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s16.c -index e8b87283a73..fce31dada68 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhaddq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s32.c -index ddcfd11198e..dbc1b835482 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhaddq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s8.c -index ef5fcd02cc5..32e6bebf8ba 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhaddq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u16.c -index d7b9aaab62c..d824bd3d39a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vhaddq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u32.c -index c8d7f6c4cf3..5f033d255f4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vhaddq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u8.c -index 9792941b091..f3ea63f75b4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vhaddq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s16.c -index d0d77f5a7fd..31f78b30ed8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhadd.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b) - { - return vhaddq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vhadd.s16" } } */ - -+/* -+**foo1: -+** ... -+** vhadd.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16_t b) - { - return vhaddq (a, b); - } - --/* { dg-final { scan-assembler "vhadd.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s32.c -index a8b4f3415a1..77c0521161c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhadd.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vhaddq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vhadd.s32" } } */ - -+/* -+**foo1: -+** ... -+** vhadd.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vhaddq (a, b); - } - --/* { dg-final { scan-assembler "vhadd.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s8.c -index 2459ba0a7ab..1cf93d50379 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhadd.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b) - { - return vhaddq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vhadd.s8" } } */ - -+/* -+**foo1: -+** ... -+** vhadd.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8_t b) - { - return vhaddq (a, b); - } - --/* { dg-final { scan-assembler "vhadd.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u16.c -index cd681e7a5f9..98d80e42da9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhadd.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16_t b) - { - return vhaddq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vhadd.u16" } } */ - -+/* -+**foo1: -+** ... -+** vhadd.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16_t b) - { - return vhaddq (a, b); - } - --/* { dg-final { scan-assembler "vhadd.u16" } } */ -+/* -+**foo2: -+** ... -+** vhadd.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t a) -+{ -+ return vhaddq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u32.c -index d2cb7f6284e..9b7e611c0e5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhadd.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32_t b) - { - return vhaddq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vhadd.u32" } } */ - -+/* -+**foo1: -+** ... -+** vhadd.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32_t b) - { - return vhaddq (a, b); - } - --/* { dg-final { scan-assembler "vhadd.u32" } } */ -+/* -+**foo2: -+** ... -+** vhadd.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t a) -+{ -+ return vhaddq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u8.c -index 509e1746259..4d82970e7ec 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhadd.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8_t b) - { - return vhaddq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vhadd.u8" } } */ - -+/* -+**foo1: -+** ... -+** vhadd.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8_t b) - { - return vhaddq (a, b); - } - --/* { dg-final { scan-assembler "vhadd.u8" } } */ -+/* -+**foo2: -+** ... -+** vhadd.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t a) -+{ -+ return vhaddq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s16.c -index 47afc591cdb..2788eb2f8ff 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhadd.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vhaddq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vhadd.s16" } } */ - -+/* -+**foo1: -+** ... -+** vhadd.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vhaddq (a, b); - } - --/* { dg-final { scan-assembler "vhadd.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s32.c -index fdc6476d0ee..67872a77076 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhadd.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vhaddq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vhadd.s32" } } */ - -+/* -+**foo1: -+** ... -+** vhadd.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vhaddq (a, b); - } - --/* { dg-final { scan-assembler "vhadd.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s8.c -index 3321765e909..1ec890591ad 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhadd.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vhaddq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vhadd.s8" } } */ - -+/* -+**foo1: -+** ... -+** vhadd.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vhaddq (a, b); - } - --/* { dg-final { scan-assembler "vhadd.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u16.c -index ad46355feab..bc84618b036 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhadd.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vhaddq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vhadd.u16" } } */ - -+/* -+**foo1: -+** ... -+** vhadd.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vhaddq (a, b); - } - --/* { dg-final { scan-assembler "vhadd.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u32.c -index 7477585fe55..6abdfce981f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhadd.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vhaddq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vhadd.u32" } } */ - -+/* -+**foo1: -+** ... -+** vhadd.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vhaddq (a, b); - } - --/* { dg-final { scan-assembler "vhadd.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u8.c -index 9edf8e5eb90..0c68c68206b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhadd.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vhaddq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vhadd.u8" } } */ - -+/* -+**foo1: -+** ... -+** vhadd.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vhaddq (a, b); - } - --/* { dg-final { scan-assembler "vhadd.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s16.c -index 5a9302129c7..d5bff94a46e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vhaddq_x_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s32.c -index 0a4ef00afa1..af3e219b3f2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vhaddq_x_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s8.c -index ae6c27a8878..a4551e207c2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vhaddq_x_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u16.c -index ddc99a82f79..71facc46ad9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vhaddq_x_n_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t a, mve_pred16_t p) -+{ -+ return vhaddq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u32.c -index dce9bc212e2..d45421c76d7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vhaddq_x_n_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t a, mve_pred16_t p) -+{ -+ return vhaddq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u8.c -index 262c5937a91..5f16fbd9121 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vhaddq_x_n_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t a, mve_pred16_t p) -+{ -+ return vhaddq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s16.c -index 65df0093401..4e332733459 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhaddq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s32.c -index 7ff76e7170a..5cdfd3921a5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhaddq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s8.c -index 23f545c45cd..7a2ed232f29 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhaddq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u16.c -index 97674c1f73c..e24ff1668db 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vhaddq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u32.c -index b6404ce9d17..e9f13956b96 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vhaddq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u8.c -index 7c2d74a2662..cba0a302e2a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vhaddq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhaddt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhaddt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s16.c -index f4a1311980a..7e39b75a7bf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhcaddq_rot270_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhcaddq_rot270_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s32.c -index 4697eb25458..57096076913 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhcaddq_rot270_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhcaddq_rot270_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s8.c -index ff547e83588..d47a99e29a8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhcaddq_rot270_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhcaddq_rot270_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s16.c -index 75346b2e349..01324c003c7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhcadd.s16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vhcaddq_rot270_s16 (a, b); - } - --/* { dg-final { scan-assembler "vhcadd.s16" } } */ - -+/* -+**foo1: -+** ... -+** vhcadd.s16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vhcaddq_rot270 (a, b); - } - --/* { dg-final { scan-assembler "vhcadd.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s32.c -index 0d458f100af..344d1ebf4a7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhcadd.s32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vhcaddq_rot270_s32 (a, b); - } - --/* { dg-final { scan-assembler "vhcadd.s32" } } */ - -+/* -+**foo1: -+** ... -+** vhcadd.s32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vhcaddq_rot270 (a, b); - } - --/* { dg-final { scan-assembler "vhcadd.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s8.c -index 5106bb7d45b..0ee4cfb4095 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhcadd.s8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vhcaddq_rot270_s8 (a, b); - } - --/* { dg-final { scan-assembler "vhcadd.s8" } } */ - -+/* -+**foo1: -+** ... -+** vhcadd.s8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vhcaddq_rot270 (a, b); - } - --/* { dg-final { scan-assembler "vhcadd.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s16.c -index 73f4784cd35..c3e70ad9e2a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhcaddq_rot270_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhcaddq_rot270_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s32.c -index 69c7cb7b0e6..6f14d2af44d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhcaddq_rot270_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhcaddq_rot270_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s8.c -index df4aff74bff..32bfb6cf3bc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhcaddq_rot270_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+, #270(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhcaddq_rot270_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s16.c -index 5461fc26741..a7a870e78df 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhcaddq_rot90_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhcaddq_rot90_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s32.c -index 20d2711aadb..1e6ef8f9aaa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhcaddq_rot90_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhcaddq_rot90_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s8.c -index 55475753512..147d647d27f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhcaddq_rot90_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhcaddq_rot90_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s16.c -index 539f9b00bd2..76747d669bb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhcadd.s16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vhcaddq_rot90_s16 (a, b); - } - --/* { dg-final { scan-assembler "vhcadd.s16" } } */ - -+/* -+**foo1: -+** ... -+** vhcadd.s16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vhcaddq_rot90 (a, b); - } - --/* { dg-final { scan-assembler "vhcadd.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s32.c -index 841c5294253..8b9b8ad7aa9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhcadd.s32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vhcaddq_rot90_s32 (a, b); - } - --/* { dg-final { scan-assembler "vhcadd.s32" } } */ - -+/* -+**foo1: -+** ... -+** vhcadd.s32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vhcaddq_rot90 (a, b); - } - --/* { dg-final { scan-assembler "vhcadd.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s8.c -index d2992c2f280..5e9b004f7cc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhcadd.s8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vhcaddq_rot90_s8 (a, b); - } - --/* { dg-final { scan-assembler "vhcadd.s8" } } */ - -+/* -+**foo1: -+** ... -+** vhcadd.s8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vhcaddq_rot90 (a, b); - } - --/* { dg-final { scan-assembler "vhcadd.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s16.c -index 0d677f7f149..d3416d65658 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhcaddq_rot90_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhcaddq_rot90_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s32.c -index a54af77440f..b0255e5141c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhcaddq_rot90_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhcaddq_rot90_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s8.c -index 5205cd37deb..10f5f31f26e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhcaddq_rot90_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhcaddt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhcaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+, #90(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhcaddq_rot90_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s16.c -index 27dcb7be957..0f9eb59646f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vhsubq_m_n_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vhsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s32.c -index 75ae735f30d..5b41bf193b8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vhsubq_m_n_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vhsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s8.c -index 84cdeb42952..48e88781ce3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vhsubq_m_n_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vhsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u16.c -index bc6610c3812..3d7314673b7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vhsubq_m_n_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vhsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) -+{ -+ return vhsubq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u32.c -index e94bfc95027..f6509a5472e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vhsubq_m_n_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vhsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) -+{ -+ return vhsubq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u8.c -index c2a5674afd1..db75b389138 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vhsubq_m_n_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vhsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) -+{ -+ return vhsubq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s16.c -index 9f62a385554..d8f3f3c9504 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhsubq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s32.c -index 486ae6b7d58..94252c80324 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhsubq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s8.c -index 9faaa4fbb0d..d4f6c247503 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhsubq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u16.c -index aa5838cdad2..a921ba6ab51 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vhsubq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vhsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u32.c -index 00282ad6444..73a544f9147 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vhsubq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vhsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u8.c -index 187d5bcf8a1..fd2aa22de0e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vhsubq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vhsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s16.c -index ce766486aed..4d1bab9641e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhsub.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b) - { - return vhsubq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vhsub.s16" } } */ - -+/* -+**foo1: -+** ... -+** vhsub.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16_t b) - { - return vhsubq (a, b); - } - --/* { dg-final { scan-assembler "vhsub.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s32.c -index 1d820ffaf5a..8effffaf377 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhsub.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vhsubq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vhsub.s32" } } */ - -+/* -+**foo1: -+** ... -+** vhsub.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vhsubq (a, b); - } - --/* { dg-final { scan-assembler "vhsub.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s8.c -index 90110b78f0d..f55cd8f5528 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhsub.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b) - { - return vhsubq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vhsub.s8" } } */ - -+/* -+**foo1: -+** ... -+** vhsub.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8_t b) - { - return vhsubq (a, b); - } - --/* { dg-final { scan-assembler "vhsub.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u16.c -index e744ef58663..73575a401c5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhsub.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16_t b) - { - return vhsubq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vhsub.u16" } } */ - -+/* -+**foo1: -+** ... -+** vhsub.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16_t b) - { - return vhsubq (a, b); - } - --/* { dg-final { scan-assembler "vhsub.u16" } } */ -+/* -+**foo2: -+** ... -+** vhsub.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t a) -+{ -+ return vhsubq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u32.c -index b1ce3f07904..f152ef10a9d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhsub.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32_t b) - { - return vhsubq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vhsub.u32" } } */ - -+/* -+**foo1: -+** ... -+** vhsub.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32_t b) - { - return vhsubq (a, b); - } - --/* { dg-final { scan-assembler "vhsub.u32" } } */ -+/* -+**foo2: -+** ... -+** vhsub.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t a) -+{ -+ return vhsubq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u8.c -index 68872a8f900..0a58b1ed355 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhsub.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8_t b) - { - return vhsubq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vhsub.u8" } } */ - -+/* -+**foo1: -+** ... -+** vhsub.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8_t b) - { - return vhsubq (a, b); - } - --/* { dg-final { scan-assembler "vhsub.u8" } } */ -+/* -+**foo2: -+** ... -+** vhsub.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t a) -+{ -+ return vhsubq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s16.c -index 03bd6d595cb..ec8d9aaed0d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhsub.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vhsubq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vhsub.s16" } } */ - -+/* -+**foo1: -+** ... -+** vhsub.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vhsubq (a, b); - } - --/* { dg-final { scan-assembler "vhsub.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s32.c -index 515acb84e66..e98635a8c11 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhsub.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vhsubq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vhsub.s32" } } */ - -+/* -+**foo1: -+** ... -+** vhsub.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vhsubq (a, b); - } - --/* { dg-final { scan-assembler "vhsub.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s8.c -index 41fb2589924..3107bb55844 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhsub.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vhsubq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vhsub.s8" } } */ - -+/* -+**foo1: -+** ... -+** vhsub.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vhsubq (a, b); - } - --/* { dg-final { scan-assembler "vhsub.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u16.c -index dda18779dca..783309fdbed 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhsub.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vhsubq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vhsub.u16" } } */ - -+/* -+**foo1: -+** ... -+** vhsub.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vhsubq (a, b); - } - --/* { dg-final { scan-assembler "vhsub.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u32.c -index 86a5576bedf..99bc278d16f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhsub.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vhsubq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vhsub.u32" } } */ - -+/* -+**foo1: -+** ... -+** vhsub.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vhsubq (a, b); - } - --/* { dg-final { scan-assembler "vhsub.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u8.c -index d339ca0e5e4..ae186512b78 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vhsub.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vhsubq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vhsub.u8" } } */ - -+/* -+**foo1: -+** ... -+** vhsub.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vhsubq (a, b); - } - --/* { dg-final { scan-assembler "vhsub.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s16.c -index 09da5c2f040..260ba9ee509 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vhsubq_x_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vhsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s32.c -index f3c032987bc..be5cc04c2b4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vhsubq_x_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vhsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s8.c -index 1d86f7d72b3..b0c28be7872 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vhsubq_x_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vhsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u16.c -index df6b7ea427a..f31bb3fa632 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vhsubq_x_n_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vhsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t a, mve_pred16_t p) -+{ -+ return vhsubq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u32.c -index bea6f2d1f96..a35346d9b2e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vhsubq_x_n_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vhsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t a, mve_pred16_t p) -+{ -+ return vhsubq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u8.c -index e1fafd7a9f5..25c85449081 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vhsubq_x_n_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vhsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t a, mve_pred16_t p) -+{ -+ return vhsubq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s16.c -index c9d3ffb45b7..dc3433cb81a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhsubq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vhsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s32.c -index 36343cffc85..a1e1faeacb5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhsubq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vhsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s8.c -index d1b134fe480..bbfce818be4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhsubq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vhsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u16.c -index 4da0fb3f340..86fc9d7cf33 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vhsubq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vhsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u32.c -index dfb0a6d371f..53274267515 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vhsubq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vhsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u8.c -index d549892ef8b..04d89c6c6bd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vhsubq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vhsubt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vhsubt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vhsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u16.c -index 822d41197e6..397be9f3e1e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint32_t a, mve_pred16_t p) - { -- return vidupq_m_n_u16 (inactive, a, 4, p); -+ return vidupq_m_n_u16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint32_t a, mve_pred16_t p) - { -- return vidupq_m (inactive, a, 4, p); -+ return vidupq_m (inactive, a, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, mve_pred16_t p) -+{ -+ return vidupq_m (inactive, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u32.c -index c01826e15dc..02b38cc6415 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32_t a, mve_pred16_t p) - { - return vidupq_m_n_u32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32_t a, mve_pred16_t p) - { - return vidupq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, mve_pred16_t p) -+{ -+ return vidupq_m (inactive, 1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u8.c -index e269665813c..f44aa21f324 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint32_t a, mve_pred16_t p) - { - return vidupq_m_n_u8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint32_t a, mve_pred16_t p) - { - return vidupq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, mve_pred16_t p) -+{ -+ return vidupq_m (inactive, 1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u16.c -index 8d21bc7db80..19d04601809 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint32_t *a, mve_pred16_t p) - { -- return vidupq_m_wb_u16 (inactive, a, 4, p); -+ return vidupq_m_wb_u16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint32_t *a, mve_pred16_t p) - { -- return vidupq_m (inactive, a, 4, p); -+ return vidupq_m (inactive, a, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, mve_pred16_t p) -+{ -+ return vidupq_m (inactive, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u32.c -index e7bc06cd826..36a8ac30564 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32_t *a, mve_pred16_t p) - { - return vidupq_m_wb_u32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32_t *a, mve_pred16_t p) - { - return vidupq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, mve_pred16_t p) -+{ -+ return vidupq_m (inactive, 1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u8.c -index a8a2f9a1c49..75695304c65 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint32_t *a, mve_pred16_t p) - { - return vidupq_m_wb_u8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint32_t *a, mve_pred16_t p) - { - return vidupq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, mve_pred16_t p) -+{ -+ return vidupq_m (inactive, 1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u16.c -index c59ca1ebf74..6b5d8815e1d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vidup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint32_t a) - { -- return vidupq_n_u16 (a, 4); -+ return vidupq_n_u16 (a, 1); - } - --/* { dg-final { scan-assembler "vidup.u16" } } */ - -+/* -+**foo1: -+** ... -+** vidup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint32_t a) - { -- return vidupq_u16 (a, 4); -+ return vidupq_u16 (a, 1); -+} -+ -+/* -+**foo2: -+** ... -+** vidup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 () -+{ -+ return vidupq_u16 (1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vidup.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u32.c -index 7e835e0868c..0b829a43a10 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vidup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t a) - { - return vidupq_n_u32 (a, 1); - } - --/* { dg-final { scan-assembler "vidup.u32" } } */ - -+/* -+**foo1: -+** ... -+** vidup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32_t a) - { - return vidupq_u32 (a, 1); - } - --/* { dg-final { scan-assembler "vidup.u32" } } */ -+/* -+**foo2: -+** ... -+** vidup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 () -+{ -+ return vidupq_u32 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u8.c -index 06d1a1a1480..12523757737 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vidup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint32_t a) - { - return vidupq_n_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vidup.u8" } } */ - -+/* -+**foo1: -+** ... -+** vidup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint32_t a) - { - return vidupq_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vidup.u8" } } */ -+/* -+**foo2: -+** ... -+** vidup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 () -+{ -+ return vidupq_u8 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u16.c -index 1cb0ded198f..83d9cc2a563 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vidup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint32_t *a) - { -- return vidupq_wb_u16 (a, 4); -+ return vidupq_wb_u16 (a, 1); - } - --/* { dg-final { scan-assembler "vidup.u16" } } */ - -+/* -+**foo1: -+** ... -+** vidup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint32_t *a) - { -- return vidupq_u16 (a, 4); -+ return vidupq_u16 (a, 1); -+} -+ -+/* -+**foo2: -+** ... -+** vidup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 () -+{ -+ return vidupq_u16 (1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vidup.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u32.c -index e5d9c5327fb..d73face505d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vidup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t *a) - { - return vidupq_wb_u32 (a, 1); - } - --/* { dg-final { scan-assembler "vidup.u32" } } */ - -+/* -+**foo1: -+** ... -+** vidup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32_t *a) - { - return vidupq_u32 (a, 1); - } - --/* { dg-final { scan-assembler "vidup.u32" } } */ -+/* -+**foo2: -+** ... -+** vidup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 () -+{ -+ return vidupq_u32 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u8.c -index 57e1bb46776..75187b0eb25 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vidup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint32_t *a) - { - return vidupq_wb_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vidup.u8" } } */ - -+/* -+**foo1: -+** ... -+** vidup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint32_t *a) - { - return vidupq_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vidup.u8" } } */ -+/* -+**foo2: -+** ... -+** vidup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 () -+{ -+ return vidupq_u8 (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u16.c -index bdf8ec2b047..5df5035e340 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint32_t a, mve_pred16_t p) - { -- return vidupq_x_n_u16 (a, 4, p); -+ return vidupq_x_n_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint32_t a, mve_pred16_t p) - { -- return vidupq_x_u16 (a, 4, p); -+ return vidupq_x_u16 (a, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (mve_pred16_t p) -+{ -+ return vidupq_x_u16 (1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u32.c -index 8be549cb446..02c6d7784dc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t a, mve_pred16_t p) - { - return vidupq_x_n_u32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32_t a, mve_pred16_t p) - { - return vidupq_x_u32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (mve_pred16_t p) -+{ -+ return vidupq_x_u32 (1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u8.c -index 1e1975017de..3a1d3c0317f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint32_t a, mve_pred16_t p) - { - return vidupq_x_n_u8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint32_t a, mve_pred16_t p) - { - return vidupq_x_u8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (mve_pred16_t p) -+{ -+ return vidupq_x_u8 (1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u16.c -index 31197a76cfa..31ddde4bd3a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u16.c -@@ -1,25 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - --uint32_t *a; -+#ifdef __cplusplus -+extern "C" { -+#endif - -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo (mve_pred16_t p) -+foo (uint32_t *a, mve_pred16_t p) - { -- return vidupq_x_wb_u16 (a, 8, p); -+ return vidupq_x_wb_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (mve_pred16_t p) -+foo1 (uint32_t *a, mve_pred16_t p) - { -- return vidupq_x_u16 (a, 8, p); -+ return vidupq_x_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (mve_pred16_t p) -+{ -+ return vidupq_x_u16 (1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u32.c -index cef56f133e8..c8193465a72 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u32.c -@@ -1,25 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - --uint32_t *a; -+#ifdef __cplusplus -+extern "C" { -+#endif - -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (mve_pred16_t p) -+foo (uint32_t *a, mve_pred16_t p) - { -- return vidupq_x_wb_u32 (a, 2, p); -+ return vidupq_x_wb_u32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (mve_pred16_t p) -+foo1 (uint32_t *a, mve_pred16_t p) - { -- return vidupq_x_u32 (a, 2, p); -+ return vidupq_x_u32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (mve_pred16_t p) -+{ -+ return vidupq_x_u32 (1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u8.c -index 0403ba1174c..f7a628990c9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u8.c -@@ -1,25 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - --uint32_t * a; -+#ifdef __cplusplus -+extern "C" { -+#endif - -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo (mve_pred16_t p) -+foo (uint32_t *a, mve_pred16_t p) - { -- return vidupq_x_wb_u8 (a, 2, p); -+ return vidupq_x_wb_u8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (mve_pred16_t p) -+foo1 (uint32_t *a, mve_pred16_t p) - { -- return vidupq_x_u8 (a, 2, p); -+ return vidupq_x_u8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vidupt.u8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vidupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (mve_pred16_t p) -+{ -+ return vidupq_x_u8 (1, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u16.c -index 0f999cc672b..d96a89017e6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_m_n_u16 (inactive, a, b, 2, p); -+ return viwdupq_m_n_u16 (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_m (inactive, a, b, 2, p); -+ return viwdupq_m (inactive, a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, mve_pred16_t p) -+{ -+ return viwdupq_m (inactive, 1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u32.c -index f79c91eaf4c..ca1ac6ebe24 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_m_n_u32 (inactive, a, b, 4, p); -+ return viwdupq_m_n_u32 (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_m (inactive, a, b, 4, p); -+ return viwdupq_m (inactive, a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, mve_pred16_t p) -+{ -+ return viwdupq_m (inactive, 1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u8.c -index c0fee9fa752..9590e023335 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_m_n_u8 (inactive, a, b, 8, p); -+ return viwdupq_m_n_u8 (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint32_t a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_m (inactive, a, b, 8, p); -+ return viwdupq_m (inactive, a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, mve_pred16_t p) -+{ -+ return viwdupq_m (inactive, 1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u16.c -index 468ba179f62..84733f94e7c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_m_wb_u16 (inactive, a, b, 2, p); -+ return viwdupq_m_wb_u16 (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_m (inactive, a, b, 2, p); -+ return viwdupq_m (inactive, a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, mve_pred16_t p) -+{ -+ return viwdupq_m (inactive, 1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u32.c -index e9190302717..a175744b654 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_m_wb_u32 (inactive, a, b, 4, p); -+ return viwdupq_m_wb_u32 (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_m (inactive, a, b, 4, p); -+ return viwdupq_m (inactive, a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, mve_pred16_t p) -+{ -+ return viwdupq_m (inactive, 1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u8.c -index 309ce95a333..7240b6e72bc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_m_wb_u8 (inactive, a, b, 8, p); -+ return viwdupq_m_wb_u8 (inactive, a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_m (inactive, a, b, 8, p); -+ return viwdupq_m (inactive, a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, mve_pred16_t p) -+{ -+ return viwdupq_m (inactive, 1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u16.c -index 599d9078464..a5eb3094d44 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** viwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint32_t a, uint32_t b) - { -- return viwdupq_n_u16 (a, b, 2); -+ return viwdupq_n_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "viwdup.u16" } } */ - -+/* -+**foo1: -+** ... -+** viwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint32_t a, uint32_t b) - { -- return viwdupq_u16 (a, b, 2); -+ return viwdupq_u16 (a, b, 1); -+} -+ -+/* -+**foo2: -+** ... -+** viwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 () -+{ -+ return viwdupq_u16 (1, 1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "viwdup.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u32.c -index 7c2af74b3f0..63f6bdf52b1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** viwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t a, uint32_t b) - { -- return viwdupq_n_u32 (a, b, 4); -+ return viwdupq_n_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "viwdup.u32" } } */ - -+/* -+**foo1: -+** ... -+** viwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32_t a, uint32_t b) - { -- return viwdupq_u32 (a, b, 4); -+ return viwdupq_u32 (a, b, 1); -+} -+ -+/* -+**foo2: -+** ... -+** viwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 () -+{ -+ return viwdupq_u32 (1, 1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "viwdup.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u8.c -index 4ff60791f3b..65d1062ac96 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** viwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint32_t a, uint32_t b) - { - return viwdupq_n_u8 (a, b, 1); - } - --/* { dg-final { scan-assembler "viwdup.u8" } } */ - -+/* -+**foo1: -+** ... -+** viwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint32_t a, uint32_t b) - { - return viwdupq_u8 (a, b, 1); - } - --/* { dg-final { scan-assembler "viwdup.u8" } } */ -+/* -+**foo2: -+** ... -+** viwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 () -+{ -+ return viwdupq_u8 (1, 1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u16.c -index 1e5ce88dcca..eaa496bb2da 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** viwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint32_t * a, uint32_t b) -+foo (uint32_t *a, uint32_t b) - { -- return viwdupq_wb_u16 (a, b, 4); -+ return viwdupq_wb_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "viwdup.u16" } } */ - -+/* -+**foo1: -+** ... -+** viwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint32_t * a, uint32_t b) -+foo1 (uint32_t *a, uint32_t b) - { -- return viwdupq_u16 (a, b, 4); -+ return viwdupq_u16 (a, b, 1); -+} -+ -+/* -+**foo2: -+** ... -+** viwdup.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 () -+{ -+ return viwdupq_u16 (1, 1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "viwdup.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u32.c -index 0c076f7b751..c1912d77486 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** viwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32_t * a, uint32_t b) -+foo (uint32_t *a, uint32_t b) - { -- return viwdupq_wb_u32 (a, b, 8); -+ return viwdupq_wb_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "viwdup.u32" } } */ - -+/* -+**foo1: -+** ... -+** viwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32_t * a, uint32_t b) -+foo1 (uint32_t *a, uint32_t b) - { -- return viwdupq_u32 (a, b, 8); -+ return viwdupq_u32 (a, b, 1); -+} -+ -+/* -+**foo2: -+** ... -+** viwdup.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 () -+{ -+ return viwdupq_u32 (1, 1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "viwdup.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u8.c -index 9e5118ba2b6..f0d66a9ba29 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** viwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint32_t * a, uint32_t b) -+foo (uint32_t *a, uint32_t b) - { -- return viwdupq_wb_u8 (a, b, 2); -+ return viwdupq_wb_u8 (a, b, 1); - } - --/* { dg-final { scan-assembler "viwdup.u8" } } */ - -+/* -+**foo1: -+** ... -+** viwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint32_t * a, uint32_t b) -+foo1 (uint32_t *a, uint32_t b) - { -- return viwdupq_u8 (a, b, 2); -+ return viwdupq_u8 (a, b, 1); -+} -+ -+/* -+**foo2: -+** ... -+** viwdup.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 () -+{ -+ return viwdupq_u8 (1, 1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "viwdup.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u16.c -index fdaf6be282d..7f8cc38e4c2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint32_t a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_x_n_u16 (a, b, 2, p); -+ return viwdupq_x_n_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint32_t a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_x_u16 (a, b, 2, p); -+ return viwdupq_x_u16 (a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (mve_pred16_t p) -+{ -+ return viwdupq_x_u16 (1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u32.c -index affc6162015..f97b599373c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_x_n_u32 (a, b, 4, p); -+ return viwdupq_x_n_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32_t a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_x_u32 (a, b, 4, p); -+ return viwdupq_x_u32 (a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (mve_pred16_t p) -+{ -+ return viwdupq_x_u32 (1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u8.c -index 8137c623c2a..c0ceead5267 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint32_t a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_x_n_u8 (a, b, 8, p); -+ return viwdupq_x_n_u8 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint32_t a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_x_u8 (a, b, 8, p); -+ return viwdupq_x_u8 (a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (mve_pred16_t p) -+{ -+ return viwdupq_x_u8 (1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u16.c -index d7aa141f384..265aef42c92 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint32_t * a, uint32_t b, mve_pred16_t p) -+foo (uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_x_wb_u16 (a, b, 8, p); -+ return viwdupq_x_wb_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint32_t * a, uint32_t b, mve_pred16_t p) -+foo1 (uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_x_u16 (a, b, 8, p); -+ return viwdupq_x_u16 (a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u16 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (mve_pred16_t p) -+{ -+ return viwdupq_x_u16 (1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u32.c -index 7fe56963452..585e41075db 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32_t * a, uint32_t b, mve_pred16_t p) -+foo (uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_x_wb_u32 (a, b, 2, p); -+ return viwdupq_x_wb_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32_t * a, uint32_t b, mve_pred16_t p) -+foo1 (uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_x_u32 (a, b, 2, p); -+ return viwdupq_x_u32 (a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u32 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (mve_pred16_t p) -+{ -+ return viwdupq_x_u32 (1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u8.c -index 8e3ecefdedb..ca39081dfc5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint32_t * a, uint32_t b, mve_pred16_t p) -+foo (uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_x_wb_u8 (a, b, 4, p); -+ return viwdupq_x_wb_u8 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint32_t * a, uint32_t b, mve_pred16_t p) -+foo1 (uint32_t *a, uint32_t b, mve_pred16_t p) - { -- return viwdupq_x_u8 (a, b, 4, p); -+ return viwdupq_x_u8 (a, b, 1, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** viwdupt.u8 q[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (mve_pred16_t p) -+{ -+ return viwdupq_x_u8 (1, 1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "viwdupt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_f16.c -index 699e40d0e3b..f0a9243a6d5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_f16.c -@@ -1,20 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16_t const * base) -+foo (float16_t const *base) - { - return vld1q_f16 (base); - } - -+ -+/* -+**foo1: -+** ... -+** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16_t const * base) -+foo1 (float16_t const *base) - { - return vld1q (base); - } - --/* { dg-final { scan-assembler-times "vldrh.16" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_f32.c -index 86592303362..129d256dd86 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_f32.c -@@ -1,20 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32_t const * base) -+foo (float32_t const *base) - { - return vld1q_f32 (base); - } - -+ -+/* -+**foo1: -+** ... -+** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32_t const * base) -+foo1 (float32_t const *base) - { - return vld1q (base); - } - --/* { dg-final { scan-assembler-times "vldrw.32" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s16.c -index f4f04f534db..a95bf6c4260 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s16.c -@@ -1,20 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16_t const * base) -+foo (int16_t const *base) - { - return vld1q_s16 (base); - } - -+ -+/* -+**foo1: -+** ... -+** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16_t const * base) -+foo1 (int16_t const *base) - { - return vld1q (base); - } - --/* { dg-final { scan-assembler-times "vldrh.16" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s32.c -index e0f66166751..bb24e52d164 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s32.c -@@ -1,20 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32_t const * base) -+foo (int32_t const *base) - { - return vld1q_s32 (base); - } - -+ -+/* -+**foo1: -+** ... -+** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32_t const * base) -+foo1 (int32_t const *base) - { - return vld1q (base); - } - --/* { dg-final { scan-assembler-times "vldrw.32" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s8.c -index 1b7edead6b1..0d89c2f19cd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s8.c -@@ -1,20 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8_t const * base) -+foo (int8_t const *base) - { - return vld1q_s8 (base); - } - -+ -+/* -+**foo1: -+** ... -+** vldrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8_t const * base) -+foo1 (int8_t const *base) - { - return vld1q (base); - } - --/* { dg-final { scan-assembler-times "vldrb.8" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_u16.c -index 50e1f5cedcb..a31baf75fed 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_u16.c -@@ -1,20 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16_t const * base) -+foo (uint16_t const *base) - { - return vld1q_u16 (base); - } - -+ -+/* -+**foo1: -+** ... -+** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint16_t const * base) -+foo1 (uint16_t const *base) - { - return vld1q (base); - } - --/* { dg-final { scan-assembler-times "vldrh.16" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_u32.c -index a13fe824382..7d4f858c784 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_u32.c -@@ -1,20 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32_t const * base) -+foo (uint32_t const *base) - { - return vld1q_u32 (base); - } - -+ -+/* -+**foo1: -+** ... -+** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32_t const * base) -+foo1 (uint32_t const *base) - { - return vld1q (base); - } - --/* { dg-final { scan-assembler-times "vldrw.32" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_u8.c -index dfd1deb93f0..455ec5ce105 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_u8.c -@@ -1,20 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint8_t const * base) -+foo (uint8_t const *base) - { - return vld1q_u8 (base); - } - -+ -+/* -+**foo1: -+** ... -+** vldrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint8_t const * base) -+foo1 (uint8_t const *base) - { - return vld1q (base); - } - --/* { dg-final { scan-assembler-times "vldrb.8" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_f16.c -index 3c32e408e42..951b795fd59 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_f16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16_t const * base, mve_pred16_t p) -+foo (float16_t const *base, mve_pred16_t p) - { - return vld1q_z_f16 (base, p); - } - -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16_t const * base, mve_pred16_t p) -+foo1 (float16_t const *base, mve_pred16_t p) - { - return vld1q_z (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 2 } } */ --/* { dg-final { scan-assembler-times "vldrht.16" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_f32.c -index 3fc935c889b..4b43f0f4be3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_f32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32_t const * base, mve_pred16_t p) -+foo (float32_t const *base, mve_pred16_t p) - { - return vld1q_z_f32 (base, p); - } - -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32_t const * base, mve_pred16_t p) -+foo1 (float32_t const *base, mve_pred16_t p) - { - return vld1q_z (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 2 } } */ --/* { dg-final { scan-assembler-times "vldrwt.32" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_s16.c -index 49cc81092f3..a65c10c5fc1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16_t const * base, mve_pred16_t p) -+foo (int16_t const *base, mve_pred16_t p) - { - return vld1q_z_s16 (base, p); - } - -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16_t const * base, mve_pred16_t p) -+foo1 (int16_t const *base, mve_pred16_t p) - { - return vld1q_z (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 2 } } */ --/* { dg-final { scan-assembler-times "vldrht.16" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_s32.c -index ec317cd70e8..31749046fc6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32_t const * base, mve_pred16_t p) -+foo (int32_t const *base, mve_pred16_t p) - { - return vld1q_z_s32 (base, p); - } - -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32_t const * base, mve_pred16_t p) -+foo1 (int32_t const *base, mve_pred16_t p) - { - return vld1q_z (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 2 } } */ --/* { dg-final { scan-assembler-times "vldrwt.32" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_s8.c -index 538c140e78e..990522faee8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_s8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8_t const * base, mve_pred16_t p) -+foo (int8_t const *base, mve_pred16_t p) - { - return vld1q_z_s8 (base, p); - } - -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8_t const * base, mve_pred16_t p) -+foo1 (int8_t const *base, mve_pred16_t p) - { - return vld1q_z (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 2 } } */ --/* { dg-final { scan-assembler-times "vldrbt.8" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u16.c -index e5e588a187e..8a41b42306c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16_t const * base, mve_pred16_t p) -+foo (uint16_t const *base, mve_pred16_t p) - { - return vld1q_z_u16 (base, p); - } - -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint16_t const * base, mve_pred16_t p) -+foo1 (uint16_t const *base, mve_pred16_t p) - { - return vld1q_z (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 2 } } */ --/* { dg-final { scan-assembler-times "vldrht.16" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u32.c -index 999beefa7e8..67b200f6028 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32_t const * base, mve_pred16_t p) -+foo (uint32_t const *base, mve_pred16_t p) - { - return vld1q_z_u32 (base, p); - } - -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32_t const * base, mve_pred16_t p) -+foo1 (uint32_t const *base, mve_pred16_t p) - { - return vld1q_z (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 2 } } */ --/* { dg-final { scan-assembler-times "vldrwt.32" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u8.c -index 172053c7142..c113a0db3e1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint8_t const * base, mve_pred16_t p) -+foo (uint8_t const *base, mve_pred16_t p) - { - return vld1q_z_u8 (base, p); - } - -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint8_t const * base, mve_pred16_t p) -+foo1 (uint8_t const *base, mve_pred16_t p) - { - return vld1q_z (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 2 } } */ --/* { dg-final { scan-assembler-times "vldrbt.8" 2 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_f16.c -index 24e7a2ea4d0..81690b1022e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_f16.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld20.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float16x8x2_t --foo (float16_t const * addr) -+foo (float16_t const *addr) - { - return vld2q_f16 (addr); - } - --/* { dg-final { scan-assembler "vld20.16" } } */ --/* { dg-final { scan-assembler "vld21.16" } } */ - -+/* -+**foo1: -+** ... -+** vld20.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float16x8x2_t --foo1 (float16_t const * addr) -+foo1 (float16_t const *addr) - { - return vld2q (addr); - } - --/* { dg-final { scan-assembler "vld20.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_f32.c -index 727484caaf6..d2ae31fa9e5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_f32.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld20.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float32x4x2_t --foo (float32_t const * addr) -+foo (float32_t const *addr) - { - return vld2q_f32 (addr); - } - --/* { dg-final { scan-assembler "vld20.32" } } */ --/* { dg-final { scan-assembler "vld21.32" } } */ - -+/* -+**foo1: -+** ... -+** vld20.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float32x4x2_t --foo1 (float32_t const * addr) -+foo1 (float32_t const *addr) - { - return vld2q (addr); - } - --/* { dg-final { scan-assembler "vld20.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s16.c -index f2864a00478..fb4dc1b4fcf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s16.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld20.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int16x8x2_t --foo (int16_t const * addr) -+foo (int16_t const *addr) - { - return vld2q_s16 (addr); - } - --/* { dg-final { scan-assembler "vld20.16" } } */ --/* { dg-final { scan-assembler "vld21.16" } } */ - -+/* -+**foo1: -+** ... -+** vld20.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int16x8x2_t --foo1 (int16_t const * addr) -+foo1 (int16_t const *addr) - { - return vld2q (addr); - } - --/* { dg-final { scan-assembler "vld20.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s32.c -index 9fe2e0459b5..aeb85238fd2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s32.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld20.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int32x4x2_t --foo (int32_t const * addr) -+foo (int32_t const *addr) - { - return vld2q_s32 (addr); - } - --/* { dg-final { scan-assembler "vld20.32" } } */ --/* { dg-final { scan-assembler "vld21.32" } } */ - -+/* -+**foo1: -+** ... -+** vld20.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int32x4x2_t --foo1 (int32_t const * addr) -+foo1 (int32_t const *addr) - { - return vld2q (addr); - } - --/* { dg-final { scan-assembler "vld20.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s8.c -index 736080a94a7..687e5ded48c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s8.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld20.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int8x16x2_t --foo (int8_t const * addr) -+foo (int8_t const *addr) - { - return vld2q_s8 (addr); - } - --/* { dg-final { scan-assembler "vld20.8" } } */ --/* { dg-final { scan-assembler "vld21.8" } } */ - -+/* -+**foo1: -+** ... -+** vld20.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int8x16x2_t --foo1 (int8_t const * addr) -+foo1 (int8_t const *addr) - { - return vld2q (addr); - } - --/* { dg-final { scan-assembler "vld20.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u16.c -index 2d89ebdcf6b..281fe5eaf10 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u16.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld20.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint16x8x2_t --foo (uint16_t const * addr) -+foo (uint16_t const *addr) - { - return vld2q_u16 (addr); - } - --/* { dg-final { scan-assembler "vld20.16" } } */ --/* { dg-final { scan-assembler "vld21.16" } } */ - -+/* -+**foo1: -+** ... -+** vld20.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint16x8x2_t --foo1 (uint16_t const * addr) -+foo1 (uint16_t const *addr) - { - return vld2q (addr); - } - --/* { dg-final { scan-assembler "vld20.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u32.c -index 28d311eca68..524afee72e9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u32.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld20.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint32x4x2_t --foo (uint32_t const * addr) -+foo (uint32_t const *addr) - { - return vld2q_u32 (addr); - } - --/* { dg-final { scan-assembler "vld20.32" } } */ --/* { dg-final { scan-assembler "vld21.32" } } */ - -+/* -+**foo1: -+** ... -+** vld20.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint32x4x2_t --foo1 (uint32_t const * addr) -+foo1 (uint32_t const *addr) - { - return vld2q (addr); - } - --/* { dg-final { scan-assembler "vld20.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u8.c -index 790c9743c9a..9eebbd42719 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u8.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld20.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint8x16x2_t --foo (uint8_t const * addr) -+foo (uint8_t const *addr) - { - return vld2q_u8 (addr); - } - --/* { dg-final { scan-assembler "vld20.8" } } */ --/* { dg-final { scan-assembler "vld21.8" } } */ - -+/* -+**foo1: -+** ... -+** vld20.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vld21.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint8x16x2_t --foo1 (uint8_t const * addr) -+foo1 (uint8_t const *addr) - { - return vld2q (addr); - } - --/* { dg-final { scan-assembler "vld20.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_f16.c -index db50f27bb60..e554cdab33d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_f16.c -@@ -1,24 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - float16x8x4_t --foo (float16_t const * addr) -+foo (float16_t const *addr) - { - return vld4q_f16 (addr); - } - --/* { dg-final { scan-assembler "vld40.16" } } */ --/* { dg-final { scan-assembler "vld41.16" } } */ --/* { dg-final { scan-assembler "vld42.16" } } */ --/* { dg-final { scan-assembler "vld43.16" } } */ - -+/* -+**foo1: -+** ... -+** vld40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - float16x8x4_t --foo1 (float16_t const * addr) -+foo1 (float16_t const *addr) - { - return vld4q (addr); - } - --/* { dg-final { scan-assembler "vld40.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_f32.c -index de3fe0e79fc..be61054d331 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_f32.c -@@ -1,24 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - float32x4x4_t --foo (float32_t const * addr) -+foo (float32_t const *addr) - { - return vld4q_f32 (addr); - } - --/* { dg-final { scan-assembler "vld40.32" } } */ --/* { dg-final { scan-assembler "vld41.32" } } */ --/* { dg-final { scan-assembler "vld42.32" } } */ --/* { dg-final { scan-assembler "vld43.32" } } */ - -+/* -+**foo1: -+** ... -+** vld40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - float32x4x4_t --foo1 (float32_t const * addr) -+foo1 (float32_t const *addr) - { - return vld4q (addr); - } - --/* { dg-final { scan-assembler "vld40.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s16.c -index 41a9dd86a4f..f9cbc17da61 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s16.c -@@ -1,24 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - int16x8x4_t --foo (int16_t const * addr) -+foo (int16_t const *addr) - { - return vld4q_s16 (addr); - } - --/* { dg-final { scan-assembler "vld40.16" } } */ --/* { dg-final { scan-assembler "vld41.16" } } */ --/* { dg-final { scan-assembler "vld42.16" } } */ --/* { dg-final { scan-assembler "vld43.16" } } */ - -+/* -+**foo1: -+** ... -+** vld40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - int16x8x4_t --foo1 (int16_t const * addr) -+foo1 (int16_t const *addr) - { - return vld4q (addr); - } - --/* { dg-final { scan-assembler "vld40.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s32.c -index 6f29c1b28c0..056e26023a9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s32.c -@@ -1,24 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - int32x4x4_t --foo (int32_t const * addr) -+foo (int32_t const *addr) - { - return vld4q_s32 (addr); - } - --/* { dg-final { scan-assembler "vld40.32" } } */ --/* { dg-final { scan-assembler "vld41.32" } } */ --/* { dg-final { scan-assembler "vld42.32" } } */ --/* { dg-final { scan-assembler "vld43.32" } } */ - -+/* -+**foo1: -+** ... -+** vld40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - int32x4x4_t --foo1 (int32_t const * addr) -+foo1 (int32_t const *addr) - { - return vld4q (addr); - } - --/* { dg-final { scan-assembler "vld40.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s8.c -index 7701facb55c..2bec51ab4f6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s8.c -@@ -1,24 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld40.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - int8x16x4_t --foo (int8_t const * addr) -+foo (int8_t const *addr) - { - return vld4q_s8 (addr); - } - --/* { dg-final { scan-assembler "vld40.8" } } */ --/* { dg-final { scan-assembler "vld41.8" } } */ --/* { dg-final { scan-assembler "vld42.8" } } */ --/* { dg-final { scan-assembler "vld43.8" } } */ - -+/* -+**foo1: -+** ... -+** vld40.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - int8x16x4_t --foo1 (int8_t const * addr) -+foo1 (int8_t const *addr) - { - return vld4q (addr); - } - --/* { dg-final { scan-assembler "vld40.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_u16.c -index 5a5e22d36d0..a2c98670174 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_u16.c -@@ -1,24 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - uint16x8x4_t --foo (uint16_t const * addr) -+foo (uint16_t const *addr) - { - return vld4q_u16 (addr); - } - --/* { dg-final { scan-assembler "vld40.16" } } */ --/* { dg-final { scan-assembler "vld41.16" } } */ --/* { dg-final { scan-assembler "vld42.16" } } */ --/* { dg-final { scan-assembler "vld43.16" } } */ - -+/* -+**foo1: -+** ... -+** vld40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - uint16x8x4_t --foo1 (uint16_t const * addr) -+foo1 (uint16_t const *addr) - { - return vld4q (addr); - } - --/* { dg-final { scan-assembler "vld40.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_u32.c -index e40d9b24fb4..4bbe56db205 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_u32.c -@@ -1,24 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - uint32x4x4_t --foo (uint32_t const * addr) -+foo (uint32_t const *addr) - { - return vld4q_u32 (addr); - } - --/* { dg-final { scan-assembler "vld40.32" } } */ --/* { dg-final { scan-assembler "vld41.32" } } */ --/* { dg-final { scan-assembler "vld42.32" } } */ --/* { dg-final { scan-assembler "vld43.32" } } */ - -+/* -+**foo1: -+** ... -+** vld40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - uint32x4x4_t --foo1 (uint32_t const * addr) -+foo1 (uint32_t const *addr) - { - return vld4q (addr); - } - --/* { dg-final { scan-assembler "vld40.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_u8.c -index 0d9abc36190..63353dba4b6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_u8.c -@@ -1,24 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vld40.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - uint8x16x4_t --foo (uint8_t const * addr) -+foo (uint8_t const *addr) - { - return vld4q_u8 (addr); - } - --/* { dg-final { scan-assembler "vld40.8" } } */ --/* { dg-final { scan-assembler "vld41.8" } } */ --/* { dg-final { scan-assembler "vld42.8" } } */ --/* { dg-final { scan-assembler "vld43.8" } } */ - -+/* -+**foo1: -+** ... -+** vld40.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld41.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld42.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vld43.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - uint8x16x4_t --foo1 (uint8_t const * addr) -+foo1 (uint8_t const *addr) - { - return vld4q (addr); - } - --/* { dg-final { scan-assembler "vld40.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s16.c -index 0f6c24dde0a..ce4255b8430 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.s16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int16x8_t --foo (int8_t const * base, uint16x8_t offset) -+foo (int8_t const *base, uint16x8_t offset) - { - return vldrbq_gather_offset_s16 (base, offset); - } - --/* { dg-final { scan-assembler "vldrb.s16" } } */ - -+/* -+**foo1: -+** ... -+** vldrb.s16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int8_t const * base, uint16x8_t offset) -+foo1 (int8_t const *base, uint16x8_t offset) - { - return vldrbq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrb.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s32.c -index 4c1415d2c5f..cd5eb6b9e66 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int8_t const * base, uint32x4_t offset) -+foo (int8_t const *base, uint32x4_t offset) - { - return vldrbq_gather_offset_s32 (base, offset); - } - --/* { dg-final { scan-assembler "vldrb.s32" } } */ - -+/* -+**foo1: -+** ... -+** vldrb.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int8_t const * base, uint32x4_t offset) -+foo1 (int8_t const *base, uint32x4_t offset) - { - return vldrbq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrb.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s8.c -index 4108bbae3e2..5ef4a895082 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8_t const * base, uint8x16_t offset) -+foo (int8_t const *base, uint8x16_t offset) - { - return vldrbq_gather_offset_s8 (base, offset); - } - --/* { dg-final { scan-assembler "vldrb.u8" } } */ - -+/* -+**foo1: -+** ... -+** vldrb.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8_t const * base, uint8x16_t offset) -+foo1 (int8_t const *base, uint8x16_t offset) - { - return vldrbq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrb.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u16.c -index 5d5b005a8f4..cfec3c66a54 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint8_t const * base, uint16x8_t offset) -+foo (uint8_t const *base, uint16x8_t offset) - { - return vldrbq_gather_offset_u16 (base, offset); - } - --/* { dg-final { scan-assembler "vldrb.u16" } } */ - -+/* -+**foo1: -+** ... -+** vldrb.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint8_t const * base, uint16x8_t offset) -+foo1 (uint8_t const *base, uint16x8_t offset) - { - return vldrbq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrb.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u32.c -index 7c2d92b7c58..f416a03c325 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint8_t const * base, uint32x4_t offset) -+foo (uint8_t const *base, uint32x4_t offset) - { - return vldrbq_gather_offset_u32 (base, offset); - } - --/* { dg-final { scan-assembler "vldrb.u32" } } */ - -+/* -+**foo1: -+** ... -+** vldrb.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint8_t const * base, uint32x4_t offset) -+foo1 (uint8_t const *base, uint32x4_t offset) - { - return vldrbq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrb.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u8.c -index 110f9db0296..e8bdd1eabb6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint8_t const * base, uint8x16_t offset) -+foo (uint8_t const *base, uint8x16_t offset) - { - return vldrbq_gather_offset_u8 (base, offset); - } - --/* { dg-final { scan-assembler "vldrb.u8" } } */ - -+/* -+**foo1: -+** ... -+** vldrb.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint8_t const * base, uint8x16_t offset) -+foo1 (uint8_t const *base, uint8x16_t offset) - { - return vldrbq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrb.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s16.c -index f0616b5ab8d..9a134609780 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.s16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int16x8_t --foo (int8_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo (int8_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrbq_gather_offset_z_s16 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.s16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int8_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo1 (int8_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrbq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrbt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s32.c -index 5bf291d4ba5..f47e02076b2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int8_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo (int8_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrbq_gather_offset_z_s32 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrbt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int8_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo1 (int8_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrbq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrbt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s8.c -index a3798a01b5f..e2b58b47f1d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8_t const * base, uint8x16_t offset, mve_pred16_t p) -+foo (int8_t const *base, uint8x16_t offset, mve_pred16_t p) - { - return vldrbq_gather_offset_z_s8 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrbt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8_t const * base, uint8x16_t offset, mve_pred16_t p) -+foo1 (int8_t const *base, uint8x16_t offset, mve_pred16_t p) - { - return vldrbq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrbt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u16.c -index 578bd15c66e..2a1801fc941 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint8_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo (uint8_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrbq_gather_offset_z_u16 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrbt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint8_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo1 (uint8_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrbq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrbt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u32.c -index a58044af176..c415fe26ba8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint8_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo (uint8_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrbq_gather_offset_z_u32 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrbt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint8_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo1 (uint8_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrbq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrbt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u8.c -index 0e06833961b..90a19680999 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint8_t const * base, uint8x16_t offset, mve_pred16_t p) -+foo (uint8_t const *base, uint8x16_t offset, mve_pred16_t p) - { - return vldrbq_gather_offset_z_u8 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrbt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint8_t const * base, uint8x16_t offset, mve_pred16_t p) -+foo1 (uint8_t const *base, uint8x16_t offset, mve_pred16_t p) - { - return vldrbq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrbt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_s16.c -index 4403092b988..c54e04dbdda 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_s16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.s16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int16x8_t --foo (int8_t const * base) -+foo (int8_t const *base) - { - return vldrbq_s16 (base); - } - --/* { dg-final { scan-assembler "vldrb.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_s32.c -index 95ea9364ffc..1623f53d971 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_s32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int8_t const * base) -+foo (int8_t const *base) - { - return vldrbq_s32 (base); - } - --/* { dg-final { scan-assembler "vldrb.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_s8.c -index ec2f2176ccf..b1c141ae287 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_s8.c -@@ -1,14 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8_t const * base) -+foo (int8_t const *base) - { - return vldrbq_s8 (base); - } - --/* { dg-final { scan-assembler-times "vldrb.8" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_u16.c -index 2fb297f92ad..203e2e9de83 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_u16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint8_t const * base) -+foo (uint8_t const *base) - { - return vldrbq_u16 (base); - } - --/* { dg-final { scan-assembler "vldrb.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_u32.c -index dc555c1be2d..2005c3a2bbf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_u32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint8_t const * base) -+foo (uint8_t const *base) - { - return vldrbq_u32 (base); - } - --/* { dg-final { scan-assembler "vldrb.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_u8.c -index d07b472a4ff..b4c109eb147 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_u8.c -@@ -1,14 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint8_t const * base) -+foo (uint8_t const *base) - { - return vldrbq_u8 (base); - } - --/* { dg-final { scan-assembler-times "vldrb.8" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_s16.c -index 8bd08ab5cff..813f6a31a25 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_s16.c -@@ -1,13 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.s16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int16x8_t --foo (int8_t const * base, mve_pred16_t p) -+foo (int8_t const *base, mve_pred16_t p) - { - return vldrbq_z_s16 (base, p); - } - --/* { dg-final { scan-assembler "vldrbt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_s32.c -index 0309ff4111b..10e1dbf6ad9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_s32.c -@@ -1,13 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int8_t const * base, mve_pred16_t p) -+foo (int8_t const *base, mve_pred16_t p) - { - return vldrbq_z_s32 (base, p); - } - --/* { dg-final { scan-assembler "vldrbt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_s8.c -index aed3c910063..de361d4c9a0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_s8.c -@@ -1,15 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8_t const * base, mve_pred16_t p) -+foo (int8_t const *base, mve_pred16_t p) - { - return vldrbq_z_s8 (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 1 } } */ --/* { dg-final { scan-assembler-times "vldrbt.8" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u16.c -index adcb0cfa2ae..ba4401045e7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u16.c -@@ -1,13 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint8_t const * base, mve_pred16_t p) -+foo (uint8_t const *base, mve_pred16_t p) - { - return vldrbq_z_u16 (base, p); - } - --/* { dg-final { scan-assembler "vldrbt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u32.c -index 6b7bce60d62..adc88a59a71 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u32.c -@@ -1,13 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint8_t const * base, mve_pred16_t p) -+foo (uint8_t const *base, mve_pred16_t p) - { - return vldrbq_z_u32 (base, p); - } - --/* { dg-final { scan-assembler "vldrbt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c -index 54c61e74454..b13d9fb426f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c -@@ -1,15 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint8_t const * base, mve_pred16_t p) -+foo (uint8_t const *base, mve_pred16_t p) - { - return vldrbq_z_u8 (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 1 } } */ --/* { dg-final { scan-assembler-times "vldrbt.8" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_s64.c -index 6499f930c40..3539c1e40ba 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_s64.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrd.64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - int64x2_t - foo (uint64x2_t addr) - { -- return vldrdq_gather_base_s64 (addr, 8); -+ return vldrdq_gather_base_s64 (addr, 0); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrd.64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_u64.c -index 9a11638a261..2245df61a4e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_u64.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrd.64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - uint64x2_t - foo (uint64x2_t addr) - { -- return vldrdq_gather_base_u64 (addr, 8); -+ return vldrdq_gather_base_u64 (addr, 0); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrd.64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c -index a9b1f81b62d..e3fd7f16a31 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c -@@ -1,16 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrd.64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - int64x2_t --foo (uint64x2_t * addr) -+foo (uint64x2_t *addr) - { -- return vldrdq_gather_base_wb_s64 (addr, 8); -+ return vldrdq_gather_base_wb_s64 (addr, 0); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrd.64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */ --/* { dg-final { scan-assembler-times "vldrw.u32" 1 } } */ --/* { dg-final { scan-assembler-times "vstrw.32" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c -index e32a06695ae..161cf00b65e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c -@@ -1,16 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrd.64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - uint64x2_t --foo (uint64x2_t * addr) -+foo (uint64x2_t *addr) - { -- return vldrdq_gather_base_wb_u64 (addr, 8); -+ return vldrdq_gather_base_wb_u64 (addr, 0); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrd.64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */ --/* { dg-final { scan-assembler-times "vldrw.u32" 1 } } */ --/* { dg-final { scan-assembler-times "vstrw.32" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c -index bb06cf88e32..0716baa635a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c -@@ -1,15 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ -+ - #include "arm_mve.h" - --int64x2_t foo (uint64x2_t * addr, mve_pred16_t p) -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ -+int64x2_t -+foo (uint64x2_t *addr, mve_pred16_t p) - { -- return vldrdq_gather_base_wb_z_s64 (addr, 1016, p); -+ return vldrdq_gather_base_wb_z_s64 (addr, 0, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vldrdt.u64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */ --/* { dg-final { scan-assembler-times "vldrw.u32" 1 } } */ --/* { dg-final { scan-assembler-times "vstrw.32" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c -index 558115d49ef..242c7c06e27 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c -@@ -1,15 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ -+ - #include "arm_mve.h" - --uint64x2_t foo (uint64x2_t * addr, mve_pred16_t p) -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ -+uint64x2_t -+foo (uint64x2_t *addr, mve_pred16_t p) - { -- return vldrdq_gather_base_wb_z_u64 (addr, 8, p); -+ return vldrdq_gather_base_wb_z_u64 (addr, 0, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vldrdt.u64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */ --/* { dg-final { scan-assembler-times "vldrw.u32" 1 } } */ --/* { dg-final { scan-assembler-times "vstrw.32" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_s64.c -index d7455b49206..d451f4e693f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_s64.c -@@ -1,13 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - int64x2_t - foo (uint64x2_t addr, mve_pred16_t p) - { -- return vldrdq_gather_base_z_s64 (addr, 8, p); -+ return vldrdq_gather_base_z_s64 (addr, 0, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrdt.u64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_u64.c -index 07f72d422b4..508db3ca538 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_u64.c -@@ -1,13 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - uint64x2_t - foo (uint64x2_t addr, mve_pred16_t p) - { -- return vldrdq_gather_base_z_u64 (addr, 8, p); -+ return vldrdq_gather_base_z_u64 (addr, 0, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrdt.u64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_s64.c -index 1d2d904efc4..9431491f3fd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_s64.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int64x2_t --foo (int64_t const * base, uint64x2_t offset) -+foo (int64_t const *base, uint64x2_t offset) - { - return vldrdq_gather_offset_s64 (base, offset); - } - --/* { dg-final { scan-assembler "vldrd.u64" } } */ - -+/* -+**foo1: -+** ... -+** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int64x2_t --foo1 (int64_t const * base, uint64x2_t offset) -+foo1 (int64_t const *base, uint64x2_t offset) - { - return vldrdq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrd.u64" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_u64.c -index 49a3b134d2f..11c0872f5a7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_u64.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint64x2_t --foo (uint64_t const * base, uint64x2_t offset) -+foo (uint64_t const *base, uint64x2_t offset) - { - return vldrdq_gather_offset_u64 (base, offset); - } - --/* { dg-final { scan-assembler "vldrd.u64" } } */ - -+/* -+**foo1: -+** ... -+** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint64x2_t --foo1 (uint64_t const * base, uint64x2_t offset) -+foo1 (uint64_t const *base, uint64x2_t offset) - { - return vldrdq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrd.u64" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_s64.c -index 1ff5f2acd1b..f474cbef788 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_s64.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int64x2_t --foo (int64_t const * base, uint64x2_t offset, mve_pred16_t p) -+foo (int64_t const *base, uint64x2_t offset, mve_pred16_t p) - { - return vldrdq_gather_offset_z_s64 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrdt.u64" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int64x2_t --foo1 (int64_t const * base, uint64x2_t offset, mve_pred16_t p) -+foo1 (int64_t const *base, uint64x2_t offset, mve_pred16_t p) - { - return vldrdq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrdt.u64" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_u64.c -index 63b2254d171..19136d7f451 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_u64.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint64x2_t --foo (uint64_t const * base, uint64x2_t offset, mve_pred16_t p) -+foo (uint64_t const *base, uint64x2_t offset, mve_pred16_t p) - { - return vldrdq_gather_offset_z_u64 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrdt.u64" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint64x2_t --foo1 (uint64_t const * base, uint64x2_t offset, mve_pred16_t p) -+foo1 (uint64_t const *base, uint64x2_t offset, mve_pred16_t p) - { - return vldrdq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrdt.u64" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_s64.c -index 4feb9c06fcd..ad11d8fa5cb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_s64.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - int64x2_t --foo (int64_t const * base, uint64x2_t offset) -+foo (int64_t const *base, uint64x2_t offset) - { - return vldrdq_gather_shifted_offset_s64 (base, offset); - } - --/* { dg-final { scan-assembler "vldrd.u64" } } */ - -+/* -+**foo1: -+** ... -+** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - int64x2_t --foo1 (int64_t const * base, uint64x2_t offset) -+foo1 (int64_t const *base, uint64x2_t offset) - { - return vldrdq_gather_shifted_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrd.u64" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_u64.c -index 999735039c8..a466494974b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_u64.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - uint64x2_t --foo (uint64_t const * base, uint64x2_t offset) -+foo (uint64_t const *base, uint64x2_t offset) - { - return vldrdq_gather_shifted_offset_u64 (base, offset); - } - --/* { dg-final { scan-assembler "vldrd.u64" } } */ - -+/* -+**foo1: -+** ... -+** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - uint64x2_t --foo1 (uint64_t const * base, uint64x2_t offset) -+foo1 (uint64_t const *base, uint64x2_t offset) - { - return vldrdq_gather_shifted_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrd.u64" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_s64.c -index 77303a47a08..3555105d09e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_s64.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - int64x2_t --foo (int64_t const * base, uint64x2_t offset, mve_pred16_t p) -+foo (int64_t const *base, uint64x2_t offset, mve_pred16_t p) - { - return vldrdq_gather_shifted_offset_z_s64 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrdt.u64" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - int64x2_t --foo1 (int64_t const * base, uint64x2_t offset, mve_pred16_t p) -+foo1 (int64_t const *base, uint64x2_t offset, mve_pred16_t p) - { - return vldrdq_gather_shifted_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrdt.u64" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_u64.c -index 0273b242031..f7cfbfcddb3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_u64.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - uint64x2_t --foo (uint64_t const * base, uint64x2_t offset, mve_pred16_t p) -+foo (uint64_t const *base, uint64x2_t offset, mve_pred16_t p) - { - return vldrdq_gather_shifted_offset_z_u64 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrdt.u64" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - uint64x2_t --foo1 (uint64_t const * base, uint64x2_t offset, mve_pred16_t p) -+foo1 (uint64_t const *base, uint64x2_t offset, mve_pred16_t p) - { - return vldrdq_gather_shifted_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrdt.u64" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_f16.c -index 05bef418d82..87c746f4ad7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_f16.c -@@ -1,14 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16_t const * base) -+foo (float16_t const *base) - { - return vldrhq_f16 (base); - } - --/* { dg-final { scan-assembler-times "vldrh.16" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_f16.c -index 525e54c72f5..287276e41f9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16_t const * base, uint16x8_t offset) -+foo (float16_t const *base, uint16x8_t offset) - { - return vldrhq_gather_offset_f16 (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.f16" } } */ - -+/* -+**foo1: -+** ... -+** vldrh.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16_t const * base, uint16x8_t offset) -+foo1 (float16_t const *base, uint16x8_t offset) - { - return vldrhq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s16.c -index 47ef03445b4..e2493a62b3a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16_t const * base, uint16x8_t offset) -+foo (int16_t const *base, uint16x8_t offset) - { - return vldrhq_gather_offset_s16 (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.u16" } } */ - -+/* -+**foo1: -+** ... -+** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16_t const * base, uint16x8_t offset) -+foo1 (int16_t const *base, uint16x8_t offset) - { - return vldrhq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s32.c -index 39379aaedd3..5d1e348cc86 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int16_t const * base, uint32x4_t offset) -+foo (int16_t const *base, uint32x4_t offset) - { - return vldrhq_gather_offset_s32 (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vldrh.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int16_t const * base, uint32x4_t offset) -+foo1 (int16_t const *base, uint32x4_t offset) - { - return vldrhq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u16.c -index fa345e24b48..6d5f6f877dc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16_t const * base, uint16x8_t offset) -+foo (uint16_t const *base, uint16x8_t offset) - { - return vldrhq_gather_offset_u16 (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.u16" } } */ - -+/* -+**foo1: -+** ... -+** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint16_t const * base, uint16x8_t offset) -+foo1 (uint16_t const *base, uint16x8_t offset) - { - return vldrhq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u32.c -index b888660dc37..c39afbe6119 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint16_t const * base, uint32x4_t offset) -+foo (uint16_t const *base, uint32x4_t offset) - { - return vldrhq_gather_offset_u32 (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.u32" } } */ - -+/* -+**foo1: -+** ... -+** vldrh.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint16_t const * base, uint32x4_t offset) -+foo1 (uint16_t const *base, uint32x4_t offset) - { - return vldrhq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_f16.c -index 7ee84232f04..53c673e3644 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_f16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo (float16_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrhq_gather_offset_z_f16 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo1 (float16_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrhq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s16.c -index 9b354fad50d..1e68a77824e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo (int16_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrhq_gather_offset_z_s16 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo1 (int16_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrhq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s32.c -index 0e252291944..06c208f31c5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int16_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo (int16_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrhq_gather_offset_z_s32 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int16_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo1 (int16_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrhq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u16.c -index 763e33d90bb..f50f026b00e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo (uint16_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrhq_gather_offset_z_u16 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint16_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo1 (uint16_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrhq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u32.c -index 36baa252aa4..eff32dc6718 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint16_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo (uint16_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrhq_gather_offset_z_u32 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint16_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo1 (uint16_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrhq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_f16.c -index 843904a7041..f8468be41fa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16_t const * base, uint16x8_t offset) -+foo (float16_t const *base, uint16x8_t offset) - { - return vldrhq_gather_shifted_offset_f16 (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.f16" } } */ - -+/* -+**foo1: -+** ... -+** vldrh.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16_t const * base, uint16x8_t offset) -+foo1 (float16_t const *base, uint16x8_t offset) - { - return vldrhq_gather_shifted_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s16.c -index 6d013c835b5..ac2491ea143 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16_t const * base, uint16x8_t offset) -+foo (int16_t const *base, uint16x8_t offset) - { - return vldrhq_gather_shifted_offset_s16 (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.u16" } } */ - -+/* -+**foo1: -+** ... -+** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16_t const * base, uint16x8_t offset) -+foo1 (int16_t const *base, uint16x8_t offset) - { - return vldrhq_gather_shifted_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s32.c -index 5ec8e8c1dc8..6919b3a3cc2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int16_t const * base, uint32x4_t offset) -+foo (int16_t const *base, uint32x4_t offset) - { - return vldrhq_gather_shifted_offset_s32 (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vldrh.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int16_t const * base, uint32x4_t offset) -+foo1 (int16_t const *base, uint32x4_t offset) - { - return vldrhq_gather_shifted_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u16.c -index fa5f3d04548..7e8fdf3799d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16_t const * base, uint16x8_t offset) -+foo (uint16_t const *base, uint16x8_t offset) - { - return vldrhq_gather_shifted_offset_u16 (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.u16" } } */ - -+/* -+**foo1: -+** ... -+** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint16_t const * base, uint16x8_t offset) -+foo1 (uint16_t const *base, uint16x8_t offset) - { - return vldrhq_gather_shifted_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u32.c -index 227b18d7864..de2d22d985d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint16_t const * base, uint32x4_t offset) -+foo (uint16_t const *base, uint32x4_t offset) - { - return vldrhq_gather_shifted_offset_u32 (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.u32" } } */ - -+/* -+**foo1: -+** ... -+** vldrh.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint16_t const * base, uint32x4_t offset) -+foo1 (uint16_t const *base, uint32x4_t offset) - { - return vldrhq_gather_shifted_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrh.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_f16.c -index cae37837c7e..a55ada003ed 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_f16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo (float16_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrhq_gather_shifted_offset_z_f16 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - float16x8_t --foo1 (float16_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo1 (float16_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrhq_gather_shifted_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s16.c -index 1aff290a6b0..ee57d77e3db 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo (int16_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrhq_gather_shifted_offset_z_s16 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo1 (int16_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrhq_gather_shifted_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s32.c -index 92ee073adf9..9f8963f56bc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int16_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo (int16_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrhq_gather_shifted_offset_z_s32 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int16_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo1 (int16_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrhq_gather_shifted_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u16.c -index 792510d3639..90be7020ac2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo (uint16_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrhq_gather_shifted_offset_z_u16 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint16_t const * base, uint16x8_t offset, mve_pred16_t p) -+foo1 (uint16_t const *base, uint16x8_t offset, mve_pred16_t p) - { - return vldrhq_gather_shifted_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u32.c -index 8ae845418e8..0ff6d021b51 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint16_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo (uint16_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrhq_gather_shifted_offset_z_u32 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint16_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo1 (uint16_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrhq_gather_shifted_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrht.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_s16.c -index 7c977b6a699..107ce22856b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_s16.c -@@ -1,14 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16_t const * base) -+foo (int16_t const *base) - { - return vldrhq_s16 (base); - } - --/* { dg-final { scan-assembler-times "vldrh.16" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_s32.c -index 229b52163fa..5cc864c38e4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_s32.c -@@ -1,14 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int16_t const * base) -+foo (int16_t const *base) - { - return vldrhq_s32 (base); - } - --/* { dg-final { scan-assembler-times "vldrh.s32" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_u16.c -index 07f6d9e3944..12f807da03b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_u16.c -@@ -1,14 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16_t const * base) -+foo (uint16_t const *base) - { - return vldrhq_u16 (base); - } - --/* { dg-final { scan-assembler-times "vldrh.16" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_u32.c -index cd24f01831f..5d4f34f9789 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_u32.c -@@ -1,14 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrh.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint16_t const * base) -+foo (uint16_t const *base) - { - return vldrhq_u32 (base); - } - --/* { dg-final { scan-assembler-times "vldrh.u32" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c -index dd0fc9c7b73..582061bbab3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c -@@ -1,15 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float16x8_t --foo (float16_t const * base, mve_pred16_t p) -+foo (float16_t const *base, mve_pred16_t p) - { - return vldrhq_z_f16 (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 1 } } */ --/* { dg-final { scan-assembler-times "vldrht.16" 1 } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c -index 36d3458d95c..dc32460ccdd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c -@@ -1,15 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16_t const * base, mve_pred16_t p) -+foo (int16_t const *base, mve_pred16_t p) - { - return vldrhq_z_s16 (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 1 } } */ --/* { dg-final { scan-assembler-times "vldrht.16" 1 } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c -index 9c67b479be7..15dd77cb36c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c -@@ -1,15 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int16_t const * base, mve_pred16_t p) -+foo (int16_t const *base, mve_pred16_t p) - { - return vldrhq_z_s32 (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 1 } } */ --/* { dg-final { scan-assembler-times "vldrht.s32" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c -index 26354b5971a..91ab2caf1c6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c -@@ -1,15 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16_t const * base, mve_pred16_t p) -+foo (uint16_t const *base, mve_pred16_t p) - { - return vldrhq_z_u16 (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 1 } } */ --/* { dg-final { scan-assembler-times "vldrht.16" 1 } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c -index 948fe5ee5b4..1682ec1987a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c -@@ -1,15 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrht.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint16_t const * base, mve_pred16_t p) -+foo (uint16_t const *base, mve_pred16_t p) - { - return vldrhq_z_u32 (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 1 } } */ --/* { dg-final { scan-assembler-times "vldrht.u32" 1 } } */ --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_f32.c -index 143079aa23f..9cf47332b38 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_f32.c -@@ -1,14 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32_t const * base) -+foo (float32_t const *base) - { - return vldrwq_f32 (base); - } - --/* { dg-final { scan-assembler-times "vldrw.32" 1 } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_f32.c -index 5e0faaad8dd..c3f052efbc6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_f32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - float32x4_t - foo (uint32x4_t addr) - { -- return vldrwq_gather_base_f32 (addr, 4); -+ return vldrwq_gather_base_f32 (addr, 0); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrw.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_s32.c -index 8ca44199e3e..f2dbcfb9f6e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_s32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t - foo (uint32x4_t addr) - { -- return vldrwq_gather_base_s32 (addr, 4); -+ return vldrwq_gather_base_s32 (addr, 0); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrw.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_u32.c -index 3c3e90f1c0a..0926689805f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_u32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t addr) - { -- return vldrwq_gather_base_u32 (addr, 4); -+ return vldrwq_gather_base_u32 (addr, 0); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrw.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c -index 8e2994f75d7..f9cd0a3ffe0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c -@@ -1,16 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - float32x4_t --foo (uint32x4_t * addr) -+foo (uint32x4_t *addr) - { -- return vldrwq_gather_base_wb_f32 (addr, 8); -+ return vldrwq_gather_base_wb_f32 (addr, 0); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */ --/* { dg-final { scan-assembler "vldrw.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */ --/* { dg-final { scan-assembler "vstrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c -index e5054738b75..b8f16969a31 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c -@@ -1,16 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - int32x4_t --foo (uint32x4_t * addr) -+foo (uint32x4_t *addr) - { -- return vldrwq_gather_base_wb_s32 (addr, 8); -+ return vldrwq_gather_base_wb_s32 (addr, 0); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */ --/* { dg-final { scan-assembler "vldrw.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */ --/* { dg-final { scan-assembler "vstrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c -index 7f39414143b..387d0115f46 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c -@@ -1,16 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t * addr) -+foo (uint32x4_t *addr) - { -- return vldrwq_gather_base_wb_u32 (addr, 8); -+ return vldrwq_gather_base_wb_u32 (addr, 0); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */ --/* { dg-final { scan-assembler "vldrw.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */ --/* { dg-final { scan-assembler "vstrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c -index f3219e2e825..bea7ecdee83 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c -@@ -1,18 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - float32x4_t --foo (uint32x4_t * addr, mve_pred16_t p) -+foo (uint32x4_t *addr, mve_pred16_t p) - { -- return vldrwq_gather_base_wb_z_f32 (addr, 8, p); -+ return vldrwq_gather_base_wb_z_f32 (addr, 0, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */ --/* { dg-final { scan-assembler "vmsr\t P0, r\[0-9\]+.*" } } */ --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vldrwt.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */ --/* { dg-final { scan-assembler "vstrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c -index 4d093d243fe..4469ac14a0a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c -@@ -1,18 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - int32x4_t --foo (uint32x4_t * addr, mve_pred16_t p) -+foo (uint32x4_t *addr, mve_pred16_t p) - { -- return vldrwq_gather_base_wb_z_s32 (addr, 8, p); -+ return vldrwq_gather_base_wb_z_s32 (addr, 0, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */ --/* { dg-final { scan-assembler "vmsr\t P0, r\[0-9\]+.*" } } */ --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vldrwt.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */ --/* { dg-final { scan-assembler "vstrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c -index e796522a49c..9d4d81b3afe 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c -@@ -1,18 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t * addr, mve_pred16_t p) -+foo (uint32x4_t *addr, mve_pred16_t p) - { -- return vldrwq_gather_base_wb_z_u32 (addr, 8, p); -+ return vldrwq_gather_base_wb_z_u32 (addr, 0, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */ --/* { dg-final { scan-assembler "vmsr\t P0, r\[0-9\]+.*" } } */ --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vldrwt.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */ --/* { dg-final { scan-assembler "vstrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_f32.c -index 81aac523728..905000a31a8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_f32.c -@@ -1,13 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - float32x4_t - foo (uint32x4_t addr, mve_pred16_t p) - { -- return vldrwq_gather_base_z_f32 (addr, 4, p); -+ return vldrwq_gather_base_z_f32 (addr, 0, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_s32.c -index fec49bbde06..3ee6a219b80 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_s32.c -@@ -1,13 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t - foo (uint32x4_t addr, mve_pred16_t p) - { -- return vldrwq_gather_base_z_s32 (addr, 4, p); -+ return vldrwq_gather_base_z_s32 (addr, 0, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_u32.c -index b64a11d6620..488adf58b78 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_u32.c -@@ -1,13 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t addr, mve_pred16_t p) - { -- return vldrwq_gather_base_z_u32 (addr, 4, p); -+ return vldrwq_gather_base_z_u32 (addr, 0, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_f32.c -index 6a4ea041137..a513452a12d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32_t const * base, uint32x4_t offset) -+foo (float32_t const *base, uint32x4_t offset) - { - return vldrwq_gather_offset_f32 (base, offset); - } - --/* { dg-final { scan-assembler "vldrw.u32" } } */ - -+/* -+**foo1: -+** ... -+** vldrw.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32_t const * base, uint32x4_t offset) -+foo1 (float32_t const *base, uint32x4_t offset) - { - return vldrwq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrw.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_s32.c -index ee15fa4a0b0..57ad6583153 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32_t const * base, uint32x4_t offset) -+foo (int32_t const *base, uint32x4_t offset) - { - return vldrwq_gather_offset_s32 (base, offset); - } - --/* { dg-final { scan-assembler "vldrw.u32" } } */ - -+/* -+**foo1: -+** ... -+** vldrw.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32_t const * base, uint32x4_t offset) -+foo1 (int32_t const *base, uint32x4_t offset) - { - return vldrwq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrw.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_u32.c -index d344779058f..30fc36c6f97 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32_t const * base, uint32x4_t offset) -+foo (uint32_t const *base, uint32x4_t offset) - { - return vldrwq_gather_offset_u32 (base, offset); - } - --/* { dg-final { scan-assembler "vldrw.u32" } } */ - -+/* -+**foo1: -+** ... -+** vldrw.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32_t const * base, uint32x4_t offset) -+foo1 (uint32_t const *base, uint32x4_t offset) - { - return vldrwq_gather_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrw.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_f32.c -index 93253119418..1f84edcdb8e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_f32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo (float32_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrwq_gather_offset_z_f32 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo1 (float32_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrwq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_s32.c -index 4537427bef3..3fe5a986cc3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo (int32_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrwq_gather_offset_z_s32 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo1 (int32_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrwq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_u32.c -index e59c4c996bf..087e5d0ce1e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo (uint32_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrwq_gather_offset_z_u32 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo1 (uint32_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrwq_gather_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_f32.c -index 1ba2cb0ccde..bed16f5fa72 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32_t const * base, uint32x4_t offset) -+foo (float32_t const *base, uint32x4_t offset) - { - return vldrwq_gather_shifted_offset_f32 (base, offset); - } - --/* { dg-final { scan-assembler "vldrw.u32" } } */ - -+/* -+**foo1: -+** ... -+** vldrw.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32_t const * base, uint32x4_t offset) -+foo1 (float32_t const *base, uint32x4_t offset) - { - return vldrwq_gather_shifted_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrw.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_s32.c -index 39d976bb676..e6c589020f3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32_t const * base, uint32x4_t offset) -+foo (int32_t const *base, uint32x4_t offset) - { - return vldrwq_gather_shifted_offset_s32 (base, offset); - } - --/* { dg-final { scan-assembler "vldrw.u32" } } */ - -+/* -+**foo1: -+** ... -+** vldrw.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32_t const * base, uint32x4_t offset) -+foo1 (int32_t const *base, uint32x4_t offset) - { - return vldrwq_gather_shifted_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrw.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_u32.c -index 971f482dfff..8e287da0dbf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32_t const * base, uint32x4_t offset) -+foo (uint32_t const *base, uint32x4_t offset) - { - return vldrwq_gather_shifted_offset_u32 (base, offset); - } - --/* { dg-final { scan-assembler "vldrw.u32" } } */ - -+/* -+**foo1: -+** ... -+** vldrw.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32_t const * base, uint32x4_t offset) -+foo1 (uint32_t const *base, uint32x4_t offset) - { - return vldrwq_gather_shifted_offset (base, offset); - } - --/* { dg-final { scan-assembler "vldrw.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_f32.c -index e4110cd50aa..f69d67fd2aa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_f32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo (float32_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrwq_gather_shifted_offset_z_f32 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - float32x4_t --foo1 (float32_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo1 (float32_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrwq_gather_shifted_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_s32.c -index 71dd8a757ce..3aff6de03b6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo (int32_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrwq_gather_shifted_offset_z_s32 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo1 (int32_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrwq_gather_shifted_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_u32.c -index f95d6f0f708..ed8873d0c53 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo (uint32_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrwq_gather_shifted_offset_z_u32 (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32_t const * base, uint32x4_t offset, mve_pred16_t p) -+foo1 (uint32_t const *base, uint32x4_t offset, mve_pred16_t p) - { - return vldrwq_gather_shifted_offset_z (base, offset, p); - } - --/* { dg-final { scan-assembler "vldrwt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_s32.c -index 860dd324d25..87c3ac9f9d2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_s32.c -@@ -1,14 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32_t const * base) -+foo (int32_t const *base) - { - return vldrwq_s32 (base); - } - --/* { dg-final { scan-assembler-times "vldrw.32" 1 } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_u32.c -index 513ed49fb6e..5b560c534a1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_u32.c -@@ -1,14 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32_t const * base) -+foo (uint32_t const *base) - { - return vldrwq_u32 (base); - } - --/* { dg-final { scan-assembler-times "vldrw.32" 1 } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c -index 3e0a6a60bcf..14a61fcfbd4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c -@@ -1,15 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - float32x4_t --foo (float32_t const * base, mve_pred16_t p) -+foo (float32_t const *base, mve_pred16_t p) - { - return vldrwq_z_f32 (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 1 } } */ --/* { dg-final { scan-assembler-times "vldrwt.32" 1 } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c -index 82b914885b5..5c90707becc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c -@@ -1,15 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32_t const * base, mve_pred16_t p) -+foo (int32_t const *base, mve_pred16_t p) - { - return vldrwq_z_s32 (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 1 } } */ --/* { dg-final { scan-assembler-times "vldrwt.32" 1 } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c -index 6a66e167881..16b50335fe7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c -@@ -1,15 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32_t const * base, mve_pred16_t p) -+foo (uint32_t const *base, mve_pred16_t p) - { - return vldrwq_z_u32 (base, p); - } - --/* { dg-final { scan-assembler-times "vpst" 1 } } */ --/* { dg-final { scan-assembler-times "vldrwt.32" 1 } } */ -+#ifdef __cplusplus -+} -+#endif -+ - /* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c -index 48d213277df..6d011177c21 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxat.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmaxaq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxat.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxat.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmaxaq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c -index 49273819861..f8f960af752 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxat.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmaxaq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxat.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxat.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmaxaq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c -index 5ecdb2c19dc..69313d5ecc3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxat.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmaxaq_m_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxat.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxat.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmaxaq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s16.c -index f9a9f896aa2..aefe76a63e9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxa.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int16x8_t b) - { - return vmaxaq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmaxa.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmaxa.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int16x8_t b) - { - return vmaxaq (a, b); - } - --/* { dg-final { scan-assembler "vmaxa.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s32.c -index efe2fc16ff7..f5e018e3be5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxa.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32x4_t b) - { - return vmaxaq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmaxa.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmaxa.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32x4_t b) - { - return vmaxaq (a, b); - } - --/* { dg-final { scan-assembler "vmaxa.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s8.c -index 5c2e35f71a6..186b92a3d2f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxa.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int8x16_t b) - { - return vmaxaq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vmaxa.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmaxa.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int8x16_t b) - { - return vmaxaq (a, b); - } - --/* { dg-final { scan-assembler "vmaxa.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c -index 74ffad4e726..10478e9d97b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo (uint16_t a, int16x8_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (uint16_t a, int16x8_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo1 (uint16_t a, int16x8_t b, mve_pred16_t p) - { - return vmaxavq_p (a, b, p); - } - -- --int16_t --foo2 (uint8_t a, int16x8_t b, mve_pred16_t p) -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint16_t -+foo2 (int16x8_t b, mve_pred16_t p) - { -- return vmaxavq_p (a, b, p); -+ return vmaxavq_p (1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxavt.s16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c -index 40800b0f12e..d43afbce273 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, int32x4_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (uint32_t a, int32x4_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, int32x4_t b, mve_pred16_t p) - { - return vmaxavq_p (a, b, p); - } - -- --int32_t --foo2 (uint16_t a, int32x4_t b, mve_pred16_t p) -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (int32x4_t b, mve_pred16_t p) - { -- return vmaxavq_p (a, b, p); -+ return vmaxavq_p (1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxavt.s32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c -index 7638737fb84..beb34db720c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo (uint8_t a, int8x16_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (uint8_t a, int8x16_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo1 (uint8_t a, int8x16_t b, mve_pred16_t p) - { - return vmaxavq_p (a, b, p); - } - -- --int8_t --foo2 (uint32_t a, int8x16_t b, mve_pred16_t p) -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint8_t -+foo2 (int8x16_t b, mve_pred16_t p) - { -- return vmaxavq_p (a, b, p); -+ return vmaxavq_p (1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxavt.s8" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s16.c -index 0dca149b3e8..b997f308963 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s16.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxav.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo (uint16_t a, int16x8_t b) - { -@@ -11,18 +22,32 @@ foo (uint16_t a, int16x8_t b) - } - - -+/* -+**foo1: -+** ... -+** vmaxav.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo1 (uint16_t a, int16x8_t b) - { - return vmaxavq (a, b); - } - -- --int16_t --foo2 (uint8_t a, int16x8_t b) -+/* -+**foo2: -+** ... -+** vmaxav.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint16_t -+foo2 (int16x8_t b) - { -- return vmaxavq (a, b); -+ return vmaxavq (1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxav.s16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s32.c -index f419a771017..e969f572bd4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s32.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxav.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, int32x4_t b) - { -@@ -11,18 +22,32 @@ foo (uint32_t a, int32x4_t b) - } - - -+/* -+**foo1: -+** ... -+** vmaxav.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, int32x4_t b) - { - return vmaxavq (a, b); - } - -- --int32_t --foo2 (uint16_t a, int32x4_t b) -+/* -+**foo2: -+** ... -+** vmaxav.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (int32x4_t b) - { -- return vmaxavq (a, b); -+ return vmaxavq (1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxav.s32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s8.c -index 214ad88f4aa..e668c378a03 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s8.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxav.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo (uint8_t a, int8x16_t b) - { -@@ -11,18 +22,32 @@ foo (uint8_t a, int8x16_t b) - } - - -+/* -+**foo1: -+** ... -+** vmaxav.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo1 (uint8_t a, int8x16_t b) - { - return vmaxavq (a, b); - } - -- --int8_t --foo2 (uint32_t a, int8x16_t b) -+/* -+**foo2: -+** ... -+** vmaxav.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint8_t -+foo2 (int8x16_t b) - { -- return vmaxavq (a, b); -+ return vmaxavq (1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxav.s8" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c -index f19707125db..1f6902e952c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxnma.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vmaxnmaq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vmaxnma.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmaxnma.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vmaxnmaq (a, b); - } - --/* { dg-final { scan-assembler "vmaxnma.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c -index 94fc3a2aa28..dc79d1bf14b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxnma.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vmaxnmaq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vmaxnma.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmaxnma.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vmaxnmaq (a, b); - } - --/* { dg-final { scan-assembler "vmaxnma.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c -index b2e82f5464c..aa6d3a5f2a6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmat.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vmaxnmaq_m_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxnmat.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmat.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vmaxnmaq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c -index 8fa7344b054..8637c6efa7a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmat.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vmaxnmaq_m_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxnmat.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmat.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vmaxnmaq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16-1.c -deleted file mode 100644 -index 7c2349d1ee4..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16_t --foo1 (float16_t a, float16x8_t b) --{ -- return vmaxnmavq (a, b); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c -index 6d8cf19a341..7e3708cc5cc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxnmav.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo (float16_t a, float16x8_t b) - { -@@ -11,18 +22,32 @@ foo (float16_t a, float16x8_t b) - } - - -+/* -+**foo1: -+** ... -+** vmaxnmav.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo1 (float16_t a, float16x8_t b) - { - return vmaxnmavq (a, b); - } - -- -+/* -+**foo2: -+** ... -+** vmaxnmav.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t --foo2 (float32_t a, float16x8_t b) -+foo2 (float16x8_t b) - { -- return vmaxnmavq (a, b); -+ return vmaxnmavq (1.1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxnmav.f16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32-1.c -deleted file mode 100644 -index 0deef79487a..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32_t --foo1 (float32_t a, float32x4_t b) --{ -- return vmaxnmavq (a, b); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c -index ef79030d8eb..5f63fa52a1c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxnmav.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo (float32_t a, float32x4_t b) - { -@@ -11,18 +22,32 @@ foo (float32_t a, float32x4_t b) - } - - -+/* -+**foo1: -+** ... -+** vmaxnmav.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo1 (float32_t a, float32x4_t b) - { - return vmaxnmavq (a, b); - } - -- -+/* -+**foo2: -+** ... -+** vmaxnmav.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t --foo2 (float16_t a, float32x4_t b) -+foo2 (float32x4_t b) - { -- return vmaxnmavq (a, b); -+ return vmaxnmavq (1.1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxnmav.f32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16-1.c -deleted file mode 100644 -index 56a7ac001f9..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16_t --foo1 (float16_t a, float16x8_t b, mve_pred16_t p) --{ -- return vmaxnmavq_p (a, b, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c -index f7f39f59dad..1cc89f89a27 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmavt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo (float16_t a, float16x8_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (float16_t a, float16x8_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmavt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo1 (float16_t a, float16x8_t b, mve_pred16_t p) - { - return vmaxnmavq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmavt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t --foo2 (float32_t a, float16x8_t b, mve_pred16_t p) -+foo2 (float16x8_t b, mve_pred16_t p) - { -- return vmaxnmavq_p (a, b, p); -+ return vmaxnmavq_p (1.1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxnmavt.f16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32-1.c -deleted file mode 100644 -index 36c10a90633..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32_t --foo1 (float32_t a, float32x4_t b, mve_pred16_t p) --{ -- return vmaxnmavq_p (a, b, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c -index 341f6254a5a..339be113753 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmavt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo (float32_t a, float32x4_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (float32_t a, float32x4_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmavt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo1 (float32_t a, float32x4_t b, mve_pred16_t p) - { - return vmaxnmavq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmavt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t --foo2 (float16_t a, float32x4_t b, mve_pred16_t p) -+foo2 (float32x4_t b, mve_pred16_t p) - { -- return vmaxnmavq_p (a, b, p); -+ return vmaxnmavq_p (1.1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxnmavt.f32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c -index 59a8070e07b..2c2ac3c4edd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxnm.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vmaxnmq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vmaxnm.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmaxnm.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vmaxnmq (a, b); - } - --/* { dg-final { scan-assembler "vmaxnm.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c -index 5db42bd4b8c..18f4f0817ea 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxnm.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vmaxnmq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vmaxnm.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmaxnm.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vmaxnmq (a, b); - } - --/* { dg-final { scan-assembler "vmaxnm.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c -index 4668fd03c9d..5cf0d72b8af 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vmaxnmq_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxnmt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vmaxnmq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxnmt.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c -index 9e8ccbc84b7..4a10383bb3b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vmaxnmq_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxnmt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vmaxnmq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxnmt.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c -index ecca6069d22..c52bfce7425 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vmaxnmq_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxnmt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vmaxnmq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c -index c3965dda4f1..a940a08691d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vmaxnmq_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxnmt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vmaxnmq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16-1.c -deleted file mode 100644 -index f60641f5de0..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16_t --foo1 (float16_t a, float16x8_t b) --{ -- return vmaxnmvq (23.35, b); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c -index 80bd1d4cda1..d2a67445849 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxnmv.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo (float16_t a, float16x8_t b) - { -@@ -11,18 +22,32 @@ foo (float16_t a, float16x8_t b) - } - - -+/* -+**foo1: -+** ... -+** vmaxnmv.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo1 (float16_t a, float16x8_t b) - { - return vmaxnmvq (a, b); - } - -- -+/* -+**foo2: -+** ... -+** vmaxnmv.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t --foo2 (float32_t a, float16x8_t b) -+foo2 (float16x8_t b) - { -- return vmaxnmvq (a, b); -+ return vmaxnmvq (1.1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxnmv.f16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32-1.c -deleted file mode 100644 -index f8c9f44ac78..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32_t --foo1 (float32_t a, float32x4_t b) --{ -- return vmaxnmvq (34.56, b); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c -index bb2fc46f88a..b56620693e8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxnmv.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo (float32_t a, float32x4_t b) - { -@@ -11,18 +22,32 @@ foo (float32_t a, float32x4_t b) - } - - -+/* -+**foo1: -+** ... -+** vmaxnmv.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo1 (float32_t a, float32x4_t b) - { - return vmaxnmvq (a, b); - } - -- -+/* -+**foo2: -+** ... -+** vmaxnmv.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t --foo2 (float16_t a, float32x4_t b) -+foo2 (float32x4_t b) - { -- return vmaxnmvq (a, b); -+ return vmaxnmvq (1.1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxnmv.f32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16-1.c -deleted file mode 100644 -index 96820ecab91..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16_t --foo1 (float16_t a, float16x8_t b, mve_pred16_t p) --{ -- return vmaxnmvq_p (a, b, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c -index 3efe203007b..9c4df6b2642 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmvt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo (float16_t a, float16x8_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (float16_t a, float16x8_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmvt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo1 (float16_t a, float16x8_t b, mve_pred16_t p) - { - return vmaxnmvq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmvt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t --foo2 (float32_t a, float16x8_t b, mve_pred16_t p) -+foo2 (float16x8_t b, mve_pred16_t p) - { -- return vmaxnmvq_p (a, b, p); -+ return vmaxnmvq_p (1.1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxnmvt.f16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32-1.c -deleted file mode 100644 -index 826ee8f900a..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32_t --foo1 (float32_t a, float32x4_t b, mve_pred16_t p) --{ -- return vmaxnmvq_p (a, b, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c -index 6c13247f1f1..fa4b5830679 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmvt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo (float32_t a, float32x4_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (float32_t a, float32x4_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmvt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo1 (float32_t a, float32x4_t b, mve_pred16_t p) - { - return vmaxnmvq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxnmvt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t --foo2 (float16_t a, float32x4_t b, mve_pred16_t p) -+foo2 (float32x4_t b, mve_pred16_t p) - { -- return vmaxnmvq_p (a, b, p); -+ return vmaxnmvq_p (1.1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxnmvt.f32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c -index 2791ed4c562..5ae4d8addb3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmaxq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmaxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c -index 27f7d5d7b16..6963a987176 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmaxq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmaxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c -index 23b7569f720..e7064300952 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmaxq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmaxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c -index 61e51e3b830..41117d46b25 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmaxq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmaxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c -index 23df7eeaed6..9ce6f831785 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmaxq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmaxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c -index 138d5c87894..fcd90fb6f90 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmaxq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmaxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s16.c -index a42fc82a852..7c532dcac7b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmax.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vmaxq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmax.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmax.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vmaxq (a, b); - } - --/* { dg-final { scan-assembler "vmax.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s32.c -index 14c094a5d11..e8e3a4eeb0c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmax.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vmaxq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmax.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmax.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vmaxq (a, b); - } - --/* { dg-final { scan-assembler "vmax.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s8.c -index 0540a27bae9..ad529c03d8f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmax.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vmaxq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vmax.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmax.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vmaxq (a, b); - } - --/* { dg-final { scan-assembler "vmax.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u16.c -index 6b9b5a73bcd..04d8c64fdd3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmax.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vmaxq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vmax.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmax.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vmaxq (a, b); - } - --/* { dg-final { scan-assembler "vmax.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u32.c -index 3112302bf1a..d68ae2b43cb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmax.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vmaxq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vmax.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmax.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vmaxq (a, b); - } - --/* { dg-final { scan-assembler "vmax.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u8.c -index b1baa5083bd..944353ef2d8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmax.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vmaxq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vmax.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmax.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vmaxq (a, b); - } - --/* { dg-final { scan-assembler "vmax.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c -index 9d92f2ccd85..843a4cc4a70 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmaxq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmaxq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c -index 200fd4b1bb1..ff81a393f3f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmaxq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmaxq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c -index 2fe752558b9..68563747f3b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmaxq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmaxq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c -index 967622e331c..85c21e6ab1e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmaxq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmaxq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c -index 56b5d8fa8b8..b45d7bd3ea4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmaxq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmaxq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c -index 1816f959dd7..de8b2d4a48c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmaxq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmaxt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmaxq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c -index 657efc51bea..ac29f91bdf2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int16_t - foo (int16_t a, int16x8_t b, mve_pred16_t p) - { -@@ -11,18 +26,24 @@ foo (int16_t a, int16x8_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int16_t - foo1 (int16_t a, int16x8_t b, mve_pred16_t p) - { - return vmaxvq_p (a, b, p); - } - -- --int16_t --foo2 (int8_t a, int16x8_t b, mve_pred16_t p) --{ -- return vmaxvq_p (a, b, p); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxvt.s16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c -index 5882351c0fa..4290484f847 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int32x4_t b, mve_pred16_t p) - { -@@ -11,18 +26,24 @@ foo (int32_t a, int32x4_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int32x4_t b, mve_pred16_t p) - { - return vmaxvq_p (a, b, p); - } - -- --int32_t --foo2 (int16_t a, int32x4_t b, mve_pred16_t p) --{ -- return vmaxvq_p (a, b, p); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxvt.s32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c -index 3737ecd3307..6a9b1cedf0a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int8_t - foo (int8_t a, int8x16_t b, mve_pred16_t p) - { -@@ -11,18 +26,24 @@ foo (int8_t a, int8x16_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int8_t - foo1 (int8_t a, int8x16_t b, mve_pred16_t p) - { - return vmaxvq_p (a, b, p); - } - -- --int8_t --foo2 (int32_t a, int8x16_t b, mve_pred16_t p) --{ -- return vmaxvq_p (a, b, p); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxvt.s8" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c -index 348cf39caa0..3cc1dbb0bbd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo (uint16_t a, uint16x8_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (uint16_t a, uint16x8_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo1 (uint16_t a, uint16x8_t b, mve_pred16_t p) - { - return vmaxvq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t --foo2 (uint32_t a, uint16x8_t b, mve_pred16_t p) -+foo2 (uint16x8_t b, mve_pred16_t p) - { -- return vmaxvq_p (a, b, p); -+ return vmaxvq_p (1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxvt.u16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c -index f2e976216c5..99264f3a2b3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint32x4_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (uint32_t a, uint32x4_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint32x4_t b, mve_pred16_t p) - { - return vmaxvq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo2 (uint8_t a, uint32x4_t b, mve_pred16_t p) -+foo2 (uint32x4_t b, mve_pred16_t p) - { -- return vmaxvq_p (a, b, p); -+ return vmaxvq_p (1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxvt.u32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c -index 7df5b63c9bc..6aac76b8798 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo (uint8_t a, uint8x16_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (uint8_t a, uint8x16_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo1 (uint8_t a, uint8x16_t b, mve_pred16_t p) - { - return vmaxvq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmaxvt.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t --foo2 (uint16_t a, uint8x16_t b, mve_pred16_t p) -+foo2 (uint8x16_t b, mve_pred16_t p) - { -- return vmaxvq_p (a, b, p); -+ return vmaxvq_p (1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxvt.u8" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s16.c -index 8412452cf33..18938d86396 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s16.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxv.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int16_t - foo (int16_t a, int16x8_t b) - { -@@ -11,18 +22,20 @@ foo (int16_t a, int16x8_t b) - } - - -+/* -+**foo1: -+** ... -+** vmaxv.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int16_t - foo1 (int16_t a, int16x8_t b) - { - return vmaxvq (a, b); - } - -- --int16_t --foo2 (int8_t a, int16x8_t b) --{ -- return vmaxvq (a, b); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxv.s16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s32.c -index 09f4909c9a8..26ee10b0c27 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s32.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxv.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int32x4_t b) - { -@@ -11,18 +22,20 @@ foo (int32_t a, int32x4_t b) - } - - -+/* -+**foo1: -+** ... -+** vmaxv.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int32x4_t b) - { - return vmaxvq (a, b); - } - -- --int32_t --foo2 (int16_t a, int32x4_t b) --{ -- return vmaxvq (a, b); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxv.s32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s8.c -index a087bbc6b64..b5bbfc3bd11 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s8.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxv.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int8_t - foo (int8_t a, int8x16_t b) - { -@@ -11,18 +22,20 @@ foo (int8_t a, int8x16_t b) - } - - -+/* -+**foo1: -+** ... -+** vmaxv.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int8_t - foo1 (int8_t a, int8x16_t b) - { - return vmaxvq (a, b); - } - -- --int8_t --foo2 (int32_t a, int8x16_t b) --{ -- return vmaxvq (a, b); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxv.s8" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u16.c -index 47fe0d1cf0f..f806cfa7e36 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u16.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxv.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo (uint16_t a, uint16x8_t b) - { -@@ -11,18 +22,32 @@ foo (uint16_t a, uint16x8_t b) - } - - -+/* -+**foo1: -+** ... -+** vmaxv.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo1 (uint16_t a, uint16x8_t b) - { - return vmaxvq (a, b); - } - -- -+/* -+**foo2: -+** ... -+** vmaxv.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t --foo2 (uint32_t a, uint16x8_t b) -+foo2 (uint16x8_t b) - { -- return vmaxvq (a, b); -+ return vmaxvq (1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxv.u16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u32.c -index aa723daf5dd..b46dc06611f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u32.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxv.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint32x4_t b) - { -@@ -11,18 +22,32 @@ foo (uint32_t a, uint32x4_t b) - } - - -+/* -+**foo1: -+** ... -+** vmaxv.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint32x4_t b) - { - return vmaxvq (a, b); - } - -- -+/* -+**foo2: -+** ... -+** vmaxv.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo2 (uint8_t a, uint32x4_t b) -+foo2 (uint32x4_t b) - { -- return vmaxvq (a, b); -+ return vmaxvq (1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxv.u32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u8.c -index 3aae785040c..1a64f5528c4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u8.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmaxv.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo (uint8_t a, uint8x16_t b) - { -@@ -11,18 +22,32 @@ foo (uint8_t a, uint8x16_t b) - } - - -+/* -+**foo1: -+** ... -+** vmaxv.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo1 (uint8_t a, uint8x16_t b) - { - return vmaxvq (a, b); - } - -- -+/* -+**foo2: -+** ... -+** vmaxv.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t --foo2 (uint16_t a, uint8x16_t b) -+foo2 (uint8x16_t b) - { -- return vmaxvq (a, b); -+ return vmaxvq (1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vmaxv.u8" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s16.c -index 0324110c6a8..50a98bf0780 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminat.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vminaq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vminat.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminat.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vminaq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s32.c -index a2886d4f40f..3870cf5226a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminat.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vminaq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vminat.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminat.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vminaq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s8.c -index 95eb038efc0..74a3122b18f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminat.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vminaq_m_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vminat.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminat.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vminaq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s16.c -index 3a157e00a27..f78ee9de4f6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmina.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int16x8_t b) - { - return vminaq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmina.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmina.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int16x8_t b) - { - return vminaq (a, b); - } - --/* { dg-final { scan-assembler "vmina.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s32.c -index 5c732c65d63..cbe18e05e26 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmina.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32x4_t b) - { - return vminaq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmina.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmina.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32x4_t b) - { - return vminaq (a, b); - } - --/* { dg-final { scan-assembler "vmina.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s8.c -index 2e4dad141ce..e8030958284 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmina.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int8x16_t b) - { - return vminaq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vmina.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmina.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int8x16_t b) - { - return vminaq (a, b); - } - --/* { dg-final { scan-assembler "vmina.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s16.c -index 9303ae02e39..ff77b8e72c5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s16.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo (uint16_t a, int16x8_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (uint16_t a, int16x8_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo1 (uint16_t a, int16x8_t b, mve_pred16_t p) - { - return vminavq_p (a, b, p); - } - -- --int16_t --foo2 (uint8_t a, int16x8_t b, mve_pred16_t p) -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint16_t -+foo2 (int16x8_t b, mve_pred16_t p) - { -- return vminavq_p (a, b, p); -+ return vminavq_p (1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminavt.s16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s32.c -index 36247f68b2c..4c1433d67f2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s32.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, int32x4_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (uint32_t a, int32x4_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, int32x4_t b, mve_pred16_t p) - { - return vminavq_p (a, b, p); - } - -- --int32_t --foo2 (uint16_t a, int32x4_t b, mve_pred16_t p) -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (int32x4_t b, mve_pred16_t p) - { -- return vminavq_p (a, b, p); -+ return vminavq_p (1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminavt.s32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s8.c -index d3361615dcc..ef923f8d022 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s8.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo (uint8_t a, int8x16_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (uint8_t a, int8x16_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo1 (uint8_t a, int8x16_t b, mve_pred16_t p) - { - return vminavq_p (a, b, p); - } - -- --int8_t --foo2 (uint32_t a, int8x16_t b, mve_pred16_t p) -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint8_t -+foo2 (int8x16_t b, mve_pred16_t p) - { -- return vminavq_p (a, b, p); -+ return vminavq_p (1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminavt.s8" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s16.c -index 17e4edca2f1..3f66002e46c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s16.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminav.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo (uint16_t a, int16x8_t b) - { -@@ -11,18 +22,32 @@ foo (uint16_t a, int16x8_t b) - } - - -+/* -+**foo1: -+** ... -+** vminav.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo1 (uint16_t a, int16x8_t b) - { - return vminavq (a, b); - } - -- --int16_t --foo2 (uint8_t a, int16x8_t b) -+/* -+**foo2: -+** ... -+** vminav.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint16_t -+foo2 (int16x8_t b) - { -- return vminavq (a, b); -+ return vminavq (1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminav.s16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s32.c -index 032d02b8857..69daa328374 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s32.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminav.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, int32x4_t b) - { -@@ -11,18 +22,32 @@ foo (uint32_t a, int32x4_t b) - } - - -+/* -+**foo1: -+** ... -+** vminav.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, int32x4_t b) - { - return vminavq (a, b); - } - -- --int32_t --foo2 (uint16_t a, int32x4_t b) -+/* -+**foo2: -+** ... -+** vminav.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (int32x4_t b) - { -- return vminavq (a, b); -+ return vminavq (1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminav.s32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s8.c -index 2a2bb3d6146..95fb6cf51b4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s8.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminav.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo (uint8_t a, int8x16_t b) - { -@@ -11,18 +22,32 @@ foo (uint8_t a, int8x16_t b) - } - - -+/* -+**foo1: -+** ... -+** vminav.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo1 (uint8_t a, int8x16_t b) - { - return vminavq (a, b); - } - -- --int8_t --foo2 (uint32_t a, int8x16_t b) -+/* -+**foo2: -+** ... -+** vminav.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint8_t -+foo2 (int8x16_t b) - { -- return vminavq (a, b); -+ return vminavq (1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminav.s8" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_f16.c -index cf32186d642..19c736cd318 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminnma.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vminnmaq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vminnma.f16" } } */ - -+/* -+**foo1: -+** ... -+** vminnma.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vminnmaq (a, b); - } - --/* { dg-final { scan-assembler "vminnma.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_f32.c -index 1c3f19c9e1b..8dc7ea9a72d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminnma.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vminnmaq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vminnma.f32" } } */ - -+/* -+**foo1: -+** ... -+** vminnma.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vminnmaq (a, b); - } - --/* { dg-final { scan-assembler "vminnma.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_m_f16.c -index 4423903e913..c57b3842a31 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_m_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmat.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vminnmaq_m_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vminnmat.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmat.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vminnmaq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_m_f32.c -index 683f40ad3d8..8c51328c148 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_m_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmat.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vminnmaq_m_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vminnmat.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmat.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vminnmaq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f16-1.c -deleted file mode 100644 -index 37d5136edca..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16_t --foo1 (float16_t a, float16x8_t b) --{ -- return vminnmavq (a, b); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f16.c -index fadb23e05c8..79503f2b212 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f16.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminnmav.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo (float16_t a, float16x8_t b) - { -@@ -11,18 +22,32 @@ foo (float16_t a, float16x8_t b) - } - - -+/* -+**foo1: -+** ... -+** vminnmav.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo1 (float16_t a, float16x8_t b) - { - return vminnmavq (a, b); - } - -- -+/* -+**foo2: -+** ... -+** vminnmav.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t --foo2 (float32_t a, float16x8_t b) -+foo2 (float16x8_t b) - { -- return vminnmavq (a, b); -+ return vminnmavq (1.1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminnmav.f16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f32-1.c -deleted file mode 100644 -index 78978d05054..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32_t --foo1 (float32_t a, float32x4_t b) --{ -- return vminnmavq (a, b); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f32.c -index 84714a96b9f..34dd9ddbb17 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f32.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminnmav.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo (float32_t a, float32x4_t b) - { -@@ -11,18 +22,32 @@ foo (float32_t a, float32x4_t b) - } - - -+/* -+**foo1: -+** ... -+** vminnmav.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo1 (float32_t a, float32x4_t b) - { - return vminnmavq (a, b); - } - -- -+/* -+**foo2: -+** ... -+** vminnmav.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t --foo2 (float16_t a, float32x4_t b) -+foo2 (float32x4_t b) - { -- return vminnmavq (a, b); -+ return vminnmavq (1.1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminnmav.f32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f16-1.c -deleted file mode 100644 -index 7170b747a40..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16_t --foo1 (float16_t a, float16x8_t b, mve_pred16_t p) --{ -- return vminnmavq_p (a, b, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c -index c79fa307ae0..ae7931fc966 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmavt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo (float16_t a, float16x8_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (float16_t a, float16x8_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmavt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo1 (float16_t a, float16x8_t b, mve_pred16_t p) - { - return vminnmavq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmavt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t --foo2 (float32_t a, float16x8_t b, mve_pred16_t p) -+foo2 (float16x8_t b, mve_pred16_t p) - { -- return vminnmavq_p (a, b, p); -+ return vminnmavq_p (1.1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminnmavt.f16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f32-1.c -deleted file mode 100644 -index 09559053852..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32_t --foo1 (float32_t a, float32x4_t b, mve_pred16_t p) --{ -- return vminnmavq_p (a, b, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c -index bea04c7aac6..2d6aad6bc51 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmavt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo (float32_t a, float32x4_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (float32_t a, float32x4_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmavt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo1 (float32_t a, float32x4_t b, mve_pred16_t p) - { - return vminnmavq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmavt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t --foo2 (float16_t a, float32x4_t b, mve_pred16_t p) -+foo2 (float32x4_t b, mve_pred16_t p) - { -- return vminnmavq_p (a, b, p); -+ return vminnmavq_p (1.1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminnmavt.f32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_f16.c -index 18d4a4c1330..251d35e9c6e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminnm.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vminnmq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vminnm.f16" } } */ - -+/* -+**foo1: -+** ... -+** vminnm.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vminnmq (a, b); - } - --/* { dg-final { scan-assembler "vminnm.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_f32.c -index 34144cad17f..7d77e215823 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminnm.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vminnmq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vminnm.f32" } } */ - -+/* -+**foo1: -+** ... -+** vminnm.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vminnmq (a, b); - } - --/* { dg-final { scan-assembler "vminnm.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_m_f16.c -index e5533d28035..fb741991a41 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vminnmq_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vminnmt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vminnmq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vminnmt.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_m_f32.c -index 382d16c4489..fa3c47c23de 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vminnmq_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vminnmt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vminnmq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vminnmt.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_x_f16.c -index 04d606ce5cd..632dcaa9dbf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vminnmq_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vminnmt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vminnmq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_x_f32.c -index 87cd970fd11..5c290687e60 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vminnmq_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vminnmt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vminnmq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f16-1.c -deleted file mode 100644 -index 132d1a123f8..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16_t --foo1 (float16_t a, float16x8_t b) --{ -- return vminnmvq (a, b); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f16.c -index 0eb3a4af14e..2ef50208def 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f16.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminnmv.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo (float16_t a, float16x8_t b) - { -@@ -11,18 +22,32 @@ foo (float16_t a, float16x8_t b) - } - - -+/* -+**foo1: -+** ... -+** vminnmv.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo1 (float16_t a, float16x8_t b) - { - return vminnmvq (a, b); - } - -- -+/* -+**foo2: -+** ... -+** vminnmv.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t --foo2 (float32_t a, float16x8_t b) -+foo2 (float16x8_t b) - { -- return vminnmvq (a, b); -+ return vminnmvq (1.1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminnmv.f16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f32-1.c -deleted file mode 100644 -index 74909075b09..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32_t --foo1 (float32_t a, float32x4_t b) --{ -- return vminnmvq (a, b); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f32.c -index f3183508f8e..1a65fca220a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f32.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminnmv.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo (float32_t a, float32x4_t b) - { -@@ -11,18 +22,32 @@ foo (float32_t a, float32x4_t b) - } - - -+/* -+**foo1: -+** ... -+** vminnmv.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo1 (float32_t a, float32x4_t b) - { - return vminnmvq (a, b); - } - -- -+/* -+**foo2: -+** ... -+** vminnmv.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t --foo2 (float16_t a, float32x4_t b) -+foo2 (float32x4_t b) - { -- return vminnmvq (a, b); -+ return vminnmvq (1.1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminnmv.f32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f16-1.c -deleted file mode 100644 -index c88c3b74a50..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16_t --foo1 (float16_t a, float16x8_t b, mve_pred16_t p) --{ -- return vminnmvq_p (a, b, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c -index 16f6ac514c8..8cb61904dfe 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmvt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo (float16_t a, float16x8_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (float16_t a, float16x8_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmvt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t - foo1 (float16_t a, float16x8_t b, mve_pred16_t p) - { - return vminnmvq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmvt.f16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float16_t --foo2 (float32_t a, float16x8_t b, mve_pred16_t p) -+foo2 (float16x8_t b, mve_pred16_t p) - { -- return vminnmvq_p (a, b, p); -+ return vminnmvq_p (1.1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminnmvt.f16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f32-1.c -deleted file mode 100644 -index e4db972fc70..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32_t --foo1 (float32_t a, float32x4_t b, mve_pred16_t p) --{ -- return vminnmvq_p (a, b, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c -index a8e4f9ffba7..93bad1ec334 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmvt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo (float32_t a, float32x4_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (float32_t a, float32x4_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmvt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t - foo1 (float32_t a, float32x4_t b, mve_pred16_t p) - { - return vminnmvq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminnmvt.f32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - float32_t --foo2 (float16_t a, float32x4_t b, mve_pred16_t p) -+foo2 (float32x4_t b, mve_pred16_t p) - { -- return vminnmvq_p (a, b, p); -+ return vminnmvq_p (1.1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminnmvt.f32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s16.c -index f257ddcf600..1b3bbe163fb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vminq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vminq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s32.c -index 957da71d0e3..b45cc91f79b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vminq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vminq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s8.c -index fea8bfd7994..fa7c43bb392 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vminq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vminq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u16.c -index 7cc19a7dd5d..65dbf136d27 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vminq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vminq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u32.c -index 301fbfc751f..256ee84ee40 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vminq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vminq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u8.c -index 7a65b3557a3..9399ac4ab83 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vminq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vminq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s16.c -index d46a3c4ee18..8d3a948ec51 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmin.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vminq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmin.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmin.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vminq (a, b); - } - --/* { dg-final { scan-assembler "vmin.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s32.c -index 601e918a5bf..51970d67d5b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmin.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vminq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmin.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmin.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vminq (a, b); - } - --/* { dg-final { scan-assembler "vmin.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s8.c -index e2ae2341ad8..d5e671fe3b0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmin.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vminq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vmin.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmin.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vminq (a, b); - } - --/* { dg-final { scan-assembler "vmin.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u16.c -index 3cac573f6ef..ade8c016637 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmin.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vminq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vmin.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmin.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vminq (a, b); - } - --/* { dg-final { scan-assembler "vmin.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u32.c -index ca3ef245fe9..bb15d1b4575 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmin.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vminq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vmin.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmin.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vminq (a, b); - } - --/* { dg-final { scan-assembler "vmin.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u8.c -index b7ef4db22ff..ff9b23288eb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmin.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vminq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vmin.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmin.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vminq (a, b); - } - --/* { dg-final { scan-assembler "vmin.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s16.c -index af93c78658e..6ae37c58b64 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vminq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vminq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s32.c -index 76f0831e48e..395907dc7ec 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vminq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vminq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s8.c -index fdd6e94497c..16f6ef3cd66 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vminq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vminq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u16.c -index 9842954c761..c25dc747801 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vminq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vminq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u32.c -index 741e4508879..bf2764d6ac0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vminq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vminq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u8.c -index 13743fc87a1..f4a35535f68 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vminq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmint.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmint.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vminq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s16.c -index 91bb63f6ba6..6562d6ae757 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s16.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int16_t - foo (int16_t a, int16x8_t b, mve_pred16_t p) - { -@@ -11,18 +26,24 @@ foo (int16_t a, int16x8_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int16_t - foo1 (int16_t a, int16x8_t b, mve_pred16_t p) - { - return vminvq_p (a, b, p); - } - -- --int16_t --foo2 (int8_t a, int16x8_t b, mve_pred16_t p) --{ -- return vminvq_p (a, b, p); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminvt.s16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s32.c -index a846701312c..6e3715e3ef3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s32.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int32x4_t b, mve_pred16_t p) - { -@@ -11,18 +26,24 @@ foo (int32_t a, int32x4_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int32x4_t b, mve_pred16_t p) - { - return vminvq_p (a, b, p); - } - -- --int32_t --foo2 (int16_t a, int32x4_t b, mve_pred16_t p) --{ -- return vminvq_p (a, b, p); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminvt.s32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s8.c -index 716d414f3a7..dc06d0f5e7e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s8.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int8_t - foo (int8_t a, int8x16_t b, mve_pred16_t p) - { -@@ -11,18 +26,24 @@ foo (int8_t a, int8x16_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int8_t - foo1 (int8_t a, int8x16_t b, mve_pred16_t p) - { - return vminvq_p (a, b, p); - } - -- --int8_t --foo2 (int32_t a, int8x16_t b, mve_pred16_t p) --{ -- return vminvq_p (a, b, p); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminvt.s8" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u16.c -index cc7f8fe8933..16cc419fce2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u16.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo (uint16_t a, uint16x8_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (uint16_t a, uint16x8_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo1 (uint16_t a, uint16x8_t b, mve_pred16_t p) - { - return vminvq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t --foo2 (uint32_t a, uint16x8_t b, mve_pred16_t p) -+foo2 (uint16x8_t b, mve_pred16_t p) - { -- return vminvq_p (a, b, p); -+ return vminvq_p (1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminvt.u16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u32.c -index 6bde0be29cc..bef29dc40e3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u32.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint32x4_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (uint32_t a, uint32x4_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint32x4_t b, mve_pred16_t p) - { - return vminvq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo2 (uint8_t a, uint32x4_t b, mve_pred16_t p) -+foo2 (uint32x4_t b, mve_pred16_t p) - { -- return vminvq_p (a, b, p); -+ return vminvq_p (1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminvt.u32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u8.c -index bb894904f3c..42beaee1d45 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u8.c -@@ -1,9 +1,24 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo (uint8_t a, uint8x16_t b, mve_pred16_t p) - { -@@ -11,18 +26,40 @@ foo (uint8_t a, uint8x16_t b, mve_pred16_t p) - } - - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo1 (uint8_t a, uint8x16_t b, mve_pred16_t p) - { - return vminvq_p (a, b, p); - } - -- -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vminvt.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t --foo2 (uint16_t a, uint8x16_t b, mve_pred16_t p) -+foo2 (uint8x16_t b, mve_pred16_t p) - { -- return vminvq_p (a, b, p); -+ return vminvq_p (1, b, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminvt.u8" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s16.c -index 6d589aa4a05..9fc314d2573 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s16.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminv.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int16_t - foo (int16_t a, int16x8_t b) - { -@@ -11,17 +22,20 @@ foo (int16_t a, int16x8_t b) - } - - -+/* -+**foo1: -+** ... -+** vminv.s16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int16_t - foo1 (int16_t a, int16x8_t b) - { - return vminvq (a, b); - } - --int16_t --foo2 (int8_t a, int16x8_t b) --{ -- return vminvq (a, b); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminv.s16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s32.c -index 7c727d6d92b..3546b69e9a8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s32.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminv.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int32x4_t b) - { -@@ -11,17 +22,20 @@ foo (int32_t a, int32x4_t b) - } - - -+/* -+**foo1: -+** ... -+** vminv.s32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int32x4_t b) - { - return vminvq (a, b); - } - --int32_t --foo2 (int8_t a, int32x4_t b) --{ -- return vminvq (a, b); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminv.s32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s8.c -index 76309482fc5..e512a7df254 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s8.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminv.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int8_t - foo (int8_t a, int8x16_t b) - { -@@ -11,17 +22,20 @@ foo (int8_t a, int8x16_t b) - } - - -+/* -+**foo1: -+** ... -+** vminv.s8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - int8_t - foo1 (int8_t a, int8x16_t b) - { - return vminvq (a, b); - } - --int8_t --foo2 (int32_t a, int8x16_t b) --{ -- return vminvq (a, b); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminv.s8" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u16.c -index 698975f456c..29746c3184a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u16.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminv.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo (uint16_t a, uint16x8_t b) - { -@@ -11,18 +22,32 @@ foo (uint16_t a, uint16x8_t b) - } - - -+/* -+**foo1: -+** ... -+** vminv.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint16_t - foo1 (uint16_t a, uint16x8_t b) - { - return vminvq (a, b); - } - -- --uint8_t --foo2 (uint32_t a, uint16x8_t b) -+/* -+**foo2: -+** ... -+** vminv.u16 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint16_t -+foo2 (uint16x8_t b) - { -- return vminvq (a, b); -+ return vminvq (1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminv.u16" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u32.c -index 7489f81debf..d12764ddfa7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u32.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminv.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo (uint32_t a, uint32x4_t b) - { -@@ -11,17 +22,32 @@ foo (uint32_t a, uint32x4_t b) - } - - -+/* -+**foo1: -+** ... -+** vminv.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t - foo1 (uint32_t a, uint32x4_t b) - { - return vminvq (a, b); - } - -+/* -+**foo2: -+** ... -+** vminv.u32 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo2 (uint16_t a, uint32x4_t b) -+foo2 (uint32x4_t b) - { -- return vminvq (a, b); -+ return vminvq (1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminv.u32" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u8.c -index aa2b986d558..60175116e9f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u8.c -@@ -1,9 +1,20 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vminv.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo (uint8_t a, uint8x16_t b) - { -@@ -11,18 +22,32 @@ foo (uint8_t a, uint8x16_t b) - } - - -+/* -+**foo1: -+** ... -+** vminv.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ - uint8_t - foo1 (uint8_t a, uint8x16_t b) - { - return vminvq (a, b); - } - -- --uint16_t --foo2 (uint32_t a, uint8x16_t b) -+/* -+**foo2: -+** ... -+** vminv.u8 (?:ip|fp|r[0-9]+), q[0-9]+(?: @.*|) -+** ... -+*/ -+uint8_t -+foo2 (uint8x16_t b) - { -- return vminvq (a, b); -+ return vminvq (1, b); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --/* { dg-final { scan-assembler-times "vminv.u8" 3 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s16.c -index e458204c41b..258adfa989d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) -+foo (int32_t add, int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmladavaq_p_s16 (a, b, c, p); -+ return vmladavaq_p_s16 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavat.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) -+foo1 (int32_t add, int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmladavaq_p (a, b, c, p); -+ return vmladavaq_p (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavat.s16" } } */ --/* { dg-final { scan-assembler "vmladavat.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s32.c -index e3544787adb..78d3333a9fc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) -+foo (int32_t add, int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmladavaq_p_s32 (a, b, c, p); -+ return vmladavaq_p_s32 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavat.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) -+foo1 (int32_t add, int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmladavaq_p (a, b, c, p); -+ return vmladavaq_p (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavat.s32" } } */ --/* { dg-final { scan-assembler "vmladavat.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s8.c -index 1d4ca722f44..1529e9466f1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32_t a, int8x16_t b, int8x16_t c, mve_pred16_t p) -+foo (int32_t add, int8x16_t m1, int8x16_t m2, mve_pred16_t p) - { -- return vmladavaq_p_s8 (a, b, c, p); -+ return vmladavaq_p_s8 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavat.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32_t a, int8x16_t b, int8x16_t c, mve_pred16_t p) -+foo1 (int32_t add, int8x16_t m1, int8x16_t m2, mve_pred16_t p) - { -- return vmladavaq_p (a, b, c, p); -+ return vmladavaq_p (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavat.s8" } } */ --/* { dg-final { scan-assembler "vmladavat.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u16.c -index 91a11c8b8b1..3266c3a6d1d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u16.c -@@ -1,22 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo (uint32_t a, uint16x8_t b, uint16x8_t c, mve_pred16_t p) -+foo (uint32_t add, uint16x8_t m1, uint16x8_t m2, mve_pred16_t p) - { -- return vmladavaq_p_u16 (a, b, c, p); -+ return vmladavaq_p_u16 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavat.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo1 (uint32_t a, uint16x8_t b, uint16x8_t c, mve_pred16_t p) -+foo1 (uint32_t add, uint16x8_t m1, uint16x8_t m2, mve_pred16_t p) - { -- return vmladavaq_p (a, b, c, p); -+ return vmladavaq_p (add, m1, m2, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint16x8_t m1, uint16x8_t m2, mve_pred16_t p) -+{ -+ return vmladavaq_p (1, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavat.u16" } } */ --/* { dg-final { scan-assembler "vmladavat.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u32.c -index 0efe8d0902f..a555e5f3fb0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u32.c -@@ -1,22 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo (uint32_t a, uint32x4_t b, uint32x4_t c, mve_pred16_t p) -+foo (uint32_t add, uint32x4_t m1, uint32x4_t m2, mve_pred16_t p) - { -- return vmladavaq_p_u32 (a, b, c, p); -+ return vmladavaq_p_u32 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavat.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo1 (uint32_t a, uint32x4_t b, uint32x4_t c, mve_pred16_t p) -+foo1 (uint32_t add, uint32x4_t m1, uint32x4_t m2, mve_pred16_t p) - { -- return vmladavaq_p (a, b, c, p); -+ return vmladavaq_p (add, m1, m2, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint32x4_t m1, uint32x4_t m2, mve_pred16_t p) -+{ -+ return vmladavaq_p (1, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavat.u32" } } */ --/* { dg-final { scan-assembler "vmladavat.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u8.c -index a8da9b0d2ef..4f9596f4958 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u8.c -@@ -1,22 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo (uint32_t a, uint8x16_t b, uint8x16_t c, mve_pred16_t p) -+foo (uint32_t add, uint8x16_t m1, uint8x16_t m2, mve_pred16_t p) - { -- return vmladavaq_p_u8 (a, b, c, p); -+ return vmladavaq_p_u8 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavat.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo1 (uint32_t a, uint8x16_t b, uint8x16_t c, mve_pred16_t p) -+foo1 (uint32_t add, uint8x16_t m1, uint8x16_t m2, mve_pred16_t p) - { -- return vmladavaq_p (a, b, c, p); -+ return vmladavaq_p (add, m1, m2, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavat.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint8x16_t m1, uint8x16_t m2, mve_pred16_t p) -+{ -+ return vmladavaq_p (1, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavat.u8" } } */ --/* { dg-final { scan-assembler "vmladavat.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s16.c -index a45ea90b60f..9f7c0eeb04f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladava.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32_t a, int16x8_t b, int16x8_t c) -+foo (int32_t add, int16x8_t m1, int16x8_t m2) - { -- return vmladavaq_s16 (a, b, c); -+ return vmladavaq_s16 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmladava.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmladava.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32_t a, int16x8_t b, int16x8_t c) -+foo1 (int32_t add, int16x8_t m1, int16x8_t m2) - { -- return vmladavaq (a, b, c); -+ return vmladavaq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladava.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s32.c -index 6533addcfaf..012a06988e5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladava.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32_t a, int32x4_t b, int32x4_t c) -+foo (int32_t add, int32x4_t m1, int32x4_t m2) - { -- return vmladavaq_s32 (a, b, c); -+ return vmladavaq_s32 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmladava.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmladava.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32_t a, int32x4_t b, int32x4_t c) -+foo1 (int32_t add, int32x4_t m1, int32x4_t m2) - { -- return vmladavaq (a, b, c); -+ return vmladavaq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladava.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s8.c -index 6fed506e7c4..f41230f3ac8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladava.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32_t a, int8x16_t b, int8x16_t c) -+foo (int32_t add, int8x16_t m1, int8x16_t m2) - { -- return vmladavaq_s8 (a, b, c); -+ return vmladavaq_s8 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmladava.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmladava.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32_t a, int8x16_t b, int8x16_t c) -+foo1 (int32_t add, int8x16_t m1, int8x16_t m2) - { -- return vmladavaq (a, b, c); -+ return vmladavaq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladava.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u16.c -index 3c5f689ba92..62a3c0e5027 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladava.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo (uint32_t a, uint16x8_t b, uint16x8_t c) -+foo (uint32_t add, uint16x8_t m1, uint16x8_t m2) - { -- return vmladavaq_u16 (a, b, c); -+ return vmladavaq_u16 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmladava.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmladava.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo1 (uint32_t a, uint16x8_t b, uint16x8_t c) -+foo1 (uint32_t add, uint16x8_t m1, uint16x8_t m2) - { -- return vmladavaq (a, b, c); -+ return vmladavaq (add, m1, m2); -+} -+ -+/* -+**foo2: -+** ... -+** vmladava.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint16x8_t m1, uint16x8_t m2) -+{ -+ return vmladavaq (1, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladava.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u32.c -index 6172f82aaaa..a186953d9dd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladava.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo (uint32_t a, uint32x4_t b, uint32x4_t c) -+foo (uint32_t add, uint32x4_t m1, uint32x4_t m2) - { -- return vmladavaq_u32 (a, b, c); -+ return vmladavaq_u32 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmladava.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmladava.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo1 (uint32_t a, uint32x4_t b, uint32x4_t c) -+foo1 (uint32_t add, uint32x4_t m1, uint32x4_t m2) - { -- return vmladavaq (a, b, c); -+ return vmladavaq (add, m1, m2); -+} -+ -+/* -+**foo2: -+** ... -+** vmladava.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint32x4_t m1, uint32x4_t m2) -+{ -+ return vmladavaq (1, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladava.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u8.c -index 2aff5552053..0df91990ead 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladava.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo (uint32_t a, uint8x16_t b, uint8x16_t c) -+foo (uint32_t add, uint8x16_t m1, uint8x16_t m2) - { -- return vmladavaq_u8 (a, b, c); -+ return vmladavaq_u8 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmladava.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmladava.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo1 (uint32_t a, uint8x16_t b, uint8x16_t c) -+foo1 (uint32_t add, uint8x16_t m1, uint8x16_t m2) - { -- return vmladavaq (a, b, c); -+ return vmladavaq (add, m1, m2); -+} -+ -+/* -+**foo2: -+** ... -+** vmladava.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32_t -+foo2 (uint8x16_t m1, uint8x16_t m2) -+{ -+ return vmladavaq (1, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladava.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s16.c -index 838717e3e43..5925d9e968e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavaxt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) -+foo (int32_t add, int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmladavaxq_p_s16 (a, b, c, p); -+ return vmladavaxq_p_s16 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavaxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavaxt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) -+foo1 (int32_t add, int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmladavaxq_p (a, b, c, p); -+ return vmladavaxq_p (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavaxt.s16" } } */ --/* { dg-final { scan-assembler "vmladavaxt.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s32.c -index a50c5ecf802..87d66e654f7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavaxt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) -+foo (int32_t add, int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmladavaxq_p_s32 (a, b, c, p); -+ return vmladavaxq_p_s32 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavaxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavaxt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) -+foo1 (int32_t add, int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmladavaxq_p (a, b, c, p); -+ return vmladavaxq_p (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavaxt.s32" } } */ --/* { dg-final { scan-assembler "vmladavaxt.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s8.c -index e4705cecad9..803a5becc86 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavaxt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32_t a, int8x16_t b, int8x16_t c, mve_pred16_t p) -+foo (int32_t add, int8x16_t m1, int8x16_t m2, mve_pred16_t p) - { -- return vmladavaxq_p_s8 (a, b, c, p); -+ return vmladavaxq_p_s8 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavaxt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavaxt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32_t a, int8x16_t b, int8x16_t c, mve_pred16_t p) -+foo1 (int32_t add, int8x16_t m1, int8x16_t m2, mve_pred16_t p) - { -- return vmladavaxq_p (a, b, c, p); -+ return vmladavaxq_p (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavaxt.s8" } } */ --/* { dg-final { scan-assembler "vmladavaxt.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s16.c -index ffd542a062f..6a81b4acfcb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladavax.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32_t a, int16x8_t b, int16x8_t c) -+foo (int32_t add, int16x8_t m1, int16x8_t m2) - { -- return vmladavaxq_s16 (a, b, c); -+ return vmladavaxq_s16 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmladavax.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmladavax.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32_t a, int16x8_t b, int16x8_t c) -+foo1 (int32_t add, int16x8_t m1, int16x8_t m2) - { -- return vmladavaxq (a, b, c); -+ return vmladavaxq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavax.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s32.c -index b91e54d79e6..b63ca43abba 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladavax.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32_t a, int32x4_t b, int32x4_t c) -+foo (int32_t add, int32x4_t m1, int32x4_t m2) - { -- return vmladavaxq_s32 (a, b, c); -+ return vmladavaxq_s32 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmladavax.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmladavax.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32_t a, int32x4_t b, int32x4_t c) -+foo1 (int32_t add, int32x4_t m1, int32x4_t m2) - { -- return vmladavaxq (a, b, c); -+ return vmladavaxq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavax.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s8.c -index 61949c416fc..2430858aa51 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladavax.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32_t a, int8x16_t b, int8x16_t c) -+foo (int32_t add, int8x16_t m1, int8x16_t m2) - { -- return vmladavaxq_s8 (a, b, c); -+ return vmladavaxq_s8 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmladavax.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmladavax.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32_t a, int8x16_t b, int8x16_t c) -+foo1 (int32_t add, int8x16_t m1, int8x16_t m2) - { -- return vmladavaxq (a, b, c); -+ return vmladavaxq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavax.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s16.c -index 2a7a79e62ea..f05d04b1f3d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int16x8_t a, int16x8_t b, mve_pred16_t p) -+foo (int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmladavq_p_s16 (a, b, p); -+ return vmladavq_p_s16 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) -+foo1 (int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmladavq_p (a, b, p); -+ return vmladavq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavt.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s32.c -index 6b118144075..397bb9fb4ec 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32x4_t a, int32x4_t b, mve_pred16_t p) -+foo (int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmladavq_p_s32 (a, b, p); -+ return vmladavq_p_s32 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) -+foo1 (int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmladavq_p (a, b, p); -+ return vmladavq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavt.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s8.c -index b3a4e11fa24..25c11d200ad 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int8x16_t a, int8x16_t b, mve_pred16_t p) -+foo (int8x16_t m1, int8x16_t m2, mve_pred16_t p) - { -- return vmladavq_p_s8 (a, b, p); -+ return vmladavq_p_s8 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) -+foo1 (int8x16_t m1, int8x16_t m2, mve_pred16_t p) - { -- return vmladavq_p (a, b, p); -+ return vmladavq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavt.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_u16.c -index 0ff2ffdc5f2..064d2c22a23 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_u16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavt.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) -+foo (uint16x8_t m1, uint16x8_t m2, mve_pred16_t p) - { -- return vmladavq_p_u16 (a, b, p); -+ return vmladavq_p_u16 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavt.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) -+foo1 (uint16x8_t m1, uint16x8_t m2, mve_pred16_t p) - { -- return vmladavq_p (a, b, p); -+ return vmladavq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_u32.c -index c5d213d4c0b..f5f3de9f0e8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavt.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) -+foo (uint32x4_t m1, uint32x4_t m2, mve_pred16_t p) - { -- return vmladavq_p_u32 (a, b, p); -+ return vmladavq_p_u32 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavt.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) -+foo1 (uint32x4_t m1, uint32x4_t m2, mve_pred16_t p) - { -- return vmladavq_p (a, b, p); -+ return vmladavq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_u8.c -index 6fcc530c17c..243e61715e4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_u8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavt.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) -+foo (uint8x16_t m1, uint8x16_t m2, mve_pred16_t p) - { -- return vmladavq_p_u8 (a, b, p); -+ return vmladavq_p_u8 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavt.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) -+foo1 (uint8x16_t m1, uint8x16_t m2, mve_pred16_t p) - { -- return vmladavq_p (a, b, p); -+ return vmladavq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_s16.c -index a140be6204d..b0ff042fc43 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladav.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int16x8_t a, int16x8_t b) -+foo (int16x8_t m1, int16x8_t m2) - { -- return vmladavq_s16 (a, b); -+ return vmladavq_s16 (m1, m2); - } - --/* { dg-final { scan-assembler "vmladav.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmladav.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int16x8_t a, int16x8_t b) -+foo1 (int16x8_t m1, int16x8_t m2) - { -- return vmladavq (a, b); -+ return vmladavq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladav.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_s32.c -index 1413e480551..a2ef4b37e4d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladav.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32x4_t a, int32x4_t b) -+foo (int32x4_t m1, int32x4_t m2) - { -- return vmladavq_s32 (a, b); -+ return vmladavq_s32 (m1, m2); - } - --/* { dg-final { scan-assembler "vmladav.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmladav.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32x4_t a, int32x4_t b) -+foo1 (int32x4_t m1, int32x4_t m2) - { -- return vmladavq (a, b); -+ return vmladavq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladav.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_s8.c -index d43dbb9fefc..e3e6e2982d7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladav.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int8x16_t a, int8x16_t b) -+foo (int8x16_t m1, int8x16_t m2) - { -- return vmladavq_s8 (a, b); -+ return vmladavq_s8 (m1, m2); - } - --/* { dg-final { scan-assembler "vmladav.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmladav.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int8x16_t a, int8x16_t b) -+foo1 (int8x16_t m1, int8x16_t m2) - { -- return vmladavq (a, b); -+ return vmladavq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladav.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_u16.c -index e1c44d7b4ce..d021bc0e30d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladav.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo (uint16x8_t a, uint16x8_t b) -+foo (uint16x8_t m1, uint16x8_t m2) - { -- return vmladavq_u16 (a, b); -+ return vmladavq_u16 (m1, m2); - } - --/* { dg-final { scan-assembler "vmladav.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmladav.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo1 (uint16x8_t a, uint16x8_t b) -+foo1 (uint16x8_t m1, uint16x8_t m2) - { -- return vmladavq (a, b); -+ return vmladavq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladav.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_u32.c -index 5e9bb56bae0..0848ca25b9f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladav.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo (uint32x4_t a, uint32x4_t b) -+foo (uint32x4_t m1, uint32x4_t m2) - { -- return vmladavq_u32 (a, b); -+ return vmladavq_u32 (m1, m2); - } - --/* { dg-final { scan-assembler "vmladav.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmladav.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo1 (uint32x4_t a, uint32x4_t b) -+foo1 (uint32x4_t m1, uint32x4_t m2) - { -- return vmladavq (a, b); -+ return vmladavq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladav.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_u8.c -index f4223538170..2a735fbb654 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladav.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo (uint8x16_t a, uint8x16_t b) -+foo (uint8x16_t m1, uint8x16_t m2) - { -- return vmladavq_u8 (a, b); -+ return vmladavq_u8 (m1, m2); - } - --/* { dg-final { scan-assembler "vmladav.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmladav.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32_t --foo1 (uint8x16_t a, uint8x16_t b) -+foo1 (uint8x16_t m1, uint8x16_t m2) - { -- return vmladavq (a, b); -+ return vmladavq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladav.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_p_s16.c -index 7ee875eae6b..dc94ecada57 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavxt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int16x8_t a, int16x8_t b, mve_pred16_t p) -+foo (int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmladavxq_p_s16 (a, b, p); -+ return vmladavxq_p_s16 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavxt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) -+foo1 (int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmladavxq_p (a, b, p); -+ return vmladavxq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavxt.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_p_s32.c -index d4f92ba9cf2..15a2abd7d13 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavxt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32x4_t a, int32x4_t b, mve_pred16_t p) -+foo (int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmladavxq_p_s32 (a, b, p); -+ return vmladavxq_p_s32 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavxt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) -+foo1 (int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmladavxq_p (a, b, p); -+ return vmladavxq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavxt.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_p_s8.c -index d5f14c51ae8..e56874151a8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_p_s8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavxt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int8x16_t a, int8x16_t b, mve_pred16_t p) -+foo (int8x16_t m1, int8x16_t m2, mve_pred16_t p) - { -- return vmladavxq_p_s8 (a, b, p); -+ return vmladavxq_p_s8 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmladavxt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmladavxt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) -+foo1 (int8x16_t m1, int8x16_t m2, mve_pred16_t p) - { -- return vmladavxq_p (a, b, p); -+ return vmladavxq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavxt.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_s16.c -index deac58d768e..e7e3b571efb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladavx.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int16x8_t a, int16x8_t b) -+foo (int16x8_t m1, int16x8_t m2) - { -- return vmladavxq_s16 (a, b); -+ return vmladavxq_s16 (m1, m2); - } - --/* { dg-final { scan-assembler "vmladavx.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmladavx.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int16x8_t a, int16x8_t b) -+foo1 (int16x8_t m1, int16x8_t m2) - { -- return vmladavxq (a, b); -+ return vmladavxq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavx.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_s32.c -index 56516d74173..c3841f59d57 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladavx.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int32x4_t a, int32x4_t b) -+foo (int32x4_t m1, int32x4_t m2) - { -- return vmladavxq_s32 (a, b); -+ return vmladavxq_s32 (m1, m2); - } - --/* { dg-final { scan-assembler "vmladavx.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmladavx.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int32x4_t a, int32x4_t b) -+foo1 (int32x4_t m1, int32x4_t m2) - { -- return vmladavxq (a, b); -+ return vmladavxq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavx.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_s8.c -index 3b1e8cd67cd..59cdc346ee5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavxq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmladavx.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo (int8x16_t a, int8x16_t b) -+foo (int8x16_t m1, int8x16_t m2) - { -- return vmladavxq_s8 (a, b); -+ return vmladavxq_s8 (m1, m2); - } - --/* { dg-final { scan-assembler "vmladavx.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmladavx.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t --foo1 (int8x16_t a, int8x16_t b) -+foo1 (int8x16_t m1, int8x16_t m2) - { -- return vmladavxq (a, b); -+ return vmladavxq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmladavx.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s16.c -index 246b40fbe2c..fbdbb5c16a8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavat.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int64_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) -+foo (int64_t add, int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmlaldavaq_p_s16 (a, b, c, p); -+ return vmlaldavaq_p_s16 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmlaldavat.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavat.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int64_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) -+foo1 (int64_t add, int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmlaldavaq_p (a, b, c, p); -+ return vmlaldavaq_p (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavat.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s32.c -index 6563af20061..9c59d0306a1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavat.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) -+foo (int64_t add, int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmlaldavaq_p_s32 (a, b, c, p); -+ return vmlaldavaq_p_s32 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmlaldavat.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavat.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) -+foo1 (int64_t add, int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmlaldavaq_p (a, b, c, p); -+ return vmlaldavaq_p (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavat.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u16.c -index 632e29f972d..b714b677339 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u16.c -@@ -1,21 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavat.u16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo (uint64_t a, uint16x8_t b, uint16x8_t c, mve_pred16_t p) -+foo (uint64_t add, uint16x8_t m1, uint16x8_t m2, mve_pred16_t p) - { -- return vmlaldavaq_p_u16 (a, b, c, p); -+ return vmlaldavaq_p_u16 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmlaldavat.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavat.u16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo1 (uint64_t a, uint16x8_t b, uint16x8_t c, mve_pred16_t p) -+foo1 (uint64_t add, uint16x8_t m1, uint16x8_t m2, mve_pred16_t p) - { -- return vmlaldavaq_p (a, b, c, p); -+ return vmlaldavaq_p (add, m1, m2, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavat.u16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint64_t -+foo2 (uint16x8_t m1, uint16x8_t m2, mve_pred16_t p) -+{ -+ return vmlaldavaq_p (1, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavat.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u32.c -index d2fcd5d14ed..29419a06458 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u32.c -@@ -1,21 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavat.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo (uint64_t a, uint32x4_t b, uint32x4_t c, mve_pred16_t p) -+foo (uint64_t add, uint32x4_t m1, uint32x4_t m2, mve_pred16_t p) - { -- return vmlaldavaq_p_u32 (a, b, c, p); -+ return vmlaldavaq_p_u32 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmlaldavat.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavat.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo1 (uint64_t a, uint32x4_t b, uint32x4_t c, mve_pred16_t p) -+foo1 (uint64_t add, uint32x4_t m1, uint32x4_t m2, mve_pred16_t p) - { -- return vmlaldavaq_p (a, b, c, p); -+ return vmlaldavaq_p (add, m1, m2, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavat.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint64_t -+foo2 (uint32x4_t m1, uint32x4_t m2, mve_pred16_t p) -+{ -+ return vmlaldavaq_p (1, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavat.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_s16.c -index 1cb9b6ebc41..d1f049923c0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlaldava.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int64_t a, int16x8_t b, int16x8_t c) -+foo (int64_t add, int16x8_t m1, int16x8_t m2) - { -- return vmlaldavaq_s16 (a, b, c); -+ return vmlaldavaq_s16 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmlaldava.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmlaldava.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int64_t a, int16x8_t b, int16x8_t c) -+foo1 (int64_t add, int16x8_t m1, int16x8_t m2) - { -- return vmlaldavaq (a, b, c); -+ return vmlaldavaq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldava.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_s32.c -index 56e59f5929d..dfce7d8f625 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlaldava.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int64_t a, int32x4_t b, int32x4_t c) -+foo (int64_t add, int32x4_t m1, int32x4_t m2) - { -- return vmlaldavaq_s32 (a, b, c); -+ return vmlaldavaq_s32 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmlaldava.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmlaldava.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int64_t a, int32x4_t b, int32x4_t c) -+foo1 (int64_t add, int32x4_t m1, int32x4_t m2) - { -- return vmlaldavaq (a, b, c); -+ return vmlaldavaq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldava.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_u16.c -index 7c95abc271c..7e42054a4f3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlaldava.u16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo (uint64_t a, uint16x8_t b, uint16x8_t c) -+foo (uint64_t add, uint16x8_t m1, uint16x8_t m2) - { -- return vmlaldavaq_u16 (a, b, c); -+ return vmlaldavaq_u16 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmlaldava.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmlaldava.u16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo1 (uint64_t a, uint16x8_t b, uint16x8_t c) -+foo1 (uint64_t add, uint16x8_t m1, uint16x8_t m2) - { -- return vmlaldavaq (a, b, c); -+ return vmlaldavaq (add, m1, m2); -+} -+ -+/* -+**foo2: -+** ... -+** vmlaldava.u16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint64_t -+foo2 (uint16x8_t m1, uint16x8_t m2) -+{ -+ return vmlaldavaq (1, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldava.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_u32.c -index 239f5e32d8b..20ba6d377bf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlaldava.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo (uint64_t a, uint32x4_t b, uint32x4_t c) -+foo (uint64_t add, uint32x4_t m1, uint32x4_t m2) - { -- return vmlaldavaq_u32 (a, b, c); -+ return vmlaldavaq_u32 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmlaldava.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmlaldava.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo1 (uint64_t a, uint32x4_t b, uint32x4_t c) -+foo1 (uint64_t add, uint32x4_t m1, uint32x4_t m2) - { -- return vmlaldavaq (a, b, c); -+ return vmlaldavaq (add, m1, m2); -+} -+ -+/* -+**foo2: -+** ... -+** vmlaldava.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint64_t -+foo2 (uint32x4_t m1, uint32x4_t m2) -+{ -+ return vmlaldavaq (1, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldava.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c -index f33d3880236..7c2f07f3495 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavaxt.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int64_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) -+foo (int64_t add, int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmlaldavaxq_p_s16 (a, b, c, p); -+ return vmlaldavaxq_p_s16 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmlaldavaxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavaxt.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int64_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) -+foo1 (int64_t add, int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmlaldavaxq_p (a, b, c, p); -+ return vmlaldavaxq_p (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavaxt.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c -index ab072a9850e..6214235487b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavaxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) -+foo (int64_t add, int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmlaldavaxq_p_s32 (a, b, c, p); -+ return vmlaldavaxq_p_s32 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vmlaldavaxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavaxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) -+foo1 (int64_t add, int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmlaldavaxq_p (a, b, c, p); -+ return vmlaldavaxq_p (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavaxt.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_s16.c -index e68fbd2df94..b5922b8c281 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlaldavax.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int64_t a, int16x8_t b, int16x8_t c) -+foo (int64_t add, int16x8_t m1, int16x8_t m2) - { -- return vmlaldavaxq_s16 (a, b, c); -+ return vmlaldavaxq_s16 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmlaldavax.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmlaldavax.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int64_t a, int16x8_t b, int16x8_t c) -+foo1 (int64_t add, int16x8_t m1, int16x8_t m2) - { -- return vmlaldavaxq (a, b, c); -+ return vmlaldavaxq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavax.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_s32.c -index 7b6fea289da..124125e2f29 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlaldavax.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int64_t a, int32x4_t b, int32x4_t c) -+foo (int64_t add, int32x4_t m1, int32x4_t m2) - { -- return vmlaldavaxq_s32 (a, b, c); -+ return vmlaldavaxq_s32 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmlaldavax.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmlaldavax.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int64_t a, int32x4_t b, int32x4_t c) -+foo1 (int64_t add, int32x4_t m1, int32x4_t m2) - { -- return vmlaldavaxq (a, b, c); -+ return vmlaldavaxq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavax.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_s16.c -index 008efd95a35..de9cc0ed9c4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavt.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int16x8_t a, int16x8_t b, mve_pred16_t p) -+foo (int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmlaldavq_p_s16 (a, b, p); -+ return vmlaldavq_p_s16 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmlaldavt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavt.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) -+foo1 (int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmlaldavq_p (a, b, p); -+ return vmlaldavq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavt.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_s32.c -index e824e6b7ce0..a2b1c59291b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int32x4_t a, int32x4_t b, mve_pred16_t p) -+foo (int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmlaldavq_p_s32 (a, b, p); -+ return vmlaldavq_p_s32 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmlaldavt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) -+foo1 (int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmlaldavq_p (a, b, p); -+ return vmlaldavq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavt.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_u16.c -index 1fea6d5c117..6034b9b5454 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_u16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavt.u16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) -+foo (uint16x8_t m1, uint16x8_t m2, mve_pred16_t p) - { -- return vmlaldavq_p_u16 (a, b, p); -+ return vmlaldavq_p_u16 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmlaldavt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavt.u16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) -+foo1 (uint16x8_t m1, uint16x8_t m2, mve_pred16_t p) - { -- return vmlaldavq_p (a, b, p); -+ return vmlaldavq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_u32.c -index 99300fcb6ec..a85d7de4dad 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavt.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) -+foo (uint32x4_t m1, uint32x4_t m2, mve_pred16_t p) - { -- return vmlaldavq_p_u32 (a, b, p); -+ return vmlaldavq_p_u32 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmlaldavt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavt.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) -+foo1 (uint32x4_t m1, uint32x4_t m2, mve_pred16_t p) - { -- return vmlaldavq_p (a, b, p); -+ return vmlaldavq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_s16.c -index 1cdb44920e1..b18e8eb149e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlaldav.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int16x8_t a, int16x8_t b) -+foo (int16x8_t m1, int16x8_t m2) - { -- return vmlaldavq_s16 (a, b); -+ return vmlaldavq_s16 (m1, m2); - } - --/* { dg-final { scan-assembler "vmlaldav.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmlaldav.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int16x8_t a, int16x8_t b) -+foo1 (int16x8_t m1, int16x8_t m2) - { -- return vmlaldavq (a, b); -+ return vmlaldavq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldav.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_s32.c -index 123ca0f4eeb..b0fe1c5132c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlaldav.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int32x4_t a, int32x4_t b) -+foo (int32x4_t m1, int32x4_t m2) - { -- return vmlaldavq_s32 (a, b); -+ return vmlaldavq_s32 (m1, m2); - } - --/* { dg-final { scan-assembler "vmlaldav.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmlaldav.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int32x4_t a, int32x4_t b) -+foo1 (int32x4_t m1, int32x4_t m2) - { -- return vmlaldavq (a, b); -+ return vmlaldavq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldav.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_u16.c -index c9c40eeac0a..d1fcf715cb7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlaldav.u16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo (uint16x8_t a, uint16x8_t b) -+foo (uint16x8_t m1, uint16x8_t m2) - { -- return vmlaldavq_u16 (a, b); -+ return vmlaldavq_u16 (m1, m2); - } - --/* { dg-final { scan-assembler "vmlaldav.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmlaldav.u16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo1 (uint16x8_t a, uint16x8_t b) -+foo1 (uint16x8_t m1, uint16x8_t m2) - { -- return vmlaldavq (a, b); -+ return vmlaldavq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldav.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_u32.c -index 4d1754697bf..76726e8255b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlaldav.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo (uint32x4_t a, uint32x4_t b) -+foo (uint32x4_t m1, uint32x4_t m2) - { -- return vmlaldavq_u32 (a, b); -+ return vmlaldavq_u32 (m1, m2); - } - --/* { dg-final { scan-assembler "vmlaldav.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmlaldav.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t --foo1 (uint32x4_t a, uint32x4_t b) -+foo1 (uint32x4_t m1, uint32x4_t m2) - { -- return vmlaldavq (a, b); -+ return vmlaldavq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldav.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s16.c -index d41c2e16114..3b8392bcf7f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavxt.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int16x8_t a, int16x8_t b, mve_pred16_t p) -+foo (int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmlaldavxq_p_s16 (a, b, p); -+ return vmlaldavxq_p_s16 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmlaldavxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavxt.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) -+foo1 (int16x8_t m1, int16x8_t m2, mve_pred16_t p) - { -- return vmlaldavxq_p (a, b, p); -+ return vmlaldavxq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavxt.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s32.c -index 8ad7b219a0f..578b7b68095 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int32x4_t a, int32x4_t b, mve_pred16_t p) -+foo (int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmlaldavxq_p_s32 (a, b, p); -+ return vmlaldavxq_p_s32 (m1, m2, p); - } - --/* { dg-final { scan-assembler "vmlaldavxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlaldavxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) -+foo1 (int32x4_t m1, int32x4_t m2, mve_pred16_t p) - { -- return vmlaldavxq_p (a, b, p); -+ return vmlaldavxq_p (m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavxt.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_s16.c -index ebe999393e8..7061bd2c13d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlaldavx.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int16x8_t a, int16x8_t b) -+foo (int16x8_t m1, int16x8_t m2) - { -- return vmlaldavxq_s16 (a, b); -+ return vmlaldavxq_s16 (m1, m2); - } - --/* { dg-final { scan-assembler "vmlaldavx.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmlaldavx.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int16x8_t a, int16x8_t b) -+foo1 (int16x8_t m1, int16x8_t m2) - { -- return vmlaldavxq (a, b); -+ return vmlaldavxq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavx.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_s32.c -index 0417eb867de..957dc174a36 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlaldavx.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo (int32x4_t a, int32x4_t b) -+foo (int32x4_t m1, int32x4_t m2) - { -- return vmlaldavxq_s32 (a, b); -+ return vmlaldavxq_s32 (m1, m2); - } - --/* { dg-final { scan-assembler "vmlaldavx.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmlaldavx.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t --foo1 (int32x4_t a, int32x4_t b) -+foo1 (int32x4_t m1, int32x4_t m2) - { -- return vmlaldavxq (a, b); -+ return vmlaldavxq (m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlaldavx.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_s16.c -index d48b020d595..f68fe8e49a3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, int16x8_t b, int16_t c, mve_pred16_t p) -+foo (int16x8_t add, int16x8_t m1, int16_t m2, mve_pred16_t p) - { -- return vmlaq_m_n_s16 (a, b, c, p); -+ return vmlaq_m_n_s16 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlat.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, int16x8_t b, int16_t c, mve_pred16_t p) -+foo1 (int16x8_t add, int16x8_t m1, int16_t m2, mve_pred16_t p) - { -- return vmlaq_m (a, b, c, p); -+ return vmlaq_m (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlat.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_s32.c -index 315c1afc2c7..d3c49553596 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, int32_t c, mve_pred16_t p) -+foo (int32x4_t add, int32x4_t m1, int32_t m2, mve_pred16_t p) - { -- return vmlaq_m_n_s32 (a, b, c, p); -+ return vmlaq_m_n_s32 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlat.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, int32_t c, mve_pred16_t p) -+foo1 (int32x4_t add, int32x4_t m1, int32_t m2, mve_pred16_t p) - { -- return vmlaq_m (a, b, c, p); -+ return vmlaq_m (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlat.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_s8.c -index a452f5de5e6..44dc3b57cdd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, int8x16_t b, int8_t c, mve_pred16_t p) -+foo (int8x16_t add, int8x16_t m1, int8_t m2, mve_pred16_t p) - { -- return vmlaq_m_n_s8 (a, b, c, p); -+ return vmlaq_m_n_s8 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlat.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, int8x16_t b, int8_t c, mve_pred16_t p) -+foo1 (int8x16_t add, int8x16_t m1, int8_t m2, mve_pred16_t p) - { -- return vmlaq_m (a, b, c, p); -+ return vmlaq_m (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlat.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_u16.c -index 6ecdc689a61..cbb92fb39b8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16x8_t a, uint16x8_t b, uint16_t c, mve_pred16_t p) -+foo (uint16x8_t add, uint16x8_t m1, uint16_t m2, mve_pred16_t p) - { -- return vmlaq_m_n_u16 (a, b, c, p); -+ return vmlaq_m_n_u16 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlat.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint16x8_t a, uint16x8_t b, uint16_t c, mve_pred16_t p) -+foo1 (uint16x8_t add, uint16x8_t m1, uint16_t m2, mve_pred16_t p) - { -- return vmlaq_m (a, b, c, p); -+ return vmlaq_m (add, m1, m2, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t add, uint16x8_t m1, mve_pred16_t p) -+{ -+ return vmlaq_m (add, m1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlat.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_u32.c -index 2c584a635e7..569ea91af36 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t a, uint32x4_t b, uint32_t c, mve_pred16_t p) -+foo (uint32x4_t add, uint32x4_t m1, uint32_t m2, mve_pred16_t p) - { -- return vmlaq_m_n_u32 (a, b, c, p); -+ return vmlaq_m_n_u32 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlat.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t a, uint32x4_t b, uint32_t c, mve_pred16_t p) -+foo1 (uint32x4_t add, uint32x4_t m1, uint32_t m2, mve_pred16_t p) - { -- return vmlaq_m (a, b, c, p); -+ return vmlaq_m (add, m1, m2, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t add, uint32x4_t m1, mve_pred16_t p) -+{ -+ return vmlaq_m (add, m1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlat.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_u8.c -index b75b3c95916..592ad3e072a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_m_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint8x16_t a, uint8x16_t b, uint8_t c, mve_pred16_t p) -+foo (uint8x16_t add, uint8x16_t m1, uint8_t m2, mve_pred16_t p) - { -- return vmlaq_m_n_u8 (a, b, c, p); -+ return vmlaq_m_n_u8 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlat.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint8x16_t a, uint8x16_t b, uint8_t c, mve_pred16_t p) -+foo1 (uint8x16_t add, uint8x16_t m1, uint8_t m2, mve_pred16_t p) - { -- return vmlaq_m (a, b, c, p); -+ return vmlaq_m (add, m1, m2, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlat.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t add, uint8x16_t m1, mve_pred16_t p) -+{ -+ return vmlaq_m (add, m1, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlat.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_s16.c -index 29543c8f60d..d1fa73de1c9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmla.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, int16x8_t b, int16_t c) -+foo (int16x8_t add, int16x8_t m1, int16_t m2) - { -- return vmlaq_n_s16 (a, b, c); -+ return vmlaq_n_s16 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmla.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmla.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, int16x8_t b, int16_t c) -+foo1 (int16x8_t add, int16x8_t m1, int16_t m2) - { -- return vmlaq (a, b, c); -+ return vmlaq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmla.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_s32.c -index d74bacaffd7..c349c0c8d7f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmla.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, int32_t c) -+foo (int32x4_t add, int32x4_t m1, int32_t m2) - { -- return vmlaq_n_s32 (a, b, c); -+ return vmlaq_n_s32 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmla.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmla.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, int32_t c) -+foo1 (int32x4_t add, int32x4_t m1, int32_t m2) - { -- return vmlaq (a, b, c); -+ return vmlaq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmla.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_s8.c -index 38dd01a6580..c1cd39e5715 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmla.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, int8x16_t b, int8_t c) -+foo (int8x16_t add, int8x16_t m1, int8_t m2) - { -- return vmlaq_n_s8 (a, b, c); -+ return vmlaq_n_s8 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmla.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmla.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, int8x16_t b, int8_t c) -+foo1 (int8x16_t add, int8x16_t m1, int8_t m2) - { -- return vmlaq (a, b, c); -+ return vmlaq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmla.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u16.c -index 55a5d0601d5..5eb201c05e8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmla.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16x8_t a, uint16x8_t b, uint16_t c) -+foo (uint16x8_t add, uint16x8_t m1, uint16_t m2) - { -- return vmlaq_n_u16 (a, b, c); -+ return vmlaq_n_u16 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmla.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmla.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint16x8_t a, uint16x8_t b, uint16_t c) -+foo1 (uint16x8_t add, uint16x8_t m1, uint16_t m2) - { -- return vmlaq (a, b, c); -+ return vmlaq (add, m1, m2); -+} -+ -+/* -+**foo2: -+** ... -+** vmla.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t add, uint16x8_t m1) -+{ -+ return vmlaq (add, m1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmla.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u32.c -index e160275a29b..d4820ea65d9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmla.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t a, uint32x4_t b, uint32_t c) -+foo (uint32x4_t add, uint32x4_t m1, uint32_t m2) - { -- return vmlaq_n_u32 (a, b, c); -+ return vmlaq_n_u32 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmla.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmla.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t a, uint32x4_t b, uint32_t c) -+foo1 (uint32x4_t add, uint32x4_t m1, uint32_t m2) - { -- return vmlaq (a, b, c); -+ return vmlaq (add, m1, m2); -+} -+ -+/* -+**foo2: -+** ... -+** vmla.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t add, uint32x4_t m1) -+{ -+ return vmlaq (add, m1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmla.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u8.c -index 5f0edef53d4..7f83f092b07 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmla.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint8x16_t a, uint8x16_t b, uint8_t c) -+foo (uint8x16_t add, uint8x16_t m1, uint8_t m2) - { -- return vmlaq_n_u8 (a, b, c); -+ return vmlaq_n_u8 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vmla.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmla.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint8x16_t a, uint8x16_t b, uint8_t c) -+foo1 (uint8x16_t add, uint8x16_t m1, uint8_t m2) - { -- return vmlaq (a, b, c); -+ return vmlaq (add, m1, m2); -+} -+ -+/* -+**foo2: -+** ... -+** vmla.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t add, uint8x16_t m1) -+{ -+ return vmlaq (add, m1, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmla.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s16.c -index bf66e616ec7..83af9bb4355 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, int16x8_t b, int16_t c, mve_pred16_t p) -+foo (int16x8_t m1, int16x8_t m2, int16_t add, mve_pred16_t p) - { -- return vmlasq_m_n_s16 (a, b, c, p); -+ return vmlasq_m_n_s16 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlast.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, int16x8_t b, int16_t c, mve_pred16_t p) -+foo1 (int16x8_t m1, int16x8_t m2, int16_t add, mve_pred16_t p) - { -- return vmlasq_m (a, b, c, p); -+ return vmlasq_m (m1, m2, add, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlast.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s32.c -index 53c21e2e5b6..f6bf6444bdd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, int32_t c, mve_pred16_t p) -+foo (int32x4_t m1, int32x4_t m2, int32_t add, mve_pred16_t p) - { -- return vmlasq_m_n_s32 (a, b, c, p); -+ return vmlasq_m_n_s32 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlast.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, int32_t c, mve_pred16_t p) -+foo1 (int32x4_t m1, int32x4_t m2, int32_t add, mve_pred16_t p) - { -- return vmlasq_m (a, b, c, p); -+ return vmlasq_m (m1, m2, add, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlast.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s8.c -index ac08b15fdbe..021fc0373a6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, int8x16_t b, int8_t c, mve_pred16_t p) -+foo (int8x16_t m1, int8x16_t m2, int8_t add, mve_pred16_t p) - { -- return vmlasq_m_n_s8 (a, b, c, p); -+ return vmlasq_m_n_s8 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlast.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, int8x16_t b, int8_t c, mve_pred16_t p) -+foo1 (int8x16_t m1, int8x16_t m2, int8_t add, mve_pred16_t p) - { -- return vmlasq_m (a, b, c, p); -+ return vmlasq_m (m1, m2, add, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlast.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u16.c -index 99f1e28c7d5..1b478da34da 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16x8_t a, uint16x8_t b, uint16_t c, mve_pred16_t p) -+foo (uint16x8_t m1, uint16x8_t m2, uint16_t add, mve_pred16_t p) - { -- return vmlasq_m_n_u16 (a, b, c, p); -+ return vmlasq_m_n_u16 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlast.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint16x8_t a, uint16x8_t b, uint16_t c, mve_pred16_t p) -+foo1 (uint16x8_t m1, uint16x8_t m2, uint16_t add, mve_pred16_t p) - { -- return vmlasq_m (a, b, c, p); -+ return vmlasq_m (m1, m2, add, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t m1, uint16x8_t m2, mve_pred16_t p) -+{ -+ return vmlasq_m (m1, m2, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlast.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u32.c -index 8d8edca6024..99fc605d1b2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t a, uint32x4_t b, uint32_t c, mve_pred16_t p) -+foo (uint32x4_t m1, uint32x4_t m2, uint32_t add, mve_pred16_t p) - { -- return vmlasq_m_n_u32 (a, b, c, p); -+ return vmlasq_m_n_u32 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlast.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t a, uint32x4_t b, uint32_t c, mve_pred16_t p) -+foo1 (uint32x4_t m1, uint32x4_t m2, uint32_t add, mve_pred16_t p) - { -- return vmlasq_m (a, b, c, p); -+ return vmlasq_m (m1, m2, add, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t m1, uint32x4_t m2, mve_pred16_t p) -+{ -+ return vmlasq_m (m1, m2, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlast.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u8.c -index e7f685bbcaa..43128266673 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint8x16_t a, uint8x16_t b, uint8_t c, mve_pred16_t p) -+foo (uint8x16_t m1, uint8x16_t m2, uint8_t add, mve_pred16_t p) - { -- return vmlasq_m_n_u8 (a, b, c, p); -+ return vmlasq_m_n_u8 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlast.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint8x16_t a, uint8x16_t b, uint8_t c, mve_pred16_t p) -+foo1 (uint8x16_t m1, uint8x16_t m2, uint8_t add, mve_pred16_t p) - { -- return vmlasq_m (a, b, c, p); -+ return vmlasq_m (m1, m2, add, p); -+} -+ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlast.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t m1, uint8x16_t m2, mve_pred16_t p) -+{ -+ return vmlasq_m (m1, m2, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmlast.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s16.c -index 8bfe3c31096..0ab8e9f431f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlas.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, int16x8_t b, int16_t c) -+foo (int16x8_t m1, int16x8_t m2, int16_t add) - { -- return vmlasq_n_s16 (a, b, c); -+ return vmlasq_n_s16 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vmlas.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmlas.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, int16x8_t b, int16_t c) -+foo1 (int16x8_t m1, int16x8_t m2, int16_t add) - { -- return vmlasq (a, b, c); -+ return vmlasq (m1, m2, add); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlas.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s32.c -index db06182abec..88f1dc53682 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlas.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, int32_t c) -+foo (int32x4_t m1, int32x4_t m2, int32_t add) - { -- return vmlasq_n_s32 (a, b, c); -+ return vmlasq_n_s32 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vmlas.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmlas.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, int32_t c) -+foo1 (int32x4_t m1, int32x4_t m2, int32_t add) - { -- return vmlasq (a, b, c); -+ return vmlasq (m1, m2, add); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlas.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s8.c -index 3a151650ef4..a5cb99ebf50 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlas.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, int8x16_t b, int8_t c) -+foo (int8x16_t m1, int8x16_t m2, int8_t add) - { -- return vmlasq_n_s8 (a, b, c); -+ return vmlasq_n_s8 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vmlas.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmlas.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, int8x16_t b, int8_t c) -+foo1 (int8x16_t m1, int8x16_t m2, int8_t add) - { -- return vmlasq (a, b, c); -+ return vmlasq (m1, m2, add); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlas.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u16.c -index b9444f2f6a3..f455fc10146 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlas.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16x8_t a, uint16x8_t b, uint16_t c) -+foo (uint16x8_t m1, uint16x8_t m2, uint16_t add) - { -- return vmlasq_n_u16 (a, b, c); -+ return vmlasq_n_u16 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vmlas.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmlas.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint16x8_t a, uint16x8_t b, uint16_t c) -+foo1 (uint16x8_t m1, uint16x8_t m2, uint16_t add) - { -- return vmlasq (a, b, c); -+ return vmlasq (m1, m2, add); -+} -+ -+/* -+**foo2: -+** ... -+** vmlas.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t m1, uint16x8_t m2) -+{ -+ return vmlasq (m1, m2, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlas.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u32.c -index 5708a0658a6..561b4f7a24e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlas.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t a, uint32x4_t b, uint32_t c) -+foo (uint32x4_t m1, uint32x4_t m2, uint32_t add) - { -- return vmlasq_n_u32 (a, b, c); -+ return vmlasq_n_u32 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vmlas.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmlas.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t a, uint32x4_t b, uint32_t c) -+foo1 (uint32x4_t m1, uint32x4_t m2, uint32_t add) - { -- return vmlasq (a, b, c); -+ return vmlasq (m1, m2, add); -+} -+ -+/* -+**foo2: -+** ... -+** vmlas.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t m1, uint32x4_t m2) -+{ -+ return vmlasq (m1, m2, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlas.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u8.c -index d83940c7232..414cba1fba8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlas.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint8x16_t a, uint8x16_t b, uint8_t c) -+foo (uint8x16_t m1, uint8x16_t m2, uint8_t add) - { -- return vmlasq_n_u8 (a, b, c); -+ return vmlasq_n_u8 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vmlas.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmlas.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint8x16_t a, uint8x16_t b, uint8_t c) -+foo1 (uint8x16_t m1, uint8x16_t m2, uint8_t add) - { -- return vmlasq (a, b, c); -+ return vmlasq (m1, m2, add); -+} -+ -+/* -+**foo2: -+** ... -+** vmlas.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t m1, uint8x16_t m2) -+{ -+ return vmlasq (m1, m2, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmlas.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s16.c -index 3b250c1bf79..e8d1b5fd3d0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavat.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) - { - return vmlsdavaq_p_s16 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsdavat.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavat.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) - { - return vmlsdavaq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsdavat.s16" } } */ --/* { dg-final { scan-assembler "vmlsdavat.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s32.c -index 077c5980e66..effbf24d997 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavat.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vmlsdavaq_p_s32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsdavat.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavat.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vmlsdavaq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsdavat.s32" } } */ --/* { dg-final { scan-assembler "vmlsdavat.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s8.c -index 2e53f5530b1..de04f9fd089 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavat.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int8x16_t b, int8x16_t c, mve_pred16_t p) - { - return vmlsdavaq_p_s8 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsdavat.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavat.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int8x16_t b, int8x16_t c, mve_pred16_t p) - { - return vmlsdavaq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsdavat.s8" } } */ --/* { dg-final { scan-assembler "vmlsdavat.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_s16.c -index e127be940b4..f66f652f6fd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsdava.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int16x8_t b, int16x8_t c) - { - return vmlsdavaq_s16 (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsdava.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmlsdava.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int16x8_t b, int16x8_t c) - { - return vmlsdavaq (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsdava.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_s32.c -index 20f879c6b69..79ba85ddb02 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsdava.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int32x4_t b, int32x4_t c) - { - return vmlsdavaq_s32 (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsdava.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmlsdava.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int32x4_t b, int32x4_t c) - { - return vmlsdavaq (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsdava.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_s8.c -index 3cbed73f660..3e0f9dc2649 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsdava.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int8x16_t b, int8x16_t c) - { - return vmlsdavaq_s8 (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsdava.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmlsdava.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int8x16_t b, int8x16_t c) - { - return vmlsdavaq (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsdava.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s16.c -index 37aee878b97..61e88ce8fb8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavaxt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) - { - return vmlsdavaxq_p_s16 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsdavaxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavaxt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) - { - return vmlsdavaxq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsdavaxt.s16" } } */ --/* { dg-final { scan-assembler "vmlsdavaxt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s32.c -index 6a15d3cf97b..cbc2c71423e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavaxt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vmlsdavaxq_p_s32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsdavaxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavaxt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vmlsdavaxq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsdavaxt.s32" } } */ --/* { dg-final { scan-assembler "vmlsdavaxt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s8.c -index d090e625e1b..2b30e8a9c12 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavaxt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int8x16_t b, int8x16_t c, mve_pred16_t p) - { - return vmlsdavaxq_p_s8 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsdavaxt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavaxt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int8x16_t b, int8x16_t c, mve_pred16_t p) - { - return vmlsdavaxq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsdavaxt.s8" } } */ --/* { dg-final { scan-assembler "vmlsdavaxt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_s16.c -index 0ef5302ef80..90fd85a170e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsdavax.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int16x8_t b, int16x8_t c) - { - return vmlsdavaxq_s16 (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsdavax.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmlsdavax.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int16x8_t b, int16x8_t c) - { - return vmlsdavaxq (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsdavax.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_s32.c -index 71a5e1a987f..06fe27faf49 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsdavax.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int32x4_t b, int32x4_t c) - { - return vmlsdavaxq_s32 (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsdavax.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmlsdavax.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int32x4_t b, int32x4_t c) - { - return vmlsdavaxq (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsdavax.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_s8.c -index 7df6b9f7f32..70a44b49d8e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaxq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsdavax.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32_t a, int8x16_t b, int8x16_t c) - { - return vmlsdavaxq_s8 (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsdavax.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmlsdavax.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32_t a, int8x16_t b, int8x16_t c) - { - return vmlsdavaxq (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsdavax.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_p_s16.c -index f71dda19c57..09db9a3a90a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmlsdavq_p_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsdavt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmlsdavq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsdavt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_p_s32.c -index 255235ba372..8eb9d24263a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmlsdavq_p_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsdavt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmlsdavq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsdavt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_p_s8.c -index 2fc892db2eb..166fedea45c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_p_s8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmlsdavq_p_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsdavt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmlsdavq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsdavt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_s16.c -index 7376b07865b..b97252f7225 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsdav.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int16x8_t a, int16x8_t b) - { - return vmlsdavq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmlsdav.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmlsdav.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int16x8_t a, int16x8_t b) - { - return vmlsdavq (a, b); - } - --/* { dg-final { scan-assembler "vmlsdav.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_s32.c -index a37042eab30..5473cfe22fc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsdav.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32x4_t a, int32x4_t b) - { - return vmlsdavq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmlsdav.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmlsdav.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32x4_t a, int32x4_t b) - { - return vmlsdavq (a, b); - } - --/* { dg-final { scan-assembler "vmlsdav.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_s8.c -index b44b98bc7e4..487097118fd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsdav.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int8x16_t a, int8x16_t b) - { - return vmlsdavq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vmlsdav.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmlsdav.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int8x16_t a, int8x16_t b) - { - return vmlsdavq (a, b); - } - --/* { dg-final { scan-assembler "vmlsdav.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s16.c -index aa4ac4e4f01..d1ff9a0fa1c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavxt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmlsdavxq_p_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsdavxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavxt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmlsdavxq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsdavxt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s32.c -index 0de81290d99..09c19c1f161 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavxt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmlsdavxq_p_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsdavxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavxt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmlsdavxq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsdavxt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s8.c -index 68588f6951a..1f364a3e846 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavxt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmlsdavxq_p_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsdavxt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsdavxt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmlsdavxq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsdavxt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_s16.c -index 8f49d6a6106..1c0675fb44b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsdavx.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int16x8_t a, int16x8_t b) - { - return vmlsdavxq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmlsdavx.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmlsdavx.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int16x8_t a, int16x8_t b) - { - return vmlsdavxq (a, b); - } - --/* { dg-final { scan-assembler "vmlsdavx.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_s32.c -index 830cd4ca8b1..5986e130ec0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsdavx.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int32x4_t a, int32x4_t b) - { - return vmlsdavxq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmlsdavx.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmlsdavx.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int32x4_t a, int32x4_t b) - { - return vmlsdavxq (a, b); - } - --/* { dg-final { scan-assembler "vmlsdavx.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_s8.c -index 74feb60b005..4f8aa44b57a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavxq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsdavx.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo (int8x16_t a, int8x16_t b) - { - return vmlsdavxq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vmlsdavx.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmlsdavx.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32_t - foo1 (int8x16_t a, int8x16_t b) - { - return vmlsdavxq (a, b); - } - --/* { dg-final { scan-assembler "vmlsdavx.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s16.c -index 78d29b058a3..8d0a03c0213 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavat.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) - { - return vmlsldavaq_p_s16 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsldavat.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavat.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) - { - return vmlsldavaq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsldavat.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s32.c -index fca0ef1d3dc..fae2ad5c713 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavat.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vmlsldavaq_p_s32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsldavat.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavat.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vmlsldavaq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsldavat.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_s16.c -index aecfcee4571..bfe4010df68 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsldava.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int16x8_t b, int16x8_t c) - { - return vmlsldavaq_s16 (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsldava.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmlsldava.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int16x8_t b, int16x8_t c) - { - return vmlsldavaq (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsldava.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_s32.c -index 7344a50f02b..b023b1b67ee 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsldava.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b, int32x4_t c) - { - return vmlsldavaq_s32 (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsldava.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmlsldava.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b, int32x4_t c) - { - return vmlsldavaq (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsldava.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s16.c -index 5278bd842cc..1ffa8c28ea9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavaxt.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) - { - return vmlsldavaxq_p_s16 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsldavaxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavaxt.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) - { - return vmlsldavaxq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsldavaxt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s32.c -index 07efdf96f10..aa5001705c1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavaxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vmlsldavaxq_p_s32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsldavaxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavaxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vmlsldavaxq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vmlsldavaxt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_s16.c -index 6a51d9f3d93..7772b3da069 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsldavax.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int16x8_t b, int16x8_t c) - { - return vmlsldavaxq_s16 (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsldavax.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmlsldavax.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int16x8_t b, int16x8_t c) - { - return vmlsldavaxq (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsldavax.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_s32.c -index 275776388d2..eba923f15d8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavaxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsldavax.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b, int32x4_t c) - { - return vmlsldavaxq_s32 (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsldavax.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmlsldavax.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b, int32x4_t c) - { - return vmlsldavaxq (a, b, c); - } - --/* { dg-final { scan-assembler "vmlsldavax.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_p_s16.c -index 6eedf07efd6..79ed4c94b64 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavt.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmlsldavq_p_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsldavt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavt.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmlsldavq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsldavt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_p_s32.c -index b36ea49612c..44982f89edf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmlsldavq_p_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsldavt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmlsldavq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsldavt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_s16.c -index f05841798c9..dbdf1deae04 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsldav.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int16x8_t a, int16x8_t b) - { - return vmlsldavq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmlsldav.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmlsldav.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int16x8_t a, int16x8_t b) - { - return vmlsldavq (a, b); - } - --/* { dg-final { scan-assembler "vmlsldav.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_s32.c -index 45bee16ab79..458f14c446f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsldav.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a, int32x4_t b) - { - return vmlsldavq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmlsldav.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmlsldav.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a, int32x4_t b) - { - return vmlsldavq (a, b); - } - --/* { dg-final { scan-assembler "vmlsldav.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s16.c -index 821f4eae90a..9481550f526 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavxt.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmlsldavxq_p_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsldavxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavxt.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmlsldavxq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsldavxt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s32.c -index 77e84d07486..cc20e554932 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmlsldavxq_p_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsldavxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmlsldavxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmlsldavxq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vmlsldavxt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_s16.c -index dcd88f8db73..7a4d9365ed6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsldavx.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int16x8_t a, int16x8_t b) - { - return vmlsldavxq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmlsldavx.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmlsldavx.s16 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int16x8_t a, int16x8_t b) - { - return vmlsldavxq (a, b); - } - --/* { dg-final { scan-assembler "vmlsldavx.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_s32.c -index d59550ba69e..b241569d75c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsldavxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmlsldavx.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a, int32x4_t b) - { - return vmlsldavxq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmlsldavx.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmlsldavx.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a, int32x4_t b) - { - return vmlsldavxq (a, b); - } - --/* { dg-final { scan-assembler "vmlsldavx.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_s16.c -index b7ce6ce9c2a..69c2f91b50e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int16x8_t a, mve_pred16_t p) - { - return vmovlbq_m_s16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovlbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int16x8_t a, mve_pred16_t p) - { - return vmovlbq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_s8.c -index d15df32831d..2b3cfacb5f3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int8x16_t a, mve_pred16_t p) - { - return vmovlbq_m_s8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovlbt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int8x16_t a, mve_pred16_t p) - { - return vmovlbq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_u16.c -index dcd9dc43692..39398b2cde9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vmovlbq_m_u16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovlbt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vmovlbq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_u8.c -index dbdeb263086..30ca18ad103 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_m_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.u8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vmovlbq_m_u8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovlbt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.u8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vmovlbq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_s16.c -index a6b5cbb1527..8ce0da68113 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_s16.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovlb.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a) - { - return vmovlbq_s16 (a); - } - --/* { dg-final { scan-assembler "vmovlb.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmovlb.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a) - { - return vmovlbq (a); - } - --/* { dg-final { scan-assembler "vmovlb.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_s8.c -index 4ead765bb6e..36fbce37bf8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovlb.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int8x16_t a) - { - return vmovlbq_s8 (a); - } - --/* { dg-final { scan-assembler "vmovlb.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmovlb.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int8x16_t a) - { - return vmovlbq (a); - } - --/* { dg-final { scan-assembler "vmovlb.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_u16.c -index fec88bb7f79..b90728e9956 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovlb.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a) - { -- return vmovlbq_u16 (a); -+ return vmovlbq_u16 (a); - } - --/* { dg-final { scan-assembler "vmovlb.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmovlb.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a) - { -- return vmovlbq (a); -+ return vmovlbq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmovlb.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_u8.c -index af6d804696a..5299f581329 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovlb.u8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a) - { -- return vmovlbq_u8 (a); -+ return vmovlbq_u8 (a); - } - --/* { dg-final { scan-assembler "vmovlb.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmovlb.u8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a) - { -- return vmovlbq (a); -+ return vmovlbq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmovlb.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_s16.c -index 393fc5523a7..63d2ddb9015 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a, mve_pred16_t p) - { - return vmovlbq_x_s16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovlbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a, mve_pred16_t p) - { - return vmovlbq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_s8.c -index 3773be0b621..b573f572012 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int8x16_t a, mve_pred16_t p) - { - return vmovlbq_x_s8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovlbt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int8x16_t a, mve_pred16_t p) - { - return vmovlbq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_u16.c -index b668eeb6fcf..f039019f5b8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a, mve_pred16_t p) - { - return vmovlbq_x_u16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovlbt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a, mve_pred16_t p) - { - return vmovlbq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_u8.c -index 6019e2d09d7..7fb32ece22d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovlbq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.u8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a, mve_pred16_t p) - { - return vmovlbq_x_u8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovlbt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovlbt.u8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a, mve_pred16_t p) - { - return vmovlbq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_s16.c -index 47897a3913f..72ca8c8bb9b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int16x8_t a, mve_pred16_t p) - { - return vmovltq_m_s16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovltt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int16x8_t a, mve_pred16_t p) - { - return vmovltq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_s8.c -index c87b263db51..7e3b4f40bc5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int8x16_t a, mve_pred16_t p) - { - return vmovltq_m_s8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovltt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int8x16_t a, mve_pred16_t p) - { - return vmovltq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_u16.c -index cfe7cd7a5d3..4320df794ab 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vmovltq_m_u16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovltt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vmovltq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_u8.c -index a9119fbb940..c9a75a590b2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_m_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.u8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vmovltq_m_u8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovltt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.u8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vmovltq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_s16.c -index a7fd325e330..f431cda53ac 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_s16.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovlt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a) - { - return vmovltq_s16 (a); - } - --/* { dg-final { scan-assembler "vmovlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmovlt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a) - { - return vmovltq (a); - } - --/* { dg-final { scan-assembler "vmovlt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_s8.c -index c392e56b60b..d65f8066454 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovlt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int8x16_t a) - { - return vmovltq_s8 (a); - } - --/* { dg-final { scan-assembler "vmovlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmovlt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int8x16_t a) - { - return vmovltq (a); - } - --/* { dg-final { scan-assembler "vmovlt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_u16.c -index 7634af6f45a..5469671041b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovlt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a) - { -- return vmovltq_u16 (a); -+ return vmovltq_u16 (a); - } - --/* { dg-final { scan-assembler "vmovlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmovlt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a) - { -- return vmovltq (a); -+ return vmovltq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmovlt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_u8.c -index 2c0d1a7c69d..a14c71cdfbc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovlt.u8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a) - { -- return vmovltq_u8 (a); -+ return vmovltq_u8 (a); - } - --/* { dg-final { scan-assembler "vmovlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmovlt.u8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a) - { -- return vmovltq (a); -+ return vmovltq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmovlt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_s16.c -index ae6c8999835..f8e24c4e0d3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a, mve_pred16_t p) - { - return vmovltq_x_s16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovltt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a, mve_pred16_t p) - { - return vmovltq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_s8.c -index 1172643218a..b97de081858 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int8x16_t a, mve_pred16_t p) - { - return vmovltq_x_s8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovltt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int8x16_t a, mve_pred16_t p) - { - return vmovltq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_u16.c -index 64442dcf935..851264e45ed 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a, mve_pred16_t p) - { - return vmovltq_x_u16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovltt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a, mve_pred16_t p) - { - return vmovltq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_u8.c -index 33e571890c0..82219b670db 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovltq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.u8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a, mve_pred16_t p) - { - return vmovltq_x_u8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovltt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovltt.u8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a, mve_pred16_t p) - { - return vmovltq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_s16.c -index fdb392cbf81..3bd9b82cbb3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovnbt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vmovnbq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovnbt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovnbt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vmovnbq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_s32.c -index 9f32f49d24e..bc2f95c7d8a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovnbt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vmovnbq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovnbt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovnbt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vmovnbq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_u16.c -index ebc1599af54..1624237c67a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovnbt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vmovnbq_m_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovnbt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovnbt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vmovnbq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_u32.c -index 502068713e9..1a2f1e8441e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_m_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovnbt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vmovnbq_m_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovnbt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovnbt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vmovnbq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_s16.c -index a49943fd25a..d5286f11259 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovnb.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b) - { - return vmovnbq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmovnb.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmovnb.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b) - { - return vmovnbq (a, b); - } - --/* { dg-final { scan-assembler "vmovnb.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_s32.c -index 6dbce232399..b6b44837b8c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovnb.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b) - { - return vmovnbq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmovnb.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmovnb.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b) - { - return vmovnbq (a, b); - } - --/* { dg-final { scan-assembler "vmovnb.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_u16.c -index f3df71a43eb..1203ac5c7f5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovnb.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b) - { - return vmovnbq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vmovnb.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmovnb.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b) - { - return vmovnbq (a, b); - } - --/* { dg-final { scan-assembler "vmovnb.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_u32.c -index e0369ed5fa2..de5bb111783 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovnbq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovnb.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b) - { - return vmovnbq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vmovnb.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmovnb.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b) - { - return vmovnbq (a, b); - } - --/* { dg-final { scan-assembler "vmovnb.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_s16.c -index f305ab30dc8..594f72c08f5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovntt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vmovntq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovntt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovntt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vmovntq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_s32.c -index 59820c610e6..b3e3e0442c5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovntt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vmovntq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovntt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovntt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vmovntq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_u16.c -index 079b162148e..a3e33db311e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovntt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vmovntq_m_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovntt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovntt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vmovntq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_u32.c -index 7c09b2e4f9f..b5629493c72 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_m_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovntt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vmovntq_m_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmovntt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmovntt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vmovntq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_s16.c -index 229cd5809d9..d7e369d266e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovnt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b) - { - return vmovntq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmovnt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmovnt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b) - { - return vmovntq (a, b); - } - --/* { dg-final { scan-assembler "vmovnt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_s32.c -index 01921cbd66e..6d87cc21aaa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovnt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b) - { - return vmovntq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmovnt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmovnt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b) - { - return vmovntq (a, b); - } - --/* { dg-final { scan-assembler "vmovnt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_u16.c -index 30e75b2169d..f85e45a666a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovnt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b) - { - return vmovntq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vmovnt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmovnt.i16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b) - { - return vmovntq (a, b); - } - --/* { dg-final { scan-assembler "vmovnt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_u32.c -index 9ed963dda70..05c4af3d614 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmovnt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b) - { - return vmovntq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vmovnt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmovnt.i32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b) - { - return vmovntq (a, b); - } - --/* { dg-final { scan-assembler "vmovnt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s16.c -index 4971869a27b..a7d8460c265 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmulhq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s32.c -index 3006de7fd24..997fdbe8d23 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmulhq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s8.c -index fbcef24ffc3..567461ff111 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmulhq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u16.c -index 7059fecf047..9b813829cd6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulhq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u32.c -index 1c2de7081cf..248432a2fe0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmulhq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u8.c -index 5eed85fb2d9..464180c1988 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulhq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s16.c -index a7260df0f51..0950c06ee05 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmulh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vmulhq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmulh.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmulh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vmulhq (a, b); - } - --/* { dg-final { scan-assembler "vmulh.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s32.c -index 4fe46e62fc8..db2ab42a1e9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmulh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vmulhq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmulh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmulh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vmulhq (a, b); - } - --/* { dg-final { scan-assembler "vmulh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s8.c -index acc08039bb5..8bb2239005f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmulh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vmulhq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vmulh.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmulh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vmulhq (a, b); - } - --/* { dg-final { scan-assembler "vmulh.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u16.c -index 37e40f06d72..bb88136589c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmulh.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vmulhq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vmulh.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmulh.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vmulhq (a, b); - } - --/* { dg-final { scan-assembler "vmulh.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u32.c -index 5673d91486c..d42c41acb73 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmulh.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vmulhq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vmulh.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmulh.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vmulhq (a, b); - } - --/* { dg-final { scan-assembler "vmulh.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u8.c -index 29c6312bb7c..c666a9631af 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmulh.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vmulhq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vmulh.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmulh.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vmulhq (a, b); - } - --/* { dg-final { scan-assembler "vmulh.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s16.c -index b783570be19..a323c961838 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmulhq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmulhq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s32.c -index 003485be70b..98168b1be06 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmulhq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmulhq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s8.c -index d2359cd371b..b50f59b3df4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmulhq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmulhq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u16.c -index c052c4ac007..afa803c2917 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulhq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulhq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u32.c -index 7eeba8be611..221795478cd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmulhq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmulhq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u8.c -index ff2a53fc160..4383e2e7574 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulhq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulht.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulht.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulhq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s16.c -index be933274d77..a4cc5e52773 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmullbq_int_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmullbq_int_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s32.c -index 3dfc26761be..a195884567b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int64x2_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmullbq_int_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int64x2_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmullbq_int_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s8.c -index f8c449b28a0..3a5d7705d45 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmullbq_int_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmullbq_int_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u16.c -index dd6ed6b71a6..5e327d25a9b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmullbq_int_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmullbq_int_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u32.c -index 85ce75e7dd8..fb2de994dd8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo (uint64x2_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmullbq_int_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo1 (uint64x2_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmullbq_int_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u8.c -index d131a5d9fd7..4cc06c4ef28 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmullbq_int_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmullbq_int_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s16.c -index 22f4d27f6cc..16c0982386b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullb.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a, int16x8_t b) - { - return vmullbq_int_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmullb.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmullb.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a, int16x8_t b) - { - return vmullbq_int (a, b); - } - --/* { dg-final { scan-assembler "vmullb.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s32.c -index 6e677f26b84..e0a82d6e640 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullb.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int32x4_t a, int32x4_t b) - { - return vmullbq_int_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmullb.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmullb.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int32x4_t a, int32x4_t b) - { - return vmullbq_int (a, b); - } - --/* { dg-final { scan-assembler "vmullb.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s8.c -index f40b8a6c4dd..031a433c2bb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullb.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int8x16_t a, int8x16_t b) - { - return vmullbq_int_s8 (a, b); - } - --/* { dg-final { scan-assembler "vmullb.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmullb.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int8x16_t a, int8x16_t b) - { - return vmullbq_int (a, b); - } - --/* { dg-final { scan-assembler "vmullb.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u16.c -index 3529ab2772d..4bb19bf5cff 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullb.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a, uint16x8_t b) - { - return vmullbq_int_u16 (a, b); - } - --/* { dg-final { scan-assembler "vmullb.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmullb.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vmullbq_int (a, b); - } - --/* { dg-final { scan-assembler "vmullb.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u32.c -index d843d2bf5fe..d461ed9f9c7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullb.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo (uint32x4_t a, uint32x4_t b) - { - return vmullbq_int_u32 (a, b); - } - --/* { dg-final { scan-assembler "vmullb.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmullb.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vmullbq_int (a, b); - } - --/* { dg-final { scan-assembler "vmullb.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u8.c -index 6268c463ead..c0790778b2d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullb.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a, uint8x16_t b) - { - return vmullbq_int_u8 (a, b); - } - --/* { dg-final { scan-assembler "vmullb.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmullb.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vmullbq_int (a, b); - } - --/* { dg-final { scan-assembler "vmullb.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s16.c -index 87f8e21a7d0..ee83ca61158 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmullbq_int_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmullbq_int_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s32.c -index 5e563728a4a..42ae3324cd9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmullbq_int_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmullbq_int_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s8.c -index b2ca4134ee5..8dcf9b726b0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmullbq_int_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmullbq_int_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u16.c -index 15269101fe5..31330da9a93 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmullbq_int_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmullbq_int_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u32.c -index 7a7836303ec..b882d644347 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmullbq_int_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmullbq_int_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u8.c -index f422a3c66f0..4b402374eb7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmullbq_int_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmullbq_int_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p16.c -index 527acb74e09..2efb87dff01 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.p16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmullbq_poly_m_p16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.p16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.p16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmullbq_poly_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.p16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p8.c -index 5403394e870..b435f44cb32 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.p8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmullbq_poly_m_p8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.p8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.p8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmullbq_poly_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.p8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_p16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_p16.c -index d01d5997ff4..bfd052222fe 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_p16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_p16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullb.p16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a, uint16x8_t b) - { - return vmullbq_poly_p16 (a, b); - } - --/* { dg-final { scan-assembler "vmullb.p16" } } */ - -+/* -+**foo1: -+** ... -+** vmullb.p16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vmullbq_poly (a, b); - } - --/* { dg-final { scan-assembler "vmullb.p16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_p8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_p8.c -index de97134add7..a2a53e8a3dc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_p8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_p8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullb.p8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a, uint8x16_t b) - { - return vmullbq_poly_p8 (a, b); - } - --/* { dg-final { scan-assembler "vmullb.p8" } } */ - -+/* -+**foo1: -+** ... -+** vmullb.p8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vmullbq_poly (a, b); - } - --/* { dg-final { scan-assembler "vmullb.p8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p16.c -index f94d9052433..bee45f95939 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.p16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmullbq_poly_x_p16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.p16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.p16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmullbq_poly_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p8.c -index 6fdc94496bc..7cd15f3a7f1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.p8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmullbq_poly_x_p8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmullbt.p8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmullbt.p8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmullbq_poly_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s16.c -index 25ecf7a2c51..7f573e9109e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmulltq_int_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmulltq_int_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s32.c -index f8d02880ea0..da440dd1365 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int64x2_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmulltq_int_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int64x2_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmulltq_int_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s8.c -index 3f2fc333a65..ceb8e1d5a94 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmulltq_int_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmulltq_int_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u16.c -index b7ab408d53c..a751546ae13 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulltq_int_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulltq_int_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u32.c -index e43ad98d933..a6c4d272968 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo (uint64x2_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmulltq_int_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo1 (uint64x2_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmulltq_int_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u8.c -index 7f4b90b08dd..1a7466bb5b8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulltq_int_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulltq_int_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s16.c -index 34b75d4abc8..cd907f6224c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a, int16x8_t b) - { - return vmulltq_int_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmullt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmullt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a, int16x8_t b) - { - return vmulltq_int (a, b); - } - --/* { dg-final { scan-assembler "vmullt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s32.c -index 7e09bf93e0e..dbc4c80b440 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int32x4_t a, int32x4_t b) - { - return vmulltq_int_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmullt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmullt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int32x4_t a, int32x4_t b) - { - return vmulltq_int (a, b); - } - --/* { dg-final { scan-assembler "vmullt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s8.c -index b6eb1f5e7f2..0fef6a21207 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int8x16_t a, int8x16_t b) - { - return vmulltq_int_s8 (a, b); - } - --/* { dg-final { scan-assembler "vmullt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmullt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int8x16_t a, int8x16_t b) - { - return vmulltq_int (a, b); - } - --/* { dg-final { scan-assembler "vmullt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u16.c -index f4fc9c0c634..91b6fb4595d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a, uint16x8_t b) - { - return vmulltq_int_u16 (a, b); - } - --/* { dg-final { scan-assembler "vmullt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmullt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vmulltq_int (a, b); - } - --/* { dg-final { scan-assembler "vmullt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u32.c -index d1bc3a8f990..71c62a12afb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo (uint32x4_t a, uint32x4_t b) - { - return vmulltq_int_u32 (a, b); - } - --/* { dg-final { scan-assembler "vmullt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmullt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vmulltq_int (a, b); - } - --/* { dg-final { scan-assembler "vmullt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u8.c -index 87f3c4e386a..7506adce33e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a, uint8x16_t b) - { - return vmulltq_int_u8 (a, b); - } - --/* { dg-final { scan-assembler "vmullt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmullt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vmulltq_int (a, b); - } - --/* { dg-final { scan-assembler "vmullt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s16.c -index c13ef50147e..c2376abe268 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmulltq_int_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmulltq_int_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s32.c -index e82321ecb79..788789db120 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmulltq_int_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmulltq_int_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s8.c -index 7f093c26080..3935741d041 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmulltq_int_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmulltq_int_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u16.c -index d0f6461448b..32ee5b2e4e8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulltq_int_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulltq_int_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u32.c -index 55e19cb204a..cc3105650a1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmulltq_int_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmulltq_int_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u8.c -index 650c9471c7e..01713fba245 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulltq_int_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulltq_int_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p16.c -index 944db4c2fab..6d368e2ba68 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.p16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulltq_poly_m_p16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.p16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.p16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulltq_poly_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.p16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p8.c -index d07311943c2..75b8811fdd9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.p8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulltq_poly_m_p8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.p8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.p8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulltq_poly_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.p8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_p16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_p16.c -index 121de8e9c0e..9f08d57eef9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_p16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_p16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullt.p16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a, uint16x8_t b) - { - return vmulltq_poly_p16 (a, b); - } - --/* { dg-final { scan-assembler "vmullt.p16" } } */ - -+/* -+**foo1: -+** ... -+** vmullt.p16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vmulltq_poly (a, b); - } - --/* { dg-final { scan-assembler "vmullt.p16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_p8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_p8.c -index c7d9548a8ab..59e6e1bb6e0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_p8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_p8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmullt.p8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a, uint8x16_t b) - { - return vmulltq_poly_p8 (a, b); - } - --/* { dg-final { scan-assembler "vmullt.p8" } } */ - -+/* -+**foo1: -+** ... -+** vmullt.p8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vmulltq_poly (a, b); - } - --/* { dg-final { scan-assembler "vmullt.p8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p16.c -index fb4b849b8b0..f3d3de2d1d6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.p16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulltq_poly_x_p16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.p16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.p16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulltq_poly_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p8.c -index 1e79b2987c9..2c7a6294540 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.p8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulltq_poly_x_p8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmulltt.p8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmulltt.p8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulltq_poly_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_f16.c -index 68fb012ad34..3c9b82deed5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vmulq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vmul.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmul.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_f32.c -index 512661aeec7..adebaee5f00 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vmulq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vmul.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmul.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_f16.c -index d05d48f6261..4737ac3c75b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vmulq_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_f32.c -index 8c2ec81da3b..2c09a9ee90a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vmulq_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f16-1.c -deleted file mode 100644 -index c8222c5c7b9..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16x8_t inactive, float16x8_t a, float16_t b, mve_pred16_t p) --{ -- return vmulq_m (inactive, a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f16.c -index 1f1d408d5b9..8de0d38f97c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16_t b, mve_pred16_t p) - { - return vmulq_m_n_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t inactive, float16x8_t a, mve_pred16_t p) -+{ -+ return vmulq_m (inactive, a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f32-1.c -deleted file mode 100644 -index 2fae3a7f8fa..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32x4_t inactive, float32x4_t a, float32_t b, mve_pred16_t p) --{ -- return vmulq_m (inactive, a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f32.c -index 4aae0849e2b..36e9aa99b33 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32_t b, mve_pred16_t p) - { - return vmulq_m_n_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t inactive, float32x4_t a, mve_pred16_t p) -+{ -+ return vmulq_m (inactive, a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s16.c -index 9a87f7d3643..163d4259338 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vmulq_m_n_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s32.c -index da7d38b9968..89e4c212147 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vmulq_m_n_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s8.c -index 227b3a50a92..4055959ec8e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vmulq_m_n_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u16.c -index e09334df1de..2ea47a6df96 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vmulq_m_n_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) -+{ -+ return vmulq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u32.c -index 62d6c262e5a..c818c4556d8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vmulq_m_n_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) -+{ -+ return vmulq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u8.c -index e7993ab3c31..d0380864af6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vmulq_m_n_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) -+{ -+ return vmulq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s16.c -index 61cdf656c19..72f5d3cefc3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmulq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s32.c -index 622407b96da..2ee86e9e163 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmulq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s8.c -index bb2943cc727..6356f4adce0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmulq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u16.c -index a0680174753..903bccbf0ca 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u32.c -index 586a32560d7..8d386c0727a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmulq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u8.c -index 0a8e49a5982..de3f6096fa4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f16-1.c -deleted file mode 100644 -index cef311d981d..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16x8_t a, float16_t b) --{ -- return vmulq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f16.c -index a3f693f06f7..e4efd6b279f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16_t b) - { - return vmulq_n_f16 (a, b); - } - --/* { dg-final { scan-assembler "vmul.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmul.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.f16" } } */ -+/* -+**foo2: -+** ... -+** vmul.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t a) -+{ -+ return vmulq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f32-1.c -deleted file mode 100644 -index d6d4b9a0a7c..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32x4_t a, float32_t b) --{ -- return vmulq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f32.c -index 5d1cfa368a7..97c71ab0a2c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32_t b) - { - return vmulq_n_f32 (a, b); - } - --/* { dg-final { scan-assembler "vmul.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmul.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.f32" } } */ -+/* -+**foo2: -+** ... -+** vmul.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t a) -+{ -+ return vmulq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s16.c -index 98e84cbf202..c2f3c1df51c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b) - { - return vmulq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmul.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmul.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s32.c -index adbfd6fe10b..50b5f0c0ccb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vmulq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmul.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmul.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s8.c -index c845f108f88..425b576caf7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b) - { - return vmulq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vmul.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmul.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u16.c -index e52acdc53b9..1e02ad0077c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16_t b) - { - return vmulq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vmul.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmul.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.i16" } } */ -+/* -+**foo2: -+** ... -+** vmul.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t a) -+{ -+ return vmulq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u32.c -index 9da4bc1f359..6a05f542a37 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32_t b) - { - return vmulq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vmul.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmul.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.i32" } } */ -+/* -+**foo2: -+** ... -+** vmul.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t a) -+{ -+ return vmulq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u8.c -index e0f152db729..7ba29e6a482 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8_t b) - { - return vmulq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vmul.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmul.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.i8" } } */ -+/* -+**foo2: -+** ... -+** vmul.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t a) -+{ -+ return vmulq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s16.c -index 89cc604fda0..026bbaecc9e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vmulq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vmul.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmul.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s32.c -index f87fbf1249c..75a17e07cf0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vmulq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vmul.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmul.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s8.c -index 4e40065ad22..a7762893e93 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vmulq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vmul.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmul.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u16.c -index ae95bf68afe..4150c390fab 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vmulq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vmul.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmul.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u32.c -index 4f8e9762d5f..3bdc5df35c4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vmulq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vmul.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmul.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u8.c -index a3776ff8314..dc988fd9b4a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmul.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vmulq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vmul.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmul.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vmulq (a, b); - } - --/* { dg-final { scan-assembler "vmul.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_f16.c -index 1f864cf481a..bde0536d9cf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vmulq_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_f32.c -index 07cc3d0277c..162569cbad4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vmulq_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f16-1.c -deleted file mode 100644 -index ea4cab03490..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16x8_t a, float16_t b, mve_pred16_t p) --{ -- return vmulq_x (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f16.c -index 8fa6c759d54..b37a9ae7411 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vmulq_x_n_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t a, mve_pred16_t p) -+{ -+ return vmulq_x (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f32-1.c -deleted file mode 100644 -index a7a54c7c92c..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32x4_t a, float32_t b, mve_pred16_t p) --{ -- return vmulq_x (a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f32.c -index 654713c1348..a2be895bea5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vmulq_x_n_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.f32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t a, mve_pred16_t p) -+{ -+ return vmulq_x (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s16.c -index 4ec5ab397e1..70e169975c5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vmulq_x_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s32.c -index c52180067cf..4e3e2320c10 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vmulq_x_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s8.c -index a2a7c734de8..a7a2cca4e59 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vmulq_x_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u16.c -index 419a3cb6ea6..76b8a7e0f11 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vmulq_x_n_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t a, mve_pred16_t p) -+{ -+ return vmulq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u32.c -index 5acfcf6bf61..cba98561403 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vmulq_x_n_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t a, mve_pred16_t p) -+{ -+ return vmulq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u8.c -index 27e95ced0b5..33836662b2d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vmulq_x_n_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t a, mve_pred16_t p) -+{ -+ return vmulq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s16.c -index 5c232bfdc34..a1a60030a2a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmulq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s32.c -index 685fe45e4d0..f3a2917bd45 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmulq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s8.c -index 19ecc6bcafc..cdd311d41a0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmulq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u16.c -index 0700ca818ab..c8d4eed010e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u32.c -index a1cb2aa221e..497e542f9ea 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmulq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u8.c -index 3b29852c830..e54b95f5ee4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmult.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vmulq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmult.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c -index 1b6e683700c..9d4804a0057 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, mve_pred16_t p) - { -- return vmvnq_m_n_s16 (inactive, 2, p); -+ return vmvnq_m_n_s16 (inactive, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, mve_pred16_t p) - { -- return vmvnq_m (inactive, 2, p); -+ return vmvnq_m (inactive, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c -index dcfd69fb7f1..607cdfca33e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, mve_pred16_t p) - { -- return vmvnq_m_n_s32 (inactive, 2, p); -+ return vmvnq_m_n_s32 (inactive, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, mve_pred16_t p) - { -- return vmvnq_m (inactive, 2, p); -+ return vmvnq_m (inactive, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c -index bd86fa806b8..7b0b5a9ef83 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, mve_pred16_t p) - { -- return vmvnq_m_n_u16 (inactive, 4, p); -+ return vmvnq_m_n_u16 (inactive, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, mve_pred16_t p) - { -- return vmvnq_m (inactive, 4, p); -+ return vmvnq_m (inactive, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u32.c -index 2ac6ef192d7..2217420081e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, mve_pred16_t p) - { -- return vmvnq_m_n_u32 (inactive, 4, p); -+ return vmvnq_m_n_u32 (inactive, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, mve_pred16_t p) - { -- return vmvnq_m (inactive, 4, p); -+ return vmvnq_m (inactive, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s16.c -index 5284b8fe054..e27d8111b54 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vmvnq_m_s16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vmvnq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s32.c -index da16a5d45d6..8a264a1e76f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vmvnq_m_s32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vmvnq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s8.c -index 206759247c5..c4374d0ffd4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vmvnq_m_s8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vmvnq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u16.c -index 9940cec4bfe..3d5d56eadfe 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vmvnq_m_u16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vmvnq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u32.c -index 25179f13f95..fd1961e0673 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { - return vmvnq_m_u32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { - return vmvnq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u8.c -index 7237db35b33..037d1f4ce39 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vmvnq_m_u8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vmvnq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c -index 336c6aa63c4..975639334d5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmvn.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo () - { - return vmvnq_n_s16 (1); - } - --/* { dg-final { scan-assembler "vmvn.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s32.c -index 354c39c8f7b..0e09343e6c3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmvn.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo () - { -- return vmvnq_n_s32 (2); -+ return vmvnq_n_s32 (1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmvn.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c -index 178b003091b..84e158ade93 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmvn.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo () - { -- return vmvnq_n_u16 (1); -+ return vmvnq_n_u16 (1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmvn.i16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u32.c -index 4819066bdbd..168b77a400a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u32.c -@@ -1,13 +1,28 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmvn.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo () - { -- return vmvnq_n_u32 (2); -+ return vmvnq_n_u32 (1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmvn.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s16.c -index 840d834ea9e..30ddcd9118e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s16.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmvn q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { - return vmvnq_s16 (a); - } - --/* { dg-final { scan-assembler "vmvn" } } */ - -+/* -+**foo1: -+** ... -+** vmvn q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { - return vmvnq (a); - } - --/* { dg-final { scan-assembler "vmvn" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s32.c -index cf73bc088c7..48d66753c0f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s32.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmvn q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { - return vmvnq_s32 (a); - } - --/* { dg-final { scan-assembler "vmvn" } } */ - -+/* -+**foo1: -+** ... -+** vmvn q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a) - { - return vmvnq (a); - } - --/* { dg-final { scan-assembler "vmvn" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s8.c -index 6d239391cbb..199bb0f81c3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmvn q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { - return vmvnq_s8 (a); - } - --/* { dg-final { scan-assembler "vmvn" } } */ - -+/* -+**foo1: -+** ... -+** vmvn q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { - return vmvnq (a); - } - --/* { dg-final { scan-assembler "vmvn" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u16.c -index db348328513..c2d724f5375 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmvn q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a) - { -- return vmvnq_u16 (a); -+ return vmvnq_u16 (a); - } - --/* { dg-final { scan-assembler "vmvn" } } */ - -+/* -+**foo1: -+** ... -+** vmvn q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a) - { -- return vmvnq (a); -+ return vmvnq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmvn" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u32.c -index c007a959078..8bafe68f21c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmvn q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a) - { -- return vmvnq_u32 (a); -+ return vmvnq_u32 (a); - } - --/* { dg-final { scan-assembler "vmvn" } } */ - -+/* -+**foo1: -+** ... -+** vmvn q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a) - { -- return vmvnq (a); -+ return vmvnq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmvn" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u8.c -index 2288a283d60..684e5bc94f1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmvn q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a) - { -- return vmvnq_u8 (a); -+ return vmvnq_u8 (a); - } - --/* { dg-final { scan-assembler "vmvn" } } */ - -+/* -+**foo1: -+** ... -+** vmvn q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a) - { -- return vmvnq (a); -+ return vmvnq (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vmvn" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c -index b00ccc3e672..a4d575e4aba 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (mve_pred16_t p) - { -- return vmvnq_x_n_s16 (2, p); -+ return vmvnq_x_n_s16 (1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt.i16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s32.c -index ea65104b4b3..9ca5c90d80e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (mve_pred16_t p) - { -- return vmvnq_x_n_s32 (2, p); -+ return vmvnq_x_n_s32 (1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c -index 2fa4e40ad5d..9fbf2b978ac 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (mve_pred16_t p) - { -- return vmvnq_x_n_u16 (4, p); -+ return vmvnq_x_n_u16 (1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt.i16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u32.c -index b39e681c116..883e9af1609 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u32.c -@@ -1,14 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (mve_pred16_t p) - { -- return vmvnq_x_n_u32 (4, p); -+ return vmvnq_x_n_u32 (1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s16.c -index d4b87a795fc..6bd04f7dd38 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, mve_pred16_t p) - { - return vmvnq_x_s16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, mve_pred16_t p) - { - return vmvnq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s32.c -index 0bcdba0c1d6..6af90408e9c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, mve_pred16_t p) - { - return vmvnq_x_s32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, mve_pred16_t p) - { - return vmvnq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s8.c -index ffa7306ace6..8c6f118c36f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, mve_pred16_t p) - { - return vmvnq_x_s8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, mve_pred16_t p) - { - return vmvnq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u16.c -index 29b5ad950ea..2e9902f3858 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, mve_pred16_t p) - { - return vmvnq_x_u16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, mve_pred16_t p) - { - return vmvnq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u32.c -index b3d5f73cd92..53b2ebdd457 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, mve_pred16_t p) - { - return vmvnq_x_u32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, mve_pred16_t p) - { - return vmvnq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u8.c -index f085aa83662..ad7a5a9398c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, mve_pred16_t p) - { - return vmvnq_x_u8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vmvnt q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, mve_pred16_t p) - { - return vmvnq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vmvnt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_f16.c -index 9572c140d7e..9853cf6e6dd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_f16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vneg.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a) - { - return vnegq_f16 (a); - } - --/* { dg-final { scan-assembler "vneg.f16" } } */ -+ -+/* -+**foo1: -+** ... -+** vneg.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (float16x8_t a) -+{ -+ return vnegq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_f32.c -index be73cc0c5f5..489cfc760ba 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_f32.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vneg.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a) - { - return vnegq_f32 (a); - } - --/* { dg-final { scan-assembler "vneg.f32" } } */ -+ -+/* -+**foo1: -+** ... -+** vneg.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (float32x4_t a) -+{ -+ return vnegq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_f16.c -index 0d917b80cd7..c8b307ea50e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vnegq_m_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vnegt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vnegq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_f32.c -index f1c0e9a99b0..a530a05e644 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vnegq_m_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vnegt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vnegq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s16.c -index 9a945ee62a3..46d6e794dbe 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vnegq_m_s16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vnegt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vnegq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s32.c -index 811f1df0565..5fb1f5c2a4c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vnegq_m_s32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vnegt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vnegq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s8.c -index 430ebc73783..868a9680858 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vnegq_m_s8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vnegt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vnegq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s16.c -index a47f9b3423e..3b518c8e0f5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s16.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vneg.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { - return vnegq_s16 (a); - } - --/* { dg-final { scan-assembler "vneg.s16" } } */ - -+/* -+**foo1: -+** ... -+** vneg.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { - return vnegq (a); - } - --/* { dg-final { scan-assembler "vneg.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s32.c -index 50401f53bd7..f8682575892 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s32.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vneg.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { - return vnegq_s32 (a); - } - --/* { dg-final { scan-assembler "vneg.s32" } } */ - -+/* -+**foo1: -+** ... -+** vneg.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a) - { - return vnegq (a); - } - --/* { dg-final { scan-assembler "vneg.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s8.c -index fd5de3dab56..1be5901740e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vneg.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { - return vnegq_s8 (a); - } - --/* { dg-final { scan-assembler "vneg.s8" } } */ - -+/* -+**foo1: -+** ... -+** vneg.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { - return vnegq (a); - } - --/* { dg-final { scan-assembler "vneg.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_f16.c -index e7af36691dc..c10d6d2aebf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vnegq_x_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vnegt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, mve_pred16_t p) - { - return vnegq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_f32.c -index d9c3818855a..0ee5ecc8262 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vnegq_x_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vnegt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, mve_pred16_t p) - { - return vnegq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s16.c -index 16f1fa452ce..d774a055d72 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, mve_pred16_t p) - { - return vnegq_x_s16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vnegt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, mve_pred16_t p) - { - return vnegq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s32.c -index d74683c6f24..77bf1a67cfe 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, mve_pred16_t p) - { - return vnegq_x_s32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vnegt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, mve_pred16_t p) - { - return vnegq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s8.c -index eda4c7fcf7e..ca44512e37a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, mve_pred16_t p) - { - return vnegq_x_s8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vnegt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vnegt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, mve_pred16_t p) - { - return vnegq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_f16.c -index 7cf00d94084..36543ee6bff 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vornq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ - -+/* -+**foo1: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vornq (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_f32.c -index d187bde1dc2..c3d73059c31 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vornq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ - -+/* -+**foo1: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vornq (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_f16.c -index 081872bada1..7a5cabf4396 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vornq_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vornq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_f32.c -index fe92dae6ec6..8fb90212c88 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vornq_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vornq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_s16.c -index 56a2b64bc29..31123f853f8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vornq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vornq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_s32.c -index c2e4b1267b8..e5d6d63955b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vornq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vornq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_s8.c -index 6607808e96e..73bde2bcfde 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vornq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vornq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_u16.c -index 1905ed193ac..2872c0a7045 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vornq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vornq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_u32.c -index 6d6620c3e07..90e8df24b99 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vornq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vornq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_u8.c -index 23e8d046c73..eedbf3a1ae1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vornq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vornq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_s16.c -index 0f73ea28e0d..ac92a93f19c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vornq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ - -+/* -+**foo1: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vornq (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_s32.c -index 7d9835fc1b8..38be3483872 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vornq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ - -+/* -+**foo1: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vornq (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_s8.c -index f2ba62292f5..3d5e47fa1e4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vornq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ - -+/* -+**foo1: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vornq (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_u16.c -index baa3fd80813..e69212d59b0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vornq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ - -+/* -+**foo1: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vornq (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_u32.c -index 481db437b77..c89622c830f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vornq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ - -+/* -+**foo1: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vornq (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_u8.c -index 575a7365487..61ce5ad294a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vornq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ - -+/* -+**foo1: -+** ... -+** vorn q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vornq (a, b); - } - --/* { dg-final { scan-assembler "vorn" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_f16.c -index d776bff2416..2bc10776f6d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vornq_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vornq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_f32.c -index 939e8fafb83..7b733cf6a6b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vornq_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vornq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_s16.c -index 77569b42cc8..beba497bbf9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vornq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vornq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_s32.c -index 29cfd020c30..60e6125ed6e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vornq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vornq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_s8.c -index fd10ff8e719..f62c9b2a111 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vornq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vornq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_u16.c -index 473f22abd52..2ac693ca30f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vornq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vornq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_u32.c -index 010ac07454d..1981c8ca408 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vornq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vornq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_u8.c -index 126a6d236b3..171dc0f58b6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vornq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vornt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vornt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vornq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_f16.c -index 1481c43ae5f..3d222d5679b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vorrq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ - -+/* -+**foo1: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vorrq (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_f32.c -index 257edd99b7b..140817ee919 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vorrq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ - -+/* -+**foo1: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vorrq (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f16.c -index 641c8f0f3bd..dbfac724131 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vorrq_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vorrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f32.c -index b537a7c74c3..e13a1df44e2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vorrq_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vorrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c -index 757482a3a95..b591bd6fc11 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, mve_pred16_t p) - { -- return vorrq_m_n_s16 (a, 253, p); -+ return vorrq_m_n_s16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, mve_pred16_t p) - { -- return vorrq_m_n (a, 253, p); -+ return vorrq_m_n (a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s32.c -index 967e49e7a26..ce4dd3ee7bc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, mve_pred16_t p) - { - return vorrq_m_n_s32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, mve_pred16_t p) - { - return vorrq_m_n (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c -index 01022c32a88..9e7788484ad 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, mve_pred16_t p) - { - return vorrq_m_n_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, mve_pred16_t p) - { - return vorrq_m_n (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u32.c -index 809237d1cf6..613c0e2f889 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, mve_pred16_t p) - { - return vorrq_m_n_u32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, mve_pred16_t p) - { - return vorrq_m_n (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s16.c -index 2714810d591..d475f1e939f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vorrq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vorrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s32.c -index c960b18631a..e171e93e4eb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vorrq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vorrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s8.c -index d1d4bc721b0..17043b26c2e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vorrq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vorrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u16.c -index 01190ea4812..19a752ec3b7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vorrq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vorrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u32.c -index 502ceab2fe4..7f3985d1508 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vorrq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vorrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u8.c -index 44cf1413ca6..5a04ebdf1de 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vorrq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vorrq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s16.c -index 63a369f9996..b95418d9668 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorr.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { - return vorrq_n_s16 (a, 1); - } - --/* { dg-final { scan-assembler "vorr.i16" } } */ -+ -+/* -+**foo1: -+** ... -+** vorr.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+int16x8_t -+foo1 (int16x8_t a) -+{ -+ return vorrq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s32.c -index cf7bbc8c46d..30248216012 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s32.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorr.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { - return vorrq_n_s32 (a, 1); - } - --/* { dg-final { scan-assembler "vorr.i32" } } */ -+ -+/* -+**foo1: -+** ... -+** vorr.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+int32x4_t -+foo1 (int32x4_t a) -+{ -+ return vorrq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u16.c -index 2d599e52f8d..1f131501aec 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorr.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a) - { - return vorrq_n_u16 (a, 1); - } - --/* { dg-final { scan-assembler "vorr.i16" } } */ -+ -+/* -+**foo1: -+** ... -+** vorr.i16 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo1 (uint16x8_t a) -+{ -+ return vorrq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u32.c -index 5a873d0d1a3..5bfdb0b2e14 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u32.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorr.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a) - { -- return vorrq_n_u32 (a, 44); -+ return vorrq_n_u32 (a, 1); -+} -+ -+ -+/* -+**foo1: -+** ... -+** vorr.i32 q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo1 (uint32x4_t a) -+{ -+ return vorrq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vorr.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s16.c -index 2a56912ab31..658df6f422f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vorrq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ - -+/* -+**foo1: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vorrq (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s32.c -index e80b991c95a..a0a24b7fd45 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vorrq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ - -+/* -+**foo1: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vorrq (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s8.c -index 3456477c07c..645c6144f46 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vorrq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ - -+/* -+**foo1: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vorrq (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_u16.c -index bb7699c1e3b..cb618a1f793 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vorrq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ - -+/* -+**foo1: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vorrq (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_u32.c -index e01f5413dc3..937102ff962 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vorrq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ - -+/* -+**foo1: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vorrq (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_u8.c -index c7ad98805c4..07121b5b1c9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vorrq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ - -+/* -+**foo1: -+** ... -+** vorr q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vorrq (a, b); - } - --/* { dg-final { scan-assembler "vorr" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_f16.c -index 2e678febb78..b34d102f470 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vorrq_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vorrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_f32.c -index 12acfb49773..d41a94e7a02 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vorrq_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vorrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_s16.c -index 75fe4541845..3e1d3e97d26 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vorrq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vorrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_s32.c -index 37d17f046af..0982b3d2081 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vorrq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vorrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_s8.c -index 3558db3b7b0..0a46246e124 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vorrq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vorrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_u16.c -index 7c9a2559c87..ef83d9de2ee 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vorrq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vorrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_u32.c -index 13ff34d582a..b6abfd5b314 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vorrq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vorrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_u8.c -index 781b2b59699..b724ed0562b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vorrq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vorrt" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vorrt q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vorrq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpnot.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpnot.c -index a84f84446c0..2b894d1d938 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpnot.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpnot.c -@@ -1,21 +1,32 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpnot(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), p0(?: @.*|) -+** ... -+*/ - mve_pred16_t - foo (mve_pred16_t a) - { - return vpnot (a); - } - --/* { dg-final { scan-assembler "vpnot" } } */ -- --mve_pred16_t --foo1 (mve_pred16_t a) --{ -- return vpnot (a); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpnot" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_f16.c -index ff121b585ed..50127b4537d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_f16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vpselq_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vpselq (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_f32.c -index 35c84761f08..0733413f1ca 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_f32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vpselq_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vpselq (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s16.c -index 0e0c14ed49d..06ef70c4073 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vpselq_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vpselq (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s32.c -index 0e746de6e07..87b4b2242eb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vpselq_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vpselq (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s64.c -index f4bbb77e268..dedb812c11b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s64.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int64x2_t a, int64x2_t b, mve_pred16_t p) - { - return vpselq_s64 (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int64x2_t a, int64x2_t b, mve_pred16_t p) - { - return vpselq (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s8.c -index 65cd415c789..5050fc03556 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_s8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vpselq_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vpselq (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u16.c -index 742ca17ac8e..055f3c00381 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u16.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vpselq_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vpselq (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u32.c -index 9d2e01c31d4..11333822b19 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u32.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vpselq_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vpselq (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u64.c -index 58c4169bc0a..c08e6c54d95 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u64.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo (uint64x2_t a, uint64x2_t b, mve_pred16_t p) - { - return vpselq_u64 (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64x2_t - foo1 (uint64x2_t a, uint64x2_t b, mve_pred16_t p) - { - return vpselq (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u8.c -index 5f73ba44ea8..804aed384c8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u8.c -@@ -1,21 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vpselq_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpsel q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vpselq (a, b, p); - } - --/* { dg-final { scan-assembler "vpsel" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s16.c -index e74e04ac92f..7172ac5cddd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqabst.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vqabsq_m_s16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqabst.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqabst.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vqabsq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s32.c -index f6ca8a6c3d6..297cb196f1a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqabst.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vqabsq_m_s32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqabst.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqabst.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vqabsq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s8.c -index d89a5aa3fa5..83c69931239 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqabst.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vqabsq_m_s8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqabst.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqabst.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vqabsq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s16.c -index e67c008cf6e..bf849fe9354 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s16.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqabs.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { - return vqabsq_s16 (a); - } - --/* { dg-final { scan-assembler "vqabs.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqabs.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { - return vqabsq (a); - } - --/* { dg-final { scan-assembler "vqabs.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s32.c -index 8023ff8d22e..1f88821de23 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s32.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqabs.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { - return vqabsq_s32 (a); - } - --/* { dg-final { scan-assembler "vqabs.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqabs.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a) - { - return vqabsq (a); - } - --/* { dg-final { scan-assembler "vqabs.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s8.c -index b36d2b762e9..1399f7c1636 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqabs.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { - return vqabsq_s8 (a); - } - --/* { dg-final { scan-assembler "vqabs.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqabs.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { - return vqabsq (a); - } - --/* { dg-final { scan-assembler "vqabs.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s16.c -index 65d3f770fe2..8884a7c8318 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vqaddq_m_n_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vqaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s32.c -index 4499a0eaa41..77d4b36b94c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqaddq_m_n_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s8.c -index d3e1d555cb1..943fae8657f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vqaddq_m_n_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vqaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u16.c -index baadfe72e8d..b8808066322 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vqaddq_m_n_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vqaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) -+{ -+ return vqaddq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u32.c -index 80808777d9a..b9815bd5ca3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vqaddq_m_n_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vqaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) -+{ -+ return vqaddq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u8.c -index 32f2894422d..674d0c578ff 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vqaddq_m_n_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vqaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.u8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) -+{ -+ return vqaddq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s16.c -index d5b7fa63f6a..ce1cedd7e1e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqaddq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s32.c -index 015bc3eb206..9b6717ef8f9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqaddq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s8.c -index b241fddd069..46ce20b7cae 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqaddq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u16.c -index fa752355d64..ed1ffbf8721 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vqaddq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vqaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u32.c -index 0729b6bb30f..50450ff3361 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vqaddq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vqaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u8.c -index f1541658399..a260e96a95d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vqaddq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqaddt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vqaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqaddt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s16.c -index 5eeda2bc2dd..17b28cfd956 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqadd.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b) - { - return vqaddq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqadd.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqadd.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16_t b) - { - return vqaddq (a, b); - } - --/* { dg-final { scan-assembler "vqadd.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s32.c -index 5b914d18b98..e6bb4e0b51d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqadd.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vqaddq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqadd.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqadd.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vqaddq (a, b); - } - --/* { dg-final { scan-assembler "vqadd.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s8.c -index 06f22c2b8df..f39451f6bc0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqadd.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b) - { - return vqaddq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vqadd.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqadd.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8_t b) - { - return vqaddq (a, b); - } - --/* { dg-final { scan-assembler "vqadd.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u16.c -index 5403f0b6646..a87163c0446 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqadd.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16_t b) - { - return vqaddq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vqadd.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqadd.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16_t b) - { - return vqaddq (a, b); - } - --/* { dg-final { scan-assembler "vqadd.u16" } } */ -+/* -+**foo2: -+** ... -+** vqadd.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t a) -+{ -+ return vqaddq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u32.c -index 77185808a16..a6aa9b5dddc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqadd.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32_t b) - { - return vqaddq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vqadd.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqadd.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32_t b) - { - return vqaddq (a, b); - } - --/* { dg-final { scan-assembler "vqadd.u32" } } */ -+/* -+**foo2: -+** ... -+** vqadd.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t a) -+{ -+ return vqaddq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u8.c -index f0fa9bf3f5d..4bd47319f5e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqadd.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8_t b) - { - return vqaddq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vqadd.u8" } } */ - -+/* -+**foo1: -+** ... -+** vqadd.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8_t b) - { - return vqaddq (a, b); - } - --/* { dg-final { scan-assembler "vqadd.u8" } } */ -+/* -+**foo2: -+** ... -+** vqadd.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t a) -+{ -+ return vqaddq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s16.c -index 83cd3475a6f..97e2a6039eb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqadd.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vqaddq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqadd.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqadd.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vqaddq (a, b); - } - --/* { dg-final { scan-assembler "vqadd.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s32.c -index d26dd206912..db9355d56dd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqadd.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vqaddq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqadd.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqadd.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vqaddq (a, b); - } - --/* { dg-final { scan-assembler "vqadd.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s8.c -index de03264b4cc..2804d668da8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqadd.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vqaddq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vqadd.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqadd.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vqaddq (a, b); - } - --/* { dg-final { scan-assembler "vqadd.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u16.c -index cd4efc1dd7c..17e59961c87 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqadd.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vqaddq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vqadd.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqadd.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vqaddq (a, b); - } - --/* { dg-final { scan-assembler "vqadd.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u32.c -index 8b3afb4bd04..ce3a397acd6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqadd.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vqaddq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vqadd.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqadd.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vqaddq (a, b); - } - --/* { dg-final { scan-assembler "vqadd.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u8.c -index da2ff1bb25c..faa881f67f6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqadd.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vqaddq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vqadd.u8" } } */ - -+/* -+**foo1: -+** ... -+** vqadd.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vqaddq (a, b); - } - --/* { dg-final { scan-assembler "vqadd.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s16.c -index 51cdadc9ece..aa9c78c883b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmladht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmladhq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmladht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmladht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmladhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmladht.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s32.c -index 7e43fed1503..4694a6f9ec5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmladht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmladhq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmladht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmladht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmladhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmladht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s8.c -index adf591041e3..c8dc67fdd12 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmladht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqdmladhq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmladht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmladht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqdmladhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmladht.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s16.c -index 2dc453bdd9a..74ebbfa8b97 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmladh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqdmladhq_s16 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmladh.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqdmladh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqdmladhq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmladh.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s32.c -index 06f3204e47e..796de4df283 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmladh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqdmladhq_s32 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmladh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqdmladh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqdmladhq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmladh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s8.c -index 79670b8b153..d585f5fac20 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmladh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqdmladhq_s8 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmladh.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqdmladh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqdmladhq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmladh.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s16.c -index c2446e69181..19c5ce5a64f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmladhxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmladhxq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmladhxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmladhxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmladhxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmladhxt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s32.c -index 12b45517535..e00162addae 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmladhxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmladhxq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmladhxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmladhxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmladhxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmladhxt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s8.c -index 146aa51306b..19767d2cd41 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmladhxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqdmladhxq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmladhxt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmladhxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqdmladhxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmladhxt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s16.c -index 5a6f4455c20..c6a2fa80670 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmladhx.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqdmladhxq_s16 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmladhx.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqdmladhx.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqdmladhxq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmladhx.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s32.c -index 4eafa6f9476..d38bd691243 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmladhx.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqdmladhxq_s32 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmladhx.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqdmladhx.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqdmladhxq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmladhx.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s8.c -index cc6643574f4..322f702d962 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmladhx.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqdmladhxq_s8 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmladhx.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqdmladhx.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqdmladhxq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmladhx.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s16.c -index d8c4f4bab8e..42b3e25fc3d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlaht.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, int16x8_t b, int16_t c, mve_pred16_t p) -+foo (int16x8_t add, int16x8_t m1, int16_t m2, mve_pred16_t p) - { -- return vqdmlahq_m_n_s16 (a, b, c, p); -+ return vqdmlahq_m_n_s16 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlaht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlaht.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, int16x8_t b, int16_t c, mve_pred16_t p) -+foo1 (int16x8_t add, int16x8_t m1, int16_t m2, mve_pred16_t p) - { -- return vqdmlahq_m (a, b, c, p); -+ return vqdmlahq_m (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlaht.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s32.c -index 361f5d00bdf..03e50f14e00 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlaht.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, int32_t c, mve_pred16_t p) -+foo (int32x4_t add, int32x4_t m1, int32_t m2, mve_pred16_t p) - { -- return vqdmlahq_m_n_s32 (a, b, c, p); -+ return vqdmlahq_m_n_s32 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlaht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlaht.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, int32_t c, mve_pred16_t p) -+foo1 (int32x4_t add, int32x4_t m1, int32_t m2, mve_pred16_t p) - { -- return vqdmlahq_m (a, b, c, p); -+ return vqdmlahq_m (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlaht.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s8.c -index a9eaea89ba4..d7f8a153c63 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlaht.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, int8x16_t b, int8_t c, mve_pred16_t p) -+foo (int8x16_t add, int8x16_t m1, int8_t m2, mve_pred16_t p) - { -- return vqdmlahq_m_n_s8 (a, b, c, p); -+ return vqdmlahq_m_n_s8 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlaht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlaht.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, int8x16_t b, int8_t c, mve_pred16_t p) -+foo1 (int8x16_t add, int8x16_t m1, int8_t m2, mve_pred16_t p) - { -- return vqdmlahq_m (a, b, c, p); -+ return vqdmlahq_m (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlaht.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s16.c -index c109dd47444..909631c549d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmlah.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, int16x8_t b, int16_t c) -+foo (int16x8_t add, int16x8_t m1, int16_t m2) - { -- return vqdmlahq_n_s16 (a, b, c); -+ return vqdmlahq_n_s16 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vqdmlah.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqdmlah.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, int16x8_t b, int16_t c) -+foo1 (int16x8_t add, int16x8_t m1, int16_t m2) - { -- return vqdmlahq (a, b, c); -+ return vqdmlahq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqdmlah.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s32.c -index 752d9d9e3e0..fb670befeff 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmlah.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, int32_t c) -+foo (int32x4_t add, int32x4_t m1, int32_t m2) - { -- return vqdmlahq_n_s32 (a, b, c); -+ return vqdmlahq_n_s32 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vqdmlah.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqdmlah.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, int32_t c) -+foo1 (int32x4_t add, int32x4_t m1, int32_t m2) - { -- return vqdmlahq (a, b, c); -+ return vqdmlahq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqdmlah.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s8.c -index 8dffa0e1852..f66740bee0b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmlah.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, int8x16_t b, int8_t c) -+foo (int8x16_t add, int8x16_t m1, int8_t m2) - { -- return vqdmlahq_n_s8 (a, b, c); -+ return vqdmlahq_n_s8 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vqdmlah.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqdmlah.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, int8x16_t b, int8_t c) -+foo1 (int8x16_t add, int8x16_t m1, int8_t m2) - { -- return vqdmlahq (a, b, c); -+ return vqdmlahq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqdmlah.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s16.c -index 7c2e5cf89dd..918de9572e8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlasht.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, int16x8_t b, int16_t c, mve_pred16_t p) -+foo (int16x8_t m1, int16x8_t m2, int16_t add, mve_pred16_t p) - { -- return vqdmlashq_m_n_s16 (a, b, c, p); -+ return vqdmlashq_m_n_s16 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlasht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlasht.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, int16x8_t b, int16_t c, mve_pred16_t p) -+foo1 (int16x8_t m1, int16x8_t m2, int16_t add, mve_pred16_t p) - { -- return vqdmlashq_m (a, b, c, p); -+ return vqdmlashq_m (m1, m2, add, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlasht.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s32.c -index cea9d9b683f..b25b66057bd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlasht.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, int32_t c, mve_pred16_t p) -+foo (int32x4_t m1, int32x4_t m2, int32_t add, mve_pred16_t p) - { -- return vqdmlashq_m_n_s32 (a, b, c, p); -+ return vqdmlashq_m_n_s32 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlasht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlasht.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, int32_t c, mve_pred16_t p) -+foo1 (int32x4_t m1, int32x4_t m2, int32_t add, mve_pred16_t p) - { -- return vqdmlashq_m (a, b, c, p); -+ return vqdmlashq_m (m1, m2, add, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlasht.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s8.c -index 83ee258876a..b796f205e5d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlasht.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, int8x16_t b, int8_t c, mve_pred16_t p) -+foo (int8x16_t m1, int8x16_t m2, int8_t add, mve_pred16_t p) - { -- return vqdmlashq_m_n_s8 (a, b, c, p); -+ return vqdmlashq_m_n_s8 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlasht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlasht.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, int8x16_t b, int8_t c, mve_pred16_t p) -+foo1 (int8x16_t m1, int8x16_t m2, int8_t add, mve_pred16_t p) - { -- return vqdmlashq_m (a, b, c, p); -+ return vqdmlashq_m (m1, m2, add, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlasht.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s16.c -index c71a61c54f6..9a2549464c5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmlash.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, int16x8_t b, int16_t c) -+foo (int16x8_t m1, int16x8_t m2, int16_t add) - { -- return vqdmlashq_n_s16 (a, b, c); -+ return vqdmlashq_n_s16 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vqdmlash.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqdmlash.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, int16x8_t b, int16_t c) -+foo1 (int16x8_t m1, int16x8_t m2, int16_t add) - { -- return vqdmlashq (a, b, c); -+ return vqdmlashq (m1, m2, add); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqdmlash.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s32.c -index 61f6c6671cc..36fc7b066a1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmlash.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, int32_t c) -+foo (int32x4_t m1, int32x4_t m2, int32_t add) - { -- return vqdmlashq_n_s32 (a, b, c); -+ return vqdmlashq_n_s32 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vqdmlash.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqdmlash.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, int32_t c) -+foo1 (int32x4_t m1, int32x4_t m2, int32_t add) - { -- return vqdmlashq (a, b, c); -+ return vqdmlashq (m1, m2, add); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqdmlash.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s8.c -index a07892863c1..1e7cd44d4f5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmlash.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, int8x16_t b, int8_t c) -+foo (int8x16_t m1, int8x16_t m2, int8_t add) - { -- return vqdmlashq_n_s8 (a, b, c); -+ return vqdmlashq_n_s8 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vqdmlash.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqdmlash.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, int8x16_t b, int8_t c) -+foo1 (int8x16_t m1, int8x16_t m2, int8_t add) - { -- return vqdmlashq (a, b, c); -+ return vqdmlashq (m1, m2, add); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqdmlash.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s16.c -index d1e66864d10..f87287ab8cd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlsdht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmlsdhq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlsdht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlsdht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmlsdhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlsdht.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s32.c -index cc80f211ec8..8155aaf843c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlsdht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmlsdhq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlsdht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlsdht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmlsdhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlsdht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s8.c -index 5c9d81a6526..d39badc7707 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlsdht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqdmlsdhq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlsdht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlsdht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqdmlsdhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlsdht.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s16.c -index eb058fb9789..a4fa1d5024b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmlsdh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqdmlsdhq_s16 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmlsdh.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqdmlsdh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqdmlsdhq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmlsdh.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s32.c -index 27b93d6b76c..0c6ba426ded 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmlsdh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqdmlsdhq_s32 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmlsdh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqdmlsdh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqdmlsdhq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmlsdh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s8.c -index 1dd2a59ee4b..089c4cdcc39 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmlsdh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqdmlsdhq_s8 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmlsdh.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqdmlsdh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqdmlsdhq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmlsdh.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s16.c -index 6ab9743054c..1742d47291c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlsdhxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmlsdhxq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlsdhxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlsdhxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmlsdhxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlsdhxt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s32.c -index a34618e97fd..1c1b73a2251 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlsdhxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmlsdhxq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlsdhxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlsdhxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmlsdhxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlsdhxt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s8.c -index fdbe89ab6b8..0a980a081a1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlsdhxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqdmlsdhxq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlsdhxt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmlsdhxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqdmlsdhxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmlsdhxt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s16.c -index 786decc6238..713ce9732d2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmlsdhx.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqdmlsdhxq_s16 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmlsdhx.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqdmlsdhx.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqdmlsdhxq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmlsdhx.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s32.c -index c0244c44067..02f0a3cd6b4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmlsdhx.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqdmlsdhxq_s32 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmlsdhx.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqdmlsdhx.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqdmlsdhxq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmlsdhx.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s8.c -index 12b43c8edd8..c1792879138 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmlsdhx.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqdmlsdhxq_s8 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmlsdhx.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqdmlsdhx.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqdmlsdhxq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqdmlsdhx.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s16.c -index 57ab85eaf52..17c43c4e4b4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulht.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vqdmulhq_m_n_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulht.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vqdmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulht.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s32.c -index 256353a0a21..62e7988f107 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulht.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqdmulhq_m_n_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulht.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqdmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s8.c -index c24be9ed5ad..3bd8b4f9632 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulht.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vqdmulhq_m_n_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulht.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vqdmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulht.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s16.c -index 49efeefcf63..b1efee53278 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmulhq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulht.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s32.c -index a5614830622..3492c17c3fd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmulhq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s8.c -index 2e016f57e35..41118e0dcda 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqdmulhq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqdmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulht.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s16.c -index 19534b60b27..dfff38bf59b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmulh.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b) - { - return vqdmulhq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqdmulh.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqdmulh.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16_t b) - { - return vqdmulhq (a, b); - } - --/* { dg-final { scan-assembler "vqdmulh.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s32.c -index eff9f6ecc4b..ac0812b438d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmulh.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vqdmulhq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqdmulh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqdmulh.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vqdmulhq (a, b); - } - --/* { dg-final { scan-assembler "vqdmulh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s8.c -index 188cf7c616f..db8db5cb855 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmulh.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b) - { - return vqdmulhq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vqdmulh.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqdmulh.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8_t b) - { - return vqdmulhq (a, b); - } - --/* { dg-final { scan-assembler "vqdmulh.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s16.c -index 513a30f67e6..e8927845ab4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmulh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vqdmulhq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqdmulh.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqdmulh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vqdmulhq (a, b); - } - --/* { dg-final { scan-assembler "vqdmulh.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s32.c -index 9cf147dc7c5..c15c8e29273 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmulh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vqdmulhq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqdmulh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqdmulh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vqdmulhq (a, b); - } - --/* { dg-final { scan-assembler "vqdmulh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s8.c -index 87211ad054a..1f7a556e1fb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmulh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vqdmulhq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vqdmulh.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqdmulh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vqdmulhq (a, b); - } - --/* { dg-final { scan-assembler "vqdmulh.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s16.c -index f0a4ad5b9f4..57ad651188c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmullbt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vqdmullbq_m_n_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmullbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmullbt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vqdmullbq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmullbt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s32.c -index 1c7b2e4a1fc..c7153b35cef 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmullbt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int64x2_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqdmullbq_m_n_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmullbt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmullbt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int64x2_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqdmullbq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmullbt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_s16.c -index 6a056cf86a1..d7abff0b3f4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmullbt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmullbq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmullbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmullbt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmullbq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmullbt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_s32.c -index 019c536e7f2..503cd27735a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmullbt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int64x2_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmullbq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmullbt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmullbt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int64x2_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmullbq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmullbt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_n_s16.c -index ec501c34539..31a3a244355 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmullb.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a, int16_t b) - { - return vqdmullbq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqdmullb.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqdmullb.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a, int16_t b) - { - return vqdmullbq (a, b); - } - --/* { dg-final { scan-assembler "vqdmullb.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_n_s32.c -index 78fe3d6b289..dbc07187165 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmullb.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int32x4_t a, int32_t b) - { - return vqdmullbq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqdmullb.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqdmullb.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int32x4_t a, int32_t b) - { - return vqdmullbq (a, b); - } - --/* { dg-final { scan-assembler "vqdmullb.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_s16.c -index 9a423d3cc66..7d5fd25a1e1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmullb.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a, int16x8_t b) - { - return vqdmullbq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqdmullb.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqdmullb.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a, int16x8_t b) - { - return vqdmullbq (a, b); - } - --/* { dg-final { scan-assembler "vqdmullb.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_s32.c -index f0278cd8a86..503b1751250 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmullb.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int32x4_t a, int32x4_t b) - { - return vqdmullbq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqdmullb.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqdmullb.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int32x4_t a, int32x4_t b) - { - return vqdmullbq (a, b); - } - --/* { dg-final { scan-assembler "vqdmullb.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s16.c -index 85f03149da4..a36afd8a3a5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulltt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vqdmulltq_m_n_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulltt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulltt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vqdmulltq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulltt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s32.c -index 6bb5004e201..fdbbfee27ef 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulltt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int64x2_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqdmulltq_m_n_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulltt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulltt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int64x2_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqdmulltq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulltt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_s16.c -index a85393b5bc1..f5d5c6ce04e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulltt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmulltq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulltt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulltt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqdmulltq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulltt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_s32.c -index 82f25b2ebbe..91dad0e506d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulltt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int64x2_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmulltq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulltt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqdmulltt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int64x2_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqdmulltq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqdmulltt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_n_s16.c -index f9ad32a8411..e4f09d0f45c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmullt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a, int16_t b) - { - return vqdmulltq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqdmullt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqdmullt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a, int16_t b) - { - return vqdmulltq (a, b); - } - --/* { dg-final { scan-assembler "vqdmullt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_n_s32.c -index 311b023431e..80694b686c9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmullt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int32x4_t a, int32_t b) - { - return vqdmulltq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqdmullt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqdmullt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int32x4_t a, int32_t b) - { - return vqdmulltq (a, b); - } - --/* { dg-final { scan-assembler "vqdmullt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_s16.c -index 851f27a63b6..4f8b1eef4bc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmullt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a, int16x8_t b) - { - return vqdmulltq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqdmullt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqdmullt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a, int16x8_t b) - { - return vqdmulltq (a, b); - } - --/* { dg-final { scan-assembler "vqdmullt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_s32.c -index 1e81cc3dea5..e3ebacc4f36 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqdmullt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int32x4_t a, int32x4_t b) - { - return vqdmulltq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqdmullt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqdmullt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64x2_t - foo1 (int32x4_t a, int32x4_t b) - { - return vqdmulltq (a, b); - } - --/* { dg-final { scan-assembler "vqdmullt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_s16.c -index bf5520ed1ff..dd6c0300c32 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovnbt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqmovnbq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqmovnbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovnbt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqmovnbq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_s32.c -index f07612a47d5..eb340ebe520 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovnbt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqmovnbq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqmovnbt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovnbt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqmovnbq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_u16.c -index 79f082fefab..673f453e7af 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovnbt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vqmovnbq_m_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqmovnbt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovnbt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vqmovnbq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_u32.c -index 5d242dc497f..84f7f9bf897 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovnbt.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vqmovnbq_m_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqmovnbt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovnbt.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vqmovnbq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_s16.c -index 18df48f5084..ed17eb81884 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqmovnb.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b) - { - return vqmovnbq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqmovnb.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqmovnb.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b) - { - return vqmovnbq (a, b); - } - --/* { dg-final { scan-assembler "vqmovnb.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_s32.c -index 37f9e817805..065ce9b246c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqmovnb.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b) - { - return vqmovnbq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqmovnb.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqmovnb.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b) - { - return vqmovnbq (a, b); - } - --/* { dg-final { scan-assembler "vqmovnb.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_u16.c -index 130dcb06944..29df4636e3d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqmovnb.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b) - { - return vqmovnbq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vqmovnb.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqmovnb.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b) - { - return vqmovnbq (a, b); - } - --/* { dg-final { scan-assembler "vqmovnb.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_u32.c -index 8bf735294e5..422c33560d3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqmovnb.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b) - { - return vqmovnbq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vqmovnb.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqmovnb.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b) - { - return vqmovnbq (a, b); - } - --/* { dg-final { scan-assembler "vqmovnb.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_s16.c -index bc624bcd877..b50964bd4f7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovntt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqmovntq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqmovntt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovntt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqmovntq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_s32.c -index 429f25cdb0f..5d4947abb9f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovntt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqmovntq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqmovntt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovntt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqmovntq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_u16.c -index a453a9fc36a..8cfd62831eb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovntt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vqmovntq_m_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqmovntt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovntt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vqmovntq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_u32.c -index 3f9ae8a5ee4..b9d3b7e75ac 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_m_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovntt.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vqmovntq_m_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqmovntt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovntt.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vqmovntq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_s16.c -index 5de956cbac4..8838a242fd9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqmovnt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b) - { - return vqmovntq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqmovnt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqmovnt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b) - { - return vqmovntq (a, b); - } - --/* { dg-final { scan-assembler "vqmovnt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_s32.c -index 30db31c47ee..1d8b0dc17ef 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqmovnt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b) - { - return vqmovntq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqmovnt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqmovnt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b) - { - return vqmovntq (a, b); - } - --/* { dg-final { scan-assembler "vqmovnt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_u16.c -index 312ce4f865f..10badd5feb4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqmovnt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b) - { - return vqmovntq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vqmovnt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqmovnt.u16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b) - { - return vqmovntq (a, b); - } - --/* { dg-final { scan-assembler "vqmovnt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_u32.c -index 20623384858..80460393001 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovntq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqmovnt.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b) - { - return vqmovntq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vqmovnt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqmovnt.u32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b) - { - return vqmovntq (a, b); - } - --/* { dg-final { scan-assembler "vqmovnt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_m_s16.c -index 8e46de63b84..d295b3f9155 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovunbt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqmovunbq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqmovunbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovunbt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqmovunbq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_m_s32.c -index d0ec95192f9..84b94db682f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovunbt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqmovunbq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqmovunbt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovunbt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqmovunbq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_s16.c -index 9b3b80d024f..070bb90bf12 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqmovunb.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int16x8_t b) - { - return vqmovunbq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqmovunb.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqmovunb.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int16x8_t b) - { - return vqmovunbq (a, b); - } - --/* { dg-final { scan-assembler "vqmovunb.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_s32.c -index 9cc43d987de..659e703a558 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovunbq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqmovunb.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32x4_t b) - { - return vqmovunbq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqmovunb.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqmovunb.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32x4_t b) - { - return vqmovunbq (a, b); - } - --/* { dg-final { scan-assembler "vqmovunb.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_m_s16.c -index a81fb8863af..fb3b36c451e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovuntt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqmovuntq_m_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqmovuntt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovuntt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqmovuntq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_m_s32.c -index e76ca2b5f48..f6fce6d4473 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovuntt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqmovuntq_m_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqmovuntt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqmovuntt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqmovuntq_m (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_s16.c -index 324d2e56f3c..3230f25998b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqmovunt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int16x8_t b) - { - return vqmovuntq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqmovunt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqmovunt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int16x8_t b) - { - return vqmovuntq (a, b); - } - --/* { dg-final { scan-assembler "vqmovunt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_s32.c -index 80fee05b642..5333897a34a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqmovunt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32x4_t b) - { - return vqmovuntq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqmovunt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqmovunt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32x4_t b) - { - return vqmovuntq (a, b); - } - --/* { dg-final { scan-assembler "vqmovunt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s16.c -index 4f0145d2ebd..f3799a35b12 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqnegt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vqnegq_m_s16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqnegt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqnegt.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vqnegq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s32.c -index da4f90bad53..bbe64ff4d52 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqnegt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vqnegq_m_s32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqnegt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqnegt.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vqnegq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s8.c -index ac1250b2fac..71fcdd7cba7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqnegt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vqnegq_m_s8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqnegt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqnegt.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vqnegq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s16.c -index f9210cd70f4..d5fb4a19854 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s16.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqneg.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { - return vqnegq_s16 (a); - } - --/* { dg-final { scan-assembler "vqneg.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqneg.s16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { - return vqnegq (a); - } - --/* { dg-final { scan-assembler "vqneg.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s32.c -index c2ded7fe659..2c8e709f491 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqneg.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { - return vqnegq_s32 (a); - } - --/* { dg-final { scan-assembler "vqneg.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqneg.s32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a) - { - return vqnegq (a); - } - --/* { dg-final { scan-assembler "vqneg.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s8.c -index d1cc83a6cd0..2f7f7619ef6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqneg.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { - return vqnegq_s8 (a); - } - --/* { dg-final { scan-assembler "vqneg.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqneg.s8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { - return vqnegq (a); - } - --/* { dg-final { scan-assembler "vqneg.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s16.c -index fce4f5a35ef..1140c25c4a2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmladht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrdmladhq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmladht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmladht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrdmladhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmladht.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s32.c -index e550b6a7995..b3e6dac19a9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmladht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrdmladhq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmladht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmladht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrdmladhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmladht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s8.c -index b07b28e5bcd..5ae74e1dd2d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmladht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrdmladhq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmladht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmladht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrdmladhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmladht.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s16.c -index 5bdac923b20..f515c3926da 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmladh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqrdmladhq_s16 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmladh.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmladh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqrdmladhq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmladh.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s32.c -index aade9bb0ea1..4693d01eeb4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmladh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqrdmladhq_s32 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmladh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmladh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqrdmladhq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmladh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s8.c -index bde80fa5279..cea58e4f80a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmladh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqrdmladhq_s8 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmladh.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmladh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqrdmladhq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmladh.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s16.c -index 677efdcd1e4..3b8ea613f1d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmladhxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrdmladhxq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmladhxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmladhxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrdmladhxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmladhxt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s32.c -index 8ee8bbb420b..6ef932672bc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmladhxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrdmladhxq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmladhxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmladhxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrdmladhxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmladhxt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s8.c -index 7cfa88fee28..5b9dc5cadac 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmladhxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrdmladhxq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmladhxt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmladhxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrdmladhxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmladhxt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s16.c -index 2410ef12b38..745c70b84f7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmladhx.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqrdmladhxq_s16 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmladhx.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmladhx.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqrdmladhxq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmladhx.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s32.c -index 716028cadfd..94e976f724c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmladhx.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqrdmladhxq_s32 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmladhx.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmladhx.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqrdmladhxq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmladhx.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s8.c -index 8f9bed5fdb7..f8c9f487068 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmladhx.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqrdmladhxq_s8 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmladhx.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmladhx.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqrdmladhxq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmladhx.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s16.c -index 70c3fa0e9b1..f8400ac63d7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlaht.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, int16x8_t b, int16_t c, mve_pred16_t p) -+foo (int16x8_t add, int16x8_t m1, int16_t m2, mve_pred16_t p) - { -- return vqrdmlahq_m_n_s16 (a, b, c, p); -+ return vqrdmlahq_m_n_s16 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlaht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlaht.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, int16x8_t b, int16_t c, mve_pred16_t p) -+foo1 (int16x8_t add, int16x8_t m1, int16_t m2, mve_pred16_t p) - { -- return vqrdmlahq_m (a, b, c, p); -+ return vqrdmlahq_m (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlaht.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s32.c -index 75ed9911276..fa1131de6b5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlaht.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, int32_t c, mve_pred16_t p) -+foo (int32x4_t add, int32x4_t m1, int32_t m2, mve_pred16_t p) - { -- return vqrdmlahq_m_n_s32 (a, b, c, p); -+ return vqrdmlahq_m_n_s32 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlaht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlaht.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, int32_t c, mve_pred16_t p) -+foo1 (int32x4_t add, int32x4_t m1, int32_t m2, mve_pred16_t p) - { -- return vqrdmlahq_m (a, b, c, p); -+ return vqrdmlahq_m (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlaht.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s8.c -index ddaea545f40..a7ce97cc2f6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlaht.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, int8x16_t b, int8_t c, mve_pred16_t p) -+foo (int8x16_t add, int8x16_t m1, int8_t m2, mve_pred16_t p) - { -- return vqrdmlahq_m_n_s8 (a, b, c, p); -+ return vqrdmlahq_m_n_s8 (add, m1, m2, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlaht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlaht.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, int8x16_t b, int8_t c, mve_pred16_t p) -+foo1 (int8x16_t add, int8x16_t m1, int8_t m2, mve_pred16_t p) - { -- return vqrdmlahq_m (a, b, c, p); -+ return vqrdmlahq_m (add, m1, m2, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlaht.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s16.c -index 45e74971838..175a2f74416 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmlah.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, int16x8_t b, int16_t c) -+foo (int16x8_t add, int16x8_t m1, int16_t m2) - { -- return vqrdmlahq_n_s16 (a, b, c); -+ return vqrdmlahq_n_s16 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vqrdmlah.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmlah.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, int16x8_t b, int16_t c) -+foo1 (int16x8_t add, int16x8_t m1, int16_t m2) - { -- return vqrdmlahq (a, b, c); -+ return vqrdmlahq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqrdmlah.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s32.c -index 79bb9c98b12..56d5423bd3f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmlah.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, int32_t c) -+foo (int32x4_t add, int32x4_t m1, int32_t m2) - { -- return vqrdmlahq_n_s32 (a, b, c); -+ return vqrdmlahq_n_s32 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vqrdmlah.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmlah.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, int32_t c) -+foo1 (int32x4_t add, int32x4_t m1, int32_t m2) - { -- return vqrdmlahq (a, b, c); -+ return vqrdmlahq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqrdmlah.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s8.c -index 220518ae698..992be758837 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmlah.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, int8x16_t b, int8_t c) -+foo (int8x16_t add, int8x16_t m1, int8_t m2) - { -- return vqrdmlahq_n_s8 (a, b, c); -+ return vqrdmlahq_n_s8 (add, m1, m2); - } - --/* { dg-final { scan-assembler "vqrdmlah.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmlah.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, int8x16_t b, int8_t c) -+foo1 (int8x16_t add, int8x16_t m1, int8_t m2) - { -- return vqrdmlahq (a, b, c); -+ return vqrdmlahq (add, m1, m2); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqrdmlah.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s16.c -index 35b9618ca47..d713c224b30 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlasht.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, int16x8_t b, int16_t c, mve_pred16_t p) -+foo (int16x8_t m1, int16x8_t m2, int16_t add, mve_pred16_t p) - { -- return vqrdmlashq_m_n_s16 (a, b, c, p); -+ return vqrdmlashq_m_n_s16 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlasht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlasht.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, int16x8_t b, int16_t c, mve_pred16_t p) -+foo1 (int16x8_t m1, int16x8_t m2, int16_t add, mve_pred16_t p) - { -- return vqrdmlashq_m (a, b, c, p); -+ return vqrdmlashq_m (m1, m2, add, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlasht.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s32.c -index 8517835eb61..8af4928f833 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlasht.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, int32_t c, mve_pred16_t p) -+foo (int32x4_t m1, int32x4_t m2, int32_t add, mve_pred16_t p) - { -- return vqrdmlashq_m_n_s32 (a, b, c, p); -+ return vqrdmlashq_m_n_s32 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlasht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlasht.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, int32_t c, mve_pred16_t p) -+foo1 (int32x4_t m1, int32x4_t m2, int32_t add, mve_pred16_t p) - { -- return vqrdmlashq_m (a, b, c, p); -+ return vqrdmlashq_m (m1, m2, add, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlasht.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s8.c -index e42cc63fa74..9f30b7d0e13 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlasht.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, int8x16_t b, int8_t c, mve_pred16_t p) -+foo (int8x16_t m1, int8x16_t m2, int8_t add, mve_pred16_t p) - { -- return vqrdmlashq_m_n_s8 (a, b, c, p); -+ return vqrdmlashq_m_n_s8 (m1, m2, add, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlasht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlasht.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, int8x16_t b, int8_t c, mve_pred16_t p) -+foo1 (int8x16_t m1, int8x16_t m2, int8_t add, mve_pred16_t p) - { -- return vqrdmlashq_m (a, b, c, p); -+ return vqrdmlashq_m (m1, m2, add, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlasht.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s16.c -index 8ff8c34d529..83caaab8926 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmlash.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, int16x8_t b, int16_t c) -+foo (int16x8_t m1, int16x8_t m2, int16_t add) - { -- return vqrdmlashq_n_s16 (a, b, c); -+ return vqrdmlashq_n_s16 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vqrdmlash.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmlash.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, int16x8_t b, int16_t c) -+foo1 (int16x8_t m1, int16x8_t m2, int16_t add) - { -- return vqrdmlashq (a, b, c); -+ return vqrdmlashq (m1, m2, add); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqrdmlash.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s32.c -index 02583f0627b..337f33c51c8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmlash.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, int32_t c) -+foo (int32x4_t m1, int32x4_t m2, int32_t add) - { -- return vqrdmlashq_n_s32 (a, b, c); -+ return vqrdmlashq_n_s32 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vqrdmlash.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmlash.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, int32_t c) -+foo1 (int32x4_t m1, int32x4_t m2, int32_t add) - { -- return vqrdmlashq (a, b, c); -+ return vqrdmlashq (m1, m2, add); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqrdmlash.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s8.c -index 0bd5bcac71f..df005ee9b03 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmlash.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, int8x16_t b, int8_t c) -+foo (int8x16_t m1, int8x16_t m2, int8_t add) - { -- return vqrdmlashq_n_s8 (a, b, c); -+ return vqrdmlashq_n_s8 (m1, m2, add); - } - --/* { dg-final { scan-assembler "vqrdmlash.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmlash.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, int8x16_t b, int8_t c) -+foo1 (int8x16_t m1, int8x16_t m2, int8_t add) - { -- return vqrdmlashq (a, b, c); -+ return vqrdmlashq (m1, m2, add); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqrdmlash.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s16.c -index d0054b8ea97..52c7f16df12 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlsdht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrdmlsdhq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlsdht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlsdht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrdmlsdhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlsdht.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s32.c -index 7d3fe45eb4d..574809dde9b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlsdht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrdmlsdhq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlsdht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlsdht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrdmlsdhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlsdht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s8.c -index c33f8ea903b..9b509687ed9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlsdht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrdmlsdhq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlsdht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlsdht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrdmlsdhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlsdht.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s16.c -index 3bd760d38aa..19fdc151550 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmlsdh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqrdmlsdhq_s16 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmlsdh.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmlsdh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqrdmlsdhq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmlsdh.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s32.c -index e23dc94a9ed..d50bd8500bd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmlsdh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqrdmlsdhq_s32 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmlsdh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmlsdh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqrdmlsdhq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmlsdh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s8.c -index 836e04af566..c3f6b3e462b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmlsdh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqrdmlsdhq_s8 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmlsdh.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmlsdh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqrdmlsdhq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmlsdh.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s16.c -index 2fbd351f3b4..35fc3bde975 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlsdhxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrdmlsdhxq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlsdhxt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlsdhxt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrdmlsdhxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlsdhxt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s32.c -index 324a6e63398..7b5ee71194c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlsdhxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrdmlsdhxq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlsdhxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlsdhxt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrdmlsdhxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlsdhxt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s8.c -index 287868b1190..0ceb9c55aa3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlsdhxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrdmlsdhxq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlsdhxt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmlsdhxt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrdmlsdhxq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmlsdhxt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s16.c -index 9d8ea9b2694..b94e4cca8b2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmlsdhx.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqrdmlsdhxq_s16 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmlsdhx.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmlsdhx.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b) - { - return vqrdmlsdhxq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmlsdhx.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s32.c -index aca0b358ea9..0f508d9bca1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmlsdhx.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqrdmlsdhxq_s32 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmlsdhx.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmlsdhx.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b) - { - return vqrdmlsdhxq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmlsdhx.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s8.c -index 18f95317b4c..92607fe0265 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmlsdhx.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqrdmlsdhxq_s8 (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmlsdhx.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmlsdhx.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b) - { - return vqrdmlsdhxq (inactive, a, b); - } - --/* { dg-final { scan-assembler "vqrdmlsdhx.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s16.c -index c4b6b7e22f8..ae38058cc62 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmulht.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vqrdmulhq_m_n_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmulht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmulht.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vqrdmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmulht.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s32.c -index 6de3eb1cb9a..e923495f4b5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmulht.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqrdmulhq_m_n_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmulht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmulht.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqrdmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmulht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s8.c -index df3dfa87fbf..a6ce3b2ca01 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmulht.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vqrdmulhq_m_n_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmulht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmulht.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vqrdmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmulht.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s16.c -index 24831e8a5f8..a8a749d07cb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmulht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrdmulhq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmulht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmulht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrdmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmulht.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s32.c -index 70257c3c0a0..ad6130dfbdc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmulht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrdmulhq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmulht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmulht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrdmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmulht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s8.c -index 7cd39d2a0d4..da29228e5f3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmulht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrdmulhq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmulht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrdmulht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrdmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrdmulht.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s16.c -index 42fe9cbaa2b..342ef427bc9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmulh.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b) - { - return vqrdmulhq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqrdmulh.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmulh.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16_t b) - { - return vqrdmulhq (a, b); - } - --/* { dg-final { scan-assembler "vqrdmulh.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s32.c -index 5f014fae9fb..7ae72b75689 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmulh.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vqrdmulhq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqrdmulh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmulh.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vqrdmulhq (a, b); - } - --/* { dg-final { scan-assembler "vqrdmulh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s8.c -index 887e294661b..8acb72a2245 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmulh.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b) - { - return vqrdmulhq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vqrdmulh.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmulh.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8_t b) - { - return vqrdmulhq (a, b); - } - --/* { dg-final { scan-assembler "vqrdmulh.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s16.c -index 409fc29c0d0..5e93d7758c0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmulh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vqrdmulhq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqrdmulh.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmulh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vqrdmulhq (a, b); - } - --/* { dg-final { scan-assembler "vqrdmulh.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s32.c -index 18e11b1248c..d2812c0aa05 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmulh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vqrdmulhq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqrdmulh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmulh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vqrdmulhq (a, b); - } - --/* { dg-final { scan-assembler "vqrdmulh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s8.c -index 3f1441d5d6b..5c188a6d91f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrdmulh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vqrdmulhq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vqrdmulh.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqrdmulh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vqrdmulhq (a, b); - } - --/* { dg-final { scan-assembler "vqrdmulh.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s16.c -index 8d5abfd7588..d9baa378fac 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32_t b, mve_pred16_t p) - { - return vqrshlq_m_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32_t b, mve_pred16_t p) - { - return vqrshlq_m_n (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s32.c -index 734f67ae251..ce4140a6fb8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqrshlq_m_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqrshlq_m_n (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s8.c -index 3c6724f285b..ce576b01d65 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int32_t b, mve_pred16_t p) - { - return vqrshlq_m_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int32_t b, mve_pred16_t p) - { - return vqrshlq_m_n (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u16.c -index 3e39599df8a..e861a7b1f6a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32_t b, mve_pred16_t p) - { - return vqrshlq_m_n_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32_t b, mve_pred16_t p) - { - return vqrshlq_m_n (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u32.c -index 41f5945daf9..d4cb581c623 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32_t b, mve_pred16_t p) - { - return vqrshlq_m_n_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32_t b, mve_pred16_t p) - { - return vqrshlq_m_n (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u8.c -index 9aad2599476..f170f225d95 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int32_t b, mve_pred16_t p) - { - return vqrshlq_m_n_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int32_t b, mve_pred16_t p) - { - return vqrshlq_m_n (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_s16.c -index 80045c5b583..7c5449fb168 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrshlq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_s32.c -index 9b4cf1663cd..53a421cf830 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrshlq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_s8.c -index 55e0dd57023..52ad4372916 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrshlq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_u16.c -index cd5605444a1..e7ca4786363 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrshlq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqrshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_u32.c -index 02c94d0a51f..3785bbea0dc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrshlq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqrshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_u8.c -index e6058dfc4c5..c736abeceab 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrshlq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshlt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqrshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshlt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_s16.c -index 46fd917d2d9..231ce85f1a3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshl.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32_t b) - { - return vqrshlq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrshl.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32_t b) - { - return vqrshlq (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_s32.c -index 373de10b89c..05589eb86cc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshl.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vqrshlq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrshl.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vqrshlq (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_s8.c -index d05d2fc722f..182e7cf260a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshl.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int32_t b) - { - return vqrshlq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqrshl.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int32_t b) - { - return vqrshlq (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_u16.c -index 8a74d61e75d..1b5214623c6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshl.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32_t b) - { - return vqrshlq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqrshl.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32_t b) - { - return vqrshlq (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_u32.c -index ccb0db7bb32..50d09bac3a9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshl.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32_t b) - { - return vqrshlq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqrshl.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32_t b) - { - return vqrshlq (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_u8.c -index c3319ea29d2..846d90a2470 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_n_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshl.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int32_t b) - { - return vqrshlq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.u8" } } */ - -+/* -+**foo1: -+** ... -+** vqrshl.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int32_t b) - { - return vqrshlq (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_s16.c -index c5645cee518..2a4a0feb5e6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshl.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vqrshlq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrshl.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vqrshlq (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_s32.c -index b773ccf9245..94665928299 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshl.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vqrshlq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrshl.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vqrshlq (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_s8.c -index 1a61cb6de10..2836a6e4dc8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshl.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vqrshlq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqrshl.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vqrshlq (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_u16.c -index 8de05a290b7..2ea554253c1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshl.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int16x8_t b) - { - return vqrshlq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqrshl.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int16x8_t b) - { - return vqrshlq (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_u32.c -index 0ceee291bab..fef01d926b8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshl.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32x4_t b) - { - return vqrshlq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqrshl.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32x4_t b) - { - return vqrshlq (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_u8.c -index 7779871c097..6ceafa0f473 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshl.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int8x16_t b) - { - return vqrshlq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.u8" } } */ - -+/* -+**foo1: -+** ... -+** vqrshl.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int8x16_t b) - { - return vqrshlq (a, b); - } - --/* { dg-final { scan-assembler "vqrshl.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s16.c -index 16a4827e50d..76c38e07faa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrnbt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqrshrnbq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrnbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrnbt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqrshrnbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrnbt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s32.c -index bb054bcf5a1..3af0ad96493 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrnbt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqrshrnbq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrnbt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrnbt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqrshrnbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrnbt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u16.c -index 45119720ed5..f81dd96efde 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrnbt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vqrshrnbq_m_n_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrnbt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrnbt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vqrshrnbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrnbt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u32.c -index a3a7a7eac3e..ad52c378a07 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrnbt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vqrshrnbq_m_n_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrnbt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrnbt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vqrshrnbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrnbt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s16.c -index d1b2ea58dd5..3f82f86029e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshrnb.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b) - { - return vqrshrnbq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnb.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrshrnb.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b) - { - return vqrshrnbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnb.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s32.c -index da5db1b8951..02f303052a3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshrnb.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b) - { - return vqrshrnbq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnb.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrshrnb.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b) - { - return vqrshrnbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnb.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u16.c -index 360999e3785..cda56ce3c48 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshrnb.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b) - { - return vqrshrnbq_n_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnb.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqrshrnb.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b) - { - return vqrshrnbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnb.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u32.c -index f276f24a1dd..5202e6249a4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshrnb.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b) - { - return vqrshrnbq_n_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnb.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqrshrnb.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b) - { - return vqrshrnbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnb.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s16.c -index fb21072bfa0..39c0eff56f6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrntt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqrshrntq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrntt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrntt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqrshrntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrntt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s32.c -index 77c4cb7e0b0..5fb6983237c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrntt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqrshrntq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrntt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrntt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqrshrntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrntt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u16.c -index 1749f4866a4..91ec5795566 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrntt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vqrshrntq_m_n_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrntt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrntt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vqrshrntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrntt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u32.c -index e243319e256..986437e49ca 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrntt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vqrshrntq_m_n_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrntt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrntt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vqrshrntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrntt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_s16.c -index c7cdc394c35..5dfed5dcbaa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshrnt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b) - { - return vqrshrntq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrshrnt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b) - { - return vqrshrntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_s32.c -index 68dfccccc66..7df82962342 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshrnt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b) - { - return vqrshrntq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrshrnt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b) - { - return vqrshrntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_u16.c -index bc0572a454b..e76d98ee3f4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshrnt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b) - { - return vqrshrntq_n_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqrshrnt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b) - { - return vqrshrntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_u32.c -index 20bfdbf515a..bc0e39baeae 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrntq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshrnt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b) - { - return vqrshrntq_n_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqrshrnt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b) - { - return vqrshrntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrnt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s16.c -index ea12f346b0e..299dd80a887 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrunbt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqrshrunbq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrunbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrunbt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqrshrunbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrunbt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s32.c -index d127e5381bf..5c87efe4be9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrunbt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqrshrunbq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrunbt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshrunbt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqrshrunbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshrunbt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s16.c -index 88cb39970d4..3bbf72d4def 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshrunb.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int16x8_t b) - { - return vqrshrunbq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrunb.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrshrunb.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int16x8_t b) - { - return vqrshrunbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrunb.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s32.c -index 46f96127b1b..4dfd8f60e72 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshrunb.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32x4_t b) - { - return vqrshrunbq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrunb.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrshrunb.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32x4_t b) - { - return vqrshrunbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrunb.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s16.c -index 5ff25eb2d32..48c17e5e5b6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshruntt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqrshruntq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshruntt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshruntt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqrshruntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshruntt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s32.c -index 4876414e308..46912882ff1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshruntt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqrshruntq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshruntt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqrshruntt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqrshruntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqrshruntt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_n_s16.c -index 0f6258b3524..9dc8d3b8f5a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshrunt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int16x8_t b) - { - return vqrshruntq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrunt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqrshrunt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int16x8_t b) - { - return vqrshruntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrunt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_n_s32.c -index d307f38ec6c..8071367fa2f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshruntq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqrshrunt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32x4_t b) - { - return vqrshruntq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrunt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqrshrunt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32x4_t b) - { - return vqrshruntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqrshrunt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_s16.c -index a33856f17a5..6eb7443d45e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vqshlq_m_n_s16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vqshlq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_s32.c -index bcfe4fc2874..d10829c90c8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vqshlq_m_n_s32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vqshlq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_s8.c -index fba2f0fe859..49886009d74 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vqshlq_m_n_s8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vqshlq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_u16.c -index 1383f6a9ab4..7eb330e6c18 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vqshlq_m_n_u16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vqshlq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_u32.c -index 7cff29f5a28..86ecdc6d563 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { - return vqshlq_m_n_u32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { - return vqshlq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_u8.c -index cbadcbeb77e..f3886e7bae6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_n_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vqshlq_m_n_u8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vqshlq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_s16.c -index a3057fec343..e89298c570b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32_t b, mve_pred16_t p) - { - return vqshlq_m_r_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32_t b, mve_pred16_t p) - { - return vqshlq_m_r (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_s32.c -index 6973b49a476..35e2552728a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqshlq_m_r_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqshlq_m_r (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_s8.c -index 282d4b45c59..366b45699a9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int32_t b, mve_pred16_t p) - { - return vqshlq_m_r_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int32_t b, mve_pred16_t p) - { - return vqshlq_m_r (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_u16.c -index 111d7fa23d9..86774962f0f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32_t b, mve_pred16_t p) - { - return vqshlq_m_r_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32_t b, mve_pred16_t p) - { - return vqshlq_m_r (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_u32.c -index 96de168dd23..92a61fe4a2e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32_t b, mve_pred16_t p) - { - return vqshlq_m_r_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32_t b, mve_pred16_t p) - { - return vqshlq_m_r (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_u8.c -index 24e388824cc..bace3656143 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_r_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int32_t b, mve_pred16_t p) - { - return vqshlq_m_r_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int32_t b, mve_pred16_t p) - { - return vqshlq_m_r (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_s16.c -index ebae8beecb4..2df2ee5c836 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqshlq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_s32.c -index 80e4d860fb9..e0b2de339f2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqshlq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_s8.c -index e8f88113003..b65df1998fe 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqshlq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_u16.c -index 692ff54981d..bced90d13b9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqshlq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_u32.c -index 1ece80681a7..409ef8524cb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqshlq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_u8.c -index 7302669fe26..ce9a426ccc9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqshlq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_s16.c -index b827993198d..859da655409 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { - return vqshlq_n_s16 (a, 1); - } - --/* { dg-final { scan-assembler "vqshl.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { - return vqshlq_n (a, 1); - } - --/* { dg-final { scan-assembler "vqshl.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_s32.c -index dbc22df551e..1d61e880890 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { - return vqshlq_n_s32 (a, 1); - } - --/* { dg-final { scan-assembler "vqshl.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a) - { - return vqshlq_n (a, 1); - } - --/* { dg-final { scan-assembler "vqshl.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_s8.c -index e4e1d193c55..737c1bd3764 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { - return vqshlq_n_s8 (a, 1); - } - --/* { dg-final { scan-assembler "vqshl.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { - return vqshlq_n (a, 1); - } - --/* { dg-final { scan-assembler "vqshl.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_u16.c -index 8227890fc4b..9ddb83e4287 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a) - { - return vqshlq_n_u16 (a, 1); - } - --/* { dg-final { scan-assembler "vqshl.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a) - { - return vqshlq_n (a, 1); - } - --/* { dg-final { scan-assembler "vqshl.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_u32.c -index b91dc3b91d3..642060f2225 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a) - { - return vqshlq_n_u32 (a, 1); - } - --/* { dg-final { scan-assembler "vqshl.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a) - { - return vqshlq_n (a, 1); - } - --/* { dg-final { scan-assembler "vqshl.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_u8.c -index ab4903ae407..bd8b9341007 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_n_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a) - { - return vqshlq_n_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vqshl.u8" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a) - { - return vqshlq_n (a, 1); - } - --/* { dg-final { scan-assembler "vqshl.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_s16.c -index 4413d447b71..285f398b35a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32_t b) - { - return vqshlq_r_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqshl.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32_t b) - { - return vqshlq_r (a, b); - } - --/* { dg-final { scan-assembler "vqshl.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_s32.c -index 6df14afb48d..af594003c06 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vqshlq_r_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqshl.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vqshlq_r (a, b); - } - --/* { dg-final { scan-assembler "vqshl.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_s8.c -index c1b93793c8f..ef39f0c3924 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int32_t b) - { - return vqshlq_r_s8 (a, b); - } - --/* { dg-final { scan-assembler "vqshl.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int32_t b) - { - return vqshlq_r (a, b); - } - --/* { dg-final { scan-assembler "vqshl.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_u16.c -index 20fa0263de4..e6cc0007a2b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32_t b) - { - return vqshlq_r_u16 (a, b); - } - --/* { dg-final { scan-assembler "vqshl.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32_t b) - { - return vqshlq_r (a, b); - } - --/* { dg-final { scan-assembler "vqshl.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_u32.c -index 7d56784b3d5..b30ecdf4052 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32_t b) - { - return vqshlq_r_u32 (a, b); - } - --/* { dg-final { scan-assembler "vqshl.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32_t b) - { - return vqshlq_r (a, b); - } - --/* { dg-final { scan-assembler "vqshl.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_u8.c -index 199249bf604..69b0a8d0b90 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_r_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int32_t b) - { - return vqshlq_r_u8 (a, b); - } - --/* { dg-final { scan-assembler "vqshl.u8" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int32_t b) - { - return vqshlq_r (a, b); - } - --/* { dg-final { scan-assembler "vqshl.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_s16.c -index 2b01d3e3d31..e7877019200 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vqshlq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqshl.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vqshlq (a, b); - } - --/* { dg-final { scan-assembler "vqshl.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_s32.c -index b9b66223ae9..a7787cabb62 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vqshlq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqshl.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vqshlq (a, b); - } - --/* { dg-final { scan-assembler "vqshl.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_s8.c -index 8096205cf28..73af1790b47 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vqshlq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vqshl.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vqshlq (a, b); - } - --/* { dg-final { scan-assembler "vqshl.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_u16.c -index 61b6c18bd8a..26119eff397 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int16x8_t b) - { - return vqshlq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vqshl.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int16x8_t b) - { - return vqshlq (a, b); - } - --/* { dg-final { scan-assembler "vqshl.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_u32.c -index 06b50442d30..01b66d5dfbc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32x4_t b) - { - return vqshlq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vqshl.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32x4_t b) - { - return vqshlq (a, b); - } - --/* { dg-final { scan-assembler "vqshl.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_u8.c -index 0cc6a1dac4b..d4727de5de9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshlq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshl.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int8x16_t b) - { - return vqshlq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vqshl.u8" } } */ - -+/* -+**foo1: -+** ... -+** vqshl.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int8x16_t b) - { - return vqshlq (a, b); - } - --/* { dg-final { scan-assembler "vqshl.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_m_n_s16.c -index 885874d13fb..ada03b165c5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_m_n_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlut.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, int16x8_t a, mve_pred16_t p) - { -- return vqshluq_m_n_s16 (inactive, a, 7, p); -+ return vqshluq_m_n_s16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlut.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlut.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, int16x8_t a, mve_pred16_t p) - { -- return vqshluq_m (inactive, a, 7, p); -+ return vqshluq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_m_n_s32.c -index bb2a3294727..6ae38f1ca84 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_m_n_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlut.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, int32x4_t a, mve_pred16_t p) - { -- return vqshluq_m_n_s32 (inactive, a, 7, p); -+ return vqshluq_m_n_s32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlut.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlut.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, int32x4_t a, mve_pred16_t p) - { -- return vqshluq_m (inactive, a, 7, p); -+ return vqshluq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_m_n_s8.c -index 7f9a42f8027..8d536a7b0f7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_m_n_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlut.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, int8x16_t a, mve_pred16_t p) - { -- return vqshluq_m_n_s8 (inactive, a, 7, p); -+ return vqshluq_m_n_s8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshlut.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshlut.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, int8x16_t a, mve_pred16_t p) - { -- return vqshluq_m (inactive, a, 7, p); -+ return vqshluq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_n_s16.c -index 481a4465834..33ba80cbf97 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshlu.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (int16x8_t a) - { -- return vqshluq_n_s16 (a, 7); -+ return vqshluq_n_s16 (a, 1); - } - --/* { dg-final { scan-assembler "vqshlu.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqshlu.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (int16x8_t a) - { -- return vqshluq (a, 7); -+ return vqshluq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqshlu.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_n_s32.c -index 68298963824..0d5a35f1ed3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshlu.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (int32x4_t a) - { -- return vqshluq_n_s32 (a, 7); -+ return vqshluq_n_s32 (a, 1); - } - --/* { dg-final { scan-assembler "vqshlu.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqshlu.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (int32x4_t a) - { -- return vqshluq (a, 7); -+ return vqshluq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqshlu.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_n_s8.c -index 5d52c340667..1e2d9e044b9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshluq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshlu.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (int8x16_t a) - { -- return vqshluq_n_s8 (a, 7); -+ return vqshluq_n_s8 (a, 1); - } - --/* { dg-final { scan-assembler "vqshlu.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqshlu.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (int8x16_t a) - { -- return vqshluq (a, 7); -+ return vqshluq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqshlu.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s16.c -index 9ea58e95d37..0266640a3ff 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrnbt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b, mve_pred16_t p) - { -- return vqshrnbq_m_n_s16 (a, b, 7, p); -+ return vqshrnbq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrnbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrnbt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b, mve_pred16_t p) - { -- return vqshrnbq_m (a, b, 7, p); -+ return vqshrnbq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrnbt.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s32.c -index b44f41b3699..59be6de392b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrnbt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b, mve_pred16_t p) - { -- return vqshrnbq_m_n_s32 (a, b, 11, p); -+ return vqshrnbq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrnbt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrnbt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b, mve_pred16_t p) - { -- return vqshrnbq_m (a, b, 11, p); -+ return vqshrnbq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrnbt.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u16.c -index f761d14ecec..f227a285ea9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrnbt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vqshrnbq_m_n_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrnbt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrnbt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vqshrnbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrnbt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u32.c -index 3073a5b223c..9711c2f9019 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrnbt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vqshrnbq_m_n_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrnbt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrnbt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vqshrnbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrnbt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_s16.c -index 24133b57660..e7e9f974bd4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshrnb.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b) - { - return vqshrnbq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnb.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqshrnb.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b) - { - return vqshrnbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnb.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_s32.c -index 34c11e156c3..b5e2b8af577 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshrnb.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b) - { -- return vqshrnbq_n_s32 (a, b, 2); -+ return vqshrnbq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnb.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqshrnb.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b) - { -- return vqshrnbq (a, b, 2); -+ return vqshrnbq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqshrnb.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_u16.c -index 23a7596e0ab..708cf3e8d74 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshrnb.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b) - { - return vqshrnbq_n_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnb.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqshrnb.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b) - { - return vqshrnbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnb.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_u32.c -index 4cb7ceaf66b..07fbbaada67 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrnbq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshrnb.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b) - { -- return vqshrnbq_n_u32 (a, b, 15); -+ return vqshrnbq_n_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnb.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqshrnb.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b) - { -- return vqshrnbq (a, b, 15); -+ return vqshrnbq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vqshrnb.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s16.c -index d2ff2d359e0..c25619df048 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrntt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqshrntq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrntt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrntt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqshrntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrntt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s32.c -index 50dde4047d4..1b1d435e282 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrntt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqshrntq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrntt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrntt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqshrntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrntt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u16.c -index 07949569581..f151a277cd1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrntt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vqshrntq_m_n_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrntt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrntt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vqshrntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrntt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u32.c -index 17f0205c880..c336001c945 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrntt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vqshrntq_m_n_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrntt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrntt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vqshrntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrntt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_s16.c -index 9e8d5e88619..15b010d2c84 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshrnt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b) - { - return vqshrntq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqshrnt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b) - { - return vqshrntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_s32.c -index 0661cefa783..974e4a060ce 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshrnt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b) - { - return vqshrntq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqshrnt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b) - { - return vqshrntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_u16.c -index cda26142559..3172a330f6b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshrnt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b) - { - return vqshrntq_n_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqshrnt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b) - { - return vqshrntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_u32.c -index f242353f6b4..e9e31d63e98 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrntq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshrnt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b) - { - return vqshrntq_n_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqshrnt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b) - { - return vqshrntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrnt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s16.c -index 73c480646e7..b7fe0e51e82 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrunbt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqshrunbq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrunbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrunbt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqshrunbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrunbt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s32.c -index f8887b1cecb..fb78dd44c5d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrunbt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqshrunbq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrunbt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshrunbt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqshrunbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshrunbt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_n_s16.c -index 2c64d7d0873..3c286e77a40 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshrunb.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int16x8_t b) - { - return vqshrunbq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrunb.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqshrunb.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int16x8_t b) - { - return vqshrunbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrunb.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_n_s32.c -index 17cb0aa5da1..e22fb2b2b36 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshrunbq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshrunb.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32x4_t b) - { - return vqshrunbq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrunb.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqshrunb.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32x4_t b) - { - return vqshrunbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrunb.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s16.c -index 4b9758df7ec..22ca346d98b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshruntt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqshruntq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshruntt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshruntt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vqshruntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshruntt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s32.c -index 18b9f117fb2..2f6adf26e5e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshruntt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqshruntq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshruntt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqshruntt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vqshruntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqshruntt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_n_s16.c -index f6247751c44..96a377e13b9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshrunt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int16x8_t b) - { - return vqshruntq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrunt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqshrunt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int16x8_t b) - { - return vqshruntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrunt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_n_s32.c -index 076fd29c69f..2e2eb93a0d6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqshrunt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32x4_t b) - { - return vqshruntq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrunt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqshrunt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32x4_t b) - { - return vqshruntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vqshrunt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s16.c -index abcff4f0e3c..f69649b58af 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vqsubq_m_n_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vqsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s32.c -index 23e59ff12a2..a7843d07933 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqsubq_m_n_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vqsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s8.c -index d783ab55f65..f1fb5ad2a05 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vqsubq_m_n_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vqsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u16.c -index 5244efb340c..7e7d2c07267 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vqsubq_m_n_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vqsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.u16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) -+{ -+ return vqsubq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u32.c -index 4427f87f456..13e54be06c1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vqsubq_m_n_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vqsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) -+{ -+ return vqsubq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u8.c -index 0abfa5dc132..ae6baaba661 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vqsubq_m_n_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vqsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.u8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) -+{ -+ return vqsubq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s16.c -index faa189f8466..fd52022fc26 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqsubq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vqsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s32.c -index 62a4dd0979f..4225ec29c06 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqsubq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vqsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s8.c -index 71fb6f5632e..27496305ee8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqsubq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vqsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u16.c -index 68d642dfef5..d840e51d350 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vqsubq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vqsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u32.c -index 8f76c5f47da..242903f9dc8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vqsubq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vqsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u8.c -index af335ae9752..e5a6b7aa0e4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vqsubq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vqsubt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vqsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vqsubt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s16.c -index 33a79180289..7a286add743 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqsub.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b) - { - return vqsubq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqsub.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqsub.s16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16_t b) - { - return vqsubq (a, b); - } - --/* { dg-final { scan-assembler "vqsub.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s32.c -index a2b338839fa..2532b216a34 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqsub.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vqsubq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqsub.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqsub.s32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vqsubq (a, b); - } - --/* { dg-final { scan-assembler "vqsub.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s8.c -index e8d7e99d19d..9e0a233baa0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqsub.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b) - { - return vqsubq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vqsub.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqsub.s8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8_t b) - { - return vqsubq (a, b); - } - --/* { dg-final { scan-assembler "vqsub.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u16.c -index f7b48c546a6..20d3267e583 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqsub.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16_t b) - { - return vqsubq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vqsub.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqsub.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16_t b) - { - return vqsubq (a, b); - } - --/* { dg-final { scan-assembler "vqsub.u16" } } */ -+/* -+**foo2: -+** ... -+** vqsub.u16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t a) -+{ -+ return vqsubq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u32.c -index f74a968f5a7..4805e4cd969 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqsub.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32_t b) - { - return vqsubq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vqsub.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqsub.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32_t b) - { - return vqsubq (a, b); - } - --/* { dg-final { scan-assembler "vqsub.u32" } } */ -+/* -+**foo2: -+** ... -+** vqsub.u32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t a) -+{ -+ return vqsubq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u8.c -index ce7b4ce0151..db475615bbc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u8.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqsub.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8_t b) - { - return vqsubq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vqsub.u8" } } */ - -+/* -+**foo1: -+** ... -+** vqsub.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8_t b) - { - return vqsubq (a, b); - } - --/* { dg-final { scan-assembler "vqsub.u8" } } */ -+/* -+**foo2: -+** ... -+** vqsub.u8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t a) -+{ -+ return vqsubq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s16.c -index 85bf265eeb0..76def1b340d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqsub.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vqsubq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vqsub.s16" } } */ - -+/* -+**foo1: -+** ... -+** vqsub.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vqsubq (a, b); - } - --/* { dg-final { scan-assembler "vqsub.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s32.c -index 35d17e8bc4e..989ad501659 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqsub.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vqsubq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vqsub.s32" } } */ - -+/* -+**foo1: -+** ... -+** vqsub.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vqsubq (a, b); - } - --/* { dg-final { scan-assembler "vqsub.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s8.c -index 50cfccff7a5..4cf804b4c99 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqsub.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vqsubq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vqsub.s8" } } */ - -+/* -+**foo1: -+** ... -+** vqsub.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vqsubq (a, b); - } - --/* { dg-final { scan-assembler "vqsub.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u16.c -index 15f0b7244b7..4d937a35269 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqsub.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vqsubq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vqsub.u16" } } */ - -+/* -+**foo1: -+** ... -+** vqsub.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vqsubq (a, b); - } - --/* { dg-final { scan-assembler "vqsub.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u32.c -index 7d695e23474..5ee2c2d9cc2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqsub.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vqsubq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vqsub.u32" } } */ - -+/* -+**foo1: -+** ... -+** vqsub.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vqsubq (a, b); - } - --/* { dg-final { scan-assembler "vqsub.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u8.c -index c0552d100d4..14cfb55644c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vqsub.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vqsubq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vqsub.u8" } } */ - -+/* -+**foo1: -+** ... -+** vqsub.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vqsubq (a, b); - } - --/* { dg-final { scan-assembler "vqsub.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_m_s8.c -index 7b06f0b3644..b366057dfde 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev16t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vrev16q_m_s8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev16t.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev16t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vrev16q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_m_u8.c -index 8cf374d97c1..7baad3ba72f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_m_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev16t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vrev16q_m_u8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev16t.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev16t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vrev16q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_s8.c -index 52688402437..23fcd61a464 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev16.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { - return vrev16q_s8 (a); - } - --/* { dg-final { scan-assembler "vrev16.8" } } */ - -+/* -+**foo1: -+** ... -+** vrev16.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { - return vrev16q (a); - } - --/* { dg-final { scan-assembler "vrev16.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_u8.c -index 56c05c523f3..e08b4b6cda2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev16.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a) - { -- return vrev16q_u8 (a); -+ return vrev16q_u8 (a); - } - --/* { dg-final { scan-assembler "vrev16.8" } } */ - -+/* -+**foo1: -+** ... -+** vrev16.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a) - { -- return vrev16q (a); -+ return vrev16q (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vrev16.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_x_s8.c -index 700a6774e2e..6496bf89931 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev16t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, mve_pred16_t p) - { - return vrev16q_x_s8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev16t.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev16t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, mve_pred16_t p) - { - return vrev16q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_x_u8.c -index 3b424061f0e..e03f6f177ff 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev16t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, mve_pred16_t p) - { - return vrev16q_x_u8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev16t.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev16t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, mve_pred16_t p) - { - return vrev16q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_f16.c -index 946fd8ddf5b..6e4c5691760 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_f16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev32.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a) - { - return vrev32q_f16 (a); - } - --/* { dg-final { scan-assembler "vrev32.16" } } */ -+ -+/* -+**foo1: -+** ... -+** vrev32.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (float16x8_t a) -+{ -+ return vrev32q (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_f16.c -index 623b48a92c4..3b25f0314c7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrev32q_m_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev32t.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrev32q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_s16.c -index 4040707d02c..36f671924b3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vrev32q_m_s16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev32t.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vrev32q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_s8.c -index ad15e9d2bca..13960569138 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vrev32q_m_s8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev32t.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vrev32q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_u16.c -index 8cd61e6bb1f..7683397030b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vrev32q_m_u16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev32t.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vrev32q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_u8.c -index 44600e2d1e7..72fc03bff2d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_m_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vrev32q_m_u8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev32t.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vrev32q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_s16.c -index 503616e2a29..cd02518fd9d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_s16.c -@@ -1,21 +1,41 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev32.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { - return vrev32q_s16 (a); - } - --/* { dg-final { scan-assembler "vrev32.16" } } */ - -+/* -+**foo1: -+** ... -+** vrev32.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { - return vrev32q (a); - } - --/* { dg-final { scan-assembler "vrev32.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_s8.c -index aa98f965713..3a156b7014f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev32.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { - return vrev32q_s8 (a); - } - --/* { dg-final { scan-assembler "vrev32.8" } } */ - -+/* -+**foo1: -+** ... -+** vrev32.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { - return vrev32q (a); - } - --/* { dg-final { scan-assembler "vrev32.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_u16.c -index 6a441ed0edb..299f015bb04 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev32.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a) - { -- return vrev32q_u16 (a); -+ return vrev32q_u16 (a); - } - --/* { dg-final { scan-assembler "vrev32.16" } } */ - -+/* -+**foo1: -+** ... -+** vrev32.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a) - { -- return vrev32q (a); -+ return vrev32q (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vrev32.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_u8.c -index 787f236411d..fb65d0a3821 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev32.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a) - { -- return vrev32q_u8 (a); -+ return vrev32q_u8 (a); - } - --/* { dg-final { scan-assembler "vrev32.8" } } */ - -+/* -+**foo1: -+** ... -+** vrev32.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a) - { -- return vrev32q (a); -+ return vrev32q (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vrev32.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_f16.c -index f7dc8fb14ec..d1c22aa72f4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vrev32q_x_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev32t.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, mve_pred16_t p) - { - return vrev32q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_s16.c -index 81ec83dec4b..0f0c19b1483 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, mve_pred16_t p) - { - return vrev32q_x_s16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev32t.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, mve_pred16_t p) - { - return vrev32q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_s8.c -index 8d3bac1e82c..2457dde2a58 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, mve_pred16_t p) - { - return vrev32q_x_s8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev32t.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, mve_pred16_t p) - { - return vrev32q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_u16.c -index 36ba71752a8..b1b1237344e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, mve_pred16_t p) - { - return vrev32q_x_u16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev32t.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, mve_pred16_t p) - { - return vrev32q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_u8.c -index 9d15c9df43c..21d39274577 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev32q_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, mve_pred16_t p) - { - return vrev32q_x_u8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev32t.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev32t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, mve_pred16_t p) - { - return vrev32q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_f16.c -index 7ec0962a95e..a2dc8957467 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_f16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev64.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a) - { - return vrev64q_f16 (a); - } - --/* { dg-final { scan-assembler "vrev64.16" } } */ -+ -+/* -+**foo1: -+** ... -+** vrev64.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (float16x8_t a) -+{ -+ return vrev64q (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_f32.c -index 01c342496da..78add56a4da 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_f32.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev64.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a) - { - return vrev64q_f32 (a); - } - --/* { dg-final { scan-assembler "vrev64.32" } } */ -+ -+/* -+**foo1: -+** ... -+** vrev64.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (float32x4_t a) -+{ -+ return vrev64q (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_f16.c -index ef47bab0314..0fb44077ec4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrev64q_m_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrev64q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_f32.c -index 6df0ba62eff..ff62ea7d021 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrev64q_m_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrev64q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s16-clobber.c -similarity index 53% -rename from gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f16-1.c -rename to gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s16-clobber.c -index b3a67bb43eb..6464c96181d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f16-1.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s16-clobber.c -@@ -3,11 +3,15 @@ - /* { dg-additional-options "-O2" } */ - - #include "arm_mve.h" --float16x8_t --foo (float16x8_t a, float16_t b, mve_pred16_t p) -+ -+int16x8_t -+foo (int16x8_t a, mve_pred16_t p) - { -- return vsubq_x_n_f16 (a, 23.23, p); -+ return vrev64q_m_s16 (a, a, p); - } - -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -+float16x8_t -+foo2 (float16x8_t a, mve_pred16_t p) -+{ -+ return vrev64q_m_f16 (a, a, p); -+} -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s16.c -index 9f9bbe0e666..b30ce76c68f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vrev64q_m_s16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vrev64q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s32.c -index 132628b5a80..b44d363a712 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vrev64q_m_s32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vrev64q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s8.c -index eb6e560ac3c..4804b8acaf3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vrev64q_m_s8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vrev64q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_u16.c -index 4534a64ee84..12c26144cd2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vrev64q_m_u16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vrev64q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_u32.c -index 3f1ab24527c..ff90d92fff3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { - return vrev64q_m_u32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { - return vrev64q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_u8.c -index 4adb70963dd..267c3b6bee2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vrev64q_m_u8 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vrev64q_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_s16.c -index a886b0b0c6a..b6083f9d69c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev64.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { - return vrev64q_s16 (a); - } - --/* { dg-final { scan-assembler "vrev64.16" } } */ - -+/* -+**foo1: -+** ... -+** vrev64.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { - return vrev64q (a); - } - --/* { dg-final { scan-assembler "vrev64.16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_s32.c -index b0ba64b186b..81fc7d1bdd0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev64.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { - return vrev64q_s32 (a); - } - --/* { dg-final { scan-assembler "vrev64.32" } } */ - -+/* -+**foo1: -+** ... -+** vrev64.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a) - { - return vrev64q (a); - } - --/* { dg-final { scan-assembler "vrev64.32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_s8.c -index 12f9f1ac389..3fced739681 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev64.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { - return vrev64q_s8 (a); - } - --/* { dg-final { scan-assembler "vrev64.8" } } */ - -+/* -+**foo1: -+** ... -+** vrev64.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { - return vrev64q (a); - } - --/* { dg-final { scan-assembler "vrev64.8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_u16.c -index ee3813428c9..b25fccc6c2a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev64.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a) - { -- return vrev64q_u16 (a); -+ return vrev64q_u16 (a); - } - --/* { dg-final { scan-assembler "vrev64.16" } } */ - -+/* -+**foo1: -+** ... -+** vrev64.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a) - { -- return vrev64q (a); -+ return vrev64q (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vrev64.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_u32.c -index c4a551dcc15..9d203b1f6bf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev64.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a) - { -- return vrev64q_u32 (a); -+ return vrev64q_u32 (a); - } - --/* { dg-final { scan-assembler "vrev64.32" } } */ - -+/* -+**foo1: -+** ... -+** vrev64.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a) - { -- return vrev64q (a); -+ return vrev64q (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vrev64.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_u8.c -index 578d538f019..9acd52439e5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrev64.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a) - { -- return vrev64q_u8 (a); -+ return vrev64q_u8 (a); - } - --/* { dg-final { scan-assembler "vrev64.8" } } */ - -+/* -+**foo1: -+** ... -+** vrev64.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a) - { -- return vrev64q (a); -+ return vrev64q (a); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vrev64.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_f16.c -index 467da7fe9ef..9c949028d8b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vrev64q_x_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, mve_pred16_t p) - { - return vrev64q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_f32.c -index 1a3cd17ebd6..445834a55f8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vrev64q_x_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, mve_pred16_t p) - { - return vrev64q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_s16.c -index b9932eddf38..66daa3d9131 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, mve_pred16_t p) - { - return vrev64q_x_s16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, mve_pred16_t p) - { - return vrev64q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_s32.c -index 4eb3d4d09b1..2c5a5ee1a0c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, mve_pred16_t p) - { - return vrev64q_x_s32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, mve_pred16_t p) - { - return vrev64q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_s8.c -index 5c22c387586..a24f17d5797 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, mve_pred16_t p) - { - return vrev64q_x_s8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, mve_pred16_t p) - { - return vrev64q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_u16.c -index bbf42931d92..4c11e79254b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, mve_pred16_t p) - { - return vrev64q_x_u16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, mve_pred16_t p) - { - return vrev64q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_u32.c -index 1b595c3ad2f..14f676e0cff 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, mve_pred16_t p) - { - return vrev64q_x_u32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, mve_pred16_t p) - { - return vrev64q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_u8.c -index abff81e40b9..542dcaa782c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, mve_pred16_t p) - { - return vrev64q_x_u8 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrev64t.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrev64t.8 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, mve_pred16_t p) - { - return vrev64q_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_s16.c -index 01d72efc34b..0deef794352 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrhaddq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_s32.c -index dfe8d7334a8..e584987fb3e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrhaddq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_s8.c -index 9eceda2b115..40e3472bbf0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrhaddq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_u16.c -index ec11b660a4e..bd53871cc58 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vrhaddq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vrhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_u32.c -index 25c6208ec06..30037083a01 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vrhaddq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vrhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_u8.c -index 7b25bf8faa8..3208ac1589b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vrhaddq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vrhaddq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_s16.c -index 36f36f77233..bafb1dc5795 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrhadd.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vrhaddq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vrhadd.s16" } } */ - -+/* -+**foo1: -+** ... -+** vrhadd.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vrhaddq (a, b); - } - --/* { dg-final { scan-assembler "vrhadd.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_s32.c -index 813cf91649e..bbee81fffd6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrhadd.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vrhaddq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vrhadd.s32" } } */ - -+/* -+**foo1: -+** ... -+** vrhadd.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vrhaddq (a, b); - } - --/* { dg-final { scan-assembler "vrhadd.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_s8.c -index 5ce1109d676..3fad58d4e0d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrhadd.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vrhaddq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vrhadd.s8" } } */ - -+/* -+**foo1: -+** ... -+** vrhadd.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vrhaddq (a, b); - } - --/* { dg-final { scan-assembler "vrhadd.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_u16.c -index 9d9bf18ec70..91273571ec8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrhadd.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vrhaddq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vrhadd.u16" } } */ - -+/* -+**foo1: -+** ... -+** vrhadd.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vrhaddq (a, b); - } - --/* { dg-final { scan-assembler "vrhadd.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_u32.c -index e465197505b..79a21051b0b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrhadd.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vrhaddq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vrhadd.u32" } } */ - -+/* -+**foo1: -+** ... -+** vrhadd.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vrhaddq (a, b); - } - --/* { dg-final { scan-assembler "vrhadd.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_u8.c -index cbede385f20..4bdd23419a3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrhadd.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vrhaddq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vrhadd.u8" } } */ - -+/* -+**foo1: -+** ... -+** vrhadd.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vrhaddq (a, b); - } - --/* { dg-final { scan-assembler "vrhadd.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_s16.c -index 8507b436dc8..363dedd3304 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrhaddq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_s32.c -index 756c52f8f1e..f1df6749f33 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrhaddq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_s8.c -index 9b580782098..107cf2daa58 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrhaddq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u16.c -index ec534c8262e..5837437d33c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vrhaddq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vrhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u32.c -index c79f406439e..0d8d118987e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vrhaddq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vrhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u8.c -index c4c16f8a753..37711710ee8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vrhaddq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrhaddt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrhaddt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vrhaddq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c -index 263d3509771..c18ff82f8f5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlaldavhat.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vrmlaldavhaq_p_s32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vrmlaldavhat.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlaldavhat.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vrmlaldavhaq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vrmlaldavhat.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c -index 83ab68c001b..ba0a9587e3f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c -@@ -1,21 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlaldavhat.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo (uint64_t a, uint32x4_t b, uint32x4_t c, mve_pred16_t p) - { - return vrmlaldavhaq_p_u32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vrmlaldavhat.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlaldavhat.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo1 (uint64_t a, uint32x4_t b, uint32x4_t c, mve_pred16_t p) - { - return vrmlaldavhaq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vrmlaldavhat.u32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlaldavhat.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint64_t -+foo2 (uint32x4_t b, uint32x4_t c, mve_pred16_t p) -+{ -+ return vrmlaldavhaq_p (1, b, c, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_s32.c -index 09cd9ee99ff..b2ced4b41c7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmlaldavha.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b, int32x4_t c) - { - return vrmlaldavhaq_s32 (a, b, c); - } - --/* { dg-final { scan-assembler "vrmlaldavha.s32" } } */ - -+/* -+**foo1: -+** ... -+** vrmlaldavha.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b, int32x4_t c) - { - return vrmlaldavhaq (a, b, c); - } - --/* { dg-final { scan-assembler "vrmlaldavha.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_u32.c -index 1d6f64e0879..96f1ab72e92 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_u32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmlaldavha.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo (uint64_t a, uint32x4_t b, uint32x4_t c) - { - return vrmlaldavhaq_u32 (a, b, c); - } - --/* { dg-final { scan-assembler "vrmlaldavha.u32" } } */ - -+/* -+**foo1: -+** ... -+** vrmlaldavha.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo1 (uint64_t a, uint32x4_t b, uint32x4_t c) - { - return vrmlaldavhaq (a, b, c); - } - --/* { dg-final { scan-assembler "vrmlaldavha.u32" } } */ -+/* -+**foo2: -+** ... -+** vrmlaldavha.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint64_t -+foo2 (uint32x4_t b, uint32x4_t c) -+{ -+ return vrmlaldavhaq (1, b, c); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_p_s32.c -index 0e29e886ce1..a0164ed2bb7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlaldavhaxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vrmlaldavhaxq_p_s32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vrmlaldavhaxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlaldavhaxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vrmlaldavhaxq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vrmlaldavhaxt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_s32.c -index 063c94d8c5b..4e71fd72e35 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmlaldavhax.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b, int32x4_t c) - { - return vrmlaldavhaxq_s32 (a, b, c); - } - --/* { dg-final { scan-assembler "vrmlaldavhax.s32" } } */ - -+/* -+**foo1: -+** ... -+** vrmlaldavhax.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b, int32x4_t c) - { - return vrmlaldavhaxq (a, b, c); - } - --/* { dg-final { scan-assembler "vrmlaldavhax.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_s32.c -index 1d7a5e3d690..b8f346f9740 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlaldavht.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrmlaldavhq_p_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vrmlaldavht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlaldavht.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrmlaldavhq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vrmlaldavht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_u32.c -index 539b04254cd..d6c6d503a9b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlaldavht.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vrmlaldavhq_p_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vrmlaldavht.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlaldavht.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vrmlaldavhq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vrmlaldavht.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_s32.c -index 566b85d1721..22c1164b6a9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmlaldavh.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a, int32x4_t b) - { - return vrmlaldavhq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vrmlaldavh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vrmlaldavh.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a, int32x4_t b) - { - return vrmlaldavhq (a, b); - } - --/* { dg-final { scan-assembler "vrmlaldavh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_u32.c -index 352cd58c8e8..6517ee8cd60 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmlaldavh.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo (uint32x4_t a, uint32x4_t b) - { - return vrmlaldavhq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vrmlaldavh.u32" } } */ - -+/* -+**foo1: -+** ... -+** vrmlaldavh.u32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint64_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vrmlaldavhq (a, b); - } - --/* { dg-final { scan-assembler "vrmlaldavh.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhxq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhxq_p_s32.c -index d99ebffbea0..ebe1012f53f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhxq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhxq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlaldavhxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrmlaldavhxq_p_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vrmlaldavhxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlaldavhxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrmlaldavhxq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vrmlaldavhxt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhxq_s32.c -index 64f02971eb3..56a2071d61c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmlaldavhx.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a, int32x4_t b) - { - return vrmlaldavhxq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vrmlaldavhx.s32" } } */ - -+/* -+**foo1: -+** ... -+** vrmlaldavhx.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a, int32x4_t b) - { - return vrmlaldavhxq (a, b); - } - --/* { dg-final { scan-assembler "vrmlaldavhx.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaq_p_s32.c -index 83d5a8ce251..aad2f009ba3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlsldavhat.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vrmlsldavhaq_p_s32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vrmlsldavhat.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlsldavhat.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vrmlsldavhaq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vrmlsldavhat.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaq_s32.c -index a8a320c6a43..f30870181b8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmlsldavha.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b, int32x4_t c) - { - return vrmlsldavhaq_s32 (a, b, c); - } - --/* { dg-final { scan-assembler "vrmlsldavha.s32" } } */ - -+/* -+**foo1: -+** ... -+** vrmlsldavha.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b, int32x4_t c) - { - return vrmlsldavhaq (a, b, c); - } - --/* { dg-final { scan-assembler "vrmlsldavha.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_p_s32.c -index aa20ba1a7eb..2a3f441e429 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlsldavhaxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vrmlsldavhaxq_p_s32 (a, b, c, p); - } - --/* { dg-final { scan-assembler "vrmlsldavhaxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlsldavhaxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) - { - return vrmlsldavhaxq_p (a, b, c, p); - } - --/* { dg-final { scan-assembler "vrmlsldavhaxt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_s32.c -index 78932840dfe..06afa309bfa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmlsldavhax.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int64_t a, int32x4_t b, int32x4_t c) - { - return vrmlsldavhaxq_s32 (a, b, c); - } - --/* { dg-final { scan-assembler "vrmlsldavhax.s32" } } */ - -+/* -+**foo1: -+** ... -+** vrmlsldavhax.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int64_t a, int32x4_t b, int32x4_t c) - { - return vrmlsldavhaxq (a, b, c); - } - --/* { dg-final { scan-assembler "vrmlsldavhax.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhq_p_s32.c -index 1e2127a17be..9f1f82a7c62 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlsldavht.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrmlsldavhq_p_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vrmlsldavht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlsldavht.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrmlsldavhq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vrmlsldavht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhq_s32.c -index 2a7844fa370..ff867d5c208 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmlsldavh.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a, int32x4_t b) - { - return vrmlsldavhq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vrmlsldavh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vrmlsldavh.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a, int32x4_t b) - { - return vrmlsldavhq (a, b); - } - --/* { dg-final { scan-assembler "vrmlsldavh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhxq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhxq_p_s32.c -index ecbc9737d8f..2a127c76df8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhxq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhxq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlsldavhxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrmlsldavhxq_p_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vrmlsldavhxt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmlsldavhxt.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrmlsldavhxq_p (a, b, p); - } - --/* { dg-final { scan-assembler "vrmlsldavhxt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhxq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhxq_s32.c -index 0cea55724aa..41539059d7f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhxq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlsldavhxq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmlsldavhx.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo (int32x4_t a, int32x4_t b) - { - return vrmlsldavhxq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vrmlsldavhx.s32" } } */ - -+/* -+**foo1: -+** ... -+** vrmlsldavhx.s32 (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int64_t - foo1 (int32x4_t a, int32x4_t b) - { - return vrmlsldavhxq (a, b); - } - --/* { dg-final { scan-assembler "vrmlsldavhx.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_s16.c -index 6adaf3f6431..e5c70a0a323 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrmulhq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_s32.c -index a90a67971c8..6b373e1739a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrmulhq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_s8.c -index d0dd99aa4c3..961ba71ccb7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrmulhq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_u16.c -index 50d05c1de11..3a782c295e1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vrmulhq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vrmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_u32.c -index a7da7330266..818fb631ff7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vrmulhq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vrmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_u8.c -index 42b0b9f0f2f..3d1eb365c63 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vrmulhq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vrmulhq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_s16.c -index ac77b9f13ba..34c3f182628 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmulh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vrmulhq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vrmulh.s16" } } */ - -+/* -+**foo1: -+** ... -+** vrmulh.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vrmulhq (a, b); - } - --/* { dg-final { scan-assembler "vrmulh.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_s32.c -index a7bbd19c393..fe4d11c5acd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmulh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vrmulhq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vrmulh.s32" } } */ - -+/* -+**foo1: -+** ... -+** vrmulh.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vrmulhq (a, b); - } - --/* { dg-final { scan-assembler "vrmulh.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_s8.c -index b0d1a856794..4b5a2e656ed 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmulh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vrmulhq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vrmulh.s8" } } */ - -+/* -+**foo1: -+** ... -+** vrmulh.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vrmulhq (a, b); - } - --/* { dg-final { scan-assembler "vrmulh.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_u16.c -index b43cb07b1bf..478d5885edd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmulh.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vrmulhq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vrmulh.u16" } } */ - -+/* -+**foo1: -+** ... -+** vrmulh.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vrmulhq (a, b); - } - --/* { dg-final { scan-assembler "vrmulh.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_u32.c -index f37eeb606f2..e3dc75d10aa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmulh.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vrmulhq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vrmulh.u32" } } */ - -+/* -+**foo1: -+** ... -+** vrmulh.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vrmulhq (a, b); - } - --/* { dg-final { scan-assembler "vrmulh.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_u8.c -index ab5d7597a43..108357b6d35 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrmulh.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vrmulhq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vrmulh.u8" } } */ - -+/* -+**foo1: -+** ... -+** vrmulh.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vrmulhq (a, b); - } - --/* { dg-final { scan-assembler "vrmulh.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_s16.c -index 3ef89bd686b..00f728bdaf2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrmulhq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrmulhq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_s32.c -index 2a4b9d0d147..49a739d9a95 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrmulhq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrmulhq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_s8.c -index d3ef8713dba..7d97cbc5f8e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrmulhq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrmulhq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_u16.c -index 5ce4d01a235..31622dce8df 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vrmulhq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vrmulhq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_u32.c -index 4a965976c2d..f6d2582bac8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vrmulhq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vrmulhq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_u8.c -index 015530c08b2..15e947618f2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmulhq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vrmulhq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrmulht.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrmulht.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vrmulhq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_f16.c -index ba8426fdff3..17b11972e84 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_f16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrinta.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a) - { - return vrndaq_f16 (a); - } - --/* { dg-final { scan-assembler "vrinta.f16" } } */ -+ -+/* -+**foo1: -+** ... -+** vrinta.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (float16x8_t a) -+{ -+ return vrndaq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_f32.c -index a8c9c28422f..dc3689a66d1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_f32.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrinta.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a) - { - return vrndaq_f32 (a); - } - --/* { dg-final { scan-assembler "vrinta.f32" } } */ -+ -+/* -+**foo1: -+** ... -+** vrinta.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (float32x4_t a) -+{ -+ return vrndaq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_m_f16.c -index 3617d796351..ffbdf3dad94 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_m_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintat.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrndaq_m_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintat.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintat.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrndaq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_m_f32.c -index fdb9ddb3551..d20f8050c45 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_m_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintat.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrndaq_m_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintat.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintat.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrndaq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_x_f16.c -index f398e86b689..141f612ddcb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintat.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vrndaq_x_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintat.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintat.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, mve_pred16_t p) - { - return vrndaq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_x_f32.c -index f5f21808528..277d2a7b668 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndaq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintat.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vrndaq_x_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintat.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintat.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, mve_pred16_t p) - { - return vrndaq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_f16.c -index 911a2b1cb29..a51878645da 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_f16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrintm.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a) - { - return vrndmq_f16 (a); - } - --/* { dg-final { scan-assembler "vrintm.f16" } } */ -+ -+/* -+**foo1: -+** ... -+** vrintm.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (float16x8_t a) -+{ -+ return vrndmq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_f32.c -index 496a2e55d55..4b79490cc21 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_f32.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrintm.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a) - { - return vrndmq_f32 (a); - } - --/* { dg-final { scan-assembler "vrintm.f32" } } */ -+ -+/* -+**foo1: -+** ... -+** vrintm.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (float32x4_t a) -+{ -+ return vrndmq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_m_f16.c -index 86f58e2eb88..e6eb2a1015d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_m_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintmt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrndmq_m_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintmt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintmt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrndmq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_m_f32.c -index 247595df56a..99f3f206823 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_m_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintmt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrndmq_m_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintmt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintmt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrndmq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_x_f16.c -index accc79579ec..cdef684f381 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintmt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vrndmq_x_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintmt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintmt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, mve_pred16_t p) - { - return vrndmq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_x_f32.c -index 0e4200dc2f5..94da7738d16 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndmq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintmt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vrndmq_x_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintmt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintmt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, mve_pred16_t p) - { - return vrndmq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_f16.c -index 23299c2a06f..b1b31bebb11 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_f16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrintn.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a) - { - return vrndnq_f16 (a); - } - --/* { dg-final { scan-assembler "vrintn.f16" } } */ -+ -+/* -+**foo1: -+** ... -+** vrintn.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (float16x8_t a) -+{ -+ return vrndnq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_f32.c -index ce445f2249f..e2fec8a87e2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_f32.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrintn.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a) - { - return vrndnq_f32 (a); - } - --/* { dg-final { scan-assembler "vrintn.f32" } } */ -+ -+/* -+**foo1: -+** ... -+** vrintn.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (float32x4_t a) -+{ -+ return vrndnq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_m_f16.c -index c41e38070bf..04d828bde24 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_m_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintnt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrndnq_m_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintnt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintnt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrndnq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_m_f32.c -index 09b9b95d67d..b32eacd9b20 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_m_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintnt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrndnq_m_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintnt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintnt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrndnq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_x_f16.c -index beeb23cf364..093aaa04d57 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintnt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vrndnq_x_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintnt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintnt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, mve_pred16_t p) - { - return vrndnq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_x_f32.c -index d09e55d53b3..8428800d503 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndnq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintnt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vrndnq_x_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintnt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintnt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, mve_pred16_t p) - { - return vrndnq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_f16.c -index 25dcbd5f3bf..3145faf9f70 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_f16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrintp.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a) - { - return vrndpq_f16 (a); - } - --/* { dg-final { scan-assembler "vrintp.f16" } } */ -+ -+/* -+**foo1: -+** ... -+** vrintp.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (float16x8_t a) -+{ -+ return vrndpq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_f32.c -index 5ab6f7ae9c3..2754af48612 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_f32.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrintp.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a) - { - return vrndpq_f32 (a); - } - --/* { dg-final { scan-assembler "vrintp.f32" } } */ -+ -+/* -+**foo1: -+** ... -+** vrintp.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (float32x4_t a) -+{ -+ return vrndpq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_m_f16.c -index 2cf8220c789..e62883c1edb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_m_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintpt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrndpq_m_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintpt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrndpq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_m_f32.c -index 7ed26e8d926..b8370b85373 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_m_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintpt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrndpq_m_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintpt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrndpq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_x_f16.c -index 233a6e843e8..57465385173 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintpt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vrndpq_x_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintpt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintpt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, mve_pred16_t p) - { - return vrndpq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_x_f32.c -index f689ce6510b..86a94c0dfe5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndpq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintpt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vrndpq_x_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintpt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintpt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, mve_pred16_t p) - { - return vrndpq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_f16.c -index 6fe3b2eae48..4b2ee2c3da2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_f16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrintz.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a) - { - return vrndq_f16 (a); - } - --/* { dg-final { scan-assembler "vrintz.f16" } } */ -+ -+/* -+**foo1: -+** ... -+** vrintz.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (float16x8_t a) -+{ -+ return vrndq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_f32.c -index a27b5c99b3a..301e9e4c25e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_f32.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrintz.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a) - { - return vrndq_f32 (a); - } - --/* { dg-final { scan-assembler "vrintz.f32" } } */ -+ -+/* -+**foo1: -+** ... -+** vrintz.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (float32x4_t a) -+{ -+ return vrndq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_m_f16.c -index 3a9edafc772..d7ba6d4f11f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_m_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintzt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrndq_m_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintzt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintzt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrndq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_m_f32.c -index 0ae4b92d235..6bfe1d49941 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_m_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintzt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrndq_m_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintzt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintzt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrndq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_x_f16.c -index eb6c3c37876..13ba05011e4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintzt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vrndq_x_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintzt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintzt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, mve_pred16_t p) - { - return vrndq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_x_f32.c -index 8b4c8c1e289..162d199420d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintzt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vrndq_x_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintzt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintzt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, mve_pred16_t p) - { - return vrndq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_f16.c -index e6f2028de30..9df65c5473d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_f16.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrintx.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a) - { - return vrndxq_f16 (a); - } - --/* { dg-final { scan-assembler "vrintx.f16" } } */ -+ -+/* -+**foo1: -+** ... -+** vrintx.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (float16x8_t a) -+{ -+ return vrndxq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_f32.c -index 32e6c90e60e..92bc6df1361 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_f32.c -@@ -1,13 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrintx.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a) - { - return vrndxq_f32 (a); - } - --/* { dg-final { scan-assembler "vrintx.f32" } } */ -+ -+/* -+**foo1: -+** ... -+** vrintx.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (float32x4_t a) -+{ -+ return vrndxq (a); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_m_f16.c -index 0e6a6119f08..9d92566b08d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_m_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintxt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrndxq_m_f16 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintxt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintxt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, mve_pred16_t p) - { - return vrndxq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_m_f32.c -index 3b09769814b..7a216050fb1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_m_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintxt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrndxq_m_f32 (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintxt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintxt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, mve_pred16_t p) - { - return vrndxq_m (inactive, a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_x_f16.c -index c160800023f..537506cd5be 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_x_f16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintxt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, mve_pred16_t p) - { - return vrndxq_x_f16 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintxt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintxt.f16 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, mve_pred16_t p) - { - return vrndxq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_x_f32.c -index 48b76161032..e19ba0c0a3c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_x_f32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintxt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, mve_pred16_t p) - { - return vrndxq_x_f32 (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrintxt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrintxt.f32 q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, mve_pred16_t p) - { - return vrndxq_x (a, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s16.c -index cf51de6aa9c..4c064515f0b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32_t b, mve_pred16_t p) - { - return vrshlq_m_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32_t b, mve_pred16_t p) - { - return vrshlq_m_n (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s32.c -index dcfd99773e3..2c9c15b13b0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vrshlq_m_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vrshlq_m_n (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s8.c -index cc1b746dc0d..48c394e21e3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int32_t b, mve_pred16_t p) - { - return vrshlq_m_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int32_t b, mve_pred16_t p) - { - return vrshlq_m_n (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u16.c -index 93a95ba9065..2fe162b7051 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32_t b, mve_pred16_t p) - { - return vrshlq_m_n_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32_t b, mve_pred16_t p) - { - return vrshlq_m_n (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u32.c -index 4b8c82aba21..49ccaf81c0c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32_t b, mve_pred16_t p) - { - return vrshlq_m_n_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32_t b, mve_pred16_t p) - { - return vrshlq_m_n (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u8.c -index f1ff9dd33b7..df2f38f9cd2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int32_t b, mve_pred16_t p) - { - return vrshlq_m_n_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int32_t b, mve_pred16_t p) - { - return vrshlq_m_n (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s16.c -index 57f343cd3b9..0cb1511f778 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrshlq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s32.c -index 2598b1719fd..52872e30d8d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrshlq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s8.c -index 6e4f1bdddf4..887f3fd8ef8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrshlq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u16.c -index d4d98913b75..9f55d180efb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrshlq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u32.c -index 5d60f1fe799..f52e9d474c3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrshlq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u8.c -index 913ba36c925..7241e3174c7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrshlq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s16.c -index 713c6a218b2..feceb6dae9f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshl.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32_t b) - { - return vrshlq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vrshl.s16" } } */ - -+/* -+**foo1: -+** ... -+** vrshl.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32_t b) - { - return vrshlq (a, b); - } - --/* { dg-final { scan-assembler "vrshl.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s32.c -index 18906fe44d1..4fe4e4fe209 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshl.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vrshlq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vrshl.s32" } } */ - -+/* -+**foo1: -+** ... -+** vrshl.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vrshlq (a, b); - } - --/* { dg-final { scan-assembler "vrshl.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s8.c -index d5b1286d943..fc8fd2d3bee 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshl.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int32_t b) - { - return vrshlq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vrshl.s8" } } */ - -+/* -+**foo1: -+** ... -+** vrshl.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int32_t b) - { - return vrshlq (a, b); - } - --/* { dg-final { scan-assembler "vrshl.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u16.c -index 49bb21663d7..7d3a77a1928 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshl.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32_t b) - { - return vrshlq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vrshl.u16" } } */ - -+/* -+**foo1: -+** ... -+** vrshl.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32_t b) - { - return vrshlq (a, b); - } - --/* { dg-final { scan-assembler "vrshl.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u32.c -index 8ed67395b42..e5d688a67c1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshl.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32_t b) - { - return vrshlq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vrshl.u32" } } */ - -+/* -+**foo1: -+** ... -+** vrshl.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32_t b) - { - return vrshlq (a, b); - } - --/* { dg-final { scan-assembler "vrshl.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u8.c -index ccc6a00b98a..9f594e9cbce 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshl.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int32_t b) - { - return vrshlq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vrshl.u8" } } */ - -+/* -+**foo1: -+** ... -+** vrshl.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int32_t b) - { - return vrshlq (a, b); - } - --/* { dg-final { scan-assembler "vrshl.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s16.c -index c28ad31c6f9..facb0c957a5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshl.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vrshlq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vrshl.s16" } } */ - -+/* -+**foo1: -+** ... -+** vrshl.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vrshlq (a, b); - } - --/* { dg-final { scan-assembler "vrshl.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s32.c -index 2e279b6fb0a..d30d987eeb0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshl.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vrshlq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vrshl.s32" } } */ - -+/* -+**foo1: -+** ... -+** vrshl.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vrshlq (a, b); - } - --/* { dg-final { scan-assembler "vrshl.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s8.c -index 4d18419d1bf..52d1f41e5fc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshl.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vrshlq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vrshl.s8" } } */ - -+/* -+**foo1: -+** ... -+** vrshl.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vrshlq (a, b); - } - --/* { dg-final { scan-assembler "vrshl.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u16.c -index e0a9ea9cebc..b729151774c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshl.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int16x8_t b) - { - return vrshlq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vrshl.u16" } } */ - -+/* -+**foo1: -+** ... -+** vrshl.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int16x8_t b) - { - return vrshlq (a, b); - } - --/* { dg-final { scan-assembler "vrshl.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u32.c -index 788a4b1b6fa..12b46421e69 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshl.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32x4_t b) - { - return vrshlq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vrshl.u32" } } */ - -+/* -+**foo1: -+** ... -+** vrshl.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32x4_t b) - { - return vrshlq (a, b); - } - --/* { dg-final { scan-assembler "vrshl.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u8.c -index d860e9cccb9..37b9194a6a7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshl.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int8x16_t b) - { - return vrshlq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vrshl.u8" } } */ - -+/* -+**foo1: -+** ... -+** vrshl.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int8x16_t b) - { - return vrshlq (a, b); - } - --/* { dg-final { scan-assembler "vrshl.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s16.c -index 800a1e8e48f..b813647839c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrshlq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrshlq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s32.c -index 921072a44c9..d06d0f93b10 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrshlq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrshlq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s8.c -index 217b257ed24..0d1d8858e54 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrshlq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrshlq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u16.c -index 5c0cad9ec89..ae050e4cda3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrshlq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vrshlq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u32.c -index 2754d20841c..00a2edc55d4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrshlq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vrshlq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u8.c -index 46dada44559..1172a62d0b5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrshlq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshlt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vrshlq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s16.c -index 9e7f22ccad9..e30cfe16fdf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrnbt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vrshrnbq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrnbt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrnbt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vrshrnbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrnbt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s32.c -index 6b6a98c3da4..acb89bd462a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrnbt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vrshrnbq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrnbt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrnbt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vrshrnbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrnbt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u16.c -index e54893d2abc..4d0c6048971 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrnbt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vrshrnbq_m_n_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrnbt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrnbt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vrshrnbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrnbt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u32.c -index ecb41a2c444..1b768a13061 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrnbt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vrshrnbq_m_n_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrnbt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrnbt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vrshrnbq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrnbt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_s16.c -index f09db27adee..6350e3c4cca 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshrnb.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b) - { - return vrshrnbq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnb.i16" } } */ - -+/* -+**foo1: -+** ... -+** vrshrnb.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b) - { - return vrshrnbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnb.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_s32.c -index 2bc4170b07f..8ae96d8a2b8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshrnb.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b) - { - return vrshrnbq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnb.i32" } } */ - -+/* -+**foo1: -+** ... -+** vrshrnb.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b) - { - return vrshrnbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnb.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_u16.c -index 990871f5b9e..2918cb05e43 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshrnb.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b) - { - return vrshrnbq_n_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnb.i16" } } */ - -+/* -+**foo1: -+** ... -+** vrshrnb.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b) - { - return vrshrnbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnb.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_u32.c -index 875fed28fe7..c615d8083d7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshrnb.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b) - { - return vrshrnbq_n_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnb.i32" } } */ - -+/* -+**foo1: -+** ... -+** vrshrnb.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b) - { - return vrshrnbq (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnb.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s16.c -index 72206c36fda..639f25ed719 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrntt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vrshrntq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrntt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrntt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b, mve_pred16_t p) - { - return vrshrntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrntt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s32.c -index e964af2e8b5..07a53e364f2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrntt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vrshrntq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrntt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrntt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b, mve_pred16_t p) - { - return vrshrntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrntt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u16.c -index ad98b7677f0..f00d62bcb7a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrntt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vrshrntq_m_n_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrntt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrntt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { - return vrshrntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrntt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u32.c -index adee8b28b88..bb809acfe6e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrntt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vrshrntq_m_n_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrntt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrntt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { - return vrshrntq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrntt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_s16.c -index 4c2f133b605..926a897d50e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshrnt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b) - { - return vrshrntq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vrshrnt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b) - { - return vrshrntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_s32.c -index 26508ba7961..7e931355751 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshrnt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b) - { - return vrshrntq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vrshrnt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b) - { - return vrshrntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_u16.c -index eea3d4974db..61636d301f7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshrnt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b) - { - return vrshrntq_n_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vrshrnt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b) - { - return vrshrntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_u32.c -index 49afdf0c61e..b82dad525f4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrntq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshrnt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b) - { - return vrshrntq_n_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vrshrnt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b) - { - return vrshrntq (a, b, 1); - } - --/* { dg-final { scan-assembler "vrshrnt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_s16.c -index ee48f8c2733..b1a2f813320 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { -- return vrshrq_m_n_s16 (inactive, a, 16, p); -+ return vrshrq_m_n_s16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { -- return vrshrq_m (inactive, a, 16, p); -+ return vrshrq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_s32.c -index 4330dcfaaa6..fb229273b86 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { -- return vrshrq_m_n_s32 (inactive, a, 32, p); -+ return vrshrq_m_n_s32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { -- return vrshrq_m (inactive, a, 32, p); -+ return vrshrq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_s8.c -index 4b35c597a13..b9136b8dd69 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { -- return vrshrq_m_n_s8 (inactive, a, 8, p); -+ return vrshrq_m_n_s8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { -- return vrshrq_m (inactive, a, 8, p); -+ return vrshrq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_u16.c -index 2e83c60ad95..9dbc3fed62a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { -- return vrshrq_m_n_u16 (inactive, a, 16, p); -+ return vrshrq_m_n_u16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { -- return vrshrq_m (inactive, a, 16, p); -+ return vrshrq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_u32.c -index 5d2a9d8f4f4..0e0cb10b476 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { -- return vrshrq_m_n_u32 (inactive, a, 32, p); -+ return vrshrq_m_n_u32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { -- return vrshrq_m (inactive, a, 32, p); -+ return vrshrq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_u8.c -index f5b43708689..010a7915c56 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_m_n_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { -- return vrshrq_m_n_u8 (inactive, a, 8, p); -+ return vrshrq_m_n_u8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { -- return vrshrq_m (inactive, a, 8, p); -+ return vrshrq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_s16.c -index 2cd934774ce..ff3d552bd78 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshr.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { -- return vrshrq_n_s16 (a, 16); -+ return vrshrq_n_s16 (a, 1); - } - --/* { dg-final { scan-assembler "vrshr.s16" } } */ - -+/* -+**foo1: -+** ... -+** vrshr.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { -- return vrshrq (a, 16); -+ return vrshrq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vrshr.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_s32.c -index 3cc21f2b277..db161f7d009 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshr.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { -- return vrshrq_n_s32 (a, 32); -+ return vrshrq_n_s32 (a, 1); - } - --/* { dg-final { scan-assembler "vrshr.s32" } } */ - -+/* -+**foo1: -+** ... -+** vrshr.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a) - { -- return vrshrq (a, 32); -+ return vrshrq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vrshr.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_s8.c -index 251d5324f5c..86a0294f8a8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshr.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { -- return vrshrq_n_s8 (a, 8); -+ return vrshrq_n_s8 (a, 1); - } - --/* { dg-final { scan-assembler "vrshr.s8" } } */ - -+/* -+**foo1: -+** ... -+** vrshr.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { -- return vrshrq (a, 8); -+ return vrshrq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vrshr.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_u16.c -index 6934597f844..897247fce6c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshr.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a) - { -- return vrshrq_n_u16 (a, 16); -+ return vrshrq_n_u16 (a, 1); - } - --/* { dg-final { scan-assembler "vrshr.u16" } } */ - -+/* -+**foo1: -+** ... -+** vrshr.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a) - { -- return vrshrq (a, 16); -+ return vrshrq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vrshr.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_u32.c -index 52b287b8f3b..e8f7f1c33e0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshr.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a) - { -- return vrshrq_n_u32 (a, 32); -+ return vrshrq_n_u32 (a, 1); - } - --/* { dg-final { scan-assembler "vrshr.u32" } } */ - -+/* -+**foo1: -+** ... -+** vrshr.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a) - { -- return vrshrq (a, 32); -+ return vrshrq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vrshr.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_u8.c -index ac595a9ac95..a22521b14ae 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_n_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vrshr.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a) - { -- return vrshrq_n_u8 (a, 8); -+ return vrshrq_n_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vrshr.u8" } } */ - -+/* -+**foo1: -+** ... -+** vrshr.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a) - { -- return vrshrq (a, 8); -+ return vrshrq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vrshr.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_s16.c -index 14b5c1884f4..37f364cfc39 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, mve_pred16_t p) - { -- return vrshrq_x_n_s16 (a, 16, p); -+ return vrshrq_x_n_s16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, mve_pred16_t p) - { -- return vrshrq_x (a, 16, p); -+ return vrshrq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_s32.c -index 846ddb96782..0da2fd75056 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, mve_pred16_t p) - { -- return vrshrq_x_n_s32 (a, 32, p); -+ return vrshrq_x_n_s32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, mve_pred16_t p) - { -- return vrshrq_x (a, 32, p); -+ return vrshrq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_s8.c -index 06f75e56db6..90c814b20c5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, mve_pred16_t p) - { -- return vrshrq_x_n_s8 (a, 8, p); -+ return vrshrq_x_n_s8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, mve_pred16_t p) - { -- return vrshrq_x (a, 8, p); -+ return vrshrq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_u16.c -index bc946497cfc..135b9e7e90f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, mve_pred16_t p) - { -- return vrshrq_x_n_u16 (a, 16, p); -+ return vrshrq_x_n_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, mve_pred16_t p) - { -- return vrshrq_x (a, 16, p); -+ return vrshrq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_u32.c -index 55002cd196d..dd656f49aa7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, mve_pred16_t p) - { -- return vrshrq_x_n_u32 (a, 32, p); -+ return vrshrq_x_n_u32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, mve_pred16_t p) - { -- return vrshrq_x (a, 32, p); -+ return vrshrq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_u8.c -index e3130657711..e41abc450a0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrq_x_n_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, mve_pred16_t p) - { -- return vrshrq_x_n_u8 (a, 8, p); -+ return vrshrq_x_n_u8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vrshrt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, mve_pred16_t p) - { -- return vrshrq_x (a, 8, p); -+ return vrshrq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vrshrt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_m_s32.c -index 21f4219faa3..dcbaef1a571 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_m_s32.c -@@ -1,23 +1,57 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsbcit.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned * carry_out, mve_pred16_t p) -+foo (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned *carry_out, mve_pred16_t p) - { - return vsbciq_m_s32 (inactive, a, b, carry_out, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsbcit.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsbcit.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned * carry_out, mve_pred16_t p) -+foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned *carry_out, mve_pred16_t p) - { - return vsbciq_m (inactive, a, b, carry_out, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsbcit.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c -index ef9eed92d33..08f67f665c1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c -@@ -1,23 +1,57 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsbcit.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned * carry_out, mve_pred16_t p) -+foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned *carry_out, mve_pred16_t p) - { - return vsbciq_m_u32 (inactive, a, b, carry_out, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsbcit.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsbcit.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned * carry_out, mve_pred16_t p) -+foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned *carry_out, mve_pred16_t p) - { - return vsbciq_m (inactive, a, b, carry_out, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsbcit.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_s32.c -index 2181a3a2879..803246c3235 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsbci.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, unsigned * carry_out) -+foo (int32x4_t a, int32x4_t b, unsigned *carry_out) - { - return vsbciq_s32 (a, b, carry_out); - } - --/* { dg-final { scan-assembler "vsbci.i32" } } */ - -+/* -+**foo1: -+** ... -+** vsbci.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, unsigned * carry_out) -+foo1 (int32x4_t a, int32x4_t b, unsigned *carry_out) - { -- return vsbciq_s32 (a, b, carry_out); -+ return vsbciq (a, b, carry_out); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsbci.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_u32.c -index df0487f3b88..22d2b4355bc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsbci.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t a, uint32x4_t b, unsigned * carry_out) -+foo (uint32x4_t a, uint32x4_t b, unsigned *carry_out) - { - return vsbciq_u32 (a, b, carry_out); - } - --/* { dg-final { scan-assembler "vsbci.i32" } } */ - -+/* -+**foo1: -+** ... -+** vsbci.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t a, uint32x4_t b, unsigned * carry_out) -+foo1 (uint32x4_t a, uint32x4_t b, unsigned *carry_out) - { -- return vsbciq_u32 (a, b, carry_out); -+ return vsbciq (a, b, carry_out); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsbci.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c -index 73be46a8459..0c62778d482 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c -@@ -1,23 +1,77 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsbct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned * carry, mve_pred16_t p) -+foo (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned *carry, mve_pred16_t p) - { -- return vsbcq_m_s32 (inactive, a, b, carry, p); -+ return vsbcq_m_s32 (inactive, a, b, carry, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsbct.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsbct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo1(int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned * carry, mve_pred16_t p) -+foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned *carry, mve_pred16_t p) - { -- return vsbcq_m (inactive, a, b, carry, p); -+ return vsbcq_m (inactive, a, b, carry, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsbct.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c -index 80cf70584e5..2532a23fac8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c -@@ -1,22 +1,77 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsbct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned * carry, mve_pred16_t p) -+foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned *carry, mve_pred16_t p) - { -- return vsbcq_m_u32 (inactive, a, b, carry, p); -+ return vsbcq_m_u32 (inactive, a, b, carry, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsbct.i32" } } */ -+ -+/* -+**foo1: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsbct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned * carry, mve_pred16_t p) -+foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned *carry, mve_pred16_t p) - { -- return vsbcq_m (inactive, a, b, carry, p); -+ return vsbcq_m (inactive, a, b, carry, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsbct.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_s32.c -index 23e42575bd7..5deff8c4018 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_s32.c -@@ -1,21 +1,69 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vsbc.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, int32x4_t b, unsigned * carry) -+foo (int32x4_t a, int32x4_t b, unsigned *carry) - { - return vsbcq_s32 (a, b, carry); - } - --/* { dg-final { scan-assembler "vsbc.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vsbc.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, int32x4_t b, unsigned * carry) -+foo1 (int32x4_t a, int32x4_t b, unsigned *carry) - { - return vsbcq (a, b, carry); - } - --/* { dg-final { scan-assembler "vsbc.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_u32.c -index d3aa66f6134..bd0ea2df127 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_u32.c -@@ -1,21 +1,69 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vsbc.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t a, uint32x4_t b, unsigned * carry) -+foo (uint32x4_t a, uint32x4_t b, unsigned *carry) - { - return vsbcq_u32 (a, b, carry); - } - --/* { dg-final { scan-assembler "vsbc.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** lsls (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29(?: @.*|) -+** ... -+** and (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #536870912(?: @.*|) -+** ... -+** orrs (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vsbc.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) -+** ... -+** ubfx (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t a, uint32x4_t b, unsigned * carry) -+foo1 (uint32x4_t a, uint32x4_t b, unsigned *carry) - { - return vsbcq (a, b, carry); - } - --/* { dg-final { scan-assembler "vsbc.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16-1.c -deleted file mode 100644 -index 608dd30788e..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16-1.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo (float16_t a, float16x8_t b) --{ -- return vsetq_lane (23.26, b, 0); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c -index e03e9620528..5b1731f7332 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c -@@ -1,15 +1,53 @@ --/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov.16 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16_t a, float16x8_t b) - { -- return vsetq_lane_f16 (a, b, 0); -+ return vsetq_lane_f16 (a, b, 1); -+} -+ -+ -+/* -+**foo1: -+** ... -+** vmov.16 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (float16_t a, float16x8_t b) -+{ -+ return vsetq_lane (a, b, 1); - } - --/* { dg-final { scan-assembler "vmov.16" } } */ -+/* -+**foo2: -+** ... -+** vmov.16 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t b) -+{ -+ return vsetq_lane (1.1, b, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif - -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32-1.c -deleted file mode 100644 -index c5f5db7f28d..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32-1.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo (float32_t a, float32x4_t b) --{ -- return vsetq_lane (23.34, b, 0); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32.c -index 2b9f1a7e627..34b403d0601 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32.c -@@ -1,15 +1,53 @@ --/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov.32 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32_t a, float32x4_t b) - { -- return vsetq_lane_f32 (a, b, 0); -+ return vsetq_lane_f32 (a, b, 1); -+} -+ -+ -+/* -+**foo1: -+** ... -+** vmov.32 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (float32_t a, float32x4_t b) -+{ -+ return vsetq_lane (a, b, 1); - } - --/* { dg-final { scan-assembler "vmov.32" } } */ -+/* -+**foo2: -+** ... -+** vmov.32 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t b) -+{ -+ return vsetq_lane (1.1, b, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif - -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16.c -index 92ad0dd16a8..458fd5e6f26 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16.c -@@ -1,15 +1,41 @@ --/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov.16 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16_t a, int16x8_t b) - { -- return vsetq_lane_s16 (a, b, 0); -+ return vsetq_lane_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vmov.16" } } */ - -+/* -+**foo1: -+** ... -+** vmov.16 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+int16x8_t -+foo1 (int16_t a, int16x8_t b) -+{ -+ return vsetq_lane (a, b, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32.c -index e60c8f26700..44672f6c264 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32.c -@@ -1,15 +1,41 @@ --/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov.32 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32_t a, int32x4_t b) - { -- return vsetq_lane_s32 (a, b, 0); -+ return vsetq_lane_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vmov.32" } } */ - -+/* -+**foo1: -+** ... -+** vmov.32 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+int32x4_t -+foo1 (int32_t a, int32x4_t b) -+{ -+ return vsetq_lane (a, b, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c -index 430df669f2a..62e8ee50929 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c -@@ -1,16 +1,41 @@ --/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ --/* { dg-require-effective-target arm_hard_ok } */ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-mfloat-abi=hard -O2" } */ -+/* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov d[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int64x2_t - foo (int64_t a, int64x2_t b) - { -- return vsetq_lane_s64 (a, b, 0); -+ return vsetq_lane_s64 (a, b, 1); - } - --/* { dg-final { scan-assembler {vmov\td0, r[1-9]*[0-9], r[1-9]*[0-9]} } } */ - -+/* -+**foo1: -+** ... -+** vmov d[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+int64x2_t -+foo1 (int64_t a, int64x2_t b) -+{ -+ return vsetq_lane (a, b, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8.c -index d8ccbb524fd..3a79ab1759b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8.c -@@ -1,15 +1,41 @@ --/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov.8 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8_t a, int8x16_t b) - { -- return vsetq_lane_s8 (a, b, 0); -+ return vsetq_lane_s8 (a, b, 1); - } - --/* { dg-final { scan-assembler "vmov.8" } } */ - -+/* -+**foo1: -+** ... -+** vmov.8 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+int8x16_t -+foo1 (int8_t a, int8x16_t b) -+{ -+ return vsetq_lane (a, b, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16.c -index 156a5d1de1b..8a42773e01f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16.c -@@ -1,15 +1,53 @@ --/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov.16 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16_t a, uint16x8_t b) - { -- return vsetq_lane_u16 (a, b, 0); -+ return vsetq_lane_u16 (a, b, 1); -+} -+ -+ -+/* -+**foo1: -+** ... -+** vmov.16 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo1 (uint16_t a, uint16x8_t b) -+{ -+ return vsetq_lane (a, b, 1); - } - --/* { dg-final { scan-assembler "vmov.16" } } */ -+/* -+**foo2: -+** ... -+** vmov.16 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t b) -+{ -+ return vsetq_lane (1, b, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif - -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32.c -index e9575483cc9..43778e6103d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32.c -@@ -1,15 +1,53 @@ --/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov.32 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32_t a, uint32x4_t b) - { -- return vsetq_lane_u32 (a, b, 0); -+ return vsetq_lane_u32 (a, b, 1); -+} -+ -+ -+/* -+**foo1: -+** ... -+** vmov.32 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo1 (uint32_t a, uint32x4_t b) -+{ -+ return vsetq_lane (a, b, 1); - } - --/* { dg-final { scan-assembler "vmov.32" } } */ -+/* -+**foo2: -+** ... -+** vmov.32 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t b) -+{ -+ return vsetq_lane (1, b, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif - -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c -index 0e040121cf0..c75bfa448f0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c -@@ -1,16 +1,53 @@ --/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ --/* { dg-require-effective-target arm_hard_ok } */ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ --/* { dg-additional-options "-mfloat-abi=hard -O2" } */ -+/* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov d[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint64x2_t - foo (uint64_t a, uint64x2_t b) - { -- return vsetq_lane_u64 (a, b, 0); -+ return vsetq_lane_u64 (a, b, 1); -+} -+ -+ -+/* -+**foo1: -+** ... -+** vmov d[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint64x2_t -+foo1 (uint64_t a, uint64x2_t b) -+{ -+ return vsetq_lane (a, b, 1); - } - --/* { dg-final { scan-assembler {vmov\td0, r[1-9]*[0-9], r[1-9]*[0-9]} } } */ -+/* -+**foo2: -+** ... -+** vmov d[0-9]+, (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint64x2_t -+foo2 (uint64x2_t b) -+{ -+ return vsetq_lane (1, b, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif - -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8.c -index 668b3fea953..5fb20161259 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8.c -@@ -1,15 +1,53 @@ --/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmov.8 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8_t a, uint8x16_t b) - { -- return vsetq_lane_u8 (a, b, 0); -+ return vsetq_lane_u8 (a, b, 1); -+} -+ -+ -+/* -+**foo1: -+** ... -+** vmov.8 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo1 (uint8_t a, uint8x16_t b) -+{ -+ return vsetq_lane (a, b, 1); - } - --/* { dg-final { scan-assembler "vmov.8" } } */ -+/* -+**foo2: -+** ... -+** vmov.8 q[0-9]+\[1\], (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t b) -+{ -+ return vsetq_lane (1, b, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif - -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s16.c -index c4c77f2559c..c603a89117f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlct q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, uint32_t * b, mve_pred16_t p) -+foo (int16x8_t a, uint32_t *b, mve_pred16_t p) - { -- return vshlcq_m_s16 (a, b, 32, p); -+ return vshlcq_m_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlct" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlct q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, uint32_t * b, mve_pred16_t p) -+foo1 (int16x8_t a, uint32_t *b, mve_pred16_t p) - { -- return vshlcq_m (a, b, 32, p); -+ return vshlcq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlct" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s32.c -index 20cfd09c82d..46e75033ae6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlct q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, uint32_t * b, mve_pred16_t p) -+foo (int32x4_t a, uint32_t *b, mve_pred16_t p) - { - return vshlcq_m_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlct" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlct q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, uint32_t * b, mve_pred16_t p) -+foo1 (int32x4_t a, uint32_t *b, mve_pred16_t p) - { - return vshlcq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlct" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s8.c -index 33dde10e4a8..868de5df80b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlct q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, uint32_t * b, mve_pred16_t p) -+foo (int8x16_t a, uint32_t *b, mve_pred16_t p) - { - return vshlcq_m_s8 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlct" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlct q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, uint32_t * b, mve_pred16_t p) -+foo1 (int8x16_t a, uint32_t *b, mve_pred16_t p) - { - return vshlcq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlct" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_u16.c -index 2bf69f0c465..a1e1c3f9bc4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlct q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16x8_t a, uint32_t * b, mve_pred16_t p) -+foo (uint16x8_t a, uint32_t *b, mve_pred16_t p) - { - return vshlcq_m_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlct" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlct q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint16x8_t a, uint32_t * b, mve_pred16_t p) -+foo1 (uint16x8_t a, uint32_t *b, mve_pred16_t p) - { - return vshlcq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlct" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_u32.c -index e6650302ea7..bcb0bebd969 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlct q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t a, uint32_t * b, mve_pred16_t p) -+foo (uint32x4_t a, uint32_t *b, mve_pred16_t p) - { - return vshlcq_m_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlct" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlct q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t a, uint32_t * b, mve_pred16_t p) -+foo1 (uint32x4_t a, uint32_t *b, mve_pred16_t p) - { - return vshlcq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlct" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_u8.c -index 95857f09371..98936447451 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlct q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint8x16_t a, uint32_t * b, mve_pred16_t p) -+foo (uint8x16_t a, uint32_t *b, mve_pred16_t p) - { - return vshlcq_m_u8 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlct" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlct q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint8x16_t a, uint32_t * b, mve_pred16_t p) -+foo1 (uint8x16_t a, uint32_t *b, mve_pred16_t p) - { - return vshlcq_m (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlct" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_s16.c -index ecd4fce5de3..e6c5069af21 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshlc q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t --foo (int16x8_t a, uint32_t * b) -+foo (int16x8_t a, uint32_t *b) - { - return vshlcq_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshlc" } } */ - -+/* -+**foo1: -+** ... -+** vshlc q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t --foo1 (int16x8_t a, uint32_t * b) -+foo1 (int16x8_t a, uint32_t *b) - { - return vshlcq (a, b, 1); - } - --/* { dg-final { scan-assembler "vshlc" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_s32.c -index 2956b93138e..2c17845fd7e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshlc q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t --foo (int32x4_t a, uint32_t * b) -+foo (int32x4_t a, uint32_t *b) - { - return vshlcq_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshlc" } } */ - -+/* -+**foo1: -+** ... -+** vshlc q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t --foo1 (int32x4_t a, uint32_t * b) -+foo1 (int32x4_t a, uint32_t *b) - { - return vshlcq (a, b, 1); - } - --/* { dg-final { scan-assembler "vshlc" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_s8.c -index cc22b1b1bd9..ab55f3a29ba 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshlc q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t --foo (int8x16_t a, uint32_t * b) -+foo (int8x16_t a, uint32_t *b) - { - return vshlcq_s8 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshlc" } } */ - -+/* -+**foo1: -+** ... -+** vshlc q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t --foo1 (int8x16_t a, uint32_t * b) -+foo1 (int8x16_t a, uint32_t *b) - { - return vshlcq (a, b, 1); - } - --/* { dg-final { scan-assembler "vshlc" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_u16.c -index bbf6c531573..e1862be0249 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshlc q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo (uint16x8_t a, uint32_t * b) -+foo (uint16x8_t a, uint32_t *b) - { - return vshlcq_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshlc" } } */ - -+/* -+**foo1: -+** ... -+** vshlc q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t --foo1 (uint16x8_t a, uint32_t * b) -+foo1 (uint16x8_t a, uint32_t *b) - { - return vshlcq (a, b, 1); - } - --/* { dg-final { scan-assembler "vshlc" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_u32.c -index c42d9c10afe..dc1030fbedf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshlc q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo (uint32x4_t a, uint32_t * b) -+foo (uint32x4_t a, uint32_t *b) - { - return vshlcq_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshlc" } } */ - -+/* -+**foo1: -+** ... -+** vshlc q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t --foo1 (uint32x4_t a, uint32_t * b) -+foo1 (uint32x4_t a, uint32_t *b) - { - return vshlcq (a, b, 1); - } - --/* { dg-final { scan-assembler "vshlc" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_u8.c -index f24b22797c2..cb24651a294 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshlc q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo (uint8x16_t a, uint32_t * b) -+foo (uint8x16_t a, uint32_t *b) - { - return vshlcq_u8 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshlc" } } */ - -+/* -+**foo1: -+** ... -+** vshlc q[0-9]+, (?:ip|fp|r[0-9]+), #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t --foo1 (uint8x16_t a, uint32_t * b) -+foo1 (uint8x16_t a, uint32_t *b) - { - return vshlcq (a, b, 1); - } - --/* { dg-final { scan-assembler "vshlc" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_s16.c -index 6d6c4b2d737..1ee641d8d68 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int16x8_t a, mve_pred16_t p) - { - return vshllbq_m_n_s16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshllbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int16x8_t a, mve_pred16_t p) - { - return vshllbq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshllbt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_s8.c -index 5d7b9623f1a..93a06cb2676 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int8x16_t a, mve_pred16_t p) - { - return vshllbq_m_n_s8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshllbt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int8x16_t a, mve_pred16_t p) - { - return vshllbq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshllbt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_u16.c -index 3697775ea0f..67039260cd5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vshllbq_m_n_u16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshllbt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vshllbq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshllbt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_u8.c -index 39a10e21b0b..f02293bb874 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_m_n_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vshllbq_m_n_u8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshllbt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vshllbq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshllbt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_s16.c -index 7d3a4d811cb..906f7fb75d1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshllb.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a) - { - return vshllbq_n_s16 (a, 1); - } - --/* { dg-final { scan-assembler "vshllb.s16" } } */ - -+/* -+**foo1: -+** ... -+** vshllb.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a) - { - return vshllbq (a, 1); - } - --/* { dg-final { scan-assembler "vshllb.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_s8.c -index 63b406978c1..f63ff4b7556 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshllb.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int8x16_t a) - { - return vshllbq_n_s8 (a, 1); - } - --/* { dg-final { scan-assembler "vshllb.s8" } } */ - -+/* -+**foo1: -+** ... -+** vshllb.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int8x16_t a) - { - return vshllbq (a, 1); - } - --/* { dg-final { scan-assembler "vshllb.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_u16.c -index 9306d244645..883d2979f32 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshllb.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a) - { - return vshllbq_n_u16 (a, 1); - } - --/* { dg-final { scan-assembler "vshllb.u16" } } */ - -+/* -+**foo1: -+** ... -+** vshllb.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a) - { - return vshllbq (a, 1); - } - --/* { dg-final { scan-assembler "vshllb.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_u8.c -index 0b24160216e..bbdec7ba321 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_n_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshllb.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a) - { - return vshllbq_n_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vshllb.u8" } } */ - -+/* -+**foo1: -+** ... -+** vshllb.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a) - { - return vshllbq (a, 1); - } - --/* { dg-final { scan-assembler "vshllb.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_s16.c -index 689fc749b00..239c536f4a4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_s16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a, mve_pred16_t p) - { -- return vshllbq_x_n_s16 (a, 1, p); -+ return vshllbq_x_n_s16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshllbt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+int32x4_t -+foo1 (int16x8_t a, mve_pred16_t p) -+{ -+ return vshllbq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_s8.c -index 82f684d1cd5..9371b523c3f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_s8.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int8x16_t a, mve_pred16_t p) - { -- return vshllbq_x_n_s8 (a, 1, p); -+ return vshllbq_x_n_s8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshllbt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+int16x8_t -+foo1 (int8x16_t a, mve_pred16_t p) -+{ -+ return vshllbq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_u16.c -index 5c51a4e4011..72f9aed343e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_u16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a, mve_pred16_t p) - { -- return vshllbq_x_n_u16 (a, 1, p); -+ return vshllbq_x_n_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshllbt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo1 (uint16x8_t a, mve_pred16_t p) -+{ -+ return vshllbq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_u8.c -index 5a713befb27..bd209428300 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshllbq_x_n_u8.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a, mve_pred16_t p) - { -- return vshllbq_x_n_u8 (a, 1, p); -+ return vshllbq_x_n_u8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshllbt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshllbt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo1 (uint8x16_t a, mve_pred16_t p) -+{ -+ return vshllbq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_s16.c -index 8153a570a9a..80035011527 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int16x8_t a, mve_pred16_t p) - { - return vshlltq_m_n_s16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlltt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int16x8_t a, mve_pred16_t p) - { - return vshlltq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlltt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_s8.c -index 3f47337c9b6..19e2f3c7469 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int8x16_t a, mve_pred16_t p) - { - return vshlltq_m_n_s8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlltt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int8x16_t a, mve_pred16_t p) - { - return vshlltq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlltt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_u16.c -index f5af1b31087..46af8731146 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vshlltq_m_n_u16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlltt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vshlltq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlltt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_u8.c -index 92154d25387..ed7814c39dc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_m_n_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vshlltq_m_n_u8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlltt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vshlltq_m (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlltt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_s16.c -index ced2aa64217..b2987300406 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshllt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a) - { - return vshlltq_n_s16 (a, 1); - } - --/* { dg-final { scan-assembler "vshllt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vshllt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int16x8_t a) - { - return vshlltq (a, 1); - } - --/* { dg-final { scan-assembler "vshllt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_s8.c -index 9fc0cd7ced9..c5b84aa5e2e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshllt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int8x16_t a) - { - return vshlltq_n_s8 (a, 1); - } - --/* { dg-final { scan-assembler "vshllt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vshllt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int8x16_t a) - { - return vshlltq (a, 1); - } - --/* { dg-final { scan-assembler "vshllt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_u16.c -index 47b948e2468..358a5b4a3e7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshllt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a) - { - return vshlltq_n_u16 (a, 1); - } - --/* { dg-final { scan-assembler "vshllt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vshllt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint16x8_t a) - { - return vshlltq (a, 1); - } - --/* { dg-final { scan-assembler "vshllt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_u8.c -index eac7422a1f1..223649215a6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_n_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshllt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a) - { - return vshlltq_n_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vshllt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vshllt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint8x16_t a) - { - return vshlltq (a, 1); - } - --/* { dg-final { scan-assembler "vshllt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_s16.c -index 0e9e789c1e0..12d55e49aed 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_s16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int16x8_t a, mve_pred16_t p) - { -- return vshlltq_x_n_s16 (a, 1, p); -+ return vshlltq_x_n_s16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlltt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+int32x4_t -+foo1 (int16x8_t a, mve_pred16_t p) -+{ -+ return vshlltq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_s8.c -index 67966bed12c..dfad54a5eae 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_s8.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int8x16_t a, mve_pred16_t p) - { -- return vshlltq_x_n_s8 (a, 1, p); -+ return vshlltq_x_n_s8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlltt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+int16x8_t -+foo1 (int8x16_t a, mve_pred16_t p) -+{ -+ return vshlltq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_u16.c -index dedc795797e..e9077d26918 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_u16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint16x8_t a, mve_pred16_t p) - { -- return vshlltq_x_n_u16 (a, 1, p); -+ return vshlltq_x_n_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlltt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo1 (uint16x8_t a, mve_pred16_t p) -+{ -+ return vshlltq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_u8.c -index a93c69d8d98..1d4d2795fa9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlltq_x_n_u8.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint8x16_t a, mve_pred16_t p) - { -- return vshlltq_x_n_u8 (a, 1, p); -+ return vshlltq_x_n_u8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlltt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlltt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo1 (uint8x16_t a, mve_pred16_t p) -+{ -+ return vshlltq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_s16.c -index 6c0342da0cc..754d412c81d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vshlq_m_n_s16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { - return vshlq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_s32.c -index 0e472801de5..5805f90a105 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vshlq_m_n_s32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { - return vshlq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_s8.c -index 0f9efacc749..b69b52cf099 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vshlq_m_n_s8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { - return vshlq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_u16.c -index 0c4d9e9b7b5..152844bf318 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vshlq_m_n_u16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { - return vshlq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_u32.c -index cf247f879aa..9acfd9b8c6e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { - return vshlq_m_n_u32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { - return vshlq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_u8.c -index 64bda13216d..d2e7fe59f3f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_n_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vshlq_m_n_u8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { - return vshlq_m_n (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_s16.c -index abd747e9008..ce72e8c408b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32_t b, mve_pred16_t p) - { - return vshlq_m_r_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32_t b, mve_pred16_t p) - { - return vshlq_m_r (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_s32.c -index 001a8d170fc..219c7d2ca73 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vshlq_m_r_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b, mve_pred16_t p) - { - return vshlq_m_r (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_s8.c -index 890dd359e65..22fdee6bd6c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int32_t b, mve_pred16_t p) - { - return vshlq_m_r_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int32_t b, mve_pred16_t p) - { - return vshlq_m_r (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_u16.c -index 91574c5db26..25eca63907d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32_t b, mve_pred16_t p) - { - return vshlq_m_r_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32_t b, mve_pred16_t p) - { - return vshlq_m_r (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_u32.c -index f6ec8797a83..9d24eda6e60 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32_t b, mve_pred16_t p) - { - return vshlq_m_r_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32_t b, mve_pred16_t p) - { - return vshlq_m_r (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_u8.c -index 37f0f488801..2421e0b72ec 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_r_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int32_t b, mve_pred16_t p) - { - return vshlq_m_r_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int32_t b, mve_pred16_t p) - { - return vshlq_m_r (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_s16.c -index 759379c9fc5..c28996ad2cc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vshlq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_s32.c -index 4878f0b0e4f..ca4801df9ba 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vshlq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_s8.c -index f4ed7f5aaeb..782eedbc774 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vshlq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_u16.c -index 99ae7ed9a53..941a6cc3578 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vshlq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_u32.c -index 7094ba2ccd7..75e10801ae7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vshlq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_u8.c -index e7c481a3b8c..dbabcd55900 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_m_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vshlq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vshlq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_s16.c -index e24bb9acd75..83dee27238a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { - return vshlq_n_s16 (a, 1); - } - --/* { dg-final { scan-assembler "vshl.s16" } } */ - -+/* -+**foo1: -+** ... -+** vshl.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { - return vshlq_n (a, 1); - } - --/* { dg-final { scan-assembler "vshl.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_s32.c -index f537879249f..6b390c8b333 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { -- return vshlq_n_s32 (a, 16); -+ return vshlq_n_s32 (a, 1); - } - --/* { dg-final { scan-assembler "vshl.s32" } } */ - -+/* -+**foo1: -+** ... -+** vshl.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a) - { -- return vshlq_n (a, 16); -+ return vshlq_n (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshl.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_s8.c -index ba6ddf3f8a1..e4fd7121bff 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { - return vshlq_n_s8 (a, 1); - } - --/* { dg-final { scan-assembler "vshl.s8" } } */ - -+/* -+**foo1: -+** ... -+** vshl.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { - return vshlq_n (a, 1); - } - --/* { dg-final { scan-assembler "vshl.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_u16.c -index 730c7af40c6..6c37303a9fe 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a) - { -- return vshlq_n_u16 (a, 11); -+ return vshlq_n_u16 (a, 1); - } - --/* { dg-final { scan-assembler "vshl.u16" } } */ - -+/* -+**foo1: -+** ... -+** vshl.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a) - { -- return vshlq_n (a, 11); -+ return vshlq_n (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshl.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_u32.c -index 36caf5a9032..408f756408f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a) - { - return vshlq_n_u32 (a, 1); - } - --/* { dg-final { scan-assembler "vshl.u32" } } */ - -+/* -+**foo1: -+** ... -+** vshl.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a) - { - return vshlq_n (a, 1); - } - --/* { dg-final { scan-assembler "vshl.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_u8.c -index a5ba9805d9b..5ecdddccadf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_n_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a) - { - return vshlq_n_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vshl.u8" } } */ - -+/* -+**foo1: -+** ... -+** vshl.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a) - { - return vshlq_n (a, 1); - } - --/* { dg-final { scan-assembler "vshl.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_s16.c -index b6d3e858d7c..f9a8257729e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32_t b) - { - return vshlq_r_s16 (a, b); - } - --/* { dg-final { scan-assembler "vshl.s16" } } */ - -+/* -+**foo1: -+** ... -+** vshl.s16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32_t b) - { - return vshlq_r (a, b); - } - --/* { dg-final { scan-assembler "vshl.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_s32.c -index e04e2a7bcf3..f4f8e363059 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vshlq_r_s32 (a, b); - } - --/* { dg-final { scan-assembler "vshl.s32" } } */ - -+/* -+**foo1: -+** ... -+** vshl.s32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vshlq_r (a, b); - } - --/* { dg-final { scan-assembler "vshl.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_s8.c -index d5e54c0a79a..c14d012a1e2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int32_t b) - { - return vshlq_r_s8 (a, b); - } - --/* { dg-final { scan-assembler "vshl.s8" } } */ - -+/* -+**foo1: -+** ... -+** vshl.s8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int32_t b) - { - return vshlq_r (a, b); - } - --/* { dg-final { scan-assembler "vshl.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_u16.c -index 813bea0575d..71634680deb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int32_t b) - { - return vshlq_r_u16 (a, b); - } - --/* { dg-final { scan-assembler "vshl.u16" } } */ - -+/* -+**foo1: -+** ... -+** vshl.u16 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int32_t b) - { - return vshlq_r (a, b); - } - --/* { dg-final { scan-assembler "vshl.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_u32.c -index 84a61e47ca7..0d47f85bc82 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32_t b) - { - return vshlq_r_u32 (a, b); - } - --/* { dg-final { scan-assembler "vshl.u32" } } */ - -+/* -+**foo1: -+** ... -+** vshl.u32 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32_t b) - { - return vshlq_r (a, b); - } - --/* { dg-final { scan-assembler "vshl.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_u8.c -index 01f9a7d8f19..2d64908eeca 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_r_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int32_t b) - { - return vshlq_r_u8 (a, b); - } - --/* { dg-final { scan-assembler "vshl.u8" } } */ - -+/* -+**foo1: -+** ... -+** vshl.u8 q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int32_t b) - { - return vshlq_r (a, b); - } - --/* { dg-final { scan-assembler "vshl.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_s16.c -index 5d3e1e5fdf9..6158fafcdb5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vshlq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vshl.s16" } } */ - -+/* -+**foo1: -+** ... -+** vshl.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vshlq (a, b); - } - --/* { dg-final { scan-assembler "vshl.s16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_s32.c -index cecd050888f..b0b18470dea 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vshlq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vshl.s32" } } */ - -+/* -+**foo1: -+** ... -+** vshl.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vshlq (a, b); - } - --/* { dg-final { scan-assembler "vshl.s32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_s8.c -index d44610f4f5b..70b2d806131 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vshlq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vshl.s8" } } */ - -+/* -+**foo1: -+** ... -+** vshl.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vshlq (a, b); - } - --/* { dg-final { scan-assembler "vshl.s8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_u16.c -index 210fa905d3d..3ab782fa734 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int16x8_t b) - { - return vshlq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vshl.u16" } } */ - -+/* -+**foo1: -+** ... -+** vshl.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, int16x8_t b) - { - return vshlq (a, b); - } - --/* { dg-final { scan-assembler "vshl.u16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_u32.c -index 8fc59620016..f104235caee 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32x4_t b) - { - return vshlq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vshl.u32" } } */ - -+/* -+**foo1: -+** ... -+** vshl.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, int32x4_t b) - { - return vshlq (a, b); - } - --/* { dg-final { scan-assembler "vshl.u32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_u8.c -index 8332d501640..1a93abfefb1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshl.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int8x16_t b) - { - return vshlq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vshl.u8" } } */ - -+/* -+**foo1: -+** ... -+** vshl.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, int8x16_t b) - { - return vshlq (a, b); - } - --/* { dg-final { scan-assembler "vshl.u8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_s16.c -index 4bdbc848bb7..5ac725187e8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_s16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, mve_pred16_t p) - { -- return vshlq_x_n_s16 (a, 1, p); -+ return vshlq_x_n_s16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+int16x8_t -+foo1 (int16x8_t a, mve_pred16_t p) -+{ -+ return vshlq_x_n (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_s32.c -index 7648d2e2c66..e5e3ab03f01 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_s32.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, mve_pred16_t p) - { -- return vshlq_x_n_s32 (a, 1, p); -+ return vshlq_x_n_s32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+int32x4_t -+foo1 (int32x4_t a, mve_pred16_t p) -+{ -+ return vshlq_x_n (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_s8.c -index 4b303e92e81..7618d83b85b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_s8.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, mve_pred16_t p) - { -- return vshlq_x_n_s8 (a, 1, p); -+ return vshlq_x_n_s8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+int8x16_t -+foo1 (int8x16_t a, mve_pred16_t p) -+{ -+ return vshlq_x_n (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_u16.c -index a2b6ac2d4c0..b4f937ae8f4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_u16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, mve_pred16_t p) - { -- return vshlq_x_n_u16 (a, 1, p); -+ return vshlq_x_n_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo1 (uint16x8_t a, mve_pred16_t p) -+{ -+ return vshlq_x_n (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_u32.c -index 59aa9dbe182..e42270ba293 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_u32.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, mve_pred16_t p) - { -- return vshlq_x_n_u32 (a, 1, p); -+ return vshlq_x_n_u32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo1 (uint32x4_t a, mve_pred16_t p) -+{ -+ return vshlq_x_n (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_u8.c -index 64069bb1728..7e01f8b2ab5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_n_u8.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, mve_pred16_t p) - { -- return vshlq_x_n_u8 (a, 1, p); -+ return vshlq_x_n_u8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo1 (uint8x16_t a, mve_pred16_t p) -+{ -+ return vshlq_x_n (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_s16.c -index 61a643d64bd..a6eeff654e3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_s16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { -- return vshlq_x_s16 (a, b, p); -+ return vshlq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+int16x8_t -+foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) -+{ -+ return vshlq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_s32.c -index 71424456f7d..cc3c434708a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_s32.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { -- return vshlq_x_s32 (a, b, p); -+ return vshlq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+int32x4_t -+foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) -+{ -+ return vshlq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_s8.c -index 0d4825a03ad..430a3ab43ed 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_s8.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { -- return vshlq_x_s8 (a, b, p); -+ return vshlq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.s8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+int8x16_t -+foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) -+{ -+ return vshlq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_u16.c -index 7ce18722444..9f5d0903588 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_u16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, int16x8_t b, mve_pred16_t p) - { -- return vshlq_x_u16 (a, b, p); -+ return vshlq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo1 (uint16x8_t a, int16x8_t b, mve_pred16_t p) -+{ -+ return vshlq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_u32.c -index fe02cc694a2..32d729f6954 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_u32.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, int32x4_t b, mve_pred16_t p) - { -- return vshlq_x_u32 (a, b, p); -+ return vshlq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo1 (uint32x4_t a, int32x4_t b, mve_pred16_t p) -+{ -+ return vshlq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_u8.c -index 9611b268ca5..45e72c9dffa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlq_x_u8.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, int8x16_t b, mve_pred16_t p) - { -- return vshlq_x_u8 (a, b, p); -+ return vshlq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshlt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshlt.u8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo1 (uint8x16_t a, int8x16_t b, mve_pred16_t p) -+{ -+ return vshlq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s16.c -index d069cb0db44..ab37f2605e0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrnbt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b, mve_pred16_t p) - { -- return vshrnbq_m_n_s16 (a, b, 8, p); -+ return vshrnbq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrnbt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrnbt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b, mve_pred16_t p) - { -- return vshrnbq_m (a, b, 8, p); -+ return vshrnbq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrnbt.i16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s32.c -index 50a450f5b52..9fd9f8a7804 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrnbt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b, mve_pred16_t p) - { -- return vshrnbq_m_n_s32 (a, b, 16, p); -+ return vshrnbq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrnbt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrnbt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b, mve_pred16_t p) - { -- return vshrnbq_m (a, b, 16, p); -+ return vshrnbq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrnbt.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u16.c -index e5762145e64..e9408eeb1bf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrnbt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { -- return vshrnbq_m_n_u16 (a, b, 8, p); -+ return vshrnbq_m_n_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrnbt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrnbt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { -- return vshrnbq_m (a, b, 8, p); -+ return vshrnbq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrnbt.i16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u32.c -index 88da8e6f341..69699fd15ab 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrnbt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { -- return vshrnbq_m_n_u32 (a, b, 16, p); -+ return vshrnbq_m_n_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrnbt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrnbt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { -- return vshrnbq_m (a, b, 16, p); -+ return vshrnbq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrnbt.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_s16.c -index 7fcd9e479dc..0320d690627 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshrnb.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b) - { -- return vshrnbq_n_s16 (a, b, 8); -+ return vshrnbq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshrnb.i16" } } */ - -+/* -+**foo1: -+** ... -+** vshrnb.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b) - { -- return vshrnbq (a, b, 8); -+ return vshrnbq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshrnb.i16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_s32.c -index 38d4fdfc05f..aa7b107f7f9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshrnb.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b) - { -- return vshrnbq_n_s32 (a, b, 16); -+ return vshrnbq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshrnb.i32" } } */ - -+/* -+**foo1: -+** ... -+** vshrnb.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b) - { -- return vshrnbq (a, b, 16); -+ return vshrnbq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshrnb.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_u16.c -index ff341a9f202..4f896469eb4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshrnb.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b) - { -- return vshrnbq_n_u16 (a, b, 8); -+ return vshrnbq_n_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshrnb.i16" } } */ - -+/* -+**foo1: -+** ... -+** vshrnb.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b) - { -- return vshrnbq (a, b, 8); -+ return vshrnbq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshrnb.i16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_u32.c -index b891c036d36..d3d22978542 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrnbq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshrnb.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b) - { -- return vshrnbq_n_u32 (a, b, 16); -+ return vshrnbq_n_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshrnb.i32" } } */ - -+/* -+**foo1: -+** ... -+** vshrnb.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b) - { -- return vshrnbq (a, b, 16); -+ return vshrnbq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshrnb.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_s16.c -index 30535470961..77f39ac10c7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrntt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b, mve_pred16_t p) - { -- return vshrntq_m_n_s16 (a, b, 8, p); -+ return vshrntq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrntt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrntt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b, mve_pred16_t p) - { -- return vshrntq_m (a, b, 8, p); -+ return vshrntq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrntt.i16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_s32.c -index 2d52f5b6bb1..462d5f446f2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrntt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b, mve_pred16_t p) - { -- return vshrntq_m_n_s32 (a, b, 16, p); -+ return vshrntq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrntt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrntt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b, mve_pred16_t p) - { -- return vshrntq_m (a, b, 16, p); -+ return vshrntq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrntt.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_u16.c -index ed774e0b31a..0328cc3ef93 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrntt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { -- return vshrntq_m_n_u16 (a, b, 8, p); -+ return vshrntq_m_n_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrntt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrntt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b, mve_pred16_t p) - { -- return vshrntq_m (a, b, 8, p); -+ return vshrntq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrntt.i16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_u32.c -index e592e96a5f9..d4882dc2d6d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrntt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { -- return vshrntq_m_n_u32 (a, b, 16, p); -+ return vshrntq_m_n_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrntt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrntt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b, mve_pred16_t p) - { -- return vshrntq_m (a, b, 16, p); -+ return vshrntq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrntt.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_s16.c -index ddd9d5c0507..c9016ac124f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshrnt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int16x8_t b) - { -- return vshrntq_n_s16 (a, b, 8); -+ return vshrntq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshrnt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vshrnt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int16x8_t b) - { -- return vshrntq (a, b, 8); -+ return vshrntq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshrnt.i16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_s32.c -index e35dbf07fac..6150f28d872 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshrnt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int32x4_t b) - { -- return vshrntq_n_s32 (a, b, 16); -+ return vshrntq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshrnt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vshrnt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int32x4_t b) - { -- return vshrntq (a, b, 16); -+ return vshrntq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshrnt.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_u16.c -index 58a6eea561a..75be307feaa 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshrnt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint16x8_t b) - { -- return vshrntq_n_u16 (a, b, 8); -+ return vshrntq_n_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshrnt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vshrnt.i16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint16x8_t b) - { -- return vshrntq (a, b, 8); -+ return vshrntq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshrnt.i16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_u32.c -index ec0c10007ff..9b9e534e3d2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrntq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshrnt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint32x4_t b) - { -- return vshrntq_n_u32 (a, b, 16); -+ return vshrntq_n_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vshrnt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vshrnt.i32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint32x4_t b) - { -- return vshrntq (a, b, 16); -+ return vshrntq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshrnt.i32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_s16.c -index 00f236c6d74..ed1833b8673 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { -- return vshrq_m_n_s16 (inactive, a, 16, p); -+ return vshrq_m_n_s16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, mve_pred16_t p) - { -- return vshrq_m (inactive, a, 16, p); -+ return vshrq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_s32.c -index 1d1be501e16..880cd9e3545 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { -- return vshrq_m_n_s32 (inactive, a, 32, p); -+ return vshrq_m_n_s32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, mve_pred16_t p) - { -- return vshrq_m (inactive, a, 32, p); -+ return vshrq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_s8.c -index 7410ba9c8e9..53fc84857b7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { -- return vshrq_m_n_s8 (inactive, a, 8, p); -+ return vshrq_m_n_s8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, mve_pred16_t p) - { -- return vshrq_m (inactive, a, 8, p); -+ return vshrq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_u16.c -index 4b0dd59eefa..c3e311454b6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { -- return vshrq_m_n_u16 (inactive, a, 16, p); -+ return vshrq_m_n_u16 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) - { -- return vshrq_m (inactive, a, 16, p); -+ return vshrq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_u32.c -index 47ccc1b7499..6c0471f0120 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { -- return vshrq_m_n_u32 (inactive, a, 32, p); -+ return vshrq_m_n_u32 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) - { -- return vshrq_m (inactive, a, 32, p); -+ return vshrq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_u8.c -index 44f96027a04..5621608a2eb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_m_n_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { -- return vshrq_m_n_u8 (inactive, a, 8, p); -+ return vshrq_m_n_u8 (inactive, a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) - { -- return vshrq_m (inactive, a, 8, p); -+ return vshrq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_s16.c -index 051fa4a14a1..59a589b21a1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshr.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a) - { -- return vshrq_n_s16 (a, 16); -+ return vshrq_n_s16 (a, 1); - } - --/* { dg-final { scan-assembler "vshr.s16" } } */ - -+/* -+**foo1: -+** ... -+** vshr.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a) - { -- return vshrq (a, 16); -+ return vshrq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshr.s16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_s32.c -index 65a0b2e6224..1666b6657f2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshr.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a) - { -- return vshrq_n_s32 (a, 32); -+ return vshrq_n_s32 (a, 1); - } - --/* { dg-final { scan-assembler "vshr.s32" } } */ - -+/* -+**foo1: -+** ... -+** vshr.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a) - { -- return vshrq (a, 32); -+ return vshrq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshr.s32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_s8.c -index c5adcc1a465..1ce29185bcf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshr.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a) - { -- return vshrq_n_s8 (a, 8); -+ return vshrq_n_s8 (a, 1); - } - --/* { dg-final { scan-assembler "vshr.s8" } } */ - -+/* -+**foo1: -+** ... -+** vshr.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a) - { -- return vshrq (a, 8); -+ return vshrq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshr.s8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_u16.c -index 1b68fafea8a..c2dbe6e5041 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshr.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a) - { -- return vshrq_n_u16 (a, 16); -+ return vshrq_n_u16 (a, 1); - } - --/* { dg-final { scan-assembler "vshr.u16" } } */ - -+/* -+**foo1: -+** ... -+** vshr.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a) - { -- return vshrq (a, 16); -+ return vshrq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshr.u16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_u32.c -index 8b798b793c0..15d231c217f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshr.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a) - { -- return vshrq_n_u32 (a, 32); -+ return vshrq_n_u32 (a, 1); - } - --/* { dg-final { scan-assembler "vshr.u32" } } */ - -+/* -+**foo1: -+** ... -+** vshr.u32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a) - { -- return vshrq (a, 32); -+ return vshrq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshr.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_u8.c -index 14cdf5917e2..19924e0fcdb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_n_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vshr.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a) - { -- return vshrq_n_u8 (a, 8); -+ return vshrq_n_u8 (a, 1); - } - --/* { dg-final { scan-assembler "vshr.u8" } } */ - -+/* -+**foo1: -+** ... -+** vshr.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a) - { -- return vshrq (a, 8); -+ return vshrq (a, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vshr.u8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_s16.c -index 4652693d75c..fc26fd8fd3b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_s16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, mve_pred16_t p) - { -- return vshrq_x_n_s16 (a, 16, p); -+ return vshrq_x_n_s16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.s16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.s16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+int16x8_t -+foo1 (int16x8_t a, mve_pred16_t p) -+{ -+ return vshrq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_s32.c -index 43fa28a1f8d..bc9ae54faad 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_s32.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, mve_pred16_t p) - { -- return vshrq_x_n_s32 (a, 32, p); -+ return vshrq_x_n_s32 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.s32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.s32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+int32x4_t -+foo1 (int32x4_t a, mve_pred16_t p) -+{ -+ return vshrq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_s8.c -index 042bf488284..391ced24079 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_s8.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, mve_pred16_t p) - { -- return vshrq_x_n_s8 (a, 8, p); -+ return vshrq_x_n_s8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.s8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.s8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+int8x16_t -+foo1 (int8x16_t a, mve_pred16_t p) -+{ -+ return vshrq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_u16.c -index d627565fe84..eddb977fa83 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_u16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, mve_pred16_t p) - { -- return vshrq_x_n_u16 (a, 16, p); -+ return vshrq_x_n_u16 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.u16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.u16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo1 (uint16x8_t a, mve_pred16_t p) -+{ -+ return vshrq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_u8.c -index 0f26e7b9efc..6867668d1ce 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vshrq_x_n_u8.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, mve_pred16_t p) - { -- return vshrq_x_n_u8 (a, 8, p); -+ return vshrq_x_n_u8 (a, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vshrt.u8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vshrt.u8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo1 (uint8x16_t a, mve_pred16_t p) -+{ -+ return vshrq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_s16.c -index 49d342e7c17..23b346b1cab 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vslit.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { -- return vsliq_m_n_s16 (a, b, 15, p); -+ return vsliq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vslit.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vslit.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { -- return vsliq_m (a, b, 15, p); -+ return vsliq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vslit.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_s32.c -index f0f7619dd0a..d640e1f8df4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vslit.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { -- return vsliq_m_n_s32 (a, b, 31, p); -+ return vsliq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vslit.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vslit.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { -- return vsliq_m (a, b, 31, p); -+ return vsliq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vslit.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_s8.c -index 12d295e70f6..14b1afa1d01 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vslit.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { -- return vsliq_m_n_s8 (a, b, 7, p); -+ return vsliq_m_n_s8 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vslit.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vslit.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { -- return vsliq_m (a, b, 7, p); -+ return vsliq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vslit.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_u16.c -index 78cdbdf3950..521abbf4694 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_u16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vslit.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { -- return vsliq_m_n_u16 (a, b, 15, p); -+ return vsliq_m_n_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vslit.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vslit.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { -- return vsliq_m (a, b, 15, p); -+ return vsliq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vslit.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_u32.c -index 62e9cfd9f31..951204a31a0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_u32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vslit.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { -- return vsliq_m_n_u32 (a, b, 31, p); -+ return vsliq_m_n_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vslit.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vslit.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { -- return vsliq_m (a, b, 31, p); -+ return vsliq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vslit.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_u8.c -index f86fea32a90..8b893a8c4d2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_m_n_u8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vslit.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { -- return vsliq_m_n_u8 (a, b, 7, p); -+ return vsliq_m_n_u8 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vslit.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vslit.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { -- return vsliq_m (a, b, 7, p); -+ return vsliq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vslit.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_s16.c -index 2c5f82bb317..a6c86764eab 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsli.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { -- return vsliq_n_s16 (a, b, 15); -+ return vsliq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vsli.16" } } */ - -+/* -+**foo1: -+** ... -+** vsli.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { -- return vsliq (a, b, 15); -+ return vsliq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsli.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_s32.c -index 0738fd61203..301cdd463b5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsli.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { -- return vsliq_n_s32 (a, b, 31); -+ return vsliq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vsli.32" } } */ - -+/* -+**foo1: -+** ... -+** vsli.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { -- return vsliq (a, b, 31); -+ return vsliq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsli.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_s8.c -index 25f2f761c3c..2a26f7f444b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsli.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { -- return vsliq_n_s8 (a, b, 7); -+ return vsliq_n_s8 (a, b, 1); - } - --/* { dg-final { scan-assembler "vsli.8" } } */ - -+/* -+**foo1: -+** ... -+** vsli.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { -- return vsliq (a, b, 7); -+ return vsliq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsli.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_u16.c -index 25bbcd8f3fa..b71572a232e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsli.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { -- return vsliq_n_u16 (a, b, 15); -+ return vsliq_n_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vsli.16" } } */ - -+/* -+**foo1: -+** ... -+** vsli.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { -- return vsliq (a, b, 15); -+ return vsliq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsli.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_u32.c -index 970e069cabf..ecafb61b487 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsli.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { -- return vsliq_n_u32 (a, b, 31); -+ return vsliq_n_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vsli.32" } } */ - -+/* -+**foo1: -+** ... -+** vsli.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { -- return vsliq (a, b, 31); -+ return vsliq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsli.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_u8.c -index c24e354a957..e20ec7e030e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsliq_n_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsli.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { -- return vsliq_n_u8 (a, b, 7); -+ return vsliq_n_u8 (a, b, 1); - } - --/* { dg-final { scan-assembler "vsli.8" } } */ - -+/* -+**foo1: -+** ... -+** vsli.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { -- return vsliq (a, b, 7); -+ return vsliq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsli.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_s16.c -index 799232a8dc1..086f5f86fc1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsrit.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { -- return vsriq_m_n_s16 (a, b, 4, p); -+ return vsriq_m_n_s16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsrit.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsrit.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) - { -- return vsriq_m (a, b, 4, p); -+ return vsriq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_s32.c -index 7e019782c88..90267f67e54 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsrit.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { -- return vsriq_m_n_s32 (a, b, 2, p); -+ return vsriq_m_n_s32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsrit.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsrit.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) - { -- return vsriq_m (a, b, 2, p); -+ return vsriq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_s8.c -index 8fa3e757f6d..6c7552905b4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsrit.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { -- return vsriq_m_n_s8 (a, b, 4, p); -+ return vsriq_m_n_s8 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsrit.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsrit.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) - { -- return vsriq_m (a, b, 4, p); -+ return vsriq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_u16.c -index 5e2c4a3deb3..624732b0c91 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsrit.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { -- return vsriq_m_n_u16 (a, b, 4, p); -+ return vsriq_m_n_u16 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsrit.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsrit.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { -- return vsriq_m (a, b, 4, p); -+ return vsriq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_u32.c -index 368115e27b2..48abe8b9c0d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsrit.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { -- return vsriq_m_n_u32 (a, b, 4, p); -+ return vsriq_m_n_u32 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsrit.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsrit.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { -- return vsriq_m (a, b, 4, p); -+ return vsriq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_u8.c -index 54db7d78836..b1f9ecd0c9f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_m_n_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsrit.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { -- return vsriq_m_n_u8 (a, b, 4, p); -+ return vsriq_m_n_u8 (a, b, 1, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsrit.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsrit.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { -- return vsriq_m (a, b, 4, p); -+ return vsriq_m (a, b, 1, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vpst" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_s16.c -index 75f57ae76a7..2f8bde64ff5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsri.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { -- return vsriq_n_s16 (a, b, 4); -+ return vsriq_n_s16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vsri.16" } } */ - -+/* -+**foo1: -+** ... -+** vsri.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { -- return vsriq (a, b, 4); -+ return vsriq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsri.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_s32.c -index 46d9ead1e9a..a95e6dae8f7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsri.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { -- return vsriq_n_s32 (a, b, 4); -+ return vsriq_n_s32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vsri.32" } } */ - -+/* -+**foo1: -+** ... -+** vsri.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { -- return vsriq (a, b, 4); -+ return vsriq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsri.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_s8.c -index 3dcc5a34f90..7726a7ed934 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsri.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { -- return vsriq_n_s8 (a, b, 4); -+ return vsriq_n_s8 (a, b, 1); - } - --/* { dg-final { scan-assembler "vsri.8" } } */ - -+/* -+**foo1: -+** ... -+** vsri.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { -- return vsriq (a, b, 4); -+ return vsriq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsri.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_u16.c -index ff6c4f0c277..4d8d5930b49 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsri.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { -- return vsriq_n_u16 (a, b, 4); -+ return vsriq_n_u16 (a, b, 1); - } - --/* { dg-final { scan-assembler "vsri.16" } } */ - -+/* -+**foo1: -+** ... -+** vsri.16 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { -- return vsriq (a, b, 4); -+ return vsriq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsri.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_u32.c -index f6b79b26235..83a6b13ef40 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsri.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { -- return vsriq_n_u32 (a, b, 4); -+ return vsriq_n_u32 (a, b, 1); - } - --/* { dg-final { scan-assembler "vsri.32" } } */ - -+/* -+**foo1: -+** ... -+** vsri.32 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { -- return vsriq (a, b, 4); -+ return vsriq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsri.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_u8.c -index 4c56b3ab00d..0bd9ac5ddfd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsriq_n_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsri.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { -- return vsriq_n_u8 (a, b, 4); -+ return vsriq_n_u8 (a, b, 1); - } - --/* { dg-final { scan-assembler "vsri.8" } } */ - -+/* -+**foo1: -+** ... -+** vsri.8 q[0-9]+, q[0-9]+, #[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { -- return vsriq (a, b, 4); -+ return vsriq (a, b, 1); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vsri.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_f16.c -index 312b7464f17..1fa02f00f53 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_f16.c -@@ -1,25 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - --void --foo (float16_t * addr, float16x8_t value) --{ -- vst1q_f16 (addr, value); --} -+#ifdef __cplusplus -+extern "C" { -+#endif - -+/* -+**foo: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (float16_t * addr, float16x8_t value) -+foo (float16_t *base, float16x8_t value) - { -- vst1q (addr, value); -+ return vst1q_f16 (base, value); - } - --/* { dg-final { scan-assembler-times "vstrh.16" 2 } } */ - -+/* -+**foo1: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo2 (float16_t a, float16x8_t x) -+foo1 (float16_t *base, float16x8_t value) - { -- vst1q (&a, x); -+ return vst1q (base, value); - } -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_f32.c -index a6ae1cef2d4..67cc3ae3b47 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (float32_t * addr, float32x4_t value) -+foo (float32_t *base, float32x4_t value) - { -- vst1q_f32 (addr, value); -+ return vst1q_f32 (base, value); - } - --/* { dg-final { scan-assembler "vstrw.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (float32_t * addr, float32x4_t value) -+foo1 (float32_t *base, float32x4_t value) - { -- vst1q (addr, value); -+ return vst1q (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_f16.c -index f6db22d481a..06b2bd3910d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_f16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (float16_t * addr, float16x8_t value, mve_pred16_t p) -+foo (float16_t *base, float16x8_t value, mve_pred16_t p) - { -- vst1q_p_f16 (addr, value, p); -+ return vst1q_p_f16 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrht.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (float16_t * addr, float16x8_t value, mve_pred16_t p) -+foo1 (float16_t *base, float16x8_t value, mve_pred16_t p) - { -- vst1q_p (addr, value, p); -+ return vst1q_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_f32.c -index 17e7f9c5dfd..e492a705ea0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_f32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (float32_t * addr, float32x4_t value, mve_pred16_t p) -+foo (float32_t *base, float32x4_t value, mve_pred16_t p) - { -- vst1q_p_f32 (addr, value, p); -+ return vst1q_p_f32 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (float32_t * addr, float32x4_t value, mve_pred16_t p) -+foo1 (float32_t *base, float32x4_t value, mve_pred16_t p) - { -- vst1q_p (addr, value, p); -+ return vst1q_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_s16.c -index b142fc3b021..7b76d1d7687 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * addr, int16x8_t value, mve_pred16_t p) -+foo (int16_t *base, int16x8_t value, mve_pred16_t p) - { -- vst1q_p_s16 (addr, value, p); -+ return vst1q_p_s16 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrht.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * addr, int16x8_t value, mve_pred16_t p) -+foo1 (int16_t *base, int16x8_t value, mve_pred16_t p) - { -- vst1q_p (addr, value, p); -+ return vst1q_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_s32.c -index 6334462e230..4ad32a68a96 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int32_t * addr, int32x4_t value, mve_pred16_t p) -+foo (int32_t *base, int32x4_t value, mve_pred16_t p) - { -- vst1q_p_s32 (addr, value, p); -+ return vst1q_p_s32 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int32_t * addr, int32x4_t value, mve_pred16_t p) -+foo1 (int32_t *base, int32x4_t value, mve_pred16_t p) - { -- vst1q_p (addr, value, p); -+ return vst1q_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_s8.c -index 1f3f0343820..2425b9cec00 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_s8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * addr, int8x16_t value, mve_pred16_t p) -+foo (int8_t *base, int8x16_t value, mve_pred16_t p) - { -- vst1q_p_s8 (addr, value, p); -+ return vst1q_p_s8 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * addr, int8x16_t value, mve_pred16_t p) -+foo1 (int8_t *base, int8x16_t value, mve_pred16_t p) - { -- vst1q_p (addr, value, p); -+ return vst1q_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_u16.c -index 331cd34cdce..c0065ef6ff5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_u16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * addr, uint16x8_t value, mve_pred16_t p) -+foo (uint16_t *base, uint16x8_t value, mve_pred16_t p) - { -- vst1q_p_u16 (addr, value, p); -+ return vst1q_p_u16 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrht.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * addr, uint16x8_t value, mve_pred16_t p) -+foo1 (uint16_t *base, uint16x8_t value, mve_pred16_t p) - { -- vst1q_p (addr, value, p); -+ return vst1q_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_u32.c -index 27836c32451..c41c4184b9b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint32_t * addr, uint32x4_t value, mve_pred16_t p) -+foo (uint32_t *base, uint32x4_t value, mve_pred16_t p) - { -- vst1q_p_u32 (addr, value, p); -+ return vst1q_p_u32 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint32_t * addr, uint32x4_t value, mve_pred16_t p) -+foo1 (uint32_t *base, uint32x4_t value, mve_pred16_t p) - { -- vst1q_p (addr, value, p); -+ return vst1q_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_u8.c -index bfbc542dc35..1cd3a781357 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_p_u8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * addr, uint8x16_t value, mve_pred16_t p) -+foo (uint8_t *base, uint8x16_t value, mve_pred16_t p) - { -- vst1q_p_u8 (addr, value, p); -+ return vst1q_p_u8 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * addr, uint8x16_t value, mve_pred16_t p) -+foo1 (uint8_t *base, uint8x16_t value, mve_pred16_t p) - { -- vst1q_p (addr, value, p); -+ return vst1q_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_s16.c -index cd14e2c408f..052959b2083 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_s16.c -@@ -1,25 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - --void --foo (int16_t * addr, int16x8_t value) --{ -- vst1q_s16 (addr, value); --} -+#ifdef __cplusplus -+extern "C" { -+#endif - -+/* -+**foo: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * addr, int16x8_t value) -+foo (int16_t *base, int16x8_t value) - { -- vst1q (addr, value); -+ return vst1q_s16 (base, value); - } - --/* { dg-final { scan-assembler-times "vstrh.16" 2 } } */ - -+/* -+**foo1: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo2 (int16_t a, int16x8_t x) -+foo1 (int16_t *base, int16x8_t value) - { -- vst1q (&a, x); -+ return vst1q (base, value); - } -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_s32.c -index e07e8a30f9d..444ad07f4ef 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int32_t * addr, int32x4_t value) -+foo (int32_t *base, int32x4_t value) - { -- vst1q_s32 (addr, value); -+ return vst1q_s32 (base, value); - } - --/* { dg-final { scan-assembler "vstrw.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int32_t * addr, int32x4_t value) -+foo1 (int32_t *base, int32x4_t value) - { -- vst1q (addr, value); -+ return vst1q (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_s8.c -index 0004c80963e..684ff0aca5b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_s8.c -@@ -1,25 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - --void --foo (int8_t * addr, int8x16_t value) --{ -- vst1q_s8 (addr, value); --} -+#ifdef __cplusplus -+extern "C" { -+#endif - -+/* -+**foo: -+** ... -+** vstrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * addr, int8x16_t value) -+foo (int8_t *base, int8x16_t value) - { -- vst1q (addr, value); -+ return vst1q_s8 (base, value); - } - --/* { dg-final { scan-assembler-times "vstrb.8" 2 } } */ - -+/* -+**foo1: -+** ... -+** vstrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo2 (int8_t a, int8x16_t x) -+foo1 (int8_t *base, int8x16_t value) - { -- vst1q (&a, x); -+ return vst1q (base, value); - } -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_u16.c -index 248e7ce82b0..1fea2de1e76 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_u16.c -@@ -1,25 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - --void --foo (uint16_t * addr, uint16x8_t value) --{ -- vst1q_u16 (addr, value); --} -+#ifdef __cplusplus -+extern "C" { -+#endif - -+/* -+**foo: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * addr, uint16x8_t value) -+foo (uint16_t *base, uint16x8_t value) - { -- vst1q (addr, value); -+ return vst1q_u16 (base, value); - } - --/* { dg-final { scan-assembler-times "vstrh.16" 2 } } */ - -+/* -+**foo1: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo2 (uint16_t a, uint16x8_t x) -+foo1 (uint16_t *base, uint16x8_t value) - { -- vst1q (&a, x); -+ return vst1q (base, value); - } -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_u32.c -index d1fdf8897b5..64c43c59d47 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint32_t * addr, uint32x4_t value) -+foo (uint32_t *base, uint32x4_t value) - { -- vst1q_u32 (addr, value); -+ return vst1q_u32 (base, value); - } - --/* { dg-final { scan-assembler "vstrw.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint32_t * addr, uint32x4_t value) -+foo1 (uint32_t *base, uint32x4_t value) - { -- vst1q (addr, value); -+ return vst1q (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_u8.c -index f8b48a69903..5517611bba6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst1q_u8.c -@@ -1,25 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - --void --foo (uint8_t * addr, uint8x16_t value) --{ -- vst1q_u8 (addr, value); --} -+#ifdef __cplusplus -+extern "C" { -+#endif - -+/* -+**foo: -+** ... -+** vstrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * addr, uint8x16_t value) -+foo (uint8_t *base, uint8x16_t value) - { -- vst1q (addr, value); -+ return vst1q_u8 (base, value); - } - --/* { dg-final { scan-assembler-times "vstrb.8" 2 } } */ - -+/* -+**foo1: -+** ... -+** vstrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo2 (uint8_t a, uint8x16_t x) -+foo1 (uint8_t *base, uint8x16_t value) - { -- vst1q (&a, x); -+ return vst1q (base, value); - } -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_f16.c -index 64650e26bcb..5180667658e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_f16.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst20.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (float16_t * addr, float16x8x2_t value) -+foo (float16_t *addr, float16x8x2_t value) - { -- vst2q_f16 (addr, value); -+ return vst2q_f16 (addr, value); - } - --/* { dg-final { scan-assembler "vst20.16" } } */ --/* { dg-final { scan-assembler "vst21.16" } } */ - -+/* -+**foo1: -+** ... -+** vst20.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (float16_t * addr, float16x8x2_t value) -+foo1 (float16_t *addr, float16x8x2_t value) - { -- vst2q (addr, value); -+ return vst2q (addr, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vst20.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_f32.c -index 8840afb867d..3e6f5b0ed75 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_f32.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst20.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (float32_t * addr, float32x4x2_t value) -+foo (float32_t *addr, float32x4x2_t value) - { -- vst2q_f32 (addr, value); -+ return vst2q_f32 (addr, value); - } - --/* { dg-final { scan-assembler "vst20.32" } } */ --/* { dg-final { scan-assembler "vst21.32" } } */ - -+/* -+**foo1: -+** ... -+** vst20.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (float32_t * addr, float32x4x2_t value) -+foo1 (float32_t *addr, float32x4x2_t value) - { -- vst2q (addr, value); -+ return vst2q (addr, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vst20.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_s16.c -index 15182c5eee0..1c939317779 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_s16.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst20.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * addr, int16x8x2_t value) -+foo (int16_t *addr, int16x8x2_t value) - { -- vst2q_s16 (addr, value); -+ return vst2q_s16 (addr, value); - } - --/* { dg-final { scan-assembler "vst20.16" } } */ --/* { dg-final { scan-assembler "vst21.16" } } */ - -+/* -+**foo1: -+** ... -+** vst20.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * addr, int16x8x2_t value) -+foo1 (int16_t *addr, int16x8x2_t value) - { -- vst2q (addr, value); -+ return vst2q (addr, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vst20.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_s32.c -index 11c92463ae4..28c8e078942 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_s32.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst20.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int32_t * addr, int32x4x2_t value) -+foo (int32_t *addr, int32x4x2_t value) - { -- vst2q_s32 (addr, value); -+ return vst2q_s32 (addr, value); - } - --/* { dg-final { scan-assembler "vst20.32" } } */ --/* { dg-final { scan-assembler "vst21.32" } } */ - -+/* -+**foo1: -+** ... -+** vst20.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int32_t * addr, int32x4x2_t value) -+foo1 (int32_t *addr, int32x4x2_t value) - { -- vst2q (addr, value); -+ return vst2q (addr, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vst20.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_s8.c -index 90257ae5dae..e882c01bd63 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_s8.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst20.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * addr, int8x16x2_t value) -+foo (int8_t *addr, int8x16x2_t value) - { -- vst2q_s8 (addr, value); -+ return vst2q_s8 (addr, value); - } - --/* { dg-final { scan-assembler "vst20.8" } } */ --/* { dg-final { scan-assembler "vst21.8" } } */ - -+/* -+**foo1: -+** ... -+** vst20.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * addr, int8x16x2_t value) -+foo1 (int8_t *addr, int8x16x2_t value) - { -- vst2q (addr, value); -+ return vst2q (addr, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vst20.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_u16.c -index a8a7c49757a..0cfbd6b9902 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_u16.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst20.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * addr, uint16x8x2_t value) -+foo (uint16_t *addr, uint16x8x2_t value) - { -- vst2q_u16 (addr, value); -+ return vst2q_u16 (addr, value); - } - --/* { dg-final { scan-assembler "vst20.16" } } */ --/* { dg-final { scan-assembler "vst21.16" } } */ - -+/* -+**foo1: -+** ... -+** vst20.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.16 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * addr, uint16x8x2_t value) -+foo1 (uint16_t *addr, uint16x8x2_t value) - { -- vst2q (addr, value); -+ return vst2q (addr, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vst20.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_u32.c -index b5d78180995..ea46a5969d0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_u32.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst20.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint32_t * addr, uint32x4x2_t value) -+foo (uint32_t *addr, uint32x4x2_t value) - { -- vst2q_u32 (addr, value); -+ return vst2q_u32 (addr, value); - } - --/* { dg-final { scan-assembler "vst20.32" } } */ --/* { dg-final { scan-assembler "vst21.32" } } */ - -+/* -+**foo1: -+** ... -+** vst20.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.32 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint32_t * addr, uint32x4x2_t value) -+foo1 (uint32_t *addr, uint32x4x2_t value) - { -- vst2q (addr, value); -+ return vst2q (addr, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vst20.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_u8.c -index 4e7d6fea7ed..895c2ccf425 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst2q_u8.c -@@ -1,22 +1,45 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst20.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * addr, uint8x16x2_t value) -+foo (uint8_t *addr, uint8x16x2_t value) - { -- vst2q_u8 (addr, value); -+ return vst2q_u8 (addr, value); - } - --/* { dg-final { scan-assembler "vst20.8" } } */ --/* { dg-final { scan-assembler "vst21.8" } } */ - -+/* -+**foo1: -+** ... -+** vst20.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+** vst21.8 {q[0-9]+, q[0-9]+}, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * addr, uint8x16x2_t value) -+foo1 (uint8_t *addr, uint8x16x2_t value) - { -- vst2q (addr, value); -+ return vst2q (addr, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vst20.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_f16.c -index 0da66894e2c..94066089f58 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_f16.c -@@ -1,37 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo (float16_t * addr, float16x8x4_t value) -+foo (float16_t *addr, float16x8x4_t value) - { -- vst4q_f16 (addr, value); -+ return vst4q_f16 (addr, value); - } - --/* { dg-final { scan-assembler "vst40.16" } } */ --/* { dg-final { scan-assembler "vst41.16" } } */ --/* { dg-final { scan-assembler "vst42.16" } } */ --/* { dg-final { scan-assembler "vst43.16" } } */ - -+/* -+**foo1: -+** ... -+** vst40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo1 (float16_t * addr, float16x8x4_t value) -+foo1 (float16_t *addr, float16x8x4_t value) - { -- vst4q (addr, value); -+ return vst4q (addr, value); - } - --/* { dg-final { scan-assembler "vst40.16" } } */ --/* { dg-final { scan-assembler "vst41.16" } } */ --/* { dg-final { scan-assembler "vst42.16" } } */ --/* { dg-final { scan-assembler "vst43.16" } } */ -- --void --foo2 (float16_t * addr, float16x8x4_t value) --{ -- vst4q_f16 (addr, value); -- addr += 32; -- vst4q_f16 (addr, value); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler {vst43.16\s\{.*\}, \[.*\]!} } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_f32.c -index c1614bd10fc..0150ba7ca56 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_f32.c -@@ -1,37 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo (float32_t * addr, float32x4x4_t value) -+foo (float32_t *addr, float32x4x4_t value) - { -- vst4q_f32 (addr, value); -+ return vst4q_f32 (addr, value); - } - --/* { dg-final { scan-assembler "vst40.32" } } */ --/* { dg-final { scan-assembler "vst41.32" } } */ --/* { dg-final { scan-assembler "vst42.32" } } */ --/* { dg-final { scan-assembler "vst43.32" } } */ - -+/* -+**foo1: -+** ... -+** vst40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo1 (float32_t * addr, float32x4x4_t value) -+foo1 (float32_t *addr, float32x4x4_t value) - { -- vst4q (addr, value); -+ return vst4q (addr, value); - } - --/* { dg-final { scan-assembler "vst40.32" } } */ --/* { dg-final { scan-assembler "vst41.32" } } */ --/* { dg-final { scan-assembler "vst42.32" } } */ --/* { dg-final { scan-assembler "vst43.32" } } */ -- --void --foo2 (float32_t * addr, float32x4x4_t value) --{ -- vst4q_f32 (addr, value); -- addr += 16; -- vst4q_f32 (addr, value); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler {vst43.32\s\{.*\}, \[.*\]!} } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_s16.c -index e1250449bee..8c9df15b3c7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_s16.c -@@ -1,37 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo (int16_t * addr, int16x8x4_t value) -+foo (int16_t *addr, int16x8x4_t value) - { -- vst4q_s16 (addr, value); -+ return vst4q_s16 (addr, value); - } - --/* { dg-final { scan-assembler "vst40.16" } } */ --/* { dg-final { scan-assembler "vst41.16" } } */ --/* { dg-final { scan-assembler "vst42.16" } } */ --/* { dg-final { scan-assembler "vst43.16" } } */ - -+/* -+**foo1: -+** ... -+** vst40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo1 (int16_t * addr, int16x8x4_t value) -+foo1 (int16_t *addr, int16x8x4_t value) - { -- vst4q (addr, value); -+ return vst4q (addr, value); - } - --/* { dg-final { scan-assembler "vst40.16" } } */ --/* { dg-final { scan-assembler "vst41.16" } } */ --/* { dg-final { scan-assembler "vst42.16" } } */ --/* { dg-final { scan-assembler "vst43.16" } } */ -- --void --foo2 (int16_t * addr, int16x8x4_t value) --{ -- vst4q_s16 (addr, value); -- addr += 32; -- vst4q_s16 (addr, value); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler {vst43.16\s\{.*\}, \[.*\]!} } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_s32.c -index e6e1272744e..1a1a9797360 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_s32.c -@@ -1,37 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo (int32_t * addr, int32x4x4_t value) -+foo (int32_t *addr, int32x4x4_t value) - { -- vst4q_s32 (addr, value); -+ return vst4q_s32 (addr, value); - } - --/* { dg-final { scan-assembler "vst40.32" } } */ --/* { dg-final { scan-assembler "vst41.32" } } */ --/* { dg-final { scan-assembler "vst42.32" } } */ --/* { dg-final { scan-assembler "vst43.32" } } */ - -+/* -+**foo1: -+** ... -+** vst40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo1 (int32_t * addr, int32x4x4_t value) -+foo1 (int32_t *addr, int32x4x4_t value) - { -- vst4q (addr, value); -+ return vst4q (addr, value); - } - --/* { dg-final { scan-assembler "vst40.32" } } */ --/* { dg-final { scan-assembler "vst41.32" } } */ --/* { dg-final { scan-assembler "vst42.32" } } */ --/* { dg-final { scan-assembler "vst43.32" } } */ -- --void --foo2 (int32_t * addr, int32x4x4_t value) --{ -- vst4q_s32 (addr, value); -- addr += 16; -- vst4q_s32 (addr, value); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler {vst43.32\s\{.*\}, \[.*\]!} } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_s8.c -index 16eb488ff99..d23032a73bc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_s8.c -@@ -1,37 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst40.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo (int8_t * addr, int8x16x4_t value) -+foo (int8_t *addr, int8x16x4_t value) - { -- vst4q_s8 (addr, value); -+ return vst4q_s8 (addr, value); - } - --/* { dg-final { scan-assembler "vst40.8" } } */ --/* { dg-final { scan-assembler "vst41.8" } } */ --/* { dg-final { scan-assembler "vst42.8" } } */ --/* { dg-final { scan-assembler "vst43.8" } } */ - -+/* -+**foo1: -+** ... -+** vst40.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo1 (int8_t * addr, int8x16x4_t value) -+foo1 (int8_t *addr, int8x16x4_t value) - { -- vst4q (addr, value); -+ return vst4q (addr, value); - } - --/* { dg-final { scan-assembler "vst40.8" } } */ --/* { dg-final { scan-assembler "vst41.8" } } */ --/* { dg-final { scan-assembler "vst42.8" } } */ --/* { dg-final { scan-assembler "vst43.8" } } */ -- --void --foo2 (int8_t * addr, int8x16x4_t value) --{ -- vst4q_s8 (addr, value); -- addr += 16*4; -- vst4q_s8 (addr, value); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler {vst43.8\s\{.*\}, \[.*\]!} } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_u16.c -index afd60306d0d..76cc4311e1b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_u16.c -@@ -1,37 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo (uint16_t * addr, uint16x8x4_t value) -+foo (uint16_t *addr, uint16x8x4_t value) - { -- vst4q_u16 (addr, value); -+ return vst4q_u16 (addr, value); - } - --/* { dg-final { scan-assembler "vst40.16" } } */ --/* { dg-final { scan-assembler "vst41.16" } } */ --/* { dg-final { scan-assembler "vst42.16" } } */ --/* { dg-final { scan-assembler "vst43.16" } } */ - -+/* -+**foo1: -+** ... -+** vst40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo1 (uint16_t * addr, uint16x8x4_t value) -+foo1 (uint16_t *addr, uint16x8x4_t value) - { -- vst4q (addr, value); -+ return vst4q (addr, value); - } - --/* { dg-final { scan-assembler "vst40.16" } } */ --/* { dg-final { scan-assembler "vst41.16" } } */ --/* { dg-final { scan-assembler "vst42.16" } } */ --/* { dg-final { scan-assembler "vst43.16" } } */ -- --void --foo2 (uint16_t * addr, uint16x8x4_t value) --{ -- vst4q_u16 (addr, value); -- addr += 32; -- vst4q_u16 (addr, value); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler {vst43.16\s\{.*\}, \[.*\]!} } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_u32.c -index 755dd689dff..e5f62858eee 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_u32.c -@@ -1,37 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo (uint32_t * addr, uint32x4x4_t value) -+foo (uint32_t *addr, uint32x4x4_t value) - { -- vst4q_u32 (addr, value); -+ return vst4q_u32 (addr, value); - } - --/* { dg-final { scan-assembler "vst40.32" } } */ --/* { dg-final { scan-assembler "vst41.32" } } */ --/* { dg-final { scan-assembler "vst42.32" } } */ --/* { dg-final { scan-assembler "vst43.32" } } */ - -+/* -+**foo1: -+** ... -+** vst40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo1 (uint32_t * addr, uint32x4x4_t value) -+foo1 (uint32_t *addr, uint32x4x4_t value) - { -- vst4q (addr, value); -+ return vst4q (addr, value); - } - --/* { dg-final { scan-assembler "vst40.32" } } */ --/* { dg-final { scan-assembler "vst41.32" } } */ --/* { dg-final { scan-assembler "vst42.32" } } */ --/* { dg-final { scan-assembler "vst43.32" } } */ -- --void --foo2 (uint32_t * addr, uint32x4x4_t value) --{ -- vst4q_u32 (addr, value); -- addr += 16; -- vst4q_u32 (addr, value); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler {vst43.32\s\{.*\}, \[.*\]!} } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_u8.c -index 0b28451df55..923cd0d3b10 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vst4q_u8.c -@@ -1,37 +1,47 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vst40.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo (uint8_t * addr, uint8x16x4_t value) -+foo (uint8_t *addr, uint8x16x4_t value) - { -- vst4q_u8 (addr, value); -+ return vst4q_u8 (addr, value); - } - --/* { dg-final { scan-assembler "vst40.8" } } */ --/* { dg-final { scan-assembler "vst41.8" } } */ --/* { dg-final { scan-assembler "vst42.8" } } */ --/* { dg-final { scan-assembler "vst43.8" } } */ - -+/* -+**foo1: -+** ... -+** vst40.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst41.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst42.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** vst43.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\] -+** ... -+*/ - void --foo1 (uint8_t * addr, uint8x16x4_t value) -+foo1 (uint8_t *addr, uint8x16x4_t value) - { -- vst4q (addr, value); -+ return vst4q (addr, value); - } - --/* { dg-final { scan-assembler "vst40.8" } } */ --/* { dg-final { scan-assembler "vst41.8" } } */ --/* { dg-final { scan-assembler "vst42.8" } } */ --/* { dg-final { scan-assembler "vst43.8" } } */ -- --void --foo2 (uint8_t * addr, uint8x16x4_t value) --{ -- vst4q_u8 (addr, value); -- addr += 16*4; -- vst4q_u8 (addr, value); -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler {vst43.8\s\{.*\}, \[.*\]!} } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_s16.c -index ad74d8aa2e9..19804443e01 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * addr, int16x8_t value, mve_pred16_t p) -+foo (int8_t *base, int16x8_t value, mve_pred16_t p) - { -- vstrbq_p_s16 (addr, value, p); -+ return vstrbq_p_s16 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * addr, int16x8_t value, mve_pred16_t p) -+foo1 (int8_t *base, int16x8_t value, mve_pred16_t p) - { -- vstrbq_p (addr, value, p); -+ return vstrbq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_s32.c -index 46fd4549ffb..26be212770b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * addr, int32x4_t value, mve_pred16_t p) -+foo (int8_t *base, int32x4_t value, mve_pred16_t p) - { -- vstrbq_p_s32 (addr, value, p); -+ return vstrbq_p_s32 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * addr, int32x4_t value, mve_pred16_t p) -+foo1 (int8_t *base, int32x4_t value, mve_pred16_t p) - { -- vstrbq_p (addr, value, p); -+ return vstrbq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_s8.c -index 8e70b9eb098..a0d08772a50 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_s8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * addr, int8x16_t value, mve_pred16_t p) -+foo (int8_t *base, int8x16_t value, mve_pred16_t p) - { -- vstrbq_p_s8 (addr, value, p); -+ return vstrbq_p_s8 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * addr, int8x16_t value, mve_pred16_t p) -+foo1 (int8_t *base, int8x16_t value, mve_pred16_t p) - { -- vstrbq_p (addr, value, p); -+ return vstrbq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_u16.c -index 180f9033edd..bc02c59887a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_u16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * addr, uint16x8_t value, mve_pred16_t p) -+foo (uint8_t *base, uint16x8_t value, mve_pred16_t p) - { -- vstrbq_p_u16 (addr, value, p); -+ return vstrbq_p_u16 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * addr, uint16x8_t value, mve_pred16_t p) -+foo1 (uint8_t *base, uint16x8_t value, mve_pred16_t p) - { -- vstrbq_p (addr, value, p); -+ return vstrbq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_u32.c -index 1b944fc9ffc..1215d5f0978 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * addr, uint32x4_t value, mve_pred16_t p) -+foo (uint8_t *base, uint32x4_t value, mve_pred16_t p) - { -- vstrbq_p_u32 (addr, value, p); -+ return vstrbq_p_u32 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * addr, uint32x4_t value, mve_pred16_t p) -+foo1 (uint8_t *base, uint32x4_t value, mve_pred16_t p) - { -- vstrbq_p (addr, value, p); -+ return vstrbq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_u8.c -index 7e73cbff84e..a88234e411d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_p_u8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * addr, uint8x16_t value, mve_pred16_t p) -+foo (uint8_t *base, uint8x16_t value, mve_pred16_t p) - { -- vstrbq_p_u8 (addr, value, p); -+ return vstrbq_p_u8 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * addr, uint8x16_t value, mve_pred16_t p) -+foo1 (uint8_t *base, uint8x16_t value, mve_pred16_t p) - { -- vstrbq_p (addr, value, p); -+ return vstrbq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_s16.c -index 4d12bc2cd19..1e88d3aa600 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrb.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * addr, int16x8_t value) -+foo (int8_t *base, int16x8_t value) - { -- vstrbq_s16 (addr, value); -+ return vstrbq_s16 (base, value); - } - --/* { dg-final { scan-assembler "vstrb.16" } } */ - -+/* -+**foo1: -+** ... -+** vstrb.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * addr, int16x8_t value) -+foo1 (int8_t *base, int16x8_t value) - { -- vstrbq (addr, value); -+ return vstrbq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrb.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_s32.c -index 750413f35ae..12764bf3041 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrb.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * addr, int32x4_t value) -+foo (int8_t *base, int32x4_t value) - { -- vstrbq_s32 (addr, value); -+ return vstrbq_s32 (base, value); - } - --/* { dg-final { scan-assembler "vstrb.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrb.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * addr, int32x4_t value) -+foo1 (int8_t *base, int32x4_t value) - { -- vstrbq (addr, value); -+ return vstrbq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrb.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_s8.c -index 7ffb2c51976..05a9e5c42ce 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * addr, int8x16_t value) -+foo (int8_t *base, int8x16_t value) - { -- vstrbq_s8 (addr, value); -+ return vstrbq_s8 (base, value); - } - --/* { dg-final { scan-assembler "vstrb.8" } } */ - -+/* -+**foo1: -+** ... -+** vstrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * addr, int8x16_t value) -+foo1 (int8_t *base, int8x16_t value) - { -- vstrbq (addr, value); -+ return vstrbq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrb.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s16.c -index f59fa349cc0..052c3f85b75 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * base, uint16x8_t offset, int16x8_t value, mve_pred16_t p) -+foo (int8_t *base, uint16x8_t offset, int16x8_t value, mve_pred16_t p) - { -- vstrbq_scatter_offset_p_s16 (base, offset, value, p); -+ return vstrbq_scatter_offset_p_s16 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * base, uint16x8_t offset, int16x8_t value, mve_pred16_t p) -+foo1 (int8_t *base, uint16x8_t offset, int16x8_t value, mve_pred16_t p) - { -- vstrbq_scatter_offset_p (base, offset, value, p); -+ return vstrbq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s32.c -index 737c1008976..57410e46a8a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) -+foo (int8_t *base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) - { -- vstrbq_scatter_offset_p_s32 (base, offset, value, p); -+ return vstrbq_scatter_offset_p_s32 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) -+foo1 (int8_t *base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) - { -- vstrbq_scatter_offset_p (base, offset, value, p); -+ return vstrbq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s8.c -index 8b2d06807b4..c3cdefdf078 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * base, uint8x16_t offset, int8x16_t value, mve_pred16_t p) -+foo (int8_t *base, uint8x16_t offset, int8x16_t value, mve_pred16_t p) - { -- vstrbq_scatter_offset_p_s8 (base, offset, value, p); -+ return vstrbq_scatter_offset_p_s8 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * base, uint8x16_t offset, int8x16_t value, mve_pred16_t p) -+foo1 (int8_t *base, uint8x16_t offset, int8x16_t value, mve_pred16_t p) - { -- vstrbq_scatter_offset_p (base, offset, value, p); -+ return vstrbq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u16.c -index 0adccaac39c..0868cc2248b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * base, uint16x8_t offset, uint16x8_t value, mve_pred16_t p) -+foo (uint8_t *base, uint16x8_t offset, uint16x8_t value, mve_pred16_t p) - { -- vstrbq_scatter_offset_p_u16 (base, offset, value, p); -+ return vstrbq_scatter_offset_p_u16 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * base, uint16x8_t offset, uint16x8_t value, mve_pred16_t p) -+foo1 (uint8_t *base, uint16x8_t offset, uint16x8_t value, mve_pred16_t p) - { -- vstrbq_scatter_offset_p (base, offset, value, p); -+ return vstrbq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u32.c -index 308119294df..9d769941569 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) -+foo (uint8_t *base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) - { -- vstrbq_scatter_offset_p_u32 (base, offset, value, p); -+ return vstrbq_scatter_offset_p_u32 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) -+foo1 (uint8_t *base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) - { -- vstrbq_scatter_offset_p (base, offset, value, p); -+ return vstrbq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u8.c -index 28b2ca4b83a..4586535d600 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u8.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * base, uint8x16_t offset, uint8x16_t value, mve_pred16_t p) -+foo (uint8_t *base, uint8x16_t offset, uint8x16_t value, mve_pred16_t p) - { -- vstrbq_scatter_offset_p_u8 (base, offset, value, p); -+ return vstrbq_scatter_offset_p_u8 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrbt.8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * base, uint8x16_t offset, uint8x16_t value, mve_pred16_t p) -+foo1 (uint8_t *base, uint8x16_t offset, uint8x16_t value, mve_pred16_t p) - { -- vstrbq_scatter_offset_p (base, offset, value, p); -+ return vstrbq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrbt.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s16.c -index e6cf1828b33..179b96f4973 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrb.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * base, uint16x8_t offset, int16x8_t value) -+foo (int8_t *base, uint16x8_t offset, int16x8_t value) - { -- vstrbq_scatter_offset_s16 (base, offset, value); -+ return vstrbq_scatter_offset_s16 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrb.16" } } */ - -+/* -+**foo1: -+** ... -+** vstrb.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * base, uint16x8_t offset, int16x8_t value) -+foo1 (int8_t *base, uint16x8_t offset, int16x8_t value) - { -- vstrbq_scatter_offset (base, offset, value); -+ return vstrbq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrb.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s32.c -index 052e02a7cf9..e7b7767c9f2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrb.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * base, uint32x4_t offset, int32x4_t value) -+foo (int8_t *base, uint32x4_t offset, int32x4_t value) - { -- vstrbq_scatter_offset_s32 (base, offset, value); -+ return vstrbq_scatter_offset_s32 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrb.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrb.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * base, uint32x4_t offset, int32x4_t value) -+foo1 (int8_t *base, uint32x4_t offset, int32x4_t value) - { -- vstrbq_scatter_offset (base, offset, value); -+ return vstrbq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrb.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s8.c -index 523f318e73c..f47bdd1a630 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int8_t * base, uint8x16_t offset, int8x16_t value) -+foo (int8_t *base, uint8x16_t offset, int8x16_t value) - { -- vstrbq_scatter_offset_s8 (base, offset, value); -+ return vstrbq_scatter_offset_s8 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrb.8" } } */ - -+/* -+**foo1: -+** ... -+** vstrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int8_t * base, uint8x16_t offset, int8x16_t value) -+foo1 (int8_t *base, uint8x16_t offset, int8x16_t value) - { -- vstrbq_scatter_offset (base, offset, value); -+ return vstrbq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrb.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u16.c -index 49d4d31ad21..90e8cf351f9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrb.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * base, uint16x8_t offset, uint16x8_t value) -+foo (uint8_t *base, uint16x8_t offset, uint16x8_t value) - { -- vstrbq_scatter_offset_u16 (base, offset, value); -+ return vstrbq_scatter_offset_u16 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrb.16" } } */ - -+/* -+**foo1: -+** ... -+** vstrb.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * base, uint16x8_t offset, uint16x8_t value) -+foo1 (uint8_t *base, uint16x8_t offset, uint16x8_t value) - { -- vstrbq_scatter_offset (base, offset, value); -+ return vstrbq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrb.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u32.c -index 0012852298c..e5449aa0942 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrb.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * base, uint32x4_t offset, uint32x4_t value) -+foo (uint8_t *base, uint32x4_t offset, uint32x4_t value) - { -- vstrbq_scatter_offset_u32 (base, offset, value); -+ return vstrbq_scatter_offset_u32 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrb.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrb.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * base, uint32x4_t offset, uint32x4_t value) -+foo1 (uint8_t *base, uint32x4_t offset, uint32x4_t value) - { -- vstrbq_scatter_offset (base, offset, value); -+ return vstrbq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrb.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u8.c -index e54422a1afe..06c8c45e877 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * base, uint8x16_t offset, uint8x16_t value) -+foo (uint8_t *base, uint8x16_t offset, uint8x16_t value) - { -- vstrbq_scatter_offset_u8 (base, offset, value); -+ return vstrbq_scatter_offset_u8 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrb.8" } } */ - -+/* -+**foo1: -+** ... -+** vstrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * base, uint8x16_t offset, uint8x16_t value) -+foo1 (uint8_t *base, uint8x16_t offset, uint8x16_t value) - { -- vstrbq_scatter_offset (base, offset, value); -+ return vstrbq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrb.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_u16.c -index 9fa9d18c6a1..0b350e2491b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrb.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * addr, uint16x8_t value) -+foo (uint8_t *base, uint16x8_t value) - { -- vstrbq_u16 (addr, value); -+ return vstrbq_u16 (base, value); - } - --/* { dg-final { scan-assembler "vstrb.16" } } */ - -+/* -+**foo1: -+** ... -+** vstrb.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * addr, uint16x8_t value) -+foo1 (uint8_t *base, uint16x8_t value) - { -- vstrbq (addr, value); -+ return vstrbq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrb.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_u32.c -index e535aa275ef..2f809356420 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrb.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * addr, uint32x4_t value) -+foo (uint8_t *base, uint32x4_t value) - { -- vstrbq_u32 (addr, value); -+ return vstrbq_u32 (base, value); - } - --/* { dg-final { scan-assembler "vstrb.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrb.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * addr, uint32x4_t value) -+foo1 (uint8_t *base, uint32x4_t value) - { -- vstrbq (addr, value); -+ return vstrbq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrb.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_u8.c -index 93771aabcbd..deeea98dda5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrbq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint8_t * addr, uint8x16_t value) -+foo (uint8_t *base, uint8x16_t value) - { -- vstrbq_u8 (addr, value); -+ return vstrbq_u8 (base, value); - } - --/* { dg-final { scan-assembler "vstrb.8" } } */ - -+/* -+**foo1: -+** ... -+** vstrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint8_t * addr, uint8x16_t value) -+foo1 (uint8_t *base, uint8x16_t value) - { -- vstrbq (addr, value); -+ return vstrbq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrb.8" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_s64.c -index c694e2b6ad3..25a889dd1f0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_s64.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint64x2_t addr, const int offset, int64x2_t value, mve_pred16_t p) -+foo (uint64x2_t addr, int64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_base_p_s64 (addr, 8, value, p); -+ return vstrdq_scatter_base_p_s64 (addr, 0, value, p); - } - --/* { dg-final { scan-assembler "vstrdt.u64" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint64x2_t addr, const int offset, int64x2_t value, mve_pred16_t p) -+foo1 (uint64x2_t addr, int64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_base_p (addr, 8, value, p); -+ return vstrdq_scatter_base_p (addr, 0, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrdt.u64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_u64.c -index 6e8507c81d9..f0731f69a09 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_u64.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint64x2_t addr, const int offset, uint64x2_t value, mve_pred16_t p) -+foo (uint64x2_t addr, uint64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_base_p_u64 (addr, 8, value, p); -+ return vstrdq_scatter_base_p_u64 (addr, 0, value, p); - } - --/* { dg-final { scan-assembler "vstrdt.u64" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint64x2_t addr, const int offset, uint64x2_t value, mve_pred16_t p) -+foo1 (uint64x2_t addr, uint64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_base_p (addr, 8, value, p); -+ return vstrdq_scatter_base_p (addr, 0, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrdt.u64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_s64.c -index b9aac8036d4..31cdec9ba0a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_s64.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrd.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint64x2_t addr, const int offset, int64x2_t value) -+foo (uint64x2_t addr, int64x2_t value) - { -- vstrdq_scatter_base_s64 (addr, 1016, value); -+ return vstrdq_scatter_base_s64 (addr, 0, value); - } - --/* { dg-final { scan-assembler "vstrd.u64" } } */ - -+/* -+**foo1: -+** ... -+** vstrd.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint64x2_t addr, const int offset, int64x2_t value) -+foo1 (uint64x2_t addr, int64x2_t value) - { -- vstrdq_scatter_base (addr, 1016, value); -+ return vstrdq_scatter_base (addr, 0, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrd.u64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_u64.c -index 888d4e0c031..8f0195c9e8f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_u64.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrd.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint64x2_t addr, const int offset, uint64x2_t value) -+foo (uint64x2_t addr, uint64x2_t value) - { -- vstrdq_scatter_base_u64 (addr, 8, value); -+ return vstrdq_scatter_base_u64 (addr, 0, value); - } - --/* { dg-final { scan-assembler "vstrd.u64" } } */ - -+/* -+**foo1: -+** ... -+** vstrd.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint64x2_t addr, const int offset, uint64x2_t value) -+foo1 (uint64x2_t addr, uint64x2_t value) - { -- vstrdq_scatter_base (addr, 8, value); -+ return vstrdq_scatter_base (addr, 0, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrd.u64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c -index 319188b706f..8f19ede4e1a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c -@@ -1,19 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo (uint64x2_t * addr, const int offset, int64x2_t value, mve_pred16_t p) -+foo (uint64x2_t *addr, int64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_base_wb_p_s64 (addr, 8, value, p); -+ return vstrdq_scatter_base_wb_p_s64 (addr, 0, value, p); - } - -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo1 (uint64x2_t * addr, const int offset, int64x2_t value, mve_pred16_t p) -+foo1 (uint64x2_t *addr, int64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_base_wb_p (addr, 8, value, p); -+ return vstrdq_scatter_base_wb_p (addr, 0, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-times "vstrdt.u64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" 2 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c -index 940b5421c84..41958c961f4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c -@@ -1,19 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo (uint64x2_t * addr, const int offset, uint64x2_t value, mve_pred16_t p) -+foo (uint64x2_t *addr, uint64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_base_wb_p_u64 (addr, 8, value, p); -+ return vstrdq_scatter_base_wb_p_u64 (addr, 0, value, p); - } - -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo1 (uint64x2_t * addr, const int offset, uint64x2_t value, mve_pred16_t p) -+foo1 (uint64x2_t *addr, uint64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_base_wb_p (addr, 8, value, p); -+ return vstrdq_scatter_base_wb_p (addr, 0, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-times "vstrdt.u64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" 2 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c -index 33926d5c9e2..fc06db1c202 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c -@@ -1,19 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrd.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo (uint64x2_t * addr, const int offset, int64x2_t value) -+foo (uint64x2_t *addr, int64x2_t value) - { -- vstrdq_scatter_base_wb_s64 (addr, 8, value); -+ return vstrdq_scatter_base_wb_s64 (addr, 0, value); - } - -+ -+/* -+**foo1: -+** ... -+** vstrd.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo1 (uint64x2_t * addr, const int offset, int64x2_t value) -+foo1 (uint64x2_t *addr, int64x2_t value) - { -- vstrdq_scatter_base_wb (addr, 8, value); -+ return vstrdq_scatter_base_wb (addr, 0, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-times "vstrd.u64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" 2 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c -index b7ffcf9b5dd..c6529e617e3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c -@@ -1,19 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrd.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo (uint64x2_t * addr, const int offset, uint64x2_t value) -+foo (uint64x2_t *addr, uint64x2_t value) - { -- vstrdq_scatter_base_wb_u64 (addr, 8, value); -+ return vstrdq_scatter_base_wb_u64 (addr, 0, value); - } - -+ -+/* -+**foo1: -+** ... -+** vstrd.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo1 (uint64x2_t * addr, const int offset, uint64x2_t value) -+foo1 (uint64x2_t *addr, uint64x2_t value) - { -- vstrdq_scatter_base_wb (addr, 8, value); -+ return vstrdq_scatter_base_wb (addr, 0, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-times "vstrd.u64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" 2 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_s64.c -index 7ebf858f816..754fb59df4c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_s64.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int64_t * base, uint64x2_t offset, int64x2_t value, mve_pred16_t p) -+foo (int64_t *base, uint64x2_t offset, int64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_offset_p_s64 (base, offset, value, p); -+ return vstrdq_scatter_offset_p_s64 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrdt.64" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int64_t * base, uint64x2_t offset, int64x2_t value, mve_pred16_t p) -+foo1 (int64_t *base, uint64x2_t offset, int64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_offset_p (base, offset, value, p); -+ return vstrdq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrdt.64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_u64.c -index 4829bada1a9..046f29a6621 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_u64.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint64_t * base, uint64x2_t offset, uint64x2_t value, mve_pred16_t p) -+foo (uint64_t *base, uint64x2_t offset, uint64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_offset_p_u64 (base, offset, value, p); -+ return vstrdq_scatter_offset_p_u64 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrdt.64" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint64_t * base, uint64x2_t offset, uint64x2_t value, mve_pred16_t p) -+foo1 (uint64_t *base, uint64x2_t offset, uint64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_offset_p (base, offset, value, p); -+ return vstrdq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrdt.64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_s64.c -index fb7317bc4d7..73e25cdf0ed 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_s64.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrd.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int64_t * base, uint64x2_t offset, int64x2_t value) -+foo (int64_t *base, uint64x2_t offset, int64x2_t value) - { -- vstrdq_scatter_offset_s64 (base, offset, value); -+ return vstrdq_scatter_offset_s64 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrd.64" } } */ - -+/* -+**foo1: -+** ... -+** vstrd.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int64_t * base, uint64x2_t offset, int64x2_t value) -+foo1 (int64_t *base, uint64x2_t offset, int64x2_t value) - { -- vstrdq_scatter_offset (base, offset, value); -+ return vstrdq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrd.64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_u64.c -index e8b3a0210b4..d49adde0b94 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_u64.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrd.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint64_t * base, uint64x2_t offset, uint64x2_t value) -+foo (uint64_t *base, uint64x2_t offset, uint64x2_t value) - { -- vstrdq_scatter_offset_u64 (base, offset, value); -+ return vstrdq_scatter_offset_u64 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrd.64" } } */ - -+/* -+**foo1: -+** ... -+** vstrd.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint64_t * base, uint64x2_t offset, uint64x2_t value) -+foo1 (uint64_t *base, uint64x2_t offset, uint64x2_t value) - { -- vstrdq_scatter_offset (base, offset, value); -+ return vstrdq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrd.64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_s64.c -index 9ca83e0f3fd..8acfba1f55e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_s64.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - void --foo (int64_t * base, uint64x2_t offset, int64x2_t value, mve_pred16_t p) -+foo (int64_t *base, uint64x2_t offset, int64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_shifted_offset_p_s64 (base, offset, value, p); -+ return vstrdq_scatter_shifted_offset_p_s64 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrdt.64" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - void --foo1 (int64_t * base, uint64x2_t offset, int64x2_t value, mve_pred16_t p) -+foo1 (int64_t *base, uint64x2_t offset, int64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_shifted_offset_p (base, offset, value, p); -+ return vstrdq_scatter_shifted_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrdt.64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_u64.c -index 1c33df18e84..630c627d604 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_u64.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - void --foo (uint64_t * base, uint64x2_t offset, uint64x2_t value, mve_pred16_t p) -+foo (uint64_t *base, uint64x2_t offset, uint64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_shifted_offset_p_u64 (base, offset, value, p); -+ return vstrdq_scatter_shifted_offset_p_u64 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrdt.64" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrdt.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - void --foo1 (uint64_t * base, uint64x2_t offset, uint64x2_t value, mve_pred16_t p) -+foo1 (uint64_t *base, uint64x2_t offset, uint64x2_t value, mve_pred16_t p) - { -- vstrdq_scatter_shifted_offset_p (base, offset, value, p); -+ return vstrdq_scatter_shifted_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrdt.64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_s64.c -index 8af348ddbe2..ec73bca4869 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_s64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_s64.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrd.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - void --foo (int64_t * base, uint64x2_t offset, int64x2_t value) -+foo (int64_t *base, uint64x2_t offset, int64x2_t value) - { -- vstrdq_scatter_shifted_offset_s64 (base, offset, value); -+ return vstrdq_scatter_shifted_offset_s64 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrd.64" } } */ - -+/* -+**foo1: -+** ... -+** vstrd.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - void --foo1 (int64_t * base, uint64x2_t offset, int64x2_t value) -+foo1 (int64_t *base, uint64x2_t offset, int64x2_t value) - { -- vstrdq_scatter_shifted_offset (base, offset, value); -+ return vstrdq_scatter_shifted_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrd.64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_u64.c -index bc153a07192..9bdf8003961 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_u64.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_u64.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrd.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - void --foo (uint64_t * base, uint64x2_t offset, uint64x2_t value) -+foo (uint64_t *base, uint64x2_t offset, uint64x2_t value) - { -- vstrdq_scatter_shifted_offset_u64 (base, offset, value); -+ return vstrdq_scatter_shifted_offset_u64 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrd.64" } } */ - -+/* -+**foo1: -+** ... -+** vstrd.64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|) -+** ... -+*/ - void --foo1 (uint64_t * base, uint64x2_t offset, uint64x2_t value) -+foo1 (uint64_t *base, uint64x2_t offset, uint64x2_t value) - { -- vstrdq_scatter_shifted_offset (base, offset, value); -+ return vstrdq_scatter_shifted_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrd.64" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_f16.c -index 74e2617c380..a41217b24f2 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (float16_t * addr, float16x8_t value) -+foo (float16_t *base, float16x8_t value) - { -- vstrhq_f16 (addr, value); -+ return vstrhq_f16 (base, value); - } - --/* { dg-final { scan-assembler "vstrh.16" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (float16_t * addr, float16x8_t value) -+foo1 (float16_t *base, float16x8_t value) - { -- vstrhq (addr, value); -+ return vstrhq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_f16.c -index 227da4f10aa..8398a60023d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_f16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (float16_t * addr, float16x8_t value, mve_pred16_t p) -+foo (float16_t *base, float16x8_t value, mve_pred16_t p) - { -- vstrhq_p_f16 (addr, value, p); -+ return vstrhq_p_f16 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrht.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (float16_t * addr, float16x8_t value, mve_pred16_t p) -+foo1 (float16_t *base, float16x8_t value, mve_pred16_t p) - { -- vstrhq_p (addr, value, p); -+ return vstrhq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_s16.c -index f3ba71f0ce1..ee1026801be 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * addr, int16x8_t value, mve_pred16_t p) -+foo (int16_t *base, int16x8_t value, mve_pred16_t p) - { -- vstrhq_p_s16 (addr, value, p); -+ return vstrhq_p_s16 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrht.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * addr, int16x8_t value, mve_pred16_t p) -+foo1 (int16_t *base, int16x8_t value, mve_pred16_t p) - { -- vstrhq_p (addr, value, p); -+ return vstrhq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_s32.c -index dab646706ce..b8490209644 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * addr, int32x4_t value, mve_pred16_t p) -+foo (int16_t *base, int32x4_t value, mve_pred16_t p) - { -- vstrhq_p_s32 (addr, value, p); -+ return vstrhq_p_s32 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrht.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * addr, int32x4_t value, mve_pred16_t p) -+foo1 (int16_t *base, int32x4_t value, mve_pred16_t p) - { -- vstrhq_p (addr, value, p); -+ return vstrhq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_u16.c -index e575c70cc44..59fb73cef19 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_u16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * addr, uint16x8_t value, mve_pred16_t p) -+foo (uint16_t *base, uint16x8_t value, mve_pred16_t p) - { -- vstrhq_p_u16 (addr, value, p); -+ return vstrhq_p_u16 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrht.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * addr, uint16x8_t value, mve_pred16_t p) -+foo1 (uint16_t *base, uint16x8_t value, mve_pred16_t p) - { -- vstrhq_p (addr, value, p); -+ return vstrhq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_u32.c -index e863e284c3c..ed66db7f8ce 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * addr, uint32x4_t value, mve_pred16_t p) -+foo (uint16_t *base, uint32x4_t value, mve_pred16_t p) - { -- vstrhq_p_u32 (addr, value, p); -+ return vstrhq_p_u32 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrht.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * addr, uint32x4_t value, mve_pred16_t p) -+foo1 (uint16_t *base, uint32x4_t value, mve_pred16_t p) - { -- vstrhq_p (addr, value, p); -+ return vstrhq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_s16.c -index 5e47fb4e1a6..972d733c5bd 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * addr, int16x8_t value) -+foo (int16_t *base, int16x8_t value) - { -- vstrhq_s16 (addr, value); -+ return vstrhq_s16 (base, value); - } - --/* { dg-final { scan-assembler "vstrh.16" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * addr, int16x8_t value) -+foo1 (int16_t *base, int16x8_t value) - { -- vstrhq (addr, value); -+ return vstrhq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_s32.c -index 73e01c9acfb..f260c61c3a8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * addr, int32x4_t value) -+foo (int16_t *base, int32x4_t value) - { -- vstrhq_s32 (addr, value); -+ return vstrhq_s32 (base, value); - } - --/* { dg-final { scan-assembler "vstrh.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * addr, int32x4_t value) -+foo1 (int16_t *base, int32x4_t value) - { -- vstrhq (addr, value); -+ return vstrhq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_f16.c -index d29bd08ad0a..794d75e76ac 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (float16_t * base, uint16x8_t offset, float16x8_t value) -+foo (float16_t *base, uint16x8_t offset, float16x8_t value) - { -- vstrhq_scatter_offset_f16 (base, offset, value); -+ return vstrhq_scatter_offset_f16 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrh.16" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (float16_t * base, uint16x8_t offset, float16x8_t value) -+foo1 (float16_t *base, uint16x8_t offset, float16x8_t value) - { -- vstrhq_scatter_offset (base, offset, value); -+ return vstrhq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_f16.c -index 79d9827b378..1fd5a0773dc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_f16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (float16_t * base, uint16x8_t offset, float16x8_t value, mve_pred16_t p) -+foo (float16_t *base, uint16x8_t offset, float16x8_t value, mve_pred16_t p) - { -- vstrhq_scatter_offset_p_f16 (base, offset, value, p); -+ return vstrhq_scatter_offset_p_f16 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrht.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (float16_t * base, uint16x8_t offset, float16x8_t value, mve_pred16_t p) -+foo1 (float16_t *base, uint16x8_t offset, float16x8_t value, mve_pred16_t p) - { -- vstrhq_scatter_offset_p (base, offset, value, p); -+ return vstrhq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s16.c -index 1b401d4c5b7..34c44a90541 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * base, uint16x8_t offset, int16x8_t value, mve_pred16_t p) -+foo (int16_t *base, uint16x8_t offset, int16x8_t value, mve_pred16_t p) - { -- vstrhq_scatter_offset_p_s16 (base, offset, value, p); -+ return vstrhq_scatter_offset_p_s16 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrht.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * base, uint16x8_t offset, int16x8_t value, mve_pred16_t p) -+foo1 (int16_t *base, uint16x8_t offset, int16x8_t value, mve_pred16_t p) - { -- vstrhq_scatter_offset_p (base, offset, value, p); -+ return vstrhq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s32.c -index afb325b9789..2a84b28a3f5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) -+foo (int16_t *base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) - { -- vstrhq_scatter_offset_p_s32 (base, offset, value, p); -+ return vstrhq_scatter_offset_p_s32 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrht.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) -+foo1 (int16_t *base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) - { -- vstrhq_scatter_offset_p (base, offset, value, p); -+ return vstrhq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u16.c -index 73bee831282..f1c875657ce 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * base, uint16x8_t offset, uint16x8_t value, mve_pred16_t p) -+foo (uint16_t *base, uint16x8_t offset, uint16x8_t value, mve_pred16_t p) - { -- vstrhq_scatter_offset_p_u16 (base, offset, value, p); -+ return vstrhq_scatter_offset_p_u16 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrht.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * base, uint16x8_t offset, uint16x8_t value, mve_pred16_t p) -+foo1 (uint16_t *base, uint16x8_t offset, uint16x8_t value, mve_pred16_t p) - { -- vstrhq_scatter_offset_p (base, offset, value, p); -+ return vstrhq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u32.c -index bae7c2d14c2..913fd8d5591 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) -+foo (uint16_t *base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) - { -- vstrhq_scatter_offset_p_u32 (base, offset, value, p); -+ return vstrhq_scatter_offset_p_u32 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrht.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) -+foo1 (uint16_t *base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) - { -- vstrhq_scatter_offset_p (base, offset, value, p); -+ return vstrhq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s16.c -index bf3c03a85c6..b322d0fa02e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * base, uint16x8_t offset, int16x8_t value) -+foo (int16_t *base, uint16x8_t offset, int16x8_t value) - { -- vstrhq_scatter_offset_s16 (base, offset, value); -+ return vstrhq_scatter_offset_s16 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrh.16" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * base, uint16x8_t offset, int16x8_t value) -+foo1 (int16_t *base, uint16x8_t offset, int16x8_t value) - { -- vstrhq_scatter_offset (base, offset, value); -+ return vstrhq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s32.c -index 0591ab55c07..49fcc3a382b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * base, uint32x4_t offset, int32x4_t value) -+foo (int16_t *base, uint32x4_t offset, int32x4_t value) - { -- vstrhq_scatter_offset_s32 (base, offset, value); -+ return vstrhq_scatter_offset_s32 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrh.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * base, uint32x4_t offset, int32x4_t value) -+foo1 (int16_t *base, uint32x4_t offset, int32x4_t value) - { -- vstrhq_scatter_offset (base, offset, value); -+ return vstrhq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u16.c -index 0a2fa1f410e..b5de540a74c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * base, uint16x8_t offset, uint16x8_t value) -+foo (uint16_t *base, uint16x8_t offset, uint16x8_t value) - { -- vstrhq_scatter_offset_u16 (base, offset, value); -+ return vstrhq_scatter_offset_u16 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrh.16" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * base, uint16x8_t offset, uint16x8_t value) -+foo1 (uint16_t *base, uint16x8_t offset, uint16x8_t value) - { -- vstrhq_scatter_offset (base, offset, value); -+ return vstrhq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u32.c -index 809a44dee16..7808f25d4a4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * base, uint32x4_t offset, uint32x4_t value) -+foo (uint16_t *base, uint32x4_t offset, uint32x4_t value) - { -- vstrhq_scatter_offset_u32 (base, offset, value); -+ return vstrhq_scatter_offset_u32 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrh.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * base, uint32x4_t offset, uint32x4_t value) -+foo1 (uint16_t *base, uint32x4_t offset, uint32x4_t value) - { -- vstrhq_scatter_offset (base, offset, value); -+ return vstrhq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_f16.c -index 1dcb1f7692d..6d57a22fe41 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo (float16_t * base, uint16x8_t offset, float16x8_t value) -+foo (float16_t *base, uint16x8_t offset, float16x8_t value) - { -- vstrhq_scatter_shifted_offset_f16 (base, offset, value); -+ return vstrhq_scatter_shifted_offset_f16 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrh.16" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo1 (float16_t * base, uint16x8_t offset, float16x8_t value) -+foo1 (float16_t *base, uint16x8_t offset, float16x8_t value) - { -- vstrhq_scatter_shifted_offset (base, offset, value); -+ return vstrhq_scatter_shifted_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_f16.c -index c46eec95adf..2e77dd492a1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_f16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo (float16_t * base, uint16x8_t offset, float16x8_t value, mve_pred16_t p) -+foo (float16_t *base, uint16x8_t offset, float16x8_t value, mve_pred16_t p) - { -- vstrhq_scatter_shifted_offset_p_f16 (base, offset, value, p); -+ return vstrhq_scatter_shifted_offset_p_f16 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrht.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo1 (float16_t * base, uint16x8_t offset, float16x8_t value, mve_pred16_t p) -+foo1 (float16_t *base, uint16x8_t offset, float16x8_t value, mve_pred16_t p) - { -- vstrhq_scatter_shifted_offset_p (base, offset, value, p); -+ return vstrhq_scatter_shifted_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s16.c -index 7e9a549e8c2..1c83a13ffdf 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * base, uint16x8_t offset, int16x8_t value, mve_pred16_t p) -+foo (int16_t *base, uint16x8_t offset, int16x8_t value, mve_pred16_t p) - { -- vstrhq_scatter_shifted_offset_p_s16 (base, offset, value, p); -+ return vstrhq_scatter_shifted_offset_p_s16 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrht.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * base, uint16x8_t offset, int16x8_t value, mve_pred16_t p) -+foo1 (int16_t *base, uint16x8_t offset, int16x8_t value, mve_pred16_t p) - { -- vstrhq_scatter_shifted_offset_p (base, offset, value, p); -+ return vstrhq_scatter_shifted_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s32.c -index 502b4b00e2a..6d786de4379 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) -+foo (int16_t *base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) - { -- vstrhq_scatter_shifted_offset_p_s32 (base, offset, value, p); -+ return vstrhq_scatter_shifted_offset_p_s32 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrht.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) -+foo1 (int16_t *base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) - { -- vstrhq_scatter_shifted_offset_p (base, offset, value, p); -+ return vstrhq_scatter_shifted_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u16.c -index 151145ce174..fd73168ddbb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u16.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * base, uint16x8_t offset, uint16x8_t value, mve_pred16_t p) -+foo (uint16_t *base, uint16x8_t offset, uint16x8_t value, mve_pred16_t p) - { -- vstrhq_scatter_shifted_offset_p_u16 (base, offset, value, p); -+ return vstrhq_scatter_shifted_offset_p_u16 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrht.16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * base, uint16x8_t offset, uint16x8_t value, mve_pred16_t p) -+foo1 (uint16_t *base, uint16x8_t offset, uint16x8_t value, mve_pred16_t p) - { -- vstrhq_scatter_shifted_offset_p (base, offset, value, p); -+ return vstrhq_scatter_shifted_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u32.c -index 14efd952593..689195ce603 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) -+foo (uint16_t *base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) - { -- vstrhq_scatter_shifted_offset_p_u32 (base, offset, value, p); -+ return vstrhq_scatter_shifted_offset_p_u32 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrht.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) -+foo1 (uint16_t *base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) - { -- vstrhq_scatter_shifted_offset_p (base, offset, value, p); -+ return vstrhq_scatter_shifted_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrht.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s16.c -index e5142ed85f7..0edacd938f6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * base, uint16x8_t offset, int16x8_t value) -+foo (int16_t *base, uint16x8_t offset, int16x8_t value) - { -- vstrhq_scatter_shifted_offset_s16 (base, offset, value); -+ return vstrhq_scatter_shifted_offset_s16 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrh.16" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * base, uint16x8_t offset, int16x8_t value) -+foo1 (int16_t *base, uint16x8_t offset, int16x8_t value) - { -- vstrhq_scatter_shifted_offset (base, offset, value); -+ return vstrhq_scatter_shifted_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s32.c -index 431808f9008..ebda2faec92 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo (int16_t * base, uint32x4_t offset, int32x4_t value) -+foo (int16_t *base, uint32x4_t offset, int32x4_t value) - { -- vstrhq_scatter_shifted_offset_s32 (base, offset, value); -+ return vstrhq_scatter_shifted_offset_s32 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrh.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo1 (int16_t * base, uint32x4_t offset, int32x4_t value) -+foo1 (int16_t *base, uint32x4_t offset, int32x4_t value) - { -- vstrhq_scatter_shifted_offset (base, offset, value); -+ return vstrhq_scatter_shifted_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u16.c -index f93e5d51913..abe8bbf8045 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * base, uint16x8_t offset, uint16x8_t value) -+foo (uint16_t *base, uint16x8_t offset, uint16x8_t value) - { -- vstrhq_scatter_shifted_offset_u16 (base, offset, value); -+ return vstrhq_scatter_shifted_offset_u16 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrh.16" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * base, uint16x8_t offset, uint16x8_t value) -+foo1 (uint16_t *base, uint16x8_t offset, uint16x8_t value) - { -- vstrhq_scatter_shifted_offset (base, offset, value); -+ return vstrhq_scatter_shifted_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u32.c -index fc250706fa8..a01b04bd940 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * base, uint32x4_t offset, uint32x4_t value) -+foo (uint16_t *base, uint32x4_t offset, uint32x4_t value) - { -- vstrhq_scatter_shifted_offset_u32 (base, offset, value); -+ return vstrhq_scatter_shifted_offset_u32 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrh.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * base, uint32x4_t offset, uint32x4_t value) -+foo1 (uint16_t *base, uint32x4_t offset, uint32x4_t value) - { -- vstrhq_scatter_shifted_offset (base, offset, value); -+ return vstrhq_scatter_shifted_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_u16.c -index f7b3ef1012b..85f5790ff49 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * addr, uint16x8_t value) -+foo (uint16_t *base, uint16x8_t value) - { -- vstrhq_u16 (addr, value); -+ return vstrhq_u16 (base, value); - } - --/* { dg-final { scan-assembler "vstrh.16" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * addr, uint16x8_t value) -+foo1 (uint16_t *base, uint16x8_t value) - { -- vstrhq (addr, value); -+ return vstrhq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.16" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_u32.c -index 8e01fd10032..d0958e22222 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrhq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrh.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint16_t * addr, uint32x4_t value) -+foo (uint16_t *base, uint32x4_t value) - { -- vstrhq_u32 (addr, value); -+ return vstrhq_u32 (base, value); - } - --/* { dg-final { scan-assembler "vstrh.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrh.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint16_t * addr, uint32x4_t value) -+foo1 (uint16_t *base, uint32x4_t value) - { -- vstrhq (addr, value); -+ return vstrhq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrh.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_f32.c -index 8aa04fcbdee..e92ecb0f6bc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (float32_t * addr, float32x4_t value) -+foo (float32_t *base, float32x4_t value) - { -- vstrwq_f32 (addr, value); -+ return vstrwq_f32 (base, value); - } - --/* { dg-final { scan-assembler "vstrw.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (float32_t * addr, float32x4_t value) -+foo1 (float32_t *base, float32x4_t value) - { -- vstrwq (addr, value); -+ return vstrwq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_p_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_p_f32.c -index 411de6414f7..f1992a67736 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_p_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_p_f32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (float32_t * addr, float32x4_t value, mve_pred16_t p) -+foo (float32_t *base, float32x4_t value, mve_pred16_t p) - { -- vstrwq_p_f32 (addr, value, p); -+ return vstrwq_p_f32 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (float32_t * addr, float32x4_t value, mve_pred16_t p) -+foo1 (float32_t *base, float32x4_t value, mve_pred16_t p) - { -- vstrwq_p (addr, value, p); -+ return vstrwq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_p_s32.c -index 3b042814d27..a00aeabb9fe 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int32_t * addr, int32x4_t value, mve_pred16_t p) -+foo (int32_t *base, int32x4_t value, mve_pred16_t p) - { -- vstrwq_p_s32 (addr, value, p); -+ return vstrwq_p_s32 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int32_t * addr, int32x4_t value, mve_pred16_t p) -+foo1 (int32_t *base, int32x4_t value, mve_pred16_t p) - { -- vstrwq_p (addr, value, p); -+ return vstrwq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_p_u32.c -index b9e92204c88..05fded8aac8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint32_t * addr, uint32x4_t value, mve_pred16_t p) -+foo (uint32_t *base, uint32x4_t value, mve_pred16_t p) - { -- vstrwq_p_u32 (addr, value, p); -+ return vstrwq_p_u32 (base, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint32_t * addr, uint32x4_t value, mve_pred16_t p) -+foo1 (uint32_t *base, uint32x4_t value, mve_pred16_t p) - { -- vstrwq_p (addr, value, p); -+ return vstrwq_p (base, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_s32.c -index c7b3d91a972..b2a184f3c66 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (int32_t * addr, int32x4_t value) -+foo (int32_t *base, int32x4_t value) - { -- vstrwq_s32 (addr, value); -+ return vstrwq_s32 (base, value); - } - --/* { dg-final { scan-assembler "vstrw.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (int32_t * addr, int32x4_t value) -+foo1 (int32_t *base, int32x4_t value) - { -- vstrwq (addr, value); -+ return vstrwq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_f32.c -index f8b56917295..c80e8d9cdc5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void - foo (uint32x4_t addr, float32x4_t value) - { -- vstrwq_scatter_base_f32 (addr, 8, value); -+ return vstrwq_scatter_base_f32 (addr, 0, value); - } - --/* { dg-final { scan-assembler "vstrw.u32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void - foo1 (uint32x4_t addr, float32x4_t value) - { -- vstrwq_scatter_base (addr, 8, value); -+ return vstrwq_scatter_base (addr, 0, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_f32.c -index 4a75e6503e1..237843c0661 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_f32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void - foo (uint32x4_t addr, float32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_base_p_f32 (addr, 8, value, p); -+ return vstrwq_scatter_base_p_f32 (addr, 0, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void - foo1 (uint32x4_t addr, float32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_base_p (addr, 8, value, p); -+ return vstrwq_scatter_base_p (addr, 0, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_s32.c -index 5ac4f300a7d..5f4f4a09664 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void - foo (uint32x4_t addr, int32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_base_p_s32 (addr, 8, value, p); -+ return vstrwq_scatter_base_p_s32 (addr, 0, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void - foo1 (uint32x4_t addr, int32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_base_p (addr, 8, value, p); -+ return vstrwq_scatter_base_p (addr, 0, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_u32.c -index e564f26b9c7..8c5cf63f861 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void - foo (uint32x4_t addr, uint32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_base_p_u32 (addr, 8, value, p); -+ return vstrwq_scatter_base_p_u32 (addr, 0, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.u32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void - foo1 (uint32x4_t addr, uint32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_base_p (addr, 8, value, p); -+ return vstrwq_scatter_base_p (addr, 0, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_s32.c -index 5bba36db5cb..5208cf4f808 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void - foo (uint32x4_t addr, int32x4_t value) - { -- vstrwq_scatter_base_s32 (addr, 8, value); -+ return vstrwq_scatter_base_s32 (addr, 0, value); - } - --/* { dg-final { scan-assembler "vstrw.u32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void - foo1 (uint32x4_t addr, int32x4_t value) - { -- vstrwq_scatter_base (addr, 8, value); -+ return vstrwq_scatter_base (addr, 0, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_u32.c -index 1dcbb5a739c..e728db2b9f1 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void - foo (uint32x4_t addr, uint32x4_t value) - { -- vstrwq_scatter_base_u32 (addr, 8, value); -+ return vstrwq_scatter_base_u32 (addr, 0, value); - } - --/* { dg-final { scan-assembler "vstrw.u32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|) -+** ... -+*/ - void - foo1 (uint32x4_t addr, uint32x4_t value) - { -- vstrwq_scatter_base (addr, 8, value); -+ return vstrwq_scatter_base (addr, 0, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.u32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c -index b2cc6e555ae..e481191aa57 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c -@@ -1,19 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo (uint32x4_t * addr, const int offset, float32x4_t value) -+foo (uint32x4_t *addr, float32x4_t value) - { -- vstrwq_scatter_base_wb_f32 (addr, 8, value); -+ return vstrwq_scatter_base_wb_f32 (addr, 0, value); - } - -+ -+/* -+**foo1: -+** ... -+** vstrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo1 (uint32x4_t * addr, const int offset, float32x4_t value) -+foo1 (uint32x4_t *addr, float32x4_t value) - { -- vstrwq_scatter_base_wb (addr, 8, value); -+ return vstrwq_scatter_base_wb (addr, 0, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-times "vstrw.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" 2 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c -index 4befd49d7b9..8d217d46230 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c -@@ -1,19 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo (uint32x4_t * addr, const int offset, float32x4_t value, mve_pred16_t p) -+foo (uint32x4_t *addr, float32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_base_wb_p_f32 (addr, 8, value, p); -+ return vstrwq_scatter_base_wb_p_f32 (addr, 0, value, p); - } - -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo1 (uint32x4_t * addr, const int offset, float32x4_t value, mve_pred16_t p) -+foo1 (uint32x4_t *addr, float32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_base_wb_p (addr, 8, value, p); -+ return vstrwq_scatter_base_wb_p (addr, 0, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-times "vstrwt.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" 2 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c -index dfb1827c4f0..afc47adcd7f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c -@@ -1,19 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo (uint32x4_t * addr, const int offset, int32x4_t value, mve_pred16_t p) -+foo (uint32x4_t *addr, int32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_base_wb_p_s32 (addr, 8, value, p); -+ return vstrwq_scatter_base_wb_p_s32 (addr, 0, value, p); - } - -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo1 (uint32x4_t * addr, const int offset, int32x4_t value, mve_pred16_t p) -+foo1 (uint32x4_t *addr, int32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_base_wb_p (addr, 8, value, p); -+ return vstrwq_scatter_base_wb_p (addr, 0, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-times "vstrwt.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" 2 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c -index 4eb78c600be..65191c2f1ed 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c -@@ -1,19 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo (uint32x4_t * addr, const int offset, uint32x4_t value, mve_pred16_t p) -+foo (uint32x4_t *addr, uint32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_base_wb_p_u32 (addr, 8, value, p); -+ return vstrwq_scatter_base_wb_p_u32 (addr, 0, value, p); - } - -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo1 (uint32x4_t * addr, const int offset, uint32x4_t value, mve_pred16_t p) -+foo1 (uint32x4_t *addr, uint32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_base_wb_p (addr, 8, value, p); -+ return vstrwq_scatter_base_wb_p (addr, 0, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-times "vstrwt.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" 2 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c -index 618dbaf5aa6..b6a9f6cd1f4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c -@@ -1,19 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo (uint32x4_t * addr, const int offset, int32x4_t value) -+foo (uint32x4_t *addr, int32x4_t value) - { -- vstrwq_scatter_base_wb_s32 (addr, 8, value); -+ return vstrwq_scatter_base_wb_s32 (addr, 0, value); - } - -+ -+/* -+**foo1: -+** ... -+** vstrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo1 (uint32x4_t * addr, const int offset, int32x4_t value) -+foo1 (uint32x4_t *addr, int32x4_t value) - { -- vstrwq_scatter_base_wb (addr, 8, value); -+ return vstrwq_scatter_base_wb (addr, 0, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-times "vstrw.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" 2 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c -index 912a4590cf5..81a278f4e2b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c -@@ -1,19 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo (uint32x4_t * addr, uint32x4_t value) -+foo (uint32x4_t *addr, uint32x4_t value) - { -- vstrwq_scatter_base_wb_u32 (addr, 8, value); -+ return vstrwq_scatter_base_wb_u32 (addr, 0, value); - } - -+ -+/* -+**foo1: -+** ... -+** vstrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|) -+** ... -+*/ - void --foo1 (uint32x4_t * addr, uint32x4_t value) -+foo1 (uint32x4_t *addr, uint32x4_t value) - { -- vstrwq_scatter_base_wb (addr, 8, value); -+ return vstrwq_scatter_base_wb (addr, 0, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler-times "vstrw.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" 2 } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_f32.c -index c14d3ce607b..b81df68aa21 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (float32_t * base, uint32x4_t offset, float32x4_t value) -+foo (float32_t *base, uint32x4_t offset, float32x4_t value) - { -- vstrwq_scatter_offset_f32 (base, offset, value); -+ return vstrwq_scatter_offset_f32 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrw.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (float32_t * base, uint32x4_t offset, float32x4_t value) -+foo1 (float32_t *base, uint32x4_t offset, float32x4_t value) - { -- vstrwq_scatter_offset (base, offset, value); -+ return vstrwq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_f32.c -index 115be56ec00..8aee42f76a3 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_f32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (float32_t * base, uint32x4_t offset, float32x4_t value, mve_pred16_t p) -+foo (float32_t *base, uint32x4_t offset, float32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_offset_p_f32 (base, offset, value, p); -+ return vstrwq_scatter_offset_p_f32 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (float32_t * base, uint32x4_t offset, float32x4_t value, mve_pred16_t p) -+foo1 (float32_t *base, uint32x4_t offset, float32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_offset_p (base, offset, value, p); -+ return vstrwq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_s32.c -index 48652af3cff..9c74ae7a8d8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int32_t * base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) -+foo (int32_t *base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_offset_p_s32 (base, offset, value, p); -+ return vstrwq_scatter_offset_p_s32 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int32_t * base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) -+foo1 (int32_t *base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_offset_p (base, offset, value, p); -+ return vstrwq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_u32.c -index dcd42ec453f..015a202b548 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint32_t * base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) -+foo (uint32_t *base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_offset_p_u32 (base, offset, value, p); -+ return vstrwq_scatter_offset_p_u32 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint32_t * base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) -+foo1 (uint32_t *base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_offset_p (base, offset, value, p); -+ return vstrwq_scatter_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_s32.c -index 04672e5a4aa..df373111b78 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (int32_t * base, uint32x4_t offset, int32x4_t value) -+foo (int32_t *base, uint32x4_t offset, int32x4_t value) - { -- vstrwq_scatter_offset_s32 (base, offset, value); -+ return vstrwq_scatter_offset_s32 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrw.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (int32_t * base, uint32x4_t offset, int32x4_t value) -+foo1 (int32_t *base, uint32x4_t offset, int32x4_t value) - { -- vstrwq_scatter_offset (base, offset, value); -+ return vstrwq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_u32.c -index e3d312550c6..a74696ca273 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo (uint32_t * base, uint32x4_t offset, uint32x4_t value) -+foo (uint32_t *base, uint32x4_t offset, uint32x4_t value) - { -- vstrwq_scatter_offset_u32 (base, offset, value); -+ return vstrwq_scatter_offset_u32 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrw.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|) -+** ... -+*/ - void --foo1 (uint32_t * base, uint32x4_t offset, uint32x4_t value) -+foo1 (uint32_t *base, uint32x4_t offset, uint32x4_t value) - { -- vstrwq_scatter_offset (base, offset, value); -+ return vstrwq_scatter_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_f32.c -index b20c4c7ed3a..1c9b29a57b8 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - void --foo (float32_t * base, uint32x4_t offset, float32x4_t value) -+foo (float32_t *base, uint32x4_t offset, float32x4_t value) - { -- vstrwq_scatter_shifted_offset_f32 (base, offset, value); -+ return vstrwq_scatter_shifted_offset_f32 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrw.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - void --foo1 (float32_t * base, uint32x4_t offset, float32x4_t value) -+foo1 (float32_t *base, uint32x4_t offset, float32x4_t value) - { -- vstrwq_scatter_shifted_offset (base, offset, value); -+ return vstrwq_scatter_shifted_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_f32.c -index 1682f702dc6..08e1572854e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_f32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - void --foo (float32_t * base, uint32x4_t offset, float32x4_t value, mve_pred16_t p) -+foo (float32_t *base, uint32x4_t offset, float32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_shifted_offset_p_f32 (base, offset, value, p); -+ return vstrwq_scatter_shifted_offset_p_f32 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - void --foo1 (float32_t * base, uint32x4_t offset, float32x4_t value, mve_pred16_t p) -+foo1 (float32_t *base, uint32x4_t offset, float32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_shifted_offset_p (base, offset, value, p); -+ return vstrwq_scatter_shifted_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_s32.c -index eef6ea6e196..2b8f8a7d61f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_s32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - void --foo (int32_t * base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) -+foo (int32_t *base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_shifted_offset_p_s32 (base, offset, value, p); -+ return vstrwq_scatter_shifted_offset_p_s32 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - void --foo1 (int32_t * base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) -+foo1 (int32_t *base, uint32x4_t offset, int32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_shifted_offset_p (base, offset, value, p); -+ return vstrwq_scatter_shifted_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_u32.c -index b11e7e04dc4..3e4e87bf79a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_u32.c -@@ -1,21 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - void --foo (uint32_t * base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) -+foo (uint32_t *base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_shifted_offset_p_u32 (base, offset, value, p); -+ return vstrwq_scatter_shifted_offset_p_u32 (base, offset, value, p); - } - --/* { dg-final { scan-assembler "vstrwt.32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - void --foo1 (uint32_t * base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) -+foo1 (uint32_t *base, uint32x4_t offset, uint32x4_t value, mve_pred16_t p) - { -- vstrwq_scatter_shifted_offset_p (base, offset, value, p); -+ return vstrwq_scatter_shifted_offset_p (base, offset, value, p); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrwt.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_s32.c -index 8ac25c47554..7f25490a69a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - void --foo (int32_t * base, uint32x4_t offset, int32x4_t value) -+foo (int32_t *base, uint32x4_t offset, int32x4_t value) - { -- vstrwq_scatter_shifted_offset_s32 (base, offset, value); -+ return vstrwq_scatter_shifted_offset_s32 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrw.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - void --foo1 (int32_t * base, uint32x4_t offset, int32x4_t value) -+foo1 (int32_t *base, uint32x4_t offset, int32x4_t value) - { -- vstrwq_scatter_shifted_offset (base, offset, value); -+ return vstrwq_scatter_shifted_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_u32.c -index 1ce0ddacc7a..a96220c4f6e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - void --foo (uint32_t * base, uint32x4_t offset, uint32x4_t value) -+foo (uint32_t *base, uint32x4_t offset, uint32x4_t value) - { -- vstrwq_scatter_shifted_offset_u32 (base, offset, value); -+ return vstrwq_scatter_shifted_offset_u32 (base, offset, value); - } - --/* { dg-final { scan-assembler "vstrw.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #2\](?: @.*|) -+** ... -+*/ - void --foo1 (uint32_t * base, uint32x4_t offset, uint32x4_t value) -+foo1 (uint32_t *base, uint32x4_t offset, uint32x4_t value) - { -- vstrwq_scatter_shifted_offset (base, offset, value); -+ return vstrwq_scatter_shifted_offset (base, offset, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_u32.c -index 4aec9935b84..df554af79a6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo (uint32_t * addr, uint32x4_t value) -+foo (uint32_t *base, uint32x4_t value) - { -- vstrwq_u32 (addr, value); -+ return vstrwq_u32 (base, value); - } - --/* { dg-final { scan-assembler "vstrw.32" } } */ - -+/* -+**foo1: -+** ... -+** vstrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|) -+** ... -+*/ - void --foo1 (uint32_t * addr, uint32x4_t value) -+foo1 (uint32_t *base, uint32x4_t value) - { -- vstrwq (addr, value); -+ return vstrwq (base, value); -+} -+ -+#ifdef __cplusplus - } -+#endif - --/* { dg-final { scan-assembler "vstrw.32" } } */ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_f16.c -index 8e3ce24fa49..5114f9f6e85 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_f16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b) - { - return vsubq_f16 (a, b); - } - --/* { dg-final { scan-assembler "vsub.f16" } } */ - -+/* -+**foo1: -+** ... -+** vsub.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16x8_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_f32.c -index 5cb239d70fa..d0524ba6196 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_f32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b) - { - return vsubq_f32 (a, b); - } - --/* { dg-final { scan-assembler "vsub.f32" } } */ - -+/* -+**foo1: -+** ... -+** vsub.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32x4_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_f16.c -index f4b3f806822..e8536dc51f9 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_f16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vsubq_m_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16x8_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.f16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_f32.c -index 75dbf9335c9..eca850b63b5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_f32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vsubq_m_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32x4_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.f32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f16-1.c -deleted file mode 100644 -index f3e19613e7e..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16x8_t inactive, float16x8_t a, float16_t b, mve_pred16_t p) --{ -- return vsubq_m (inactive, a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f16.c -index 556a0845087..1753d6c8045 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t inactive, float16x8_t a, float16_t b, mve_pred16_t p) - { - return vsubq_m_n_f16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t inactive, float16x8_t a, float16_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.f16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t inactive, float16x8_t a, mve_pred16_t p) -+{ -+ return vsubq_m (inactive, a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f32-1.c -deleted file mode 100644 -index 4b5cd90c9ed..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32x4_t inactive, float32x4_t a, float32_t b, mve_pred16_t p) --{ -- return vsubq_m (inactive, a, 23.23, p); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f32.c -index e53f5f1966a..056810f4b06 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t inactive, float32x4_t a, float32_t b, mve_pred16_t p) - { - return vsubq_m_n_f32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t inactive, float32x4_t a, float32_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.f32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t inactive, float32x4_t a, mve_pred16_t p) -+{ -+ return vsubq_m (inactive, a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s16.c -index 73443d500ba..a55ed63d635 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s16.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vsubq_m_n_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s32.c -index b4031111678..480fed3a112 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s32.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vsubq_m_n_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s8.c -index 5c4e1019225..9aaa540a990 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s8.c -@@ -1,23 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vsubq_m_n_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u16.c -index 04a3036ede8..5d033129356 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u16.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vsubq_m_n_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t inactive, uint16x8_t a, mve_pred16_t p) -+{ -+ return vsubq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u32.c -index a21f9366373..3f9494005cb 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u32.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vsubq_m_n_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t inactive, uint32x4_t a, mve_pred16_t p) -+{ -+ return vsubq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u8.c -index 18f635f1e1a..c6ee8887e62 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u8.c -@@ -1,23 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vsubq_m_n_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t inactive, uint8x16_t a, mve_pred16_t p) -+{ -+ return vsubq_m (inactive, a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s16.c -index 598d648887b..cfd43b07258 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vsubq_m_s16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s32.c -index af6750278f1..6c382ba6f45 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vsubq_m_s32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t inactive, int32x4_t a, int32x4_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s8.c -index 5effbe2e017..0408dd0e2c4 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vsubq_m_s8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t inactive, int8x16_t a, int8x16_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u16.c -index 12218ae6791..9d860e9b224 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u16.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vsubq_m_u16 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t inactive, uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u32.c -index 3a63eeb2b3d..c409b0a9d58 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u32.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vsubq_m_u32 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u8.c -index a17a2741a47..7d568c17173 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u8.c -@@ -1,22 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vsubq_m_u8 (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t inactive, uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { - return vsubq_m (inactive, a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f16-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f16-1.c -deleted file mode 100644 -index f8832546f54..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f16-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float16x8_t --foo1 (float16x8_t a, float16_t b) --{ -- return vsubq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f16.c -index 10e27dae907..3c31189e52e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f16.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16_t b) - { - return vsubq_n_f16 (a, b); - } - --/* { dg-final { scan-assembler "vsub.f16" } } */ - -+/* -+**foo1: -+** ... -+** vsub.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo1 (float16x8_t a, float16_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.f16" } } */ -+/* -+**foo2: -+** ... -+** vsub.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t a) -+{ -+ return vsubq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f32-1.c -deleted file mode 100644 -index 88d9675540d..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f32-1.c -+++ /dev/null -@@ -1,12 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo1 (float32x4_t a, float32_t b) --{ -- return vsubq (a, 23.23); --} -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f32.c -index 9e16d6c075c..041266b3b7d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f32.c -@@ -1,21 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32_t b) - { - return vsubq_n_f32 (a, b); - } - --/* { dg-final { scan-assembler "vsub.f32" } } */ - -+/* -+**foo1: -+** ... -+** vsub.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo1 (float32x4_t a, float32_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.f32" } } */ -+/* -+**foo2: -+** ... -+** vsub.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t a) -+{ -+ return vsubq (a, 1.1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s16.c -index 7f2af8691c0..78a2b911c97 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s16.c -@@ -1,22 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ --/* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b) - { - return vsubq_n_s16 (a, b); - } - --/* { dg-final { scan-assembler "vsub.i16" } } */ - -+/* -+**foo1: -+** ... -+** vsub.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s32.c -index a5e6bf486fd..98ab34e89d5 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s32.c -@@ -1,22 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ --/* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b) - { - return vsubq_n_s32 (a, b); - } - --/* { dg-final { scan-assembler "vsub.i32" } } */ - -+/* -+**foo1: -+** ... -+** vsub.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s8.c -index 5754379358d..07173eaa1ec 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s8.c -@@ -1,22 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ --/* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b) - { - return vsubq_n_s8 (a, b); - } - --/* { dg-final { scan-assembler "vsub.i8" } } */ - -+/* -+**foo1: -+** ... -+** vsub.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u16.c -index ea0a3f9260c..f0744f5c501 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u16.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ --/* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16_t b) - { - return vsubq_n_u16 (a, b); - } - --/* { dg-final { scan-assembler "vsub.i16" } } */ - -+/* -+**foo1: -+** ... -+** vsub.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.i16" } } */ -+/* -+**foo2: -+** ... -+** vsub.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t a) -+{ -+ return vsubq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u32.c -index cc409b59438..600d6290cde 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u32.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ --/* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32_t b) - { - return vsubq_n_u32 (a, b); - } - --/* { dg-final { scan-assembler "vsub.i32" } } */ - -+/* -+**foo1: -+** ... -+** vsub.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.i32" } } */ -+/* -+**foo2: -+** ... -+** vsub.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t a) -+{ -+ return vsubq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u8.c -index 8a18a89b353..34d4725b27b 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u8.c -@@ -1,22 +1,53 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ --/* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8_t b) - { - return vsubq_n_u8 (a, b); - } - --/* { dg-final { scan-assembler "vsub.i8" } } */ - -+/* -+**foo1: -+** ... -+** vsub.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.i8" } } */ -+/* -+**foo2: -+** ... -+** vsub.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t a) -+{ -+ return vsubq (a, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s16.c -index 15e732f1f66..80213e828e6 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b) - { - return vsubq_s16 (a, b); - } - --/* { dg-final { scan-assembler "vsub.i16" } } */ - -+/* -+**foo1: -+** ... -+** vsub.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo1 (int16x8_t a, int16x8_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s32.c -index 5b4ee855711..262ec5ce5c7 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b) - { - return vsubq_s32 (a, b); - } - --/* { dg-final { scan-assembler "vsub.i32" } } */ - -+/* -+**foo1: -+** ... -+** vsub.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo1 (int32x4_t a, int32x4_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s8.c -index b23893af605..9a2d55f1307 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b) - { - return vsubq_s8 (a, b); - } - --/* { dg-final { scan-assembler "vsub.i8" } } */ - -+/* -+**foo1: -+** ... -+** vsub.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo1 (int8x16_t a, int8x16_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u16.c -index edb5e354411..62a5942396d 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u16.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b) - { - return vsubq_u16 (a, b); - } - --/* { dg-final { scan-assembler "vsub.i16" } } */ - -+/* -+**foo1: -+** ... -+** vsub.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo1 (uint16x8_t a, uint16x8_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.i16" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u32.c -index 68040afd52b..3c824b0fb75 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u32.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b) - { - return vsubq_u32 (a, b); - } - --/* { dg-final { scan-assembler "vsub.i32" } } */ - -+/* -+**foo1: -+** ... -+** vsub.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo1 (uint32x4_t a, uint32x4_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.i32" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u8.c -index 92c4f059b0e..c9c7f6ca085 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u8.c -@@ -1,21 +1,41 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vsub.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b) - { - return vsubq_u8 (a, b); - } - --/* { dg-final { scan-assembler "vsub.i8" } } */ - -+/* -+**foo1: -+** ... -+** vsub.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo1 (uint8x16_t a, uint8x16_t b) - { - return vsubq (a, b); - } - --/* { dg-final { scan-assembler "vsub.i8" } } */ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_f16.c -index 4cb8be0ea7f..cb233e9897c 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_f16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16x8_t b, mve_pred16_t p) - { -- return vsubq_x_f16 (a, b, p); -+ return vsubq_x_f16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.f16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (float16x8_t a, float16x8_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_f32.c -index f6711d7f207..227e9349206 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_f32.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32x4_t b, mve_pred16_t p) - { -- return vsubq_x_f32 (a, b, p); -+ return vsubq_x_f32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.f32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (float32x4_t a, float32x4_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f16.c -index c4adacbf5be..14574d5074e 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f16.c -@@ -1,15 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float16x8_t - foo (float16x8_t a, float16_t b, mve_pred16_t p) - { -- return vsubq_x_n_f16 (a, b, p); -+ return vsubq_x_n_f16 (a, b, p); -+} -+ -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo1 (float16x8_t a, float16_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.f16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float16x8_t -+foo2 (float16x8_t a, mve_pred16_t p) -+{ -+ return vsubq_x (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif - -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f32-1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f32-1.c -deleted file mode 100644 -index dcb2425397b..00000000000 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f32-1.c -+++ /dev/null -@@ -1,13 +0,0 @@ --/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ --/* { dg-add-options arm_v8_1m_mve_fp } */ --/* { dg-additional-options "-O2" } */ -- --#include "arm_mve.h" --float32x4_t --foo (float32x4_t a, float32_t b, mve_pred16_t p) --{ -- return vsubq_x_n_f32 (a, 23.23, p); --} -- -- --/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f32.c -index a4affa0a3a9..864f6fee264 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f32.c -@@ -1,15 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ - /* { dg-add-options arm_v8_1m_mve_fp } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - float32x4_t - foo (float32x4_t a, float32_t b, mve_pred16_t p) - { -- return vsubq_x_n_f32 (a, b, p); -+ return vsubq_x_n_f32 (a, b, p); -+} -+ -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo1 (float32x4_t a, float32_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.f32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.f32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+float32x4_t -+foo2 (float32x4_t a, mve_pred16_t p) -+{ -+ return vsubq_x (a, 1.1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif - -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s16.c -index 99c59b1a6c1..ee9e7bcb45f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16_t b, mve_pred16_t p) - { -- return vsubq_x_n_s16 (a, b, p); -+ return vsubq_x_n_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+int16x8_t -+foo1 (int16x8_t a, int16_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s32.c -index 6c29ebec05c..551f46c92ff 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s32.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32_t b, mve_pred16_t p) - { -- return vsubq_x_n_s32 (a, b, p); -+ return vsubq_x_n_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+int32x4_t -+foo1 (int32x4_t a, int32_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s8.c -index 0f83c305473..04a9d7285c0 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s8.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8_t b, mve_pred16_t p) - { -- return vsubq_x_n_s8 (a, b, p); -+ return vsubq_x_n_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+int8x16_t -+foo1 (int8x16_t a, int8_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u16.c -index 9a372d762d1..a07d4955224 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u16.c -@@ -1,15 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16_t b, mve_pred16_t p) - { -- return vsubq_x_n_u16 (a, b, p); -+ return vsubq_x_n_u16 (a, b, p); -+} -+ -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo1 (uint16x8_t a, uint16_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i16" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo2 (uint16x8_t a, mve_pred16_t p) -+{ -+ return vsubq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif - -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u32.c -index 5219f154fa9..1055769ee1f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u32.c -@@ -1,15 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32_t b, mve_pred16_t p) - { -- return vsubq_x_n_u32 (a, b, p); -+ return vsubq_x_n_u32 (a, b, p); -+} -+ -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo1 (uint32x4_t a, uint32_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i32" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo2 (uint32x4_t a, mve_pred16_t p) -+{ -+ return vsubq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif - -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u8.c -index 0a0bcf8623a..a67d303107a 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u8.c -@@ -1,15 +1,65 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8_t b, mve_pred16_t p) - { -- return vsubq_x_n_u8 (a, b, p); -+ return vsubq_x_n_u8 (a, b, p); -+} -+ -+ -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo1 (uint8x16_t a, uint8_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i8" } } */ -+/* -+**foo2: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo2 (uint8x16_t a, mve_pred16_t p) -+{ -+ return vsubq_x (a, 1, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif - -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s16.c -index 37936a6d647..9bf363275cc 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int16x8_t - foo (int16x8_t a, int16x8_t b, mve_pred16_t p) - { -- return vsubq_x_s16 (a, b, p); -+ return vsubq_x_s16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+int16x8_t -+foo1 (int16x8_t a, int16x8_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s32.c -index c085f59c6a2..19707f684ba 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s32.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int32x4_t - foo (int32x4_t a, int32x4_t b, mve_pred16_t p) - { -- return vsubq_x_s32 (a, b, p); -+ return vsubq_x_s32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+int32x4_t -+foo1 (int32x4_t a, int32x4_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s8.c -index 361507821ea..ef4d831a117 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s8.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - int8x16_t - foo (int8x16_t a, int8x16_t b, mve_pred16_t p) - { -- return vsubq_x_s8 (a, b, p); -+ return vsubq_x_s8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+int8x16_t -+foo1 (int8x16_t a, int8x16_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u16.c -index 21423dc4f80..6c3d6697c92 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u16.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u16.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint16x8_t - foo (uint16x8_t a, uint16x8_t b, mve_pred16_t p) - { -- return vsubq_x_u16 (a, b, p); -+ return vsubq_x_u16 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i16" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i16 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint16x8_t -+foo1 (uint16x8_t a, uint16x8_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u32.c -index 38dd09ad8f7..97f9f744f2f 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u32.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u32.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint32x4_t - foo (uint32x4_t a, uint32x4_t b, mve_pred16_t p) - { -- return vsubq_x_u32 (a, b, p); -+ return vsubq_x_u32 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i32" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint32x4_t -+foo1 (uint32x4_t a, uint32x4_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u8.c -index 406cbf760fd..75e75e5d028 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u8.c -+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u8.c -@@ -1,15 +1,49 @@ - /* { dg-require-effective-target arm_v8_1m_mve_ok } */ - /* { dg-add-options arm_v8_1m_mve } */ - /* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ - - #include "arm_mve.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ - uint8x16_t - foo (uint8x16_t a, uint8x16_t b, mve_pred16_t p) - { -- return vsubq_x_u8 (a, b, p); -+ return vsubq_x_u8 (a, b, p); - } - --/* { dg-final { scan-assembler "vpst" } } */ --/* { dg-final { scan-assembler "vsubt.i8" } } */ - -+/* -+**foo1: -+** ... -+** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -+** ... -+** vpst(?: @.*|) -+** ... -+** vsubt.i8 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) -+** ... -+*/ -+uint8x16_t -+foo1 (uint8x16_t a, uint8x16_t b, mve_pred16_t p) -+{ -+ return vsubq_x (a, b, p); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -\ No newline at end of file -diff --git a/gcc/testsuite/gcc.target/arm/mve/mve_const_shifts.c b/gcc/testsuite/gcc.target/arm/mve/mve_const_shifts.c -new file mode 100644 -index 00000000000..b17f9f36057 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/mve_const_shifts.c -@@ -0,0 +1,41 @@ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-additional-options "-O2" } */ -+/* { dg-final { check-function-bodies "**" "" } } */ -+ -+#include "arm_mve.h" -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+**foo11: -+** ... -+** movs r0, #2 -+** ... -+*/ -+uint32_t -+foo11 () -+{ -+ return uqshl (1, 1); -+} -+ -+/* -+**foo12: -+** ... -+** movs r0, #2 -+** movs r1, #0 -+** ... -+*/ -+uint64_t -+foo12 () -+{ -+ return uqshll (1, 1); -+} -+ -+#ifdef __cplusplus -+} -+#endif -+ -+/* { dg-final { scan-assembler-not "__ARM_undef" } } */ -diff --git a/gcc/testsuite/gcc.target/arm/mve/mve_load_memory_modes.c b/gcc/testsuite/gcc.target/arm/mve/mve_load_memory_modes.c -index e35eb1108aa..816980d1203 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/mve_load_memory_modes.c -+++ b/gcc/testsuite/gcc.target/arm/mve/mve_load_memory_modes.c -@@ -7,7 +7,7 @@ - /* - **off_load8_0: - ** ... --** vldrb.8 q0, \[r0, #16\] -+** vldrb.8 q[0-7], \[r0, #16\] - ** ... - */ - int8x16_t off_load8_0 (int8_t * a) -@@ -18,7 +18,7 @@ int8x16_t off_load8_0 (int8_t * a) - /* - **off_load8_1: - ** ... --** vldrb.u16 q0, \[r0, #1\] -+** vldrb.u16 q[0-7], \[r0, #1\] - ** ... - */ - uint16x8_t off_load8_1 (uint8_t * a) -@@ -29,7 +29,7 @@ uint16x8_t off_load8_1 (uint8_t * a) - /* - **off_load8_2: - ** ... --** vldrb.s32 q0, \[r0, #127\] -+** vldrb.s32 q[0-7], \[r0, #127\] - ** ... - */ - int32x4_t off_load8_2 (int8_t * a) -@@ -40,7 +40,7 @@ int32x4_t off_load8_2 (int8_t * a) - /* - **off_load8_3: - ** ... --** vldrb.8 q0, \[r0, #-127\] -+** vldrb.8 q[0-7], \[r0, #-127\] - ** ... - */ - uint8x16_t off_load8_3 (uint8_t * a) -@@ -51,7 +51,7 @@ uint8x16_t off_load8_3 (uint8_t * a) - /* - **not_off_load8_0: - ** ... --** vldrb.8 q0, \[r[0-9]+\] -+** vldrb.8 q[0-7], \[r[0-7]+\] - ** ... - */ - int8x16_t not_off_load8_0 (int8_t * a) -@@ -62,7 +62,7 @@ int8x16_t not_off_load8_0 (int8_t * a) - /* - **off_loadfp16_0: - ** ... --** vldrh.16 q0, \[r0, #-244\] -+** vldrh.16 q[0-7], \[r0, #-244\] - ** ... - */ - float16x8_t off_loadfp16_0 (float16_t *a) -@@ -73,7 +73,7 @@ float16x8_t off_loadfp16_0 (float16_t *a) - /* - **off_load16_0: - ** ... --** vldrh.16 q0, \[r0, #-2\] -+** vldrh.16 q[0-7], \[r0, #-2\] - ** ... - */ - uint16x8_t off_load16_0 (uint16_t * a) -@@ -84,7 +84,7 @@ uint16x8_t off_load16_0 (uint16_t * a) - /* - **off_load16_1: - ** ... --** vldrh.u32 q0, \[r0, #254\] -+** vldrh.u32 q[0-7], \[r0, #254\] - ** ... - */ - uint32x4_t off_load16_1 (uint16_t * a) -@@ -95,7 +95,7 @@ uint32x4_t off_load16_1 (uint16_t * a) - /* - **not_off_load16_0: - ** ... --** vldrh.16 q0, \[r[0-9]+\] -+** vldrh.16 q[0-7], \[r[0-7]+\] - ** ... - */ - int16x8_t not_off_load16_0 (int8_t * a) -@@ -106,7 +106,7 @@ int16x8_t not_off_load16_0 (int8_t * a) - /* - **not_off_load16_1: - ** ... --** vldrh.u32 q0, \[r[0-9]+\] -+** vldrh.u32 q[0-7], \[r[0-7]+\] - ** ... - */ - uint32x4_t not_off_load16_1 (uint16_t * a) -@@ -117,7 +117,7 @@ uint32x4_t not_off_load16_1 (uint16_t * a) - /* - **off_loadfp32_0: - ** ... --** vldrw.32 q0, \[r0, #24\] -+** vldrw.32 q[0-7], \[r0, #24\] - ** ... - */ - float32x4_t off_loadfp32_0 (float32_t *a) -@@ -128,7 +128,7 @@ float32x4_t off_loadfp32_0 (float32_t *a) - /* - **off_load32_0: - ** ... --** vldrw.32 q0, \[r0, #4\] -+** vldrw.32 q[0-7], \[r0, #4\] - ** ... - */ - uint32x4_t off_load32_0 (uint32_t * a) -@@ -139,7 +139,7 @@ uint32x4_t off_load32_0 (uint32_t * a) - /* - **off_load32_1: - ** ... --** vldrw.32 q0, \[r0, #-508\] -+** vldrw.32 q[0-7], \[r0, #-508\] - ** ... - */ - int32x4_t off_load32_1 (int32_t * a) -@@ -149,7 +149,7 @@ int32x4_t off_load32_1 (int32_t * a) - /* - **pre_load8_0: - ** ... --** vldrb.8 q[0-9]+, \[r0, #16\]! -+** vldrb.8 q[0-7], \[r0, #16\]! - ** ... - */ - int8_t* pre_load8_0 (int8_t * a, int8x16_t *v) -@@ -162,7 +162,7 @@ int8_t* pre_load8_0 (int8_t * a, int8x16_t *v) - /* - **pre_load8_1: - ** ... --** vldrb.u16 q[0-9]+, \[r0, #4\]! -+** vldrb.u16 q[0-7], \[r0, #4\]! - ** ... - */ - uint8_t* pre_load8_1 (uint8_t * a, uint16x8_t *v) -@@ -175,7 +175,7 @@ uint8_t* pre_load8_1 (uint8_t * a, uint16x8_t *v) - /* - **pre_loadfp16_0: - ** ... --** vldrh.16 q[0-9]+, \[r0, #128\]! -+** vldrh.16 q[0-7], \[r0, #128\]! - ** ... - */ - float16_t* pre_loadfp16_0 (float16_t *a, float16x8_t *v) -@@ -188,7 +188,7 @@ float16_t* pre_loadfp16_0 (float16_t *a, float16x8_t *v) - /* - **pre_load16_0: - ** ... --** vldrh.16 q[0-9]+, \[r0, #-254\]! -+** vldrh.16 q[0-7], \[r0, #-254\]! - ** ... - */ - int16_t* pre_load16_0 (int16_t * a, int16x8_t *v) -@@ -201,7 +201,7 @@ int16_t* pre_load16_0 (int16_t * a, int16x8_t *v) - /* - **pre_load16_1: - ** ... --** vldrh.s32 q[0-9]+, \[r0, #52\]! -+** vldrh.s32 q[0-7], \[r0, #52\]! - ** ... - */ - int16_t* pre_load16_1 (int16_t * a, int32x4_t *v) -@@ -214,7 +214,7 @@ int16_t* pre_load16_1 (int16_t * a, int32x4_t *v) - /* - **pre_loadfp32_0: - ** ... --** vldrw.32 q[0-9]+, \[r0, #-72\]! -+** vldrw.32 q[0-7], \[r0, #-72\]! - ** ... - */ - float32_t* pre_loadfp32_0 (float32_t *a, float32x4_t *v) -@@ -228,7 +228,7 @@ float32_t* pre_loadfp32_0 (float32_t *a, float32x4_t *v) - /* - **pre_load32_0: - ** ... --** vldrw.32 q[0-9]+, \[r0, #-4\]! -+** vldrw.32 q[0-7], \[r0, #-4\]! - ** ... - */ - uint32_t* pre_load32_0 (uint32_t * a, uint32x4_t *v) -@@ -242,7 +242,7 @@ uint32_t* pre_load32_0 (uint32_t * a, uint32x4_t *v) - /* - **post_load8_0: - ** ... --** vldrb.8 q[0-9]+, \[r0\], #26 -+** vldrb.8 q[0-7], \[r0\], #26 - ** ... - */ - uint8_t* post_load8_0 (uint8_t * a, uint8x16_t *v) -@@ -255,7 +255,7 @@ uint8_t* post_load8_0 (uint8_t * a, uint8x16_t *v) - /* - **post_load8_1: - ** ... --** vldrb.s16 q[0-9]+, \[r0\], #-1 -+** vldrb.s16 q[0-7], \[r0\], #-1 - ** ... - */ - int8_t* post_load8_1 (int8_t * a, int16x8_t *v) -@@ -268,7 +268,7 @@ int8_t* post_load8_1 (int8_t * a, int16x8_t *v) - /* - **post_load8_2: - ** ... --** vldrb.8 q[0-9]+, \[r0\], #26 -+** vldrb.8 q[0-7], \[r0\], #26 - ** ... - */ - uint8_t* post_load8_2 (uint8_t * a, uint8x16_t *v) -@@ -281,7 +281,7 @@ uint8_t* post_load8_2 (uint8_t * a, uint8x16_t *v) - /* - **post_load8_3: - ** ... --** vldrb.s16 q[0-9]+, \[r0\], #-1 -+** vldrb.s16 q[0-7], \[r0\], #-1 - ** ... - */ - int8_t* post_load8_3 (int8_t * a, int16x8_t *v) -@@ -294,7 +294,7 @@ int8_t* post_load8_3 (int8_t * a, int16x8_t *v) - /* - **post_loadfp16_0: - ** ... --** vldrh.16 q[0-9]+, \[r0\], #-24 -+** vldrh.16 q[0-7], \[r0\], #-24 - ** ... - */ - float16_t* post_loadfp16_0 (float16_t *a, float16x8_t *v) -@@ -307,7 +307,7 @@ float16_t* post_loadfp16_0 (float16_t *a, float16x8_t *v) - /* - **post_load16_0: - ** ... --** vldrh.16 q[0-9]+, \[r0\], #-126 -+** vldrh.16 q[0-7], \[r0\], #-126 - ** ... - */ - uint16_t* post_load16_0 (uint16_t * a, uint16x8_t *v) -@@ -320,7 +320,7 @@ uint16_t* post_load16_0 (uint16_t * a, uint16x8_t *v) - /* - **post_load16_1: - ** ... --** vldrh.u32 q[0-9]+, \[r0\], #16 -+** vldrh.u32 q[0-7], \[r0\], #16 - ** ... - */ - uint16_t* post_load16_1 (uint16_t * a, uint32x4_t *v) -@@ -333,7 +333,7 @@ uint16_t* post_load16_1 (uint16_t * a, uint32x4_t *v) - /* - **post_loadfp32_0: - ** ... --** vldrw.32 q[0-9]+, \[r0\], #4 -+** vldrw.32 q[0-7], \[r0\], #4 - ** ... - */ - float32_t* post_loadfp32_0 (float32_t *a, float32x4_t *v) -@@ -346,7 +346,7 @@ float32_t* post_loadfp32_0 (float32_t *a, float32x4_t *v) - /* - **post_load32_0: - ** ... --** vldrw.32 q[0-9]+, \[r0\], #-16 -+** vldrw.32 q[0-7], \[r0\], #-16 - ** ... - */ - int32_t* post_load32_0 (int32_t * a, int32x4_t *v) -diff --git a/gcc/testsuite/gcc.target/arm/mve/mve_store_memory_modes.c b/gcc/testsuite/gcc.target/arm/mve/mve_store_memory_modes.c -index 632f5b44f0b..11df1144064 100644 ---- a/gcc/testsuite/gcc.target/arm/mve/mve_store_memory_modes.c -+++ b/gcc/testsuite/gcc.target/arm/mve/mve_store_memory_modes.c -@@ -7,7 +7,7 @@ - /* - **off_store8_0: - ** ... --** vstrb.8 q0, \[r0, #16\] -+** vstrb.8 q[0-7], \[r0, #16\] - ** ... - */ - uint8_t *off_store8_0 (uint8_t * a, uint8x16_t v) -@@ -19,7 +19,7 @@ uint8_t *off_store8_0 (uint8_t * a, uint8x16_t v) - /* - **off_store8_1: - ** ... --** vstrb.16 q0, \[r0, #-1\] -+** vstrb.16 q[0-7], \[r0, #-1\] - ** ... - */ - int8_t *off_store8_1 (int8_t * a, int16x8_t v) -@@ -31,7 +31,7 @@ int8_t *off_store8_1 (int8_t * a, int16x8_t v) - /* - **off_store8_2: - ** ... --** vstrb.32 q0, \[r0, #-127\] -+** vstrb.32 q[0-7], \[r0, #-127\] - ** ... - */ - uint8_t *off_store8_2 (uint8_t * a, uint32x4_t v) -@@ -43,7 +43,7 @@ uint8_t *off_store8_2 (uint8_t * a, uint32x4_t v) - /* - **off_store8_3: - ** ... --** vstrb.8 q0, \[r0, #127\] -+** vstrb.8 q[0-7], \[r0, #127\] - ** ... - */ - int8_t *off_store8_3 (int8_t * a, int8x16_t v) -@@ -55,7 +55,7 @@ int8_t *off_store8_3 (int8_t * a, int8x16_t v) - /* - **not_off_store8_0: - ** ... --** vstrb.8 q0, \[r[0-9]+\] -+** vstrb.8 q[0-7], \[r[0-7]+\] - ** ... - */ - uint8_t *not_off_store8_0 (uint8_t * a, uint8x16_t v) -@@ -67,7 +67,7 @@ uint8_t *not_off_store8_0 (uint8_t * a, uint8x16_t v) - /* - **off_storefp16_0: - ** ... --** vstrh.16 q0, \[r0, #250\] -+** vstrh.16 q[0-7], \[r0, #250\] - ** ... - */ - float16_t *off_storefp16_0 (float16_t *a, float16x8_t v) -@@ -79,7 +79,7 @@ float16_t *off_storefp16_0 (float16_t *a, float16x8_t v) - /* - **off_store16_0: - ** ... --** vstrh.16 q0, \[r0, #4\] -+** vstrh.16 q[0-7], \[r0, #4\] - ** ... - */ - int16_t *off_store16_0 (int16_t * a, int16x8_t v) -@@ -91,7 +91,7 @@ int16_t *off_store16_0 (int16_t * a, int16x8_t v) - /* - **off_store16_1: - ** ... --** vstrh.32 q0, \[r0, #-254\] -+** vstrh.32 q[0-7], \[r0, #-254\] - ** ... - */ - int16_t *off_store16_1 (int16_t * a, int32x4_t v) -@@ -103,7 +103,7 @@ int16_t *off_store16_1 (int16_t * a, int32x4_t v) - /* - **not_off_store16_0: - ** ... --** vstrh.16 q0, \[r[0-9]+\] -+** vstrh.16 q[0-7], \[r[0-7]+\] - ** ... - */ - uint8_t *not_off_store16_0 (uint8_t * a, uint16x8_t v) -@@ -115,7 +115,7 @@ uint8_t *not_off_store16_0 (uint8_t * a, uint16x8_t v) - /* - **not_off_store16_1: - ** ... --** vstrh.32 q0, \[r[0-9]+\] -+** vstrh.32 q[0-7], \[r[0-7]+\] - ** ... - */ - int16_t *not_off_store16_1 (int16_t * a, int32x4_t v) -@@ -127,7 +127,7 @@ int16_t *not_off_store16_1 (int16_t * a, int32x4_t v) - /* - **off_storefp32_0: - ** ... --** vstrw.32 q0, \[r0, #-412\] -+** vstrw.32 q[0-7], \[r0, #-412\] - ** ... - */ - float32_t *off_storefp32_0 (float32_t *a, float32x4_t v) -@@ -139,7 +139,7 @@ float32_t *off_storefp32_0 (float32_t *a, float32x4_t v) - /* - **off_store32_0: - ** ... --** vstrw.32 q0, \[r0, #-4\] -+** vstrw.32 q[0-7], \[r0, #-4\] - ** ... - */ - int32_t *off_store32_0 (int32_t * a, int32x4_t v) -@@ -151,7 +151,7 @@ int32_t *off_store32_0 (int32_t * a, int32x4_t v) - /* - **off_store32_1: - ** ... --** vstrw.32 q0, \[r0, #508\] -+** vstrw.32 q[0-7], \[r0, #508\] - ** ... - */ - uint32_t *off_store32_1 (uint32_t * a, uint32x4_t v) -@@ -163,7 +163,7 @@ uint32_t *off_store32_1 (uint32_t * a, uint32x4_t v) - /* - **pre_store8_0: - ** ... --** vstrb.8 q[0-9]+, \[r0, #-16\]! -+** vstrb.8 q[0-7], \[r0, #-16\]! - ** ... - */ - uint8_t* pre_store8_0 (uint8_t * a, uint8x16_t v) -@@ -176,7 +176,7 @@ uint8_t* pre_store8_0 (uint8_t * a, uint8x16_t v) - /* - **pre_store8_1: - ** ... --** vstrb.16 q[0-9]+, \[r0, #4\]! -+** vstrb.16 q[0-7], \[r0, #4\]! - ** ... - */ - int8_t* pre_store8_1 (int8_t * a, int16x8_t v) -@@ -189,7 +189,7 @@ int8_t* pre_store8_1 (int8_t * a, int16x8_t v) - /* - **pre_storefp16_0: - ** ... --** vstrh.16 q0, \[r0, #8\]! -+** vstrh.16 q[0-7], \[r0, #8\]! - ** ... - */ - float16_t *pre_storefp16_0 (float16_t *a, float16x8_t v) -@@ -202,7 +202,7 @@ float16_t *pre_storefp16_0 (float16_t *a, float16x8_t v) - /* - **pre_store16_0: - ** ... --** vstrh.16 q[0-9]+, \[r0, #254\]! -+** vstrh.16 q[0-7], \[r0, #254\]! - ** ... - */ - uint16_t* pre_store16_0 (uint16_t * a, uint16x8_t v) -@@ -215,7 +215,7 @@ uint16_t* pre_store16_0 (uint16_t * a, uint16x8_t v) - /* - **pre_store16_1: - ** ... --** vstrh.32 q[0-9]+, \[r0, #-52\]! -+** vstrh.32 q[0-7], \[r0, #-52\]! - ** ... - */ - int16_t* pre_store16_1 (int16_t * a, int32x4_t v) -@@ -228,7 +228,7 @@ int16_t* pre_store16_1 (int16_t * a, int32x4_t v) - /* - **pre_storefp32_0: - ** ... --** vstrw.32 q0, \[r0, #-4\]! -+** vstrw.32 q[0-7], \[r0, #-4\]! - ** ... - */ - float32_t *pre_storefp32_0 (float32_t *a, float32x4_t v) -@@ -241,7 +241,7 @@ float32_t *pre_storefp32_0 (float32_t *a, float32x4_t v) - /* - **pre_store32_0: - ** ... --** vstrw.32 q[0-9]+, \[r0, #4\]! -+** vstrw.32 q[0-7], \[r0, #4\]! - ** ... - */ - int32_t* pre_store32_0 (int32_t * a, int32x4_t v) -@@ -255,7 +255,7 @@ int32_t* pre_store32_0 (int32_t * a, int32x4_t v) - /* - **post_store8_0: - ** ... --** vstrb.8 q[0-9]+, \[r0\], #-26 -+** vstrb.8 q[0-7], \[r0\], #-26 - ** ... - */ - int8_t* post_store8_0 (int8_t * a, int8x16_t v) -@@ -268,7 +268,7 @@ int8_t* post_store8_0 (int8_t * a, int8x16_t v) - /* - **post_store8_1: - ** ... --** vstrb.16 q[0-9]+, \[r0\], #1 -+** vstrb.16 q[0-7], \[r0\], #1 - ** ... - */ - uint8_t* post_store8_1 (uint8_t * a, uint16x8_t v) -@@ -281,7 +281,7 @@ uint8_t* post_store8_1 (uint8_t * a, uint16x8_t v) - /* - **post_store8_2: - ** ... --** vstrb.8 q[0-9]+, \[r0\], #-26 -+** vstrb.8 q[0-7], \[r0\], #-26 - ** ... - */ - int8_t* post_store8_2 (int8_t * a, int8x16_t v) -@@ -294,7 +294,7 @@ int8_t* post_store8_2 (int8_t * a, int8x16_t v) - /* - **post_store8_3: - ** ... --** vstrb.16 q[0-9]+, \[r0\], #7 -+** vstrb.16 q[0-7], \[r0\], #7 - ** ... - */ - uint8_t* post_store8_3 (uint8_t * a, uint16x8_t v) -@@ -307,7 +307,7 @@ uint8_t* post_store8_3 (uint8_t * a, uint16x8_t v) - /* - **post_storefp16_0: - ** ... --** vstrh.16 q[0-9]+, \[r0\], #-16 -+** vstrh.16 q[0-7], \[r0\], #-16 - ** ... - */ - float16_t *post_storefp16_0 (float16_t *a, float16x8_t v) -@@ -320,7 +320,7 @@ float16_t *post_storefp16_0 (float16_t *a, float16x8_t v) - /* - **post_store16_0: - ** ... --** vstrh.16 q[0-9]+, \[r0\], #126 -+** vstrh.16 q[0-7], \[r0\], #126 - ** ... - */ - int16_t* post_store16_0 (int16_t * a, int16x8_t v) -@@ -333,7 +333,7 @@ int16_t* post_store16_0 (int16_t * a, int16x8_t v) - /* - **post_store16_1: - ** ... --** vstrh.32 q[0-9]+, \[r0\], #-16 -+** vstrh.32 q[0-7], \[r0\], #-16 - ** ... - */ - uint16_t* post_store16_1 (uint16_t * a, uint32x4_t v) -@@ -346,7 +346,7 @@ uint16_t* post_store16_1 (uint16_t * a, uint32x4_t v) - /* - **post_storefp32_0: - ** ... --** vstrw.32 q[0-9]+, \[r0\], #-16 -+** vstrw.32 q[0-7], \[r0\], #-16 - ** ... - */ - float32_t* post_storefp32_0 (float32_t * a, float32x4_t v) -@@ -359,7 +359,7 @@ float32_t* post_storefp32_0 (float32_t * a, float32x4_t v) - /* - **post_store32_0: - ** ... --** vstrw.32 q[0-9]+, \[r0\], #16 -+** vstrw.32 q[0-7], \[r0\], #16 - ** ... - */ - int32_t* post_store32_0 (int32_t * a, int32x4_t v) -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 -new file mode 100644 -index 00000000000..a8c6cce67c8 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c -@@ -0,0 +1,67 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#include -+ -+volatile int32x4_t c1; -+volatile uint32x4_t c2; -+int *carry; -+ -+int -+main () -+{ -+ int32x4_t a1 = vcreateq_s32 (0, 0); -+ int32x4_t b1 = vcreateq_s32 (0, 0); -+ int32x4_t inactive1 = vcreateq_s32 (0, 0); -+ -+ uint32x4_t a2 = vcreateq_u32 (0, 0); -+ uint32x4_t b2 = vcreateq_u32 (0, 0); -+ uint32x4_t inactive2 = vcreateq_u32 (0, 0); -+ -+ mve_pred16_t p = 0xFFFF; -+ (*carry) = 0xFFFFFFFF; -+ -+ __builtin_arm_set_fpscr_nzcvqc (0); -+ c1 = vadcq (a1, b1, carry); -+ if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000) -+ __builtin_abort (); -+ (*carry) = 0xFFFFFFFF; -+ __builtin_arm_set_fpscr_nzcvqc (0); -+ c2 = vadcq (a2, b2, carry); -+ if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000) -+ __builtin_abort (); -+ (*carry) = 0xFFFFFFFF; -+ __builtin_arm_set_fpscr_nzcvqc (0); -+ c1 = vsbcq (a1, b1, carry); -+ if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000) -+ __builtin_abort (); -+ (*carry) = 0xFFFFFFFF; -+ __builtin_arm_set_fpscr_nzcvqc (0); -+ c2 = vsbcq (a2, b2, carry); -+ if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000) -+ __builtin_abort (); -+ (*carry) = 0xFFFFFFFF; -+ __builtin_arm_set_fpscr_nzcvqc (0); -+ c1 = vadcq_m (inactive1, a1, b1, carry, p); -+ if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000) -+ __builtin_abort (); -+ (*carry) = 0xFFFFFFFF; -+ __builtin_arm_set_fpscr_nzcvqc (0); -+ c2 = vadcq_m (inactive2, a2, b2, carry, p); -+ if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000) -+ __builtin_abort (); -+ (*carry) = 0xFFFFFFFF; -+ __builtin_arm_set_fpscr_nzcvqc (0); -+ c1 = vsbcq_m (inactive1, a1, b1, carry, p); -+ if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000) -+ __builtin_abort (); -+ (*carry) = 0xFFFFFFFF; -+ __builtin_arm_set_fpscr_nzcvqc (0); -+ c2 = vsbcq_m (inactive2, a2, b2, carry, p); -+ if (__builtin_arm_get_fpscr_nzcvqc () & !0x20000000) -+ __builtin_abort (); -+ -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-1-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-1-run.c -new file mode 100644 -index 00000000000..ca092df9802 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-1-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2 --save-temps" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#include "pr108177-1.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-1.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-1.c -new file mode 100644 -index 00000000000..8383b4d9e3a ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-1.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE uint8x16_t -+#define INTRINSIC vstrbq_u8 -+#define INTRINSIC_P vstrbq_p_u8 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-10-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-10-run.c -new file mode 100644 -index 00000000000..0a58b8f7fdf ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-10-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#include "pr108177-10.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-10.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-10.c -new file mode 100644 -index 00000000000..7b1cd3711d8 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-10.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE int32x4_t -+#define INTRINSIC vstrhq_s32 -+#define INTRINSIC_P vstrhq_p_s32 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-11-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-11-run.c -new file mode 100644 -index 00000000000..9f568eacf34 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-11-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#include "pr108177-11.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-11.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-11.c -new file mode 100644 -index 00000000000..e6ae8524052 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-11.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE uint32x4_t -+#define INTRINSIC vstrwq_u32 -+#define INTRINSIC_P vstrwq_p_u32 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-12-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-12-run.c -new file mode 100644 -index 00000000000..8e946a29795 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-12-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#include "pr108177-12.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-12.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-12.c -new file mode 100644 -index 00000000000..e352508e07e ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-12.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE int32x4_t -+#define INTRINSIC vstrwq_s32 -+#define INTRINSIC_P vstrwq_p_s32 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-13-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-13-run.c -new file mode 100644 -index 00000000000..34a5e7d35e7 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-13-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve_fp } */ -+ -+#include "pr108177-13.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-13.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-13.c -new file mode 100644 -index 00000000000..13afa92771d ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-13.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE float16x8_t -+#define INTRINSIC vstrhq_f16 -+#define INTRINSIC_P vstrhq_p_f16 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-14-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-14-run.c -new file mode 100644 -index 00000000000..a2dc3338dd3 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-14-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve_fp } */ -+ -+#include "pr108177-14.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-14.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-14.c -new file mode 100644 -index 00000000000..a093cd4b708 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-14.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve_fp } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE float32x4_t -+#define INTRINSIC vstrwq_f32 -+#define INTRINSIC_P vstrwq_p_f32 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-2-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-2-run.c -new file mode 100644 -index 00000000000..03750c9c7a1 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-2-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#include "pr108177-2.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-2.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-2.c -new file mode 100644 -index 00000000000..da4181ff0b7 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-2.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE int8x16_t -+#define INTRINSIC vstrbq_s8 -+#define INTRINSIC_P vstrbq_p_s8 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-3-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-3-run.c -new file mode 100644 -index 00000000000..bab08e042d4 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-3-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#include "pr108177-3.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-3.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-3.c -new file mode 100644 -index 00000000000..9604fd100e6 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-3.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrbt.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrbt.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE uint16x8_t -+#define INTRINSIC vstrbq_u16 -+#define INTRINSIC_P vstrbq_p_u16 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-4-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-4-run.c -new file mode 100644 -index 00000000000..cff62c75dd5 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-4-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#include "pr108177-4.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-4.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-4.c -new file mode 100644 -index 00000000000..07ba37b466c ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-4.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrbt.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrbt.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE int16x8_t -+#define INTRINSIC vstrbq_s16 -+#define INTRINSIC_P vstrbq_p_s16 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-5-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-5-run.c -new file mode 100644 -index 00000000000..7211828ceeb ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-5-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#include "pr108177-5.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-5.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-5.c -new file mode 100644 -index 00000000000..72c1dd5a4d6 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-5.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrbt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrbt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE uint32x4_t -+#define INTRINSIC vstrbq_u32 -+#define INTRINSIC_P vstrbq_p_u32 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-6-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-6-run.c -new file mode 100644 -index 00000000000..4e7d108cd81 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-6-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#include "pr108177-6.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-6.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-6.c -new file mode 100644 -index 00000000000..3fedc9b98c8 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-6.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrbt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrbt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE int32x4_t -+#define INTRINSIC vstrbq_s32 -+#define INTRINSIC_P vstrbq_p_s32 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-7-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-7-run.c -new file mode 100644 -index 00000000000..94c492ed96b ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-7-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#include "pr108177-7.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-7.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-7.c -new file mode 100644 -index 00000000000..c3b440c3b6c ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-7.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE uint16x8_t -+#define INTRINSIC vstrhq_u16 -+#define INTRINSIC_P vstrhq_p_u16 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-8-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-8-run.c -new file mode 100644 -index 00000000000..3c34045f31d ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-8-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#include "pr108177-8.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-8.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-8.c -new file mode 100644 -index 00000000000..5c450b81d1c ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-8.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE int16x8_t -+#define INTRINSIC vstrhq_s16 -+#define INTRINSIC_P vstrhq_p_s16 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-9-run.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-9-run.c -new file mode 100644 -index 00000000000..967cf7f1992 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-9-run.c -@@ -0,0 +1,6 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target arm_mve_hw } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+ -+#include "pr108177-9.c" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-9.c b/gcc/testsuite/gcc.target/arm/mve/pr108177-9.c -new file mode 100644 -index 00000000000..b5084efcc00 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-9.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_v8_1m_mve_ok } */ -+/* { dg-options "-O2" } */ -+/* { dg-add-options arm_v8_1m_mve } */ -+/* { dg-final { check-function-bodies "**" "" "" } } */ -+ -+/* -+** test: -+**... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+** vstrht.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\] -+**... -+*/ -+ -+#define TYPE uint32x4_t -+#define INTRINSIC vstrhq_u32 -+#define INTRINSIC_P vstrhq_p_u32 -+ -+#include "pr108177.x" -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177-main.x b/gcc/testsuite/gcc.target/arm/mve/pr108177-main.x -new file mode 100644 -index 00000000000..f5f965fb698 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177-main.x -@@ -0,0 +1,31 @@ -+#include -+extern void abort (void); -+ -+__attribute__ ((noipa)) void -+write_expected (uint32x4_t v, void *a) -+{ -+ TYPE _v = (TYPE) v; -+ INTRINSIC (a, _v); -+} -+ -+void test (uint32x4_t, void *, mve_pred16_t, mve_pred16_t); -+ -+int main(void) -+{ -+ uint32x4_t v = {0, 1, 2, 3}; -+ uint32_t actual[] = {0, 0, 0, 0}; -+ uint32_t expected[] = {0, 0, 0, 0}; -+ -+ write_expected (v, &(expected[0])); -+ -+ mve_pred16_t p1 = 0xff00; -+ mve_pred16_t p2 = 0x00ff; -+ -+ test (v, (void *)&actual[0], p1, p2); -+ -+ if (__builtin_memcmp (&actual[0], &expected[0], 16) != 0) -+ abort (); -+ -+ return 0; -+} -+ -diff --git a/gcc/testsuite/gcc.target/arm/mve/pr108177.x b/gcc/testsuite/gcc.target/arm/mve/pr108177.x -new file mode 100644 -index 00000000000..019ef54eae7 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/mve/pr108177.x -@@ -0,0 +1,9 @@ -+#include "pr108177-main.x" -+ -+__attribute__ ((noipa)) void -+test (uint32x4_t v, void *a, mve_pred16_t p1, mve_pred16_t p2) -+{ -+ TYPE _v = (TYPE) v; -+ INTRINSIC_P (a, _v, p1); -+ INTRINSIC_P (a, _v, p2); -+} -diff --git a/gcc/testsuite/gcc.target/arm/pr109939.c b/gcc/testsuite/gcc.target/arm/pr109939.c -new file mode 100644 -index 00000000000..aafda7cd3cd ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/pr109939.c -@@ -0,0 +1,14 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_sat_ok } */ -+/* { dg-add-options arm_sat } */ -+/* { dg-additional-options "-O -Wall -Wconversion" } */ -+ -+#include -+ -+int dbg_ssat_out; -+int dbg_ssat_in; -+ -+void test_arm_ssat(void) -+{ -+ dbg_ssat_out = __ssat(dbg_ssat_in, 16); -+} -diff --git a/gcc/testsuite/gcc.target/arm/pure-code/pr109800.c b/gcc/testsuite/gcc.target/arm/pure-code/pr109800.c -new file mode 100644 -index 00000000000..d797b790232 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arm/pure-code/pr109800.c -@@ -0,0 +1,4 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_hard_ok } */ -+/* { dg-options "-O2 -march=armv7-m -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mbig-endian -mpure-code" } */ -+double f() { return 5.0; } -diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-compare-1.c b/gcc/testsuite/gcc.target/arm/simd/mve-compare-1.c -index 029c931f47f..887f8dbddd9 100644 ---- a/gcc/testsuite/gcc.target/arm/simd/mve-compare-1.c -+++ b/gcc/testsuite/gcc.target/arm/simd/mve-compare-1.c -@@ -50,31 +50,31 @@ TEST_TYPE (vs32, __INT32_TYPE__, COMPARE_REG_AND_ZERO, 16) - TEST_TYPE (vu32, __UINT32_TYPE__, COMPARE_REG, 16) - - /* { 8 bits } x { eq, ne, lt, le, gt, ge, hi, cs }. --/* { dg-final { scan-assembler-times {\tvcmp.i8 eq, q[0-9]+, q[0-9]+\n} 4 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.i8 ne, q[0-9]+, q[0-9]+\n} 4 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s8 lt, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s8 le, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s8 gt, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s8 ge, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u8 hi, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u8 cs, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i8\teq, q[0-9]+, q[0-9]+\n} 4 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i8\tne, q[0-9]+, q[0-9]+\n} 4 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s8\tlt, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s8\tle, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s8\tgt, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s8\tge, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u8\thi, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u8\tcs, q[0-9]+, q[0-9]+\n} 2 } } */ - - /* { 16 bits } x { eq, ne, lt, le, gt, ge, hi, cs }. --/* { dg-final { scan-assembler-times {\tvcmp.i16 eq, q[0-9]+, q[0-9]+\n} 4 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.i16 ne, q[0-9]+, q[0-9]+\n} 4 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s16 lt, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s16 le, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s16 gt, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s16 ge, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u16 hi, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u16 cs, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i16\teq, q[0-9]+, q[0-9]+\n} 4 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i16\tne, q[0-9]+, q[0-9]+\n} 4 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s16\tlt, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s16\tle, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s16\tgt, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s16\tge, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u16\thi, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u16\tcs, q[0-9]+, q[0-9]+\n} 2 } } */ - - /* { 32 bits } x { eq, ne, lt, le, gt, ge, hi, cs }. --/* { dg-final { scan-assembler-times {\tvcmp.i32 eq, q[0-9]+, q[0-9]+\n} 4 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.i32 ne, q[0-9]+, q[0-9]+\n} 4 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s32 lt, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s32 le, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s32 gt, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s32 ge, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u32 hi, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u32 cs, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i32\teq, q[0-9]+, q[0-9]+\n} 4 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i32\tne, q[0-9]+, q[0-9]+\n} 4 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s32\tlt, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s32\tle, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s32\tgt, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s32\tge, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u32\thi, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u32\tcs, q[0-9]+, q[0-9]+\n} 2 } } */ -diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-compare-scalar-1.c b/gcc/testsuite/gcc.target/arm/simd/mve-compare-scalar-1.c -index 77749723693..20ab0a2f040 100644 ---- a/gcc/testsuite/gcc.target/arm/simd/mve-compare-scalar-1.c -+++ b/gcc/testsuite/gcc.target/arm/simd/mve-compare-scalar-1.c -@@ -39,31 +39,31 @@ TEST_TYPE (vs32, __INT32_TYPE__, 16) - TEST_TYPE (vu32, __UINT32_TYPE__, 16) - - /* { 8 bits } x { eq, ne, lt, le, gt, ge, hi, cs }. --/* { dg-final { scan-assembler-times {\tvcmp.i8 eq, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.i8 ne, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s8 lt, q[0-9]+, q[0-9]+\n} 1 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s8 le, q[0-9]+, q[0-9]+\n} 1 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s8 gt, q[0-9]+, q[0-9]+\n} 1 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s8 ge, q[0-9]+, q[0-9]+\n} 1 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u8 hi, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u8 cs, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i8\teq, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i8\tne, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s8\tlt, q[0-9]+, q[0-9]+\n} 1 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s8\tle, q[0-9]+, q[0-9]+\n} 1 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s8\tgt, q[0-9]+, q[0-9]+\n} 1 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s8\tge, q[0-9]+, q[0-9]+\n} 1 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u8\thi, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u8\tcs, q[0-9]+, q[0-9]+\n} 2 } } */ - - /* { 16 bits } x { eq, ne, lt, le, gt, ge, hi, cs }. --/* { dg-final { scan-assembler-times {\tvcmp.i16 eq, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.i16 ne, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s16 lt, q[0-9]+, q[0-9]+\n} 1 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s16 le, q[0-9]+, q[0-9]+\n} 1 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s16 gt, q[0-9]+, q[0-9]+\n} 1 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s16 ge, q[0-9]+, q[0-9]+\n} 1 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u16 hi, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u16 cs, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i16\teq, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i16\tne, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s16\tlt, q[0-9]+, q[0-9]+\n} 1 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s16\tle, q[0-9]+, q[0-9]+\n} 1 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s16\tgt, q[0-9]+, q[0-9]+\n} 1 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s16\tge, q[0-9]+, q[0-9]+\n} 1 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u16\thi, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u16\tcs, q[0-9]+, q[0-9]+\n} 2 } } */ - - /* { 32 bits } x { eq, ne, lt, le, gt, ge, hi, cs }. --/* { dg-final { scan-assembler-times {\tvcmp.i32 eq, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.i32 ne, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s32 lt, q[0-9]+, q[0-9]+\n} 1 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s32 le, q[0-9]+, q[0-9]+\n} 1 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s32 gt, q[0-9]+, q[0-9]+\n} 1 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s32 ge, q[0-9]+, q[0-9]+\n} 1 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u32 hi, q[0-9]+, q[0-9]+\n} 2 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u32 cs, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i32\teq, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i32\tne, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s32\tlt, q[0-9]+, q[0-9]+\n} 1 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s32\tle, q[0-9]+, q[0-9]+\n} 1 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s32\tgt, q[0-9]+, q[0-9]+\n} 1 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s32\tge, q[0-9]+, q[0-9]+\n} 1 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u32\thi, q[0-9]+, q[0-9]+\n} 2 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u32\tcs, q[0-9]+, q[0-9]+\n} 2 } } */ -diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vabs.c b/gcc/testsuite/gcc.target/arm/simd/mve-vabs.c -index 64cd1c2eb4a..f2f9ee34990 100644 ---- a/gcc/testsuite/gcc.target/arm/simd/mve-vabs.c -+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vabs.c -@@ -38,7 +38,7 @@ FUNC(f, float, 16, 8, vabs) - integer optimizations actually generate a call to memmove, the other ones a - 'vabs'. */ - /* { dg-final { scan-assembler-times {vabs.s[0-9]+\tq[0-9]+, q[0-9]+} 3 } } */ --/* { dg-final { scan-assembler-times {vabs.f[0-9]+ q[0-9]+, q[0-9]+} 2 } } */ -+/* { dg-final { scan-assembler-times {vabs.f[0-9]+\tq[0-9]+, q[0-9]+} 2 } } */ - /* { dg-final { scan-assembler-times {vldr[bhw].[0-9]+\tq[0-9]+} 5 } } */ - /* { dg-final { scan-assembler-times {vstr[bhw].[0-9]+\tq[0-9]+} 5 } } */ - /* { dg-final { scan-assembler-times {memmove} 3 } } */ -diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vadd-1.c b/gcc/testsuite/gcc.target/arm/simd/mve-vadd-1.c -index 15a9daacecf..f31d1cc7f42 100644 ---- a/gcc/testsuite/gcc.target/arm/simd/mve-vadd-1.c -+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vadd-1.c -@@ -22,9 +22,9 @@ FUNC(u, uint, 16, 8, +, vadd) - FUNC(s, int, 8, 16, +, vadd) - FUNC(u, uint, 8, 16, +, vadd) - --/* { dg-final { scan-assembler-times {vadd\.i32 q[0-9]+, q[0-9]+, q[0-9]+} 2 } } */ --/* { dg-final { scan-assembler-times {vadd\.i16 q[0-9]+, q[0-9]+, q[0-9]+} 2 } } */ --/* { dg-final { scan-assembler-times {vadd\.i8 q[0-9]+, q[0-9]+, q[0-9]+} 2 } } */ -+/* { dg-final { scan-assembler-times {vadd\.i32\tq[0-9]+, q[0-9]+, q[0-9]+} 2 } } */ -+/* { dg-final { scan-assembler-times {vadd\.i16\tq[0-9]+, q[0-9]+, q[0-9]+} 2 } } */ -+/* { dg-final { scan-assembler-times {vadd\.i8\tq[0-9]+, q[0-9]+, q[0-9]+} 2 } } */ - - void test_vadd_f32 (float * dest, float * a, float * b) { - int i; -@@ -32,7 +32,7 @@ void test_vadd_f32 (float * dest, float * a, float * b) { - dest[i] = a[i] + b[i]; - } - } --/* { dg-final { scan-assembler-times {vadd\.f32 q[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ -+/* { dg-final { scan-assembler-times {vadd\.f32\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ - - void test_vadd_f16 (__fp16 * dest, __fp16 * a, __fp16 * b) { - int i; -@@ -40,4 +40,4 @@ void test_vadd_f16 (__fp16 * dest, __fp16 * a, __fp16 * b) { - dest[i] = a[i] + b[i]; - } - } --/* { dg-final { scan-assembler-times {vadd\.f16 q[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ -+/* { dg-final { scan-assembler-times {vadd\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ -diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vadd-scalar-1.c b/gcc/testsuite/gcc.target/arm/simd/mve-vadd-scalar-1.c -index bbf70e14146..7eec2346faa 100644 ---- a/gcc/testsuite/gcc.target/arm/simd/mve-vadd-scalar-1.c -+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vadd-scalar-1.c -@@ -24,9 +24,9 @@ FUNC_IMM(u, uint, 8, 16, +, vaddimm) - - /* For the moment we do not select the T2 vadd variant operating on a scalar - final argument. */ --/* { dg-final { scan-assembler-times {vadd\.i32 q[0-9]+, q[0-9]+, r[0-9]+} 2 { xfail *-*-* } } } */ --/* { dg-final { scan-assembler-times {vadd\.i16 q[0-9]+, q[0-9]+, r[0-9]+} 2 { xfail *-*-* } } } */ --/* { dg-final { scan-assembler-times {vadd\.i8 q[0-9]+, q[0-9]+, r[0-9]+} 2 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {vadd\.i32\tq[0-9]+, q[0-9]+, r[0-9]+} 2 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {vadd\.i16\tq[0-9]+, q[0-9]+, r[0-9]+} 2 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {vadd\.i8\tq[0-9]+, q[0-9]+, r[0-9]+} 2 { xfail *-*-* } } } */ - - void test_vaddimm_f32 (float * dest, float * a) { - int i; -@@ -34,7 +34,7 @@ void test_vaddimm_f32 (float * dest, float * a) { - dest[i] = a[i] + 5.0; - } - } --/* { dg-final { scan-assembler-times {vadd\.f32 q[0-9]+, q[0-9]+, r[0-9]+} 1 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {vadd\.f32\tq[0-9]+, q[0-9]+, r[0-9]+} 1 { xfail *-*-* } } } */ - - /* Note that dest[i] = a[i] + 5.0f16 is not vectorized. */ - void test_vaddimm_f16 (__fp16 * dest, __fp16 * a) { -@@ -44,4 +44,4 @@ void test_vaddimm_f16 (__fp16 * dest, __fp16 * a) { - dest[i] = a[i] + b; - } - } --/* { dg-final { scan-assembler-times {vadd\.f16 q[0-9]+, q[0-9]+, r[0-9]+} 1 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {vadd\.f16\tq[0-9]+, q[0-9]+, r[0-9]+} 1 { xfail *-*-* } } } */ -diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vclz.c b/gcc/testsuite/gcc.target/arm/simd/mve-vclz.c -index 7068736bc28..38e91fc5bce 100644 ---- a/gcc/testsuite/gcc.target/arm/simd/mve-vclz.c -+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vclz.c -@@ -23,6 +23,6 @@ FUNC(u, uint, 8, clz) - - /* 16 and 8-bit versions are not vectorized because they need pack/unpack - patterns since __builtin_clz uses 32-bit parameter and return value. */ --/* { dg-final { scan-assembler-times {vclz\.i32 q[0-9]+, q[0-9]+} 2 } } */ --/* { dg-final { scan-assembler-times {vclz\.i16 q[0-9]+, q[0-9]+} 2 { xfail *-*-* } } } */ --/* { dg-final { scan-assembler-times {vclz\.i8 q[0-9]+, q[0-9]+} 2 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {vclz\.i32\tq[0-9]+, q[0-9]+} 2 } } */ -+/* { dg-final { scan-assembler-times {vclz\.i16\tq[0-9]+, q[0-9]+} 2 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {vclz\.i8\tq[0-9]+, q[0-9]+} 2 { xfail *-*-* } } } */ -diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vcmp.c b/gcc/testsuite/gcc.target/arm/simd/mve-vcmp.c -index 8da15e762eb..806b1458cf3 100644 ---- a/gcc/testsuite/gcc.target/arm/simd/mve-vcmp.c -+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vcmp.c -@@ -36,15 +36,15 @@ ALL_FUNCS(>=, vcmpge) - - /* MVE has only 128-bit vectors, so we can vectorize only half of the - functions above. */ --/* { dg-final { scan-assembler-times {\tvcmp.i[0-9]+ eq, q[0-9]+, q[0-9]+\n} 6 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.i[0-9]+ ne, q[0-9]+, q[0-9]+\n} 6 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i[0-9]+\teq, q[0-9]+, q[0-9]+\n} 6 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.i[0-9]+\tne, q[0-9]+, q[0-9]+\n} 6 } } */ - - /* lt, le, gt, ge apply to signed types, cs and hi to unsigned types. */ - /* lt and le with unsigned types are replaced with the opposite condition, hence - the double number of matches for cs and hi. */ --/* { dg-final { scan-assembler-times {\tvcmp.s[0-9]+ lt, q[0-9]+, q[0-9]+\n} 3 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s[0-9]+ le, q[0-9]+, q[0-9]+\n} 3 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s[0-9]+ gt, q[0-9]+, q[0-9]+\n} 3 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.s[0-9]+ ge, q[0-9]+, q[0-9]+\n} 3 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u[0-9]+ cs, q[0-9]+, q[0-9]+\n} 6 } } */ --/* { dg-final { scan-assembler-times {\tvcmp.u[0-9]+ hi, q[0-9]+, q[0-9]+\n} 6 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s[0-9]+\tlt, q[0-9]+, q[0-9]+\n} 3 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s[0-9]+\tle, q[0-9]+, q[0-9]+\n} 3 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s[0-9]+\tgt, q[0-9]+, q[0-9]+\n} 3 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.s[0-9]+\tge, q[0-9]+, q[0-9]+\n} 3 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u[0-9]+\tcs, q[0-9]+, q[0-9]+\n} 6 } } */ -+/* { dg-final { scan-assembler-times {\tvcmp.u[0-9]+\thi, q[0-9]+, q[0-9]+\n} 6 } } */ -diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vneg.c b/gcc/testsuite/gcc.target/arm/simd/mve-vneg.c -index 7945a060e25..1379cae579f 100644 ---- a/gcc/testsuite/gcc.target/arm/simd/mve-vneg.c -+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vneg.c -@@ -45,8 +45,8 @@ FUNC(f, float, 16, 8, -, vneg) - - /* MVE has only 128-bit vectors, so we can vectorize only half of the - functions above. */ --/* { dg-final { scan-assembler-times {vneg.s[0-9]+ q[0-9]+, q[0-9]+} 6 } } */ --/* { dg-final { scan-assembler-times {vneg.f[0-9]+ q[0-9]+, q[0-9]+} 2 } } */ -+/* { dg-final { scan-assembler-times {vneg.s[0-9]+\tq[0-9]+, q[0-9]+} 6 } } */ -+/* { dg-final { scan-assembler-times {vneg.f[0-9]+\tq[0-9]+, q[0-9]+} 2 } } */ - /* { dg-final { scan-assembler-times {vldr[bhw].[0-9]+\tq[0-9]+} 8 } } */ - /* { dg-final { scan-assembler-times {vstr[bhw].[0-9]+\tq[0-9]+} 8 } } */ - /* { dg-final { scan-assembler-not {orr\tr[0-9]+, r[0-9]+, r[0-9]+} } } */ -diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vshr.c b/gcc/testsuite/gcc.target/arm/simd/mve-vshr.c -index d4258e9fefe..8c7adef9ed8 100644 ---- a/gcc/testsuite/gcc.target/arm/simd/mve-vshr.c -+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vshr.c -@@ -58,7 +58,7 @@ FUNC_IMM(u, uint, 8, 16, >>, vshrimm) - /* Vector right shifts use vneg and left shifts. */ - /* { dg-final { scan-assembler-times {vshl.s[0-9]+\tq[0-9]+, q[0-9]+} 3 } } */ - /* { dg-final { scan-assembler-times {vshl.u[0-9]+\tq[0-9]+, q[0-9]+} 3 } } */ --/* { dg-final { scan-assembler-times {vneg.s[0-9]+ q[0-9]+, q[0-9]+} 6 } } */ -+/* { dg-final { scan-assembler-times {vneg.s[0-9]+\tq[0-9]+, q[0-9]+} 6 } } */ - - - /* Shift by immediate. */ -diff --git a/gcc/testsuite/gcc.target/arm/simd/pr101325.c b/gcc/testsuite/gcc.target/arm/simd/pr101325.c -index 4cb2513da87..ce9ce3a8c19 100644 ---- a/gcc/testsuite/gcc.target/arm/simd/pr101325.c -+++ b/gcc/testsuite/gcc.target/arm/simd/pr101325.c -@@ -9,6 +9,6 @@ unsigned foo(int8x16_t v, int8x16_t w) - { - return vcmpeqq (v, w); - } --/* { dg-final { scan-assembler {\tvcmp.i8 eq} } } */ --/* { dg-final { scan-assembler {\tvmrs\tr[0-9]+, P0} } } */ -+/* { dg-final { scan-assembler {\tvcmp.i8\teq} } } */ -+/* { dg-final { scan-assembler {\tvmrs\tr[0-9]+, p0} } } */ - /* { dg-final { scan-assembler {\tuxth} } } */ -diff --git a/gcc/testsuite/gcc.target/avr/pr82931.c b/gcc/testsuite/gcc.target/avr/pr82931.c -new file mode 100644 -index 00000000000..477284fa127 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/avr/pr82931.c -@@ -0,0 +1,29 @@ -+/* { dg-options "-Os" } */ -+/* { dg-final { scan-assembler-times "bst" 4 } } */ -+/* { dg-final { scan-assembler-times "bld" 4 } } */ -+ -+typedef __UINT8_TYPE__ uint8_t; -+typedef __UINT16_TYPE__ uint16_t; -+ -+#define BitMask (1u << 14) -+#define Bit8Mask ((uint8_t) (1u << 4)) -+ -+void merge1_8 (uint8_t *dst, const uint8_t *src) -+{ -+ *dst = (*src & Bit8Mask) | (*dst & ~ Bit8Mask); -+} -+ -+void merge2_8 (uint8_t *dst, const uint8_t *src) -+{ -+ *dst ^= (*dst ^ *src) & Bit8Mask; -+} -+ -+void merge1_16 (uint16_t *dst, const uint16_t *src) -+{ -+ *dst = (*src & BitMask) | (*dst & ~ BitMask); -+} -+ -+void merge2_16 (uint16_t *dst, const uint16_t *src) -+{ -+ *dst ^= (*dst ^ *src) & BitMask; -+} -diff --git a/gcc/testsuite/gcc.target/avr/torture/pr105753.c b/gcc/testsuite/gcc.target/avr/torture/pr105753.c -new file mode 100644 -index 00000000000..7d7cea1de7a ---- /dev/null -+++ b/gcc/testsuite/gcc.target/avr/torture/pr105753.c -@@ -0,0 +1,13 @@ -+int digit_sum (unsigned long n) -+{ -+ int sum = 0; -+ -+ do -+ { -+ int x = n % 10; -+ n /= 10; -+ sum += x; -+ } while(n); -+ -+ return sum; -+} -diff --git a/gcc/testsuite/gcc.target/avr/torture/pr109650-1.c b/gcc/testsuite/gcc.target/avr/torture/pr109650-1.c -new file mode 100644 -index 00000000000..9030db00fde ---- /dev/null -+++ b/gcc/testsuite/gcc.target/avr/torture/pr109650-1.c -@@ -0,0 +1,63 @@ -+/* { dg-do run } */ -+/* { dg-options { -std=c99 } } */ -+ -+typedef _Bool bool; -+typedef __UINT8_TYPE__ uint8_t; -+ -+static inline __attribute__((__always_inline__)) -+bool func1a (bool p1, uint8_t p2) -+{ -+ if (p1) -+ return p2 <= 8; -+ return p2 <= 2; -+} -+ -+__attribute__((__noinline__, __noclone__)) -+bool func1b (bool p1, uint8_t p2) -+{ -+ return func1a (p1, p2); -+} -+ -+static inline __attribute__((__always_inline__)) -+bool func2a (bool p1, unsigned p2) -+{ -+ if (p1) -+ return p2 <= 8; -+ return p2 <= 2; -+} -+ -+__attribute__((__noinline__, __noclone__)) -+bool func2b (bool p1, unsigned p2) -+{ -+ return func2a (p1, p2); -+} -+ -+void test1 (void) -+{ -+ if (func1a (0, 1) != func1b (0, 1)) __builtin_abort(); -+ if (func1a (0, 2) != func1b (0, 2)) __builtin_abort(); -+ if (func1a (0, 3) != func1b (0, 3)) __builtin_abort(); -+ -+ if (func1a (1, 7) != func1b (1, 7)) __builtin_abort(); -+ if (func1a (1, 8) != func1b (1, 8)) __builtin_abort(); -+ if (func1a (1, 9) != func1b (1, 9)) __builtin_abort(); -+} -+ -+void test2 (void) -+{ -+ if (func2a (0, 1) != func2b (0, 1)) __builtin_abort(); -+ if (func2a (0, 2) != func2b (0, 2)) __builtin_abort(); -+ if (func2a (0, 3) != func2b (0, 3)) __builtin_abort(); -+ -+ if (func2a (1, 7) != func2b (1, 7)) __builtin_abort(); -+ if (func2a (1, 8) != func2b (1, 8)) __builtin_abort(); -+ if (func2a (1, 9) != func2b (1, 9)) __builtin_abort(); -+} -+ -+int main (void) -+{ -+ test1(); -+ test2(); -+ -+ __builtin_exit (0); -+} -diff --git a/gcc/testsuite/gcc.target/avr/torture/pr109650-2.c b/gcc/testsuite/gcc.target/avr/torture/pr109650-2.c -new file mode 100644 -index 00000000000..386dc322afa ---- /dev/null -+++ b/gcc/testsuite/gcc.target/avr/torture/pr109650-2.c -@@ -0,0 +1,79 @@ -+/* { dg-do run } */ -+ -+typedef __UINT8_TYPE__ uint8_t; -+ -+#define AI static __inline__ __attribute__((__always_inline__)) -+#define NI __attribute__((__noinline__,__noclone__)) -+ -+AI uint8_t func1_eq (uint8_t c, unsigned x) -+{ -+ if (x == c) -+ return 1; -+ return 0; -+} -+ -+AI uint8_t func1_ne (uint8_t c, unsigned x) -+{ -+ if (x != c) -+ return 1; -+ return 0; -+} -+ -+AI uint8_t func1_ltu (uint8_t c, unsigned x) -+{ -+ if (x < c) -+ return 1; -+ return 0; -+} -+ -+AI uint8_t func1_leu (uint8_t c, unsigned x) -+{ -+ if (x <= c) -+ return 1; -+ return 0; -+} -+ -+AI uint8_t func1_gtu (uint8_t c, unsigned x) -+{ -+ if (x > c) -+ return 1; -+ return 0; -+} -+ -+AI uint8_t func1_geu (uint8_t c, unsigned x) -+{ -+ if (x >= c) -+ return 1; -+ return 0; -+} -+ -+NI uint8_t func2_eq (uint8_t c, unsigned x) { return func1_eq (c, x); } -+NI uint8_t func2_ne (uint8_t c, unsigned x) { return func1_ne (c, x); } -+NI uint8_t func2_ltu (uint8_t c, unsigned x) { return func1_ltu (c, x); } -+NI uint8_t func2_leu (uint8_t c, unsigned x) { return func1_leu (c, x); } -+NI uint8_t func2_gtu (uint8_t c, unsigned x) { return func1_gtu (c, x); } -+NI uint8_t func2_geu (uint8_t c, unsigned x) { return func1_geu (c, x); } -+ -+AI void test4 (uint8_t c, unsigned x) -+{ -+ if (func2_eq (c, x) != func1_eq (c, x)) __builtin_abort(); -+ if (func2_ne (c, x) != func1_ne (c, x)) __builtin_abort(); -+ if (func2_ltu (c, x) != func1_ltu (c, x)) __builtin_abort(); -+ if (func2_leu (c, x) != func1_leu (c, x)) __builtin_abort(); -+ if (func2_gtu (c, x) != func1_gtu (c, x)) __builtin_abort(); -+ if (func2_geu (c, x) != func1_geu (c, x)) __builtin_abort(); -+} -+ -+int main (void) -+{ -+ test4 (127, 127); -+ test4 (127, 128); -+ test4 (128, 127); -+ -+ test4 (0x42, 0x142); -+ test4 (0x0, 0x100); -+ test4 (0x0, 0x0); -+ test4 (0x0, 0x1); -+ -+ __builtin_exit (0); -+} -diff --git a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-12.c b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-12.c -index e694d4048bd..5a40e87832c 100644 ---- a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-12.c -+++ b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-12.c -@@ -16,5 +16,6 @@ foo () - _mm256_zeroupper (); - } - --/* { dg-final { scan-assembler-times "avx_vzeroupper" 4 } } */ -+/* { dg-final { scan-assembler-times "avx_vzeroupper" 4 { target ia32 } } } */ -+/* { dg-final { scan-assembler-times "avx_vzeroupper" 5 { target { ! ia32 } } } } */ - /* { dg-final { scan-assembler-times "\\*avx_vzeroall" 1 } } */ -diff --git a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-29.c b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-29.c -new file mode 100644 -index 00000000000..4af637757f7 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-29.c -@@ -0,0 +1,14 @@ -+/* { dg-do compile } */ -+/* { dg-options "-O0 -mavx -mtune=generic -mvzeroupper -dp" } */ -+ -+#include -+ -+extern __m256 x, y; -+ -+void -+foo () -+{ -+ x = y; -+} -+ -+/* { dg-final { scan-assembler-times "avx_vzeroupper" 1 } } */ -diff --git a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-7.c b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-7.c -index ab6d68779b3..75fe5889783 100644 ---- a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-7.c -+++ b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-7.c -@@ -12,4 +12,5 @@ foo () - _mm256_zeroupper (); - } - --/* { dg-final { scan-assembler-times "avx_vzeroupper" 1 } } */ -+/* { dg-final { scan-assembler-times "avx_vzeroupper" 1 { target ia32 } } } */ -+/* { dg-final { scan-assembler-times "avx_vzeroupper" 2 { target { ! ia32 } } } } */ -diff --git a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-9.c b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-9.c -index 974e1626a6d..fa0a6dfcaac 100644 ---- a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-9.c -+++ b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-9.c -@@ -15,4 +15,5 @@ foo () - _mm256_zeroupper (); - } - --/* { dg-final { scan-assembler-times "avx_vzeroupper" 4 } } */ -+/* { dg-final { scan-assembler-times "avx_vzeroupper" 4 { target ia32 } } } */ -+/* { dg-final { scan-assembler-times "avx_vzeroupper" 5 { target { ! ia32 } } } } */ -diff --git a/gcc/testsuite/gcc.target/i386/avx2-gather-2.c b/gcc/testsuite/gcc.target/i386/avx2-gather-2.c -index ad5ef73107c..978924b0f57 100644 ---- a/gcc/testsuite/gcc.target/i386/avx2-gather-2.c -+++ b/gcc/testsuite/gcc.target/i386/avx2-gather-2.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O3 -fdump-tree-vect-details -march=skylake" } */ -+/* { dg-options "-O3 -fdump-tree-vect-details -march=skylake -mtune=haswell" } */ - - #include "avx2-gather-1.c" - -diff --git a/gcc/testsuite/gcc.target/i386/avx2-gather-6.c b/gcc/testsuite/gcc.target/i386/avx2-gather-6.c -index b9119581ae2..067b251e393 100644 ---- a/gcc/testsuite/gcc.target/i386/avx2-gather-6.c -+++ b/gcc/testsuite/gcc.target/i386/avx2-gather-6.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O3 -mavx2 -fno-common -fdump-tree-vect-details -mtune=skylake" } */ -+/* { dg-options "-O3 -mavx2 -fno-common -fdump-tree-vect-details -mtune=haswell" } */ - - #include "avx2-gather-5.c" - -diff --git a/gcc/testsuite/gcc.target/i386/avx512f-pr88464-1.c b/gcc/testsuite/gcc.target/i386/avx512f-pr88464-1.c -index 06d21bb0129..d1a2298618e 100644 ---- a/gcc/testsuite/gcc.target/i386/avx512f-pr88464-1.c -+++ b/gcc/testsuite/gcc.target/i386/avx512f-pr88464-1.c -@@ -1,6 +1,6 @@ - /* PR tree-optimization/88464 */ - /* { dg-do compile } */ --/* { dg-options "-O3 -mavx512f -mprefer-vector-width=512 -mtune=skylake-avx512 -fdump-tree-vect-details" } */ -+/* { dg-options "-O3 -mavx512f -mprefer-vector-width=512 -mtune=haswell -fdump-tree-vect-details" } */ - /* { dg-final { scan-tree-dump-times "loop vectorized using 64 byte vectors" 4 "vect" } } */ - /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 4 "vect" } } */ - -diff --git a/gcc/testsuite/gcc.target/i386/avx512f-pr88464-5.c b/gcc/testsuite/gcc.target/i386/avx512f-pr88464-5.c -index 462e951fdc1..d7b0b2b28cb 100644 ---- a/gcc/testsuite/gcc.target/i386/avx512f-pr88464-5.c -+++ b/gcc/testsuite/gcc.target/i386/avx512f-pr88464-5.c -@@ -1,6 +1,6 @@ - /* PR tree-optimization/88464 */ - /* { dg-do compile } */ --/* { dg-options "-O3 -mavx512f -mprefer-vector-width=512 -mtune=skylake-avx512 -fdump-tree-vect-details" } */ -+/* { dg-options "-O3 -mavx512f -mprefer-vector-width=512 -mtune=haswell -fdump-tree-vect-details" } */ - /* { dg-final { scan-tree-dump-times "loop vectorized using 64 byte vectors" 4 "vect" } } */ - /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 4 "vect" } } */ - -diff --git a/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-1.c b/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-1.c -index 55a28dddbf8..07439185ec1 100644 ---- a/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-1.c -+++ b/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-1.c -@@ -1,6 +1,6 @@ - /* PR tree-optimization/88464 */ - /* { dg-do compile } */ --/* { dg-options "-O3 -mavx512vl -mprefer-vector-width=256 -mtune=skylake-avx512 -fdump-tree-vect-details" } */ -+/* { dg-options "-O3 -mavx512vl -mprefer-vector-width=256 -mtune=haswell -fdump-tree-vect-details" } */ - /* { dg-final { scan-tree-dump-times "loop vectorized using 32 byte vectors" 4 "vect" } } */ - /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 4 "vect" } } */ - -diff --git a/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-11.c b/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-11.c -index 9696008855d..3a98108279a 100644 ---- a/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-11.c -+++ b/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-11.c -@@ -1,6 +1,6 @@ - /* PR tree-optimization/88464 */ - /* { dg-do compile } */ --/* { dg-options "-O3 -mavx512vl -mprefer-vector-width=128 -mtune=skylake-avx512 -fdump-tree-vect-details" } */ -+/* { dg-options "-O3 -mavx512vl -mprefer-vector-width=128 -mtune=haswell -fdump-tree-vect-details" } */ - /* { dg-final { scan-tree-dump-times "loop vectorized using 16 byte vectors" 4 "vect" } } */ - /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 4 "vect" } } */ - -diff --git a/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-3.c b/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-3.c -index 6b0c8a85957..ac669e04812 100644 ---- a/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-3.c -+++ b/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-3.c -@@ -1,6 +1,6 @@ - /* PR tree-optimization/88464 */ - /* { dg-do compile } */ --/* { dg-options "-O3 -mavx512vl -mprefer-vector-width=128 -mtune=skylake-avx512 -fdump-tree-vect-details" } */ -+/* { dg-options "-O3 -mavx512vl -mprefer-vector-width=128 -mtune=haswell -fdump-tree-vect-details" } */ - /* { dg-final { scan-tree-dump-times "loop vectorized using 16 byte vectors" 4 "vect" } } */ - /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 4 "vect" } } */ - -diff --git a/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-9.c b/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-9.c -index 3af568ab323..14a1083b6d1 100644 ---- a/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-9.c -+++ b/gcc/testsuite/gcc.target/i386/avx512vl-pr88464-9.c -@@ -1,6 +1,6 @@ - /* PR tree-optimization/88464 */ - /* { dg-do compile } */ --/* { dg-options "-O3 -mavx512vl -mprefer-vector-width=256 -mtune=skylake-avx512 -fdump-tree-vect-details" } */ -+/* { dg-options "-O3 -mavx512vl -mprefer-vector-width=256 -mtune=haswell -fdump-tree-vect-details" } */ - /* { dg-final { scan-tree-dump-times "loop vectorized using 32 byte vectors" 4 "vect" } } */ - /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 4 "vect" } } */ - -diff --git a/gcc/testsuite/gcc.target/i386/mvc17.c b/gcc/testsuite/gcc.target/i386/mvc17.c -new file mode 100644 -index 00000000000..8b83c1aecb3 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/i386/mvc17.c -@@ -0,0 +1,11 @@ -+/* { dg-do compile } */ -+/* { dg-require-ifunc "" } */ -+/* { dg-options "-O2 -march=x86-64" } */ -+/* { dg-final { scan-assembler-times "rep mov" 1 } } */ -+ -+__attribute__((target_clones("default","arch=icelake-server"))) -+void -+foo (char *a, char *b, int size) -+{ -+ __builtin_memcpy (a, b, size & 0x7F); -+} -diff --git a/gcc/testsuite/gcc.target/i386/pr110108-2.c b/gcc/testsuite/gcc.target/i386/pr110108-2.c -new file mode 100644 -index 00000000000..2d1d2fd4991 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/i386/pr110108-2.c -@@ -0,0 +1,14 @@ -+/* { dg-do compile } */ -+/* { dg-options "-mavx2 -O2 -funsigned-char" } */ -+/* { dg-final { scan-assembler-times "vpblendvb" 2 } } */ -+ -+#include -+__m128i do_stuff_128(__m128i X0, __m128i X1, __m128i X2) { -+ __m128i Result = _mm_blendv_epi8(X0, X1, X2); -+ return Result; -+} -+ -+__m256i do_stuff_256(__m256i X0, __m256i X1, __m256i X2) { -+ __m256i Result = _mm256_blendv_epi8(X0, X1, X2); -+ return Result; -+} -diff --git a/gcc/testsuite/gcc.target/i386/pr110170-3.c b/gcc/testsuite/gcc.target/i386/pr110170-3.c -new file mode 100644 -index 00000000000..70daa89e9aa ---- /dev/null -+++ b/gcc/testsuite/gcc.target/i386/pr110170-3.c -@@ -0,0 +1,11 @@ -+/* { dg-do compile { target { ! ia32 } } } */ -+/* { dg-options "-O2 -fno-if-conversion -fno-if-conversion2" } */ -+/* { dg-final { scan-assembler-not {(?n)movq.*r} } } */ -+ -+void __cond_swap(double* __x, double* __y) { -+ _Bool __r = (*__x < *__y); -+ double __tmp = __r ? *__x : *__y; -+ *__y = __r ? *__y : *__x; -+ *__x = __tmp; -+} -+ -diff --git a/gcc/testsuite/gcc.target/i386/pr110206.c b/gcc/testsuite/gcc.target/i386/pr110206.c -new file mode 100644 -index 00000000000..af1455c5aa9 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/i386/pr110206.c -@@ -0,0 +1,39 @@ -+/* PR target/110206 */ -+/* { dg-do run } */ -+/* { dg-options "-Os -mavx512bw -mavx512vl" } */ -+/* { dg-require-effective-target avx512bw } */ -+/* { dg-require-effective-target avx512vl } */ -+ -+#define AVX512BW -+#define AVX512VL -+ -+#include "avx512f-check.h" -+ -+typedef unsigned char __attribute__((__vector_size__ (4))) U; -+typedef unsigned char __attribute__((__vector_size__ (8))) V; -+typedef unsigned short u16; -+ -+V g; -+ -+void -+__attribute__((noinline)) -+foo (U u, u16 c, V *r) -+{ -+ if (!c) -+ abort (); -+ V x = __builtin_shufflevector (u, (204 >> u), 7, 0, 5, 1, 3, 5, 0, 2); -+ V y = __builtin_shufflevector (g, (V) { }, 7, 6, 6, 7, 2, 6, 3, 5); -+ V z = __builtin_shufflevector (y, 204 * x, 3, 9, 8, 1, 4, 6, 14, 5); -+ *r = z; -+} -+ -+static void test_256 (void) { }; -+ -+static void -+test_128 (void) -+{ -+ V r; -+ foo ((U){4}, 5, &r); -+ if (r[6] != 0x30) -+ abort(); -+} -diff --git a/gcc/testsuite/gcc.target/i386/pr110309.c b/gcc/testsuite/gcc.target/i386/pr110309.c -new file mode 100644 -index 00000000000..f6e9e9c3c61 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/i386/pr110309.c -@@ -0,0 +1,10 @@ -+/* { dg-do compile } */ -+/* { dg-options "-O3 --param vect-partial-vector-usage=1 -march=znver4 -mprefer-vector-width=256" } */ -+/* { dg-final { scan-assembler-not {(?n)vpblendd.*ymm} } } */ -+ -+ -+void foo (int * __restrict a, int *b) -+{ -+ for (int i = 0; i < 6; ++i) -+ a[i] = b[i] + 42; -+} -diff --git a/gcc/testsuite/gcc.target/i386/pr111306.c b/gcc/testsuite/gcc.target/i386/pr111306.c -new file mode 100644 -index 00000000000..541725ebdad ---- /dev/null -+++ b/gcc/testsuite/gcc.target/i386/pr111306.c -@@ -0,0 +1,36 @@ -+/* { dg-do run } */ -+/* { dg-options "-O2 -mavx512fp16 -mavx512vl" } */ -+/* { dg-require-effective-target avx512fp16 } */ -+ -+#define AVX512FP16 -+#include "avx512f-helper.h" -+ -+__attribute__((optimize("O2"),noipa)) -+void func1(_Float16 *a, _Float16 *b, int n, _Float16 *c) { -+ __m512h rA = _mm512_loadu_ph(a); -+ for (int i = 0; i < n; i += 32) { -+ __m512h rB = _mm512_loadu_ph(b + i); -+ _mm512_storeu_ph(c + i, _mm512_fcmul_pch(rB, rA)); -+ } -+} -+ -+void -+test_512 (void) -+{ -+ int n = 32; -+ _Float16 a[n], b[n], c[n]; -+ _Float16 exp[n]; -+ for (int i = 1; i <= n; i++) { -+ a[i - 1] = i & 1 ? -i : i; -+ b[i - 1] = i; -+ } -+ -+ func1(a, b, n, c); -+ for (int i = 0; i < n / 32; i += 2) { -+ if (c[i] != a[i] * b[i] + a[i+1] * b[i+1] -+ || c[i+1] != a[i] * b[i+1] - a[i+1]*b[i]) -+ __builtin_abort (); -+ } -+} -+ -+ -diff --git a/gcc/testsuite/gcc.target/i386/pr111340.c b/gcc/testsuite/gcc.target/i386/pr111340.c -new file mode 100644 -index 00000000000..6539ae566c0 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/i386/pr111340.c -@@ -0,0 +1,9 @@ -+/* PR target/111340 */ -+/* { dg-do compile { target { fpic && int128 } } } */ -+/* { dg-options "-O2 -fpic" } */ -+ -+void -+bar (void) -+{ -+ __asm ("# %0" : : "g" ((((unsigned __int128) 0x123456789abcdef0ULL) << 64) | 0x0fedcba987654321ULL)); -+} -diff --git a/gcc/testsuite/gcc.target/i386/pr112672.c b/gcc/testsuite/gcc.target/i386/pr112672.c -new file mode 100644 -index 00000000000..583e9fdfb8b ---- /dev/null -+++ b/gcc/testsuite/gcc.target/i386/pr112672.c -@@ -0,0 +1,23 @@ -+/* PR target/112672 */ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+ -+typedef unsigned short u16; -+ -+u16 g = 254; -+ -+static inline u16 -+foo (u16 u) -+{ -+ u *= g; -+ return u + __builtin_parityl (u); -+} -+ -+int -+main (void) -+{ -+ u16 x = foo (4); -+ if (x != 4 * 254 + 1) -+ __builtin_abort (); -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.target/i386/pr112891-2.c b/gcc/testsuite/gcc.target/i386/pr112891-2.c -new file mode 100644 -index 00000000000..164c3985d50 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/i386/pr112891-2.c -@@ -0,0 +1,30 @@ -+/* { dg-do compile } */ -+/* { dg-options "-mavx2 -O3" } */ -+/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */ -+ -+void -+__attribute__((noinline)) -+bar (double* a) -+{ -+ a[0] = 1.0; -+ a[1] = 2.0; -+} -+ -+double -+__attribute__((noinline)) -+foo (double* __restrict a, double* b) -+{ -+ a[0] += b[0]; -+ a[1] += b[1]; -+ a[2] += b[2]; -+ a[3] += b[3]; -+ bar (b); -+ return a[5] + b[5]; -+} -+ -+double -+foo1 (double* __restrict a, double* b) -+{ -+ double c = foo (a, b); -+ return __builtin_exp (c); -+} -diff --git a/gcc/testsuite/gcc.target/i386/pr112891.c b/gcc/testsuite/gcc.target/i386/pr112891.c -new file mode 100644 -index 00000000000..dbf6c67948a ---- /dev/null -+++ b/gcc/testsuite/gcc.target/i386/pr112891.c -@@ -0,0 +1,29 @@ -+/* { dg-do compile } */ -+/* { dg-options "-mavx2 -O3" } */ -+/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */ -+ -+void -+__attribute__((noinline)) -+bar (double* a) -+{ -+ a[0] = 1.0; -+ a[1] = 2.0; -+} -+ -+void -+__attribute__((noinline)) -+foo (double* __restrict a, double* b) -+{ -+ a[0] += b[0]; -+ a[1] += b[1]; -+ a[2] += b[2]; -+ a[3] += b[3]; -+ bar (b); -+} -+ -+double -+foo1 (double* __restrict a, double* b) -+{ -+ foo (a, b); -+ return __builtin_exp (b[1]); -+} -diff --git a/gcc/testsuite/gcc.target/i386/pr88531-1b.c b/gcc/testsuite/gcc.target/i386/pr88531-1b.c -index 812c8a10fab..e6df789de90 100644 ---- a/gcc/testsuite/gcc.target/i386/pr88531-1b.c -+++ b/gcc/testsuite/gcc.target/i386/pr88531-1b.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O3 -march=skylake -mfpmath=sse" } */ -+/* { dg-options "-O3 -march=skylake -mfpmath=sse -mtune=haswell" } */ - - #include "pr88531-1a.c" - -diff --git a/gcc/testsuite/gcc.target/i386/pr88531-1c.c b/gcc/testsuite/gcc.target/i386/pr88531-1c.c -index 43fc5913ed3..a093c87c01f 100644 ---- a/gcc/testsuite/gcc.target/i386/pr88531-1c.c -+++ b/gcc/testsuite/gcc.target/i386/pr88531-1c.c -@@ -1,5 +1,5 @@ - /* { dg-do compile } */ --/* { dg-options "-O3 -march=skylake-avx512 -mfpmath=sse" } */ -+/* { dg-options "-O3 -march=skylake-avx512 -mfpmath=sse -mtune=haswell" } */ - - #include "pr88531-1a.c" - -diff --git a/gcc/testsuite/gcc.target/i386/sse2-pr112816-2.c b/gcc/testsuite/gcc.target/i386/sse2-pr112816-2.c -new file mode 100644 -index 00000000000..2bfae8fa58e ---- /dev/null -+++ b/gcc/testsuite/gcc.target/i386/sse2-pr112816-2.c -@@ -0,0 +1,16 @@ -+/* PR target/112816 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -msse2" } */ -+ -+#define N 2 -+struct S { float x[N]; }; -+struct T { int x[N]; }; -+ -+struct T -+foo (struct S x) -+{ -+ struct T res; -+ for (int i = 0; i < N; ++i) -+ res.x[i] = __builtin_signbit (x.x[i]) ? -1 : 0; -+ return res; -+} -diff --git a/gcc/testsuite/gcc.target/i386/sse2-pr112816.c b/gcc/testsuite/gcc.target/i386/sse2-pr112816.c -new file mode 100644 -index 00000000000..0701f3cdff8 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/i386/sse2-pr112816.c -@@ -0,0 +1,16 @@ -+/* PR target/112816 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -msse2" } */ -+ -+#define N 4 -+struct S { float x[N]; }; -+struct T { int x[N]; }; -+ -+struct T -+foo (struct S x) -+{ -+ struct T res; -+ for (int i = 0; i < N; ++i) -+ res.x[i] = __builtin_signbit (x.x[i]) ? -1 : 0; -+ return res; -+} -diff --git a/gcc/testsuite/gcc.target/loongarch/builtin_thread_pointer.c b/gcc/testsuite/gcc.target/loongarch/builtin_thread_pointer.c -new file mode 100644 -index 00000000000..541e3b143bd ---- /dev/null -+++ b/gcc/testsuite/gcc.target/loongarch/builtin_thread_pointer.c -@@ -0,0 +1,10 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target tls_native } */ -+/* { dg-options "-O2" } */ -+/* { dg-final { scan-assembler "or\t\\\$r4,\\\$r2,\\\$r0" } } */ -+ -+void * -+get_tp () -+{ -+ return __builtin_thread_pointer (); -+} -diff --git a/gcc/testsuite/gcc.target/loongarch/cas-acquire.c b/gcc/testsuite/gcc.target/loongarch/cas-acquire.c -new file mode 100644 -index 00000000000..ff7ba866f32 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/loongarch/cas-acquire.c -@@ -0,0 +1,82 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target c99_runtime } */ -+/* { dg-require-effective-target pthread } */ -+/* { dg-options "-std=c99 -pthread" } */ -+ -+/* https://github.com/llvm/llvm-project/pull/67391#issuecomment-1752403934 -+ reported that this had failed with GCC and 3A6000. */ -+ -+#include -+#include -+#include -+#include -+ -+static unsigned int tags[32]; -+static unsigned int vals[32]; -+ -+static void * -+writer_entry (void *data) -+{ -+ atomic_uint *pt = (atomic_uint *)tags; -+ atomic_uint *pv = (atomic_uint *)vals; -+ -+ for (unsigned int n = 1; n < 10000; n++) -+ { -+ atomic_store_explicit (&pv[n & 31], n, memory_order_release); -+ atomic_store_explicit (&pt[n & 31], n, memory_order_release); -+ } -+ -+ return NULL; -+} -+ -+static void * -+reader_entry (void *data) -+{ -+ atomic_uint *pt = (atomic_uint *)tags; -+ atomic_uint *pv = (atomic_uint *)vals; -+ int i; -+ -+ for (;;) -+ { -+ for (i = 0; i < 32; i++) -+ { -+ unsigned int tag = 0; -+ bool res; -+ -+ res = atomic_compare_exchange_weak_explicit ( -+ &pt[i], &tag, 0, memory_order_acquire, memory_order_acquire); -+ if (!res) -+ { -+ unsigned int val; -+ -+ val = atomic_load_explicit (&pv[i], memory_order_relaxed); -+ if (val < tag) -+ __builtin_trap (); -+ } -+ } -+ } -+ -+ return NULL; -+} -+ -+int -+main (int argc, char *argv[]) -+{ -+ pthread_t writer; -+ pthread_t reader; -+ int res; -+ -+ res = pthread_create (&writer, NULL, writer_entry, NULL); -+ if (res < 0) -+ __builtin_trap (); -+ -+ res = pthread_create (&reader, NULL, reader_entry, NULL); -+ if (res < 0) -+ __builtin_trap (); -+ -+ res = pthread_join (writer, NULL); -+ if (res < 0) -+ __builtin_trap (); -+ -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.target/powerpc/clone1.c b/gcc/testsuite/gcc.target/powerpc/clone1.c -index c69fd2aa1b8..74323ca0e8c 100644 ---- a/gcc/testsuite/gcc.target/powerpc/clone1.c -+++ b/gcc/testsuite/gcc.target/powerpc/clone1.c -@@ -21,6 +21,7 @@ long mod_func_or (long a, long b, long c) - return mod_func (a, b) | c; - } - --/* { dg-final { scan-assembler-times {\mdivd\M} 1 } } */ --/* { dg-final { scan-assembler-times {\mmulld\M} 1 } } */ --/* { dg-final { scan-assembler-times {\mmodsd\M} 1 } } */ -+/* { Fail due to RS6000_DISABLE_SCALAR_MODULO. */ -+/* { dg-final { scan-assembler-times {\mdivd\M} 1 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {\mmulld\M} 1 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {\mmodsd\M} 1 { xfail *-*-* } } } */ -diff --git a/gcc/testsuite/gcc.target/powerpc/clone3.c b/gcc/testsuite/gcc.target/powerpc/clone3.c -index 911b88b781d..d3eb4dd2378 100644 ---- a/gcc/testsuite/gcc.target/powerpc/clone3.c -+++ b/gcc/testsuite/gcc.target/powerpc/clone3.c -@@ -27,7 +27,8 @@ long mod_func_or (long a, long b, long c) - return mod_func (a, b) | c; - } - --/* { dg-final { scan-assembler-times {\mdivd\M} 1 } } */ --/* { dg-final { scan-assembler-times {\mmulld\M} 1 } } */ --/* { dg-final { scan-assembler-times {\mmodsd\M} 2 } } */ -+/* { Fail due to RS6000_DISABLE_SCALAR_MODULO. */ -+/* { dg-final { scan-assembler-times {\mdivd\M} 1 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {\mmulld\M} 1 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {\mmodsd\M} 2 { xfail *-*-* } } } */ - /* { dg-final { scan-assembler-times {\mpld\M} 1 } } */ -diff --git a/gcc/testsuite/gcc.target/powerpc/darwin-abi-13-0.c b/gcc/testsuite/gcc.target/powerpc/darwin-abi-13-0.c -new file mode 100644 -index 00000000000..d8d3c63a083 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/darwin-abi-13-0.c -@@ -0,0 +1,23 @@ -+/* { dg-do compile { target powerpc*-*-darwin* } } */ -+/* { dg-require-effective-target ilp32 } */ -+/* { dg-options "-Wno-long-long" } */ -+ -+#include "darwin-structs-0.h" -+ -+int tcd[sizeof(cd) != 12 ? -1 : 1]; -+int acd[__alignof__(cd) != 4 ? -1 : 1]; -+ -+int sdc[sizeof(dc) != 16 ? -1 : 1]; -+int adc[__alignof__(dc) != 8 ? -1 : 1]; -+ -+int scL[sizeof(cL) != 12 ? -1 : 1]; -+int acL[__alignof__(cL) != 4 ? -1 : 1]; -+ -+int sLc[sizeof(Lc) != 16 ? -1 : 1]; -+int aLc[__alignof__(Lc) != 8 ? -1 : 1]; -+ -+int scD[sizeof(cD) != 32 ? -1 : 1]; -+int acD[__alignof__(cD) != 16 ? -1 : 1]; -+ -+int sDc[sizeof(Dc) != 32 ? -1 : 1]; -+int aDc[__alignof__(Dc) != 16 ? -1 : 1]; -diff --git a/gcc/testsuite/gcc.target/powerpc/darwin-abi-13-1.c b/gcc/testsuite/gcc.target/powerpc/darwin-abi-13-1.c -new file mode 100644 -index 00000000000..4d888d383fa ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/darwin-abi-13-1.c -@@ -0,0 +1,27 @@ -+/* { dg-do compile { target powerpc*-*-darwin* } } */ -+/* { dg-require-effective-target ilp32 } */ -+/* { dg-options "-Wno-long-long" } */ -+ -+#pragma pack(push, 1) -+ -+#include "darwin-structs-0.h" -+ -+int tcd[sizeof(cd) != 9 ? -1 : 1]; -+int acd[__alignof__(cd) != 1 ? -1 : 1]; -+ -+int sdc[sizeof(dc) != 9 ? -1 : 1]; -+int adc[__alignof__(dc) != 1 ? -1 : 1]; -+ -+int scL[sizeof(cL) != 9 ? -1 : 1]; -+int acL[__alignof__(cL) != 1 ? -1 : 1]; -+ -+int sLc[sizeof(Lc) != 9 ? -1 : 1]; -+int aLc[__alignof__(Lc) != 1 ? -1 : 1]; -+ -+int scD[sizeof(cD) != 17 ? -1 : 1]; -+int acD[__alignof__(cD) != 1 ? -1 : 1]; -+ -+int sDc[sizeof(Dc) != 17 ? -1 : 1]; -+int aDc[__alignof__(Dc) != 1 ? -1 : 1]; -+ -+#pragma pack(pop) -diff --git a/gcc/testsuite/gcc.target/powerpc/darwin-abi-13-2.c b/gcc/testsuite/gcc.target/powerpc/darwin-abi-13-2.c -new file mode 100644 -index 00000000000..3bd52c0a8f8 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/darwin-abi-13-2.c -@@ -0,0 +1,27 @@ -+/* { dg-do compile { target powerpc*-*-darwin* } } */ -+/* { dg-require-effective-target ilp32 } */ -+/* { dg-options "-Wno-long-long" } */ -+ -+#pragma pack(push, 2) -+ -+#include "darwin-structs-0.h" -+ -+int tcd[sizeof(cd) != 10 ? -1 : 1]; -+int acd[__alignof__(cd) != 2 ? -1 : 1]; -+ -+int sdc[sizeof(dc) != 10 ? -1 : 1]; -+int adc[__alignof__(dc) != 2 ? -1 : 1]; -+ -+int scL[sizeof(cL) != 10 ? -1 : 1]; -+int acL[__alignof__(cL) != 2 ? -1 : 1]; -+ -+int sLc[sizeof(Lc) != 10 ? -1 : 1]; -+int aLc[__alignof__(Lc) != 2 ? -1 : 1]; -+ -+int scD[sizeof(cD) != 18 ? -1 : 1]; -+int acD[__alignof__(cD) != 2 ? -1 : 1]; -+ -+int sDc[sizeof(Dc) != 18 ? -1 : 1]; -+int aDc[__alignof__(Dc) != 2 ? -1 : 1]; -+ -+#pragma pack(pop) -diff --git a/gcc/testsuite/gcc.target/powerpc/darwin-structs-0.h b/gcc/testsuite/gcc.target/powerpc/darwin-structs-0.h -new file mode 100644 -index 00000000000..1db44f7a808 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/darwin-structs-0.h -@@ -0,0 +1,29 @@ -+typedef struct _cd { -+ char c; -+ double d; -+} cd; -+ -+typedef struct _dc { -+ double d; -+ char c; -+} dc; -+ -+typedef struct _cL { -+ char c; -+ long long L; -+} cL; -+ -+typedef struct _Lc { -+ long long L; -+ char c; -+} Lc; -+ -+typedef struct _cD { -+ char c; -+ long double D; -+} cD; -+ -+typedef struct _Dc { -+ long double D; -+ char c; -+} Dc; -diff --git a/gcc/testsuite/gcc.target/powerpc/fusion-p10-ldcmpi.c b/gcc/testsuite/gcc.target/powerpc/fusion-p10-ldcmpi.c -index 526a026d874..165bd9a07ad 100644 ---- a/gcc/testsuite/gcc.target/powerpc/fusion-p10-ldcmpi.c -+++ b/gcc/testsuite/gcc.target/powerpc/fusion-p10-ldcmpi.c -@@ -54,15 +54,17 @@ TEST(uint8_t) - TEST(int8_t) - - /* { dg-final { scan-assembler-times "lbz_cmpldi_cr0_QI_clobber_CCUNS_zero" 4 { target lp64 } } } */ --/* { dg-final { scan-assembler-times "ld_cmpdi_cr0_DI_DI_CC_none" 4 { target lp64 } } } */ --/* { dg-final { scan-assembler-times "ld_cmpdi_cr0_DI_clobber_CC_none" 4 { target lp64 } } } */ --/* { dg-final { scan-assembler-times "ld_cmpldi_cr0_DI_DI_CCUNS_none" 1 { target lp64 } } } */ --/* { dg-final { scan-assembler-times "ld_cmpldi_cr0_DI_clobber_CCUNS_none" 1 { target lp64 } } } */ -+/* { dg-final { scan-assembler-times "ld_cmpdi_cr0_DI_DI_CC_none" 24 { target lp64 } } } */ -+/* { dg-final { scan-assembler-times "ld_cmpdi_cr0_DI_clobber_CC_none" 8 { target lp64 } } } */ -+/* { dg-final { scan-assembler-times "ld_cmpldi_cr0_DI_DI_CCUNS_none" 2 { target lp64 } } } */ -+/* { dg-final { scan-assembler-times "ld_cmpldi_cr0_DI_clobber_CCUNS_none" 2 { target lp64 } } } */ - /* { dg-final { scan-assembler-times "lha_cmpdi_cr0_HI_clobber_CC_sign" 16 { target lp64 } } } */ - /* { dg-final { scan-assembler-times "lhz_cmpldi_cr0_HI_clobber_CCUNS_zero" 4 { target lp64 } } } */ - /* { dg-final { scan-assembler-times "lwa_cmpdi_cr0_SI_EXTSI_CC_sign" 0 { target lp64 } } } */ --/* { dg-final { scan-assembler-times "lwa_cmpdi_cr0_SI_clobber_CC_none" 4 { target lp64 } } } */ -+/* { dg-final { scan-assembler-times "lwz_cmpwi_cr0_SI_clobber_CC_none" 8 { target lp64 } } } */ -+/* { dg-final { scan-assembler-times "lwz_cmpwi_cr0_SI_SI_CC_none" 8 { target lp64 } } } */ - /* { dg-final { scan-assembler-times "lwz_cmpldi_cr0_SI_EXTSI_CCUNS_zero" 0 { target lp64 } } } */ -+/* { dg-final { scan-assembler-times "lwz_cmpldi_cr0_SI_SI_CCUNS_none" 2 { target lp64 } } } */ - /* { dg-final { scan-assembler-times "lwz_cmpldi_cr0_SI_clobber_CCUNS_none" 2 { target lp64 } } } */ - - /* { dg-final { scan-assembler-times "lbz_cmpldi_cr0_QI_clobber_CCUNS_zero" 2 { target ilp32 } } } */ -@@ -73,6 +75,8 @@ TEST(int8_t) - /* { dg-final { scan-assembler-times "lha_cmpdi_cr0_HI_clobber_CC_sign" 8 { target ilp32 } } } */ - /* { dg-final { scan-assembler-times "lhz_cmpldi_cr0_HI_clobber_CCUNS_zero" 2 { target ilp32 } } } */ - /* { dg-final { scan-assembler-times "lwa_cmpdi_cr0_SI_EXTSI_CC_sign" 0 { target ilp32 } } } */ --/* { dg-final { scan-assembler-times "lwa_cmpdi_cr0_SI_clobber_CC_none" 9 { target ilp32 } } } */ -+/* { dg-final { scan-assembler-times "lwz_cmpwi_cr0_SI_SI_CC_none" 36 { target ilp32 } } } */ -+/* { dg-final { scan-assembler-times "lwz_cmpwi_cr0_SI_clobber_CC_none" 16 { target ilp32 } } } */ - /* { dg-final { scan-assembler-times "lwz_cmpldi_cr0_SI_EXTSI_CCUNS_zero" 0 { target ilp32 } } } */ - /* { dg-final { scan-assembler-times "lwz_cmpldi_cr0_SI_clobber_CCUNS_none" 6 { target ilp32 } } } */ -+/* { dg-final { scan-assembler-times "lwz_cmpldi_cr0_SI_SI_CCUNS_none" 2 { target ilp32 } } } */ -diff --git a/gcc/testsuite/gcc.target/powerpc/mod-1.c b/gcc/testsuite/gcc.target/powerpc/mod-1.c -index 861ba670af4..8720ffb3346 100644 ---- a/gcc/testsuite/gcc.target/powerpc/mod-1.c -+++ b/gcc/testsuite/gcc.target/powerpc/mod-1.c -@@ -7,13 +7,14 @@ long lsmod (long a, long b) { return a%b; } - unsigned int iumod (unsigned int a, unsigned int b) { return a%b; } - unsigned long lumod (unsigned long a, unsigned long b) { return a%b; } - --/* { dg-final { scan-assembler-times "modsw " 1 } } */ --/* { dg-final { scan-assembler-times "modsd " 1 } } */ --/* { dg-final { scan-assembler-times "moduw " 1 } } */ --/* { dg-final { scan-assembler-times "modud " 1 } } */ --/* { dg-final { scan-assembler-not "mullw " } } */ --/* { dg-final { scan-assembler-not "mulld " } } */ --/* { dg-final { scan-assembler-not "divw " } } */ --/* { dg-final { scan-assembler-not "divd " } } */ --/* { dg-final { scan-assembler-not "divwu " } } */ --/* { dg-final { scan-assembler-not "divdu " } } */ -+/* { Fail due to RS6000_DISABLE_SCALAR_MODULO. */ -+/* { dg-final { scan-assembler-times {\mmodsw\M} 1 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {\mmodsd\M} 1 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {\mmoduw\M} 1 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {\mmodud\M} 1 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-not {\mmullw\M} { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-not {\mmulld\M} { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-not {\mdivw\M} { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-not {\mdivd\M} { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-not {\mdivwu\M} { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-not {\mdivdu\M} { xfail *-*-* } } } */ -diff --git a/gcc/testsuite/gcc.target/powerpc/mod-2.c b/gcc/testsuite/gcc.target/powerpc/mod-2.c -index 441ec5878f1..54bdca88607 100644 ---- a/gcc/testsuite/gcc.target/powerpc/mod-2.c -+++ b/gcc/testsuite/gcc.target/powerpc/mod-2.c -@@ -5,8 +5,9 @@ - int ismod (int a, int b) { return a%b; } - unsigned int iumod (unsigned int a, unsigned int b) { return a%b; } - --/* { dg-final { scan-assembler-times "modsw " 1 } } */ --/* { dg-final { scan-assembler-times "moduw " 1 } } */ --/* { dg-final { scan-assembler-not "mullw " } } */ --/* { dg-final { scan-assembler-not "divw " } } */ --/* { dg-final { scan-assembler-not "divwu " } } */ -+/* { Fail due to RS6000_DISABLE_SCALAR_MODULO. */ -+/* { dg-final { scan-assembler-times {\mmodsw\M} 1 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-times {\mmoduw\M} 1 { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-not {\mmullw\M} { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-not {\mdivw\M} { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler-not {\mdivwu\M} { xfail *-*-* } } } */ -diff --git a/gcc/testsuite/gcc.target/powerpc/p10-vdivq-vmodq.c b/gcc/testsuite/gcc.target/powerpc/p10-vdivq-vmodq.c -index 84685e5ff43..148998c8c9d 100644 ---- a/gcc/testsuite/gcc.target/powerpc/p10-vdivq-vmodq.c -+++ b/gcc/testsuite/gcc.target/powerpc/p10-vdivq-vmodq.c -@@ -23,5 +23,6 @@ __int128 s_mod(__int128 a, __int128 b) - - /* { dg-final { scan-assembler {\mvdivsq\M} } } */ - /* { dg-final { scan-assembler {\mvdivuq\M} } } */ --/* { dg-final { scan-assembler {\mvmodsq\M} } } */ --/* { dg-final { scan-assembler {\mvmoduq\M} } } */ -+/* { Fail due to RS6000_DISABLE_SCALAR_MODULO. */ -+/* { dg-final { scan-assembler {\mvmodsq\M} { xfail *-*-* } } } */ -+/* { dg-final { scan-assembler {\mvmoduq\M} { xfail *-*-* } } } */ -diff --git a/gcc/testsuite/gcc.target/powerpc/pr109069-1.c b/gcc/testsuite/gcc.target/powerpc/pr109069-1.c -new file mode 100644 -index 00000000000..eb4d73a1e66 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/pr109069-1.c -@@ -0,0 +1,25 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target vmx_hw } */ -+/* { dg-options "-O2 -maltivec" } */ -+ -+/* Verify it run successfully. */ -+ -+#include -+ -+__attribute__ ((noipa)) -+vector signed int -+test () -+{ -+ vector signed int v = {-16, -16, -16, -16}; -+ vector signed int res = vec_sld (v, v, 3); -+ return res; -+} -+ -+int -+main () -+{ -+ vector signed int res = test (); -+ if (res[0] != 0xf0ffffff) -+ __builtin_abort (); -+ return 0; -+} -diff --git a/gcc/testsuite/gcc.target/powerpc/pr109069-2-run.c b/gcc/testsuite/gcc.target/powerpc/pr109069-2-run.c -new file mode 100644 -index 00000000000..fad9fa5df73 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/pr109069-2-run.c -@@ -0,0 +1,50 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target vsx_hw } */ -+/* { dg-options "-O2 -mvsx" } */ -+ -+/* Verify it doesn't generate wrong code. */ -+ -+#include "pr109069-2.h" -+ -+int -+main () -+{ -+ vector unsigned char res1 = test1 (); -+ for (int i = 0; i < 16; i++) -+ if (res1[i] != 0xd) -+ __builtin_abort (); -+ -+ vector signed short res2 = test2 (); -+ for (int i = 0; i < 8; i++) -+ if (res2[i] != 0x7777) -+ __builtin_abort (); -+ -+ vector signed int res3 = test3 (); -+ vector unsigned int res4 = test4 (); -+ vector float res6 = test6 (); -+ for (int i = 0; i < 4; i++) -+ { -+ if (res3[i] != 0xbbbbbbbb) -+ __builtin_abort (); -+ if (res4[i] != 0x7070707) -+ __builtin_abort (); -+ U32b u; -+ u.f = res6[i]; -+ if (u.i != 0x17171717) -+ __builtin_abort (); -+ } -+ -+ vector unsigned long long res5 = test5 (); -+ vector double res7 = test7 (); -+ for (int i = 0; i < 2; i++) -+ { -+ if (res5[i] != 0x4545454545454545ll) -+ __builtin_abort (); -+ U64b u; -+ u.f = res7[i]; -+ if (u.i != 0x5454545454545454ll) -+ __builtin_abort (); -+ } -+ return 0; -+} -+ -diff --git a/gcc/testsuite/gcc.target/powerpc/pr109069-2.c b/gcc/testsuite/gcc.target/powerpc/pr109069-2.c -new file mode 100644 -index 00000000000..e71bbeb5df5 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/pr109069-2.c -@@ -0,0 +1,12 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target powerpc_vsx_ok } */ -+/* Disable rs6000 optimize_swaps as it drops some REG_EQUAL -+ notes on const vector and affects test point here. */ -+/* { dg-options "-O2 -mvsx -mno-optimize-swaps" } */ -+ -+/* Verify we can optimize away vector shifting if every byte -+ of vector is the same. */ -+ -+#include "pr109069-2.h" -+ -+/* { dg-final { scan-assembler-not {\mvsldoi\M} } } */ -diff --git a/gcc/testsuite/gcc.target/powerpc/pr109069-2.h b/gcc/testsuite/gcc.target/powerpc/pr109069-2.h -new file mode 100644 -index 00000000000..8b03bfb65fa ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/pr109069-2.h -@@ -0,0 +1,83 @@ -+#include -+ -+typedef union -+{ -+ unsigned int i; -+ float f; -+} U32b; -+ -+typedef union -+{ -+ unsigned long long i; -+ double f; -+} U64b; -+ -+__attribute__ ((noipa)) -+vector unsigned char -+test1 () -+{ -+ vector unsigned char v = {0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, -+ 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd}; -+ vector unsigned char res = vec_sld (v, v, 3); -+ return res; -+} -+ -+__attribute__ ((noipa)) -+vector signed short -+test2 () -+{ -+ vector signed short v -+ = {0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777, 0x7777}; -+ vector signed short res = vec_sld (v, v, 5); -+ return res; -+} -+ -+__attribute__ ((noipa)) -+vector signed int -+test3 () -+{ -+ vector signed int v = {0xbbbbbbbb, 0xbbbbbbbb, 0xbbbbbbbb, 0xbbbbbbbb}; -+ vector signed int res = vec_sld (v, v, 7); -+ return res; -+} -+ -+__attribute__ ((noipa)) -+vector unsigned int -+test4 () -+{ -+ vector unsigned int v = {0x07070707, 0x07070707, 0x07070707, 0x07070707}; -+ vector unsigned int res = vec_sld (v, v, 9); -+ return res; -+} -+ -+__attribute__ ((noipa)) -+vector unsigned long long -+test5 () -+{ -+ vector unsigned long long v = {0x4545454545454545ll, 0x4545454545454545ll}; -+ vector unsigned long long res = vec_sld (v, v, 10); -+ return res; -+} -+ -+__attribute__ ((noipa)) -+vector float -+test6 () -+{ -+ U32b u; -+ u.i = 0x17171717; -+ vector float vf = {u.f, u.f, u.f, u.f}; -+ vector float res = vec_sld (vf, vf, 11); -+ return res; -+} -+ -+__attribute__ ((noipa)) -+vector double -+test7 () -+{ -+ U64b u; -+ u.i = 0x5454545454545454ll; -+ vector double vf = {u.f, u.f}; -+ vector double res = vec_sld (vf, vf, 13); -+ return res; -+} -+ -diff --git a/gcc/testsuite/gcc.target/powerpc/pr109932-1.c b/gcc/testsuite/gcc.target/powerpc/pr109932-1.c -new file mode 100644 -index 00000000000..374d9f60618 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/pr109932-1.c -@@ -0,0 +1,17 @@ -+/* { dg-require-effective-target int128 } */ -+/* { dg-require-effective-target powerpc_altivec_ok } */ -+/* { dg-options "-maltivec -mno-vsx" } */ -+ -+/* Verify there is no ICE but one expected error message instead. */ -+ -+#include -+ -+extern vector signed __int128 res_vslll; -+extern unsigned long long aull[2]; -+ -+void -+testVectorInt128Pack () -+{ -+ res_vslll = __builtin_pack_vector_int128 (aull[0], aull[1]); /* { dg-error "'__builtin_pack_vector_int128' requires the '-mvsx' option" } */ -+} -+ -diff --git a/gcc/testsuite/gcc.target/powerpc/pr109932-2.c b/gcc/testsuite/gcc.target/powerpc/pr109932-2.c -new file mode 100644 -index 00000000000..374d9f60618 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/pr109932-2.c -@@ -0,0 +1,17 @@ -+/* { dg-require-effective-target int128 } */ -+/* { dg-require-effective-target powerpc_altivec_ok } */ -+/* { dg-options "-maltivec -mno-vsx" } */ -+ -+/* Verify there is no ICE but one expected error message instead. */ -+ -+#include -+ -+extern vector signed __int128 res_vslll; -+extern unsigned long long aull[2]; -+ -+void -+testVectorInt128Pack () -+{ -+ res_vslll = __builtin_pack_vector_int128 (aull[0], aull[1]); /* { dg-error "'__builtin_pack_vector_int128' requires the '-mvsx' option" } */ -+} -+ -diff --git a/gcc/testsuite/gcc.target/powerpc/pr110011.c b/gcc/testsuite/gcc.target/powerpc/pr110011.c -new file mode 100644 -index 00000000000..5b04d3e298a ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/pr110011.c -@@ -0,0 +1,42 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target float128_runtime } */ -+/* Force long double to be with IBM format here, to verify -+ _Float128 constant still uses its own format (IEEE) for -+ encoding rather than IBM format. */ -+/* { dg-options "-mfp-in-toc -mabi=ibmlongdouble" } */ -+/* { dg-add-options float128 } */ -+ -+#define MPFR_FLOAT128_MAX 0x1.ffffffffffffffffffffffffffffp+16383f128 -+ -+__attribute__ ((noipa)) -+_Float128 f128_max () -+{ -+ return MPFR_FLOAT128_MAX; -+} -+ -+typedef union -+{ -+ int w[4]; -+ _Float128 f128; -+} U; -+ -+int main () -+{ -+ -+ U umax; -+ umax.f128 = f128_max (); -+ /* ieee float128 max: -+ 7ffeffff ffffffff ffffffff ffffffff. */ -+ if (umax.w[1] != 0xffffffff || umax.w[2] != 0xffffffff) -+ __builtin_abort (); -+#ifdef __LITTLE_ENDIAN__ -+ if (umax.w[0] != 0xffffffff || umax.w[3] != 0x7ffeffff) -+ __builtin_abort (); -+#else -+ if (umax.w[3] != 0xffffffff || umax.w[0] != 0x7ffeffff) -+ __builtin_abort (); -+#endif -+ -+ return 0; -+} -+ -diff --git a/gcc/testsuite/gcc.target/powerpc/pr111380-1.c b/gcc/testsuite/gcc.target/powerpc/pr111380-1.c -new file mode 100644 -index 00000000000..57ae75ef73a ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/pr111380-1.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target vect_int } */ -+/* { dg-options "-O2 -mdejagnu-cpu=power9" } */ -+ -+/* Verify it emits error message on inlining even without LTO. */ -+ -+vector int c, a, b; -+ -+static inline void __attribute__ ((__always_inline__)) -+foo () /* { dg-error "inlining failed in call to .* target specific option mismatch" } */ -+{ -+ c = a + b; -+} -+ -+__attribute__ ((target ("cpu=power8"))) -+int main () -+{ -+ foo (); /* { dg-message "called from here" } */ -+ c = a + b; -+} -diff --git a/gcc/testsuite/gcc.target/powerpc/pr111380-2.c b/gcc/testsuite/gcc.target/powerpc/pr111380-2.c -new file mode 100644 -index 00000000000..7b363940643 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/pr111380-2.c -@@ -0,0 +1,20 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target vect_int } */ -+/* { dg-options "-O2 -mno-vsx" } */ -+ -+/* Verify it emits error message on inlining even without LTO. */ -+ -+vector int c, a, b; -+ -+static inline void __attribute__ ((__always_inline__)) -+foo () /* { dg-error "inlining failed in call to .* target specific option mismatch" } */ -+{ -+ c = a + b; -+} -+ -+__attribute__ ((target ("vsx"))) -+int main () -+{ -+ foo (); /* { dg-message "called from here" } */ -+ c = a + b; -+} -diff --git a/gcc/testsuite/gcc.target/powerpc/pr70243.c b/gcc/testsuite/gcc.target/powerpc/pr70243.c -new file mode 100644 -index 00000000000..18a5ce78792 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/pr70243.c -@@ -0,0 +1,41 @@ -+/* { dg-do compile */ -+/* { dg-require-effective-target powerpc_vsx_ok } */ -+/* { dg-options "-O2 -mvsx" } */ -+ -+/* PR 70423, Make sure we don't generate vmaddfp or vnmsubfp. These -+ instructions have different rounding modes than the VSX instructions -+ xvmaddsp and xvnmsubsp. These tests are written where the 3 inputs and -+ target are all separate registers. Because vmaddfp and vnmsubfp are no -+ longer generated the compiler will have to generate an xsmaddsp or xsnmsubsp -+ instruction followed by a move operation. */ -+ -+#include -+ -+vector float -+do_add1 (vector float dummy, vector float a, vector float b, vector float c) -+{ -+ return (a * b) + c; -+} -+ -+vector float -+do_nsub1 (vector float dummy, vector float a, vector float b, vector float c) -+{ -+ return -((a * b) - c); -+} -+ -+vector float -+do_add2 (vector float dummy, vector float a, vector float b, vector float c) -+{ -+ return vec_madd (a, b, c); -+} -+ -+vector float -+do_nsub2 (vector float dummy, vector float a, vector float b, vector float c) -+{ -+ return vec_nmsub (a, b, c); -+} -+ -+/* { dg-final { scan-assembler {\mxvmadd[am]sp\M} } } */ -+/* { dg-final { scan-assembler {\mxvnmsub[am]sp\M} } } */ -+/* { dg-final { scan-assembler-not {\mvmaddfp\M} } } */ -+/* { dg-final { scan-assembler-not {\mvnmsubfp\M} } } */ -diff --git a/gcc/testsuite/gcc.target/powerpc/pr96762.c b/gcc/testsuite/gcc.target/powerpc/pr96762.c -new file mode 100644 -index 00000000000..a59deb42738 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/powerpc/pr96762.c -@@ -0,0 +1,13 @@ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -mdejagnu-cpu=power10" } */ -+ -+/* Verify there is no ICE on ilp32 env. */ -+ -+extern void foo (char *); -+ -+void -+bar (void) -+{ -+ char zj[] = "XXXXXXXXXXXXXXXX"; -+ foo (zj); -+} -diff --git a/gcc/testsuite/gdc.dg/pr108842.d b/gcc/testsuite/gdc.dg/pr108842.d -new file mode 100644 -index 00000000000..5aae9e5000d ---- /dev/null -+++ b/gcc/testsuite/gdc.dg/pr108842.d -@@ -0,0 +1,4 @@ -+// { dg-do compile } -+// { dg-options "-fno-rtti" } -+module object; -+enum int[] x = [0, 1, 2]; -diff --git a/gcc/testsuite/gdc.dg/pr110359.d b/gcc/testsuite/gdc.dg/pr110359.d -new file mode 100644 -index 00000000000..bf69201d9a5 ---- /dev/null -+++ b/gcc/testsuite/gdc.dg/pr110359.d -@@ -0,0 +1,22 @@ -+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110359 -+// { dg-do compile } -+// { dg-options "-fdump-tree-original" } -+double pow(in double x, in ulong p) -+{ -+ import gcc.builtins : __builtin_expect; -+ if (__builtin_expect(p == 0, false)) -+ return 1; -+ if (__builtin_expect(p == 1, false)) -+ return x; -+ -+ double s = x; -+ double v = 1; -+ for (ulong i = p; i > 1; i >>= 1) -+ { -+ v = (i & 0x1) ? s * v : v; -+ s = s * s; -+ } -+ return v * s; -+} -+// { dg-final { scan-tree-dump "if \\(__builtin_expect \\(p == 0, 0\\) != 0\\)" "original" } } -+// { dg-final { scan-tree-dump "if \\(__builtin_expect \\(p == 1, 0\\) != 0\\)" "original" } } -diff --git a/gcc/testsuite/gdc.dg/pr110514a.d b/gcc/testsuite/gdc.dg/pr110514a.d -new file mode 100644 -index 00000000000..46e370527d3 ---- /dev/null -+++ b/gcc/testsuite/gdc.dg/pr110514a.d -@@ -0,0 +1,9 @@ -+// { dg-do "compile" } -+// { dg-options "-O -fdump-tree-optimized" } -+immutable uint[] imm_arr = [1,2,3]; -+int test_imm(immutable uint[] ptr) -+{ -+ return imm_arr[2] == 3 ? 123 : 456; -+} -+// { dg-final { scan-assembler-not "_d_arraybounds_indexp" } } -+// { dg-final { scan-tree-dump "return 123;" optimized } } -diff --git a/gcc/testsuite/gdc.dg/pr110514b.d b/gcc/testsuite/gdc.dg/pr110514b.d -new file mode 100644 -index 00000000000..86aeb485c34 ---- /dev/null -+++ b/gcc/testsuite/gdc.dg/pr110514b.d -@@ -0,0 +1,8 @@ -+// { dg-do "compile" } -+// { dg-options "-O" } -+immutable uint[] imm_ctor_arr; -+int test_imm_ctor(immutable uint[] ptr) -+{ -+ return imm_ctor_arr[2] == 3; -+} -+// { dg-final { scan-assembler "_d_arraybounds_indexp" } } -diff --git a/gcc/testsuite/gdc.dg/pr110514c.d b/gcc/testsuite/gdc.dg/pr110514c.d -new file mode 100644 -index 00000000000..94779e123a4 ---- /dev/null -+++ b/gcc/testsuite/gdc.dg/pr110514c.d -@@ -0,0 +1,8 @@ -+// { dg-do "compile" } -+// { dg-options "-O" } -+const uint[] cst_arr = [1,2,3]; -+int test_cst(const uint[] ptr) -+{ -+ return cst_arr[2] == 3; -+} -+// { dg-final { scan-assembler "_d_arraybounds_indexp" } } -diff --git a/gcc/testsuite/gdc.dg/pr110514d.d b/gcc/testsuite/gdc.dg/pr110514d.d -new file mode 100644 -index 00000000000..56e9a3139ea ---- /dev/null -+++ b/gcc/testsuite/gdc.dg/pr110514d.d -@@ -0,0 +1,8 @@ -+// { dg-do "compile" } -+// { dg-options "-O" } -+const uint[] cst_ctor_arr; -+int test_cst_ctor(const uint[] ptr) -+{ -+ return cst_ctor_arr[2] == 3; -+} -+// { dg-final { scan-assembler "_d_arraybounds_indexp" } } -diff --git a/gcc/testsuite/gdc.dg/pr110712.d b/gcc/testsuite/gdc.dg/pr110712.d -new file mode 100644 -index 00000000000..ed24b6c90cc ---- /dev/null -+++ b/gcc/testsuite/gdc.dg/pr110712.d -@@ -0,0 +1,23 @@ -+// { dg-do compile { target { { i?86-*-* x86_64-*-* } && lp64 } } } -+import gcc.builtins : va_list = __builtin_va_list; -+ -+void argpass(va_list *ap); -+ -+void pr110712a(va_list ap) -+{ -+ argpass(&ap); // { dg-error "cannot convert parameter" } -+} -+ -+void pr110712b(va_list ap) -+{ -+ va_list ap2 = ap; // { dg-error "cannot convert parameter" } -+} -+ -+struct pr110712c -+{ -+ this(va_list ap) -+ { -+ this.ap = ap; // { dg-error "cannot convert parameter" } -+ } -+ va_list ap; -+} -diff --git a/gcc/testsuite/gdc.dg/pr110959.d b/gcc/testsuite/gdc.dg/pr110959.d -new file mode 100644 -index 00000000000..b1da90fad83 ---- /dev/null -+++ b/gcc/testsuite/gdc.dg/pr110959.d -@@ -0,0 +1,32 @@ -+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110959 -+// { dg-do compile } -+class ArsdExceptionBase : object.Exception { -+ this(string operation, string file = __FILE__, size_t line = __LINE__, Throwable next = null) { -+ super(operation, file, line, next); -+ } -+} -+ -+template ArsdException(alias Type, DataTuple...) { -+ static if(DataTuple.length) -+ alias Parent = ArsdException!(Type, DataTuple[0 .. $-1]); -+ else -+ alias Parent = ArsdExceptionBase; -+ -+ class ArsdException : Parent { -+ DataTuple data; -+ -+ this(DataTuple data, string file = __FILE__, size_t line = __LINE__) { -+ this.data = data; -+ static if(is(Parent == ArsdExceptionBase)) -+ super(null, file, line); -+ else -+ super(data[0 .. $-1], file, line); -+ } -+ -+ static opCall(R...)(R r, string file = __FILE__, size_t line = __LINE__) { -+ return new ArsdException!(Type, DataTuple, R)(r, file, line); -+ } -+ } -+} -+ -+__gshared pr110959 = ArsdException!"Test"(4, "four"); -diff --git a/gcc/testsuite/gdc.dg/pr112270.d b/gcc/testsuite/gdc.dg/pr112270.d -new file mode 100644 -index 00000000000..591c798fddd ---- /dev/null -+++ b/gcc/testsuite/gdc.dg/pr112270.d -@@ -0,0 +1,7 @@ -+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112270 -+// { dg-do compile } -+class CPPNamespaceDeclaration { } -+bool isNamespaceEqual (CPPNamespaceDeclaration a) -+{ -+ return a ? true : isNamespaceEqual(a); -+} -diff --git a/gcc/testsuite/gdc.dg/pr98277.d b/gcc/testsuite/gdc.dg/pr98277.d -index 0dff142a6ef..c88c735dec8 100644 ---- a/gcc/testsuite/gdc.dg/pr98277.d -+++ b/gcc/testsuite/gdc.dg/pr98277.d -@@ -11,3 +11,14 @@ ref int getSide(Side side, return ref int left, return ref int right) - { - return side == Side.left ? left : right; - } -+ -+enum SideA : int[] -+{ -+ left = [0], -+ right = [1], -+} -+ -+int getSideA(SideA side, ref int left, ref int right) -+{ -+ return side == SideA.left ? left : right; -+} -diff --git a/gcc/testsuite/gdc.dg/torture/pr110516a.d b/gcc/testsuite/gdc.dg/torture/pr110516a.d -new file mode 100644 -index 00000000000..276455ae408 ---- /dev/null -+++ b/gcc/testsuite/gdc.dg/torture/pr110516a.d -@@ -0,0 +1,12 @@ -+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110516 -+// { dg-do compile } -+// { dg-options "-fno-moduleinfo -fdump-tree-optimized" } -+void fn110516(ubyte* ptr) -+{ -+ import core.volatile : volatileLoad; -+ volatileLoad(ptr); -+ volatileLoad(ptr); -+ volatileLoad(ptr); -+ volatileLoad(ptr); -+} -+// { dg-final { scan-tree-dump-times " ={v} " 4 "optimized" } } -diff --git a/gcc/testsuite/gdc.dg/torture/pr110516b.d b/gcc/testsuite/gdc.dg/torture/pr110516b.d -new file mode 100644 -index 00000000000..b7a67e716a5 ---- /dev/null -+++ b/gcc/testsuite/gdc.dg/torture/pr110516b.d -@@ -0,0 +1,12 @@ -+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110516 -+// { dg-do compile } -+// { dg-options "-fno-moduleinfo -fdump-tree-optimized" } -+void fn110516(ubyte* ptr) -+{ -+ import core.volatile : volatileStore; -+ volatileStore(ptr, 0); -+ volatileStore(ptr, 0); -+ volatileStore(ptr, 0); -+ volatileStore(ptr, 0); -+} -+// { dg-final { scan-tree-dump-times " ={v} " 4 "optimized" } } -diff --git a/gcc/testsuite/gdc.test/compilable/test23978.d b/gcc/testsuite/gdc.test/compilable/test23978.d -new file mode 100644 -index 00000000000..cc30f728dee ---- /dev/null -+++ b/gcc/testsuite/gdc.test/compilable/test23978.d -@@ -0,0 +1,30 @@ -+// REQUIRED_ARGS: -preview=dip1021 -lowmem -+// https://issues.dlang.org/show_bug.cgi?id=23978 -+ -+// Note: this is a memory corruption bug. -+// Memory returned by `GC.realloc` retains references to old memory in it, -+// mostly because of the smallarray optimization for `Array(T)`. -+// If this fails again, it might not be consistent, so try running it multiple times. -+ -+class LUBench { } -+void lup(ulong , ulong , int , int = 1) -+{ -+ new LUBench; -+} -+void lup_3200(ulong iters, ulong flops) -+{ -+ lup(iters, flops, 3200); -+} -+void raytrace() -+{ -+ struct V -+ { -+ float x, y, z; -+ auto normalize() { } -+ struct Tid { } -+ auto spawnLinked() { } -+ string[] namesByTid; -+ class MessageBox { } -+ auto cross() { } -+ } -+} -diff --git a/gcc/testsuite/gdc.test/runnable/test23010.d b/gcc/testsuite/gdc.test/runnable/test23010.d -new file mode 100644 -index 00000000000..1cbacfc9279 ---- /dev/null -+++ b/gcc/testsuite/gdc.test/runnable/test23010.d -@@ -0,0 +1,43 @@ -+// https://issues.dlang.org/show_bug.cgi?id=23010 -+ -+alias AliasSeq(T...) = T; -+ -+mixin template faz() { -+ alias T = AliasSeq!(int); -+ T bar = 12345; -+ -+ void write1() { -+ assert(bar[0] == 12345); -+ } -+ -+ AliasSeq!(string, float) foo = AliasSeq!("qwerty", 1.25f); -+ -+ void write2() { -+ assert(foo == AliasSeq!("qwerty", 1.25f)); -+ foo = AliasSeq!("asdfg", 2.5f); // this even crashed before -+ assert(foo == AliasSeq!("asdfg", 2.5f)); -+ } -+} -+ -+void main() { -+ mixin faz!(); -+ write1; -+ write2; -+ fun; -+} -+ -+// Testing static symbol generation ('toobj.d' changes) -+ -+static AliasSeq!(int, string) tup; -+ -+void fun() -+{ -+ auto v = tup; -+ -+ struct S(T...) { -+ static T b; -+ } -+ -+ alias T = S!(int, float); -+ auto p = T.b; -+} -diff --git a/gcc/testsuite/gfortran.dg/deferred_character_37.f90 b/gcc/testsuite/gfortran.dg/deferred_character_37.f90 -new file mode 100644 -index 00000000000..8a5a8c5daf8 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/deferred_character_37.f90 -@@ -0,0 +1,88 @@ -+! { dg-do run } -+! PR fortran/95947 -+! PR fortran/110658 -+! -+! Test deferred-length character arguments to selected intrinsics -+! that may return a character result of same length as first argument: -+! CSHIFT, EOSHIFT, MAXVAL, MERGE, MINVAL, PACK, SPREAD, TRANSPOSE, UNPACK -+ -+program p -+ implicit none -+ call pr95947 () -+ call pr110658 () -+ call s () -+ -+contains -+ -+ subroutine pr95947 -+ character(len=:), allocatable :: m(:) -+ -+ m = [ character(len=10) :: 'ape','bat','cat','dog','eel','fly','gnu'] -+ m = pack (m, mask=(m(:)(2:2) == 'a')) -+ -+! print *, "m = '", m,"' ", "; expected is ['bat','cat']" -+ if (.not. all (m == ['bat','cat'])) stop 1 -+ -+! print *, "size(m) = ", size(m), "; expected is 2" -+ if (size (m) /= 2) stop 2 -+ -+! print *, "len(m) = ", len(m), "; expected is 10" -+ if (len (m) /= 10) stop 3 -+ -+! print *, "len_trim(m) = ", len_trim(m), "; expected is 3 3" -+ if (.not. all (len_trim(m) == [3,3])) stop 4 -+ end -+ -+ subroutine pr110658 -+ character(len=:), allocatable :: array(:), array2(:,:) -+ character(len=:), allocatable :: res, res1(:), res2(:) -+ -+ array = ["bb", "aa", "cc"] -+ -+ res = minval (array) -+ if (res /= "aa") stop 11 -+ -+ res = maxval (array, mask=[.true.,.true.,.false.]) -+ if (res /= "bb") stop 12 -+ -+ res1 = cshift (array, 1) -+ if (any (res1 /= ["aa","cc","bb"])) stop 13 -+ -+ res2 = eoshift (res1, -1) -+ if (any (res2 /= [" ", "aa", "cc"])) stop 14 -+ -+ res2 = pack (array, mask=[.true.,.false.,.true.]) -+ if (any (res2 /= ["bb","cc"])) stop 15 -+ -+ res2 = unpack (res2, mask=[.true.,.false.,.true.], field="aa") -+ if (any (res2 /= array)) stop 16 -+ -+ res2 = merge (res2, array, [.true.,.false.,.true.]) -+ if (any (res2 /= array)) stop 17 -+ -+ array2 = spread (array, dim=2, ncopies=2) -+ array2 = transpose (array2) -+ if (any (shape (array2) /= [2,3])) stop 18 -+ if (any (array2(2,:) /= array)) stop 19 -+ end -+ -+ subroutine s -+ character(:), allocatable :: array1(:), array2(:) -+ array1 = ["aa","cc","bb"] -+ array2 = copy (array1) -+ if (any (array1 /= array2)) stop 20 -+ end -+ -+ function copy (arg) result (res) -+ character(:), allocatable :: res(:) -+ character(*), intent(in) :: arg(:) -+ integer :: i, k, n -+ k = len (arg) -+ n = size (arg) -+ allocate (character(k) :: res(n)) -+ do i = 1, n -+ res(i) = arg(i) -+ end do -+ end -+ -+end -diff --git a/gcc/testsuite/gfortran.dg/findloc_10.f90 b/gcc/testsuite/gfortran.dg/findloc_10.f90 -new file mode 100644 -index 00000000000..4d5ecd2306a ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/findloc_10.f90 -@@ -0,0 +1,13 @@ -+! { dg-do run } -+! { dg-options "-fdump-tree-original" } -+! PR fortran/110288 - FINDLOC and deferred-length character arguments -+ -+program test -+ character(len=:), allocatable :: array(:) -+ character(len=:), allocatable :: value -+ array = ["bb", "aa"] -+ value = "aa" -+ if (findloc (array, value, dim=1) /= 2) stop 1 -+end program test -+ -+! { dg-final { scan-tree-dump "_gfortran_findloc2_s1 \\(.*, \\.array, \\.value\\)" "original" } } -diff --git a/gcc/testsuite/gfortran.dg/findloc_9.f90 b/gcc/testsuite/gfortran.dg/findloc_9.f90 -new file mode 100644 -index 00000000000..05974476cb3 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/findloc_9.f90 -@@ -0,0 +1,19 @@ -+! { dg-do compile } -+! { dg-options "-fdump-tree-original" } -+! PR fortran/110585 - simplification of FINDLOC for constant complex arguments -+ -+program mvce -+ implicit none -+ integer, parameter :: a(*) = findloc([(1.,0.),(2.,1.)], (2.,0.)) -+ integer, parameter :: b(*) = findloc([(1.,0.),(2.,1.)], (2.,0.), back=.true.) -+ integer, parameter :: c(*) = findloc([(1.,0.),(2.,1.)], (2.,1.)) -+ integer, parameter :: d(*) = findloc([(1.,0.),(2.,1.)], (2.,1.), back=.true.) -+ integer, parameter :: e = findloc([(1.,0.),(2.,1.)], (2.,1.), dim=1) -+ if (a(1) /= 0) stop 1 -+ if (b(1) /= 0) stop 2 -+ if (c(1) /= 2) stop 3 -+ if (d(1) /= 2) stop 4 -+ if (e /= 2) stop 5 -+end -+ -+! { dg-final { scan-tree-dump-not "_gfortran_stop_numeric" "original" } } -diff --git a/gcc/testsuite/gfortran.dg/implied_do_io_8.f90 b/gcc/testsuite/gfortran.dg/implied_do_io_8.f90 -new file mode 100644 -index 00000000000..c66a0f6fde6 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/implied_do_io_8.f90 -@@ -0,0 +1,18 @@ -+! { dg-do run } -+! { dg-additional-options "-fcheck=bounds" } -+! PR fortran/111837 - out of bounds access with front-end optimization -+ -+program implied_do_bug -+ implicit none -+ integer :: i,j,k -+ real :: arr(1,1,1) -+ integer :: ni(1) -+ ni(1) = 1 -+ arr = 1 -+ write(*,*) (((arr(i,j,k), i=1,ni(k)), k=1,1), j=1,1) -+ write(*,*) (((arr(i,j,k), i=1,ni(k)), j=1,1), k=1,1) -+ write(*,*) (((arr(k,i,j), i=1,ni(k)), k=1,1), j=1,1) -+ write(*,*) (((arr(k,i,j), i=1,ni(k)), j=1,1), k=1,1) -+ write(*,*) (((arr(j,k,i), i=1,ni(k)), k=1,1), j=1,1) -+ write(*,*) (((arr(j,k,i), i=1,ni(k)), j=1,1), k=1,1) -+end -diff --git a/gcc/testsuite/gfortran.dg/pr107397.f90 b/gcc/testsuite/gfortran.dg/pr107397.f90 -new file mode 100644 -index 00000000000..fd59bf16007 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/pr107397.f90 -@@ -0,0 +1,9 @@ -+!{ dg-do compile } -+! -+program p -+ type t -+ real :: a = 1.0 -+ end type -+ type(t), parameter :: x = z'1' ! { dg-error "incompatible with a BOZ" } -+ x%a = x%a + 2 ! { dg-error "has no IMPLICIT type" } -+end -diff --git a/gcc/testsuite/gfortran.dg/pr111880.f90 b/gcc/testsuite/gfortran.dg/pr111880.f90 -new file mode 100644 -index 00000000000..c0cd98a93d4 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/pr111880.f90 -@@ -0,0 +1,22 @@ -+! { dg-do compile } -+! { dg-options "-std=f2018" } -+! PR fortran/111880 - redundant warning of obsolescent COMMON with submodule -+ -+module third_party_module -+ integer :: some_param -+ common /not_my_code/ some_param ! { dg-warning "COMMON block" } -+end module third_party_module -+ -+module foo -+ use third_party_module -+ interface -+ module subroutine bar() -+ end subroutine bar -+ end interface -+end module foo -+ -+submodule (foo) foo_submod ! We do not need a warning here! -+contains -+ module procedure bar -+ end procedure bar -+end submodule foo_submod -diff --git a/gcc/testsuite/gfortran.dg/ptr-func-5.f90 b/gcc/testsuite/gfortran.dg/ptr-func-5.f90 -new file mode 100644 -index 00000000000..05fd56703ca ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/ptr-func-5.f90 -@@ -0,0 +1,39 @@ -+! { dg-do compile } -+! PR fortran/109846 -+! CLASS pointer function result in variable definition context -+ -+module foo -+ implicit none -+ type :: parameter_list -+ contains -+ procedure :: sublist, sublist_nores -+ end type -+contains -+ function sublist (this) result (slist) -+ class(parameter_list), intent(inout) :: this -+ class(parameter_list), pointer :: slist -+ allocate (slist) -+ end function -+ function sublist_nores (this) -+ class(parameter_list), intent(inout) :: this -+ class(parameter_list), pointer :: sublist_nores -+ allocate (sublist_nores) -+ end function -+end module -+ -+program example -+ use foo -+ implicit none -+ type(parameter_list) :: plist -+ call sub1 (plist%sublist()) -+ call sub1 (plist%sublist_nores()) -+ call sub2 (plist%sublist()) -+ call sub2 (plist%sublist_nores()) -+contains -+ subroutine sub1 (plist) -+ type(parameter_list), intent(inout) :: plist -+ end subroutine -+ subroutine sub2 (plist) -+ type(parameter_list) :: plist -+ end subroutine -+end program -diff --git a/gcc/testsuite/gfortran.dg/select_rank_6.f90 b/gcc/testsuite/gfortran.dg/select_rank_6.f90 -new file mode 100644 -index 00000000000..d0121777bb5 ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/select_rank_6.f90 -@@ -0,0 +1,48 @@ -+! { dg-do compile } -+! PR fortran/100607 - fix diagnostics for SELECT RANK -+! Contributed by T.Burnus -+ -+program p -+ implicit none -+ integer, allocatable :: A(:,:,:) -+ -+ allocate(a(5:6,-2:2, 99:100)) -+ call foo(a) -+ call bar(a) -+ -+contains -+ -+ subroutine foo(x) -+ integer, allocatable :: x(..) -+ if (rank(x) /= 3) stop 1 -+ if (any (lbound(x) /= [5, -2, 99])) stop 2 -+ -+ select rank (x) -+ rank(3) -+ if (any (lbound(x) /= [5, -2, 99])) stop 3 -+ end select -+ -+ select rank (x) ! { dg-error "pointer or allocatable selector at .2." } -+ rank(*) ! { dg-error "pointer or allocatable selector at .2." } -+ if (rank(x) /= 1) stop 4 -+ if (lbound(x, 1) /= 1) stop 5 -+ end select -+ end -+ -+ subroutine bar(x) -+ integer :: x(..) -+ if (rank(x) /= 3) stop 6 -+ if (any (lbound(x) /= 1)) stop 7 -+ -+ select rank (x) -+ rank(3) -+ if (any (lbound(x) /= 1)) stop 8 -+ end select -+ -+ select rank (x) -+ rank(*) -+ if (rank(x) /= 1) stop 9 -+ if (lbound(x, 1) /= 1) stop 10 -+ end select -+ end -+end -diff --git a/gcc/testsuite/gnat.dg/opt102.adb b/gcc/testsuite/gnat.dg/opt102.adb -new file mode 100644 -index 00000000000..2b5bec54c3d ---- /dev/null -+++ b/gcc/testsuite/gnat.dg/opt102.adb -@@ -0,0 +1,10 @@ -+-- { dg-do run } -+-- { dg-options "-O2 -gnata" } -+ -+with Opt102_Pkg; use Opt102_Pkg; -+ -+procedure Opt102 is -+ I, F : aliased Integer; -+begin -+ I := Get (Two, F'Access, null); -+end; -diff --git a/gcc/testsuite/gnat.dg/opt102_pkg.adb b/gcc/testsuite/gnat.dg/opt102_pkg.adb -new file mode 100644 -index 00000000000..09c338d0517 ---- /dev/null -+++ b/gcc/testsuite/gnat.dg/opt102_pkg.adb -@@ -0,0 +1,12 @@ -+package body Opt102_Pkg is -+ -+ function Get (E : Enum; F, M : access Integer) return Integer is -+ begin -+ case E is -+ when One => return 0; -+ when Two => return F.all; -+ when Three => return M.all; -+ end case; -+ end; -+ -+end Opt102_Pkg; -diff --git a/gcc/testsuite/gnat.dg/opt102_pkg.ads b/gcc/testsuite/gnat.dg/opt102_pkg.ads -new file mode 100644 -index 00000000000..7afc3fe6ac7 ---- /dev/null -+++ b/gcc/testsuite/gnat.dg/opt102_pkg.ads -@@ -0,0 +1,10 @@ -+package Opt102_Pkg is -+ -+ type Enum is (One, Two, Three); -+ -+ function Get (E : Enum; F, M : access Integer) return Integer -+ with Pre => (E = One) = (F = null and M = null) and -+ (E = Two) = (F /= null) and -+ (E = Three) = (M /= null); -+ -+end Opt102_Pkg; -diff --git a/gcc/testsuite/gnat.dg/varsize4.adb b/gcc/testsuite/gnat.dg/varsize4.adb -new file mode 100644 -index 00000000000..0ea5135b7fc ---- /dev/null -+++ b/gcc/testsuite/gnat.dg/varsize4.adb -@@ -0,0 +1,20 @@ -+-- { dg-do compile } -+ -+package body Varsize4 is -+ -+ function Func (Bytes_Read : out Natural) return Arr is -+ Ret : Arr := (others => False); -+ begin -+ Bytes_Read := 0; -+ return Ret; -+ end; -+ -+ function Get return Natural is -+ Data : Arr; -+ Bytes : Natural; -+ begin -+ Data := Func (Bytes); -+ return Bytes; -+ end; -+ -+end Varsize4; -diff --git a/gcc/testsuite/gnat.dg/varsize4.ads b/gcc/testsuite/gnat.dg/varsize4.ads -new file mode 100644 -index 00000000000..62b673fc16b ---- /dev/null -+++ b/gcc/testsuite/gnat.dg/varsize4.ads -@@ -0,0 +1,9 @@ -+with Varsize4_Pkg; -+ -+package Varsize4 is -+ -+ type Arr is array (1 .. Varsize4_Pkg.F) of Boolean; -+ -+ function Get return Natural; -+ -+end Varsize4; -diff --git a/gcc/testsuite/gnat.dg/varsize4_pkg.ads b/gcc/testsuite/gnat.dg/varsize4_pkg.ads -new file mode 100644 -index 00000000000..e07a6b002dc ---- /dev/null -+++ b/gcc/testsuite/gnat.dg/varsize4_pkg.ads -@@ -0,0 +1,5 @@ -+package Varsize4_Pkg is -+ -+ function F return Natural; -+ -+end Varsize4_Pkg; -diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp -index c858bd93b8e..1eaa034f5f4 100644 ---- a/gcc/testsuite/lib/target-supports.exp -+++ b/gcc/testsuite/lib/target-supports.exp -@@ -10597,7 +10597,7 @@ proc check_effective_target_aarch64_tiny { } { - # various architecture extensions via the .arch_extension pseudo-op. - - foreach { aarch64_ext } { "fp" "simd" "crypto" "crc" "lse" "dotprod" "sve" -- "i8mm" "f32mm" "f64mm" "bf16" "sb" "sve2" } { -+ "i8mm" "f32mm" "f64mm" "bf16" "sb" "sve2" "ls64" } { - eval [string map [list FUNC $aarch64_ext] { - proc check_effective_target_aarch64_asm_FUNC_ok { } { - if { [istarget aarch64*-*-*] } { -@@ -11819,6 +11819,46 @@ proc check_effective_target_o_flag_in_section { } { - }] - } - -+# Return 1 if the given assembler supports hardware transactional memory -+# instructions with machine type Power10, 0 otherwise. Cache the result. -+ -+proc check_effective_target_powerpc_as_p10_htm { } { -+ global tool -+ global GCC_UNDER_TEST -+ -+ # Need auto-host.h to check linker support. -+ if { ![file exists ../../auto-host.h ] } { -+ return 0 -+ } -+ -+ return [check_cached_effective_target powerpc_as_p10_htm { -+ -+ set src pie[pid].c -+ set obj pie[pid].o -+ -+ set f [open $src "w"] -+ puts $f "#include \"../../auto-host.h\"" -+ puts $f "#if HAVE_AS_POWER10_HTM == 0" -+ puts $f "# error Assembler does not support htm insns with power10." -+ puts $f "#endif" -+ close $f -+ -+ verbose "check_effective_target_powerpc_as_p10_htm compiling testfile $src" 2 -+ set lines [${tool}_target_compile $src $obj object ""] -+ -+ file delete $src -+ file delete $obj -+ -+ if [string match "" $lines] then { -+ verbose "check_effective_target_powerpc_as_p10_htm testfile compilation passed" 2 -+ return 1 -+ } else { -+ verbose "check_effective_target_powerpc_as_p10_htm testfile compilation failed" 2 -+ return 0 -+ } -+ }] -+} -+ - # return 1 if LRA is supported. - - proc check_effective_target_lra { } { -diff --git a/gcc/tree-object-size.cc b/gcc/tree-object-size.cc -index 91db1238f50..31a82d6ac6e 100644 ---- a/gcc/tree-object-size.cc -+++ b/gcc/tree-object-size.cc -@@ -771,21 +771,33 @@ alloc_object_size (const gcall *call, int object_size_type) - arg2 = TREE_INT_CST_LOW (TREE_VALUE (TREE_CHAIN (p)))-1; - } - else if (gimple_call_builtin_p (call, BUILT_IN_NORMAL) -- && callfn && ALLOCA_FUNCTION_CODE_P (DECL_FUNCTION_CODE (callfn))) -- arg1 = 0; -+ && callfn -+ && ALLOCA_FUNCTION_CODE_P (DECL_FUNCTION_CODE (callfn))) -+ arg1 = 0; - - /* Non-const arguments are OK here, let the caller handle constness. */ -- if (arg1 < 0 || arg1 >= (int) gimple_call_num_args (call) -- || arg2 >= (int) gimple_call_num_args (call)) -+ if (arg1 < 0 -+ || (unsigned) arg1 >= gimple_call_num_args (call) -+ || (arg2 >= 0 && (unsigned) arg2 >= gimple_call_num_args (call))) - return size_unknown (object_size_type); - -+ tree targ1 = gimple_call_arg (call, arg1); -+ if (!INTEGRAL_TYPE_P (TREE_TYPE (targ1)) -+ || TYPE_PRECISION (TREE_TYPE (targ1)) > TYPE_PRECISION (sizetype)) -+ return size_unknown (object_size_type); -+ targ1 = fold_convert (sizetype, targ1); - tree bytes = NULL_TREE; - if (arg2 >= 0) -- bytes = size_binop (MULT_EXPR, -- fold_convert (sizetype, gimple_call_arg (call, arg1)), -- fold_convert (sizetype, gimple_call_arg (call, arg2))); -- else if (arg1 >= 0) -- bytes = fold_convert (sizetype, gimple_call_arg (call, arg1)); -+ { -+ tree targ2 = gimple_call_arg (call, arg2); -+ if (!INTEGRAL_TYPE_P (TREE_TYPE (targ2)) -+ || TYPE_PRECISION (TREE_TYPE (targ2)) > TYPE_PRECISION (sizetype)) -+ return size_unknown (object_size_type); -+ targ2 = fold_convert (sizetype, targ2); -+ bytes = size_binop (MULT_EXPR, targ1, targ2); -+ } -+ else -+ bytes = targ1; - - return bytes ? bytes : size_unknown (object_size_type); - } -diff --git a/gcc/tree-scalar-evolution.cc b/gcc/tree-scalar-evolution.cc -index 44157265ce8..25d6b346396 100644 ---- a/gcc/tree-scalar-evolution.cc -+++ b/gcc/tree-scalar-evolution.cc -@@ -3282,7 +3282,8 @@ simple_iv_with_niters (class loop *wrto_loop, class loop *use_loop, - - type = TREE_TYPE (iv->base); - e = TREE_OPERAND (iv->base, 0); -- if (TREE_CODE (e) != PLUS_EXPR -+ if (!tree_nop_conversion_p (type, TREE_TYPE (e)) -+ || TREE_CODE (e) != PLUS_EXPR - || TREE_CODE (TREE_OPERAND (e, 1)) != INTEGER_CST - || !tree_int_cst_equal (iv->step, - fold_convert (type, TREE_OPERAND (e, 1)))) -diff --git a/gcc/tree-ssa-ccp.cc b/gcc/tree-ssa-ccp.cc -index 29661884b92..42a02dccaeb 100644 ---- a/gcc/tree-ssa-ccp.cc -+++ b/gcc/tree-ssa-ccp.cc -@@ -1552,6 +1552,8 @@ bit_value_binop (enum tree_code code, signop sgn, int width, - *mask = wi::lrotate (r1mask, shift, width); - *val = wi::lrotate (r1val, shift, width); - } -+ *mask = wi::ext (*mask, width, sgn); -+ *val = wi::ext (*val, width, sgn); - } - } - else if (wi::ltu_p (r2val | r2mask, width) -@@ -1593,8 +1595,8 @@ bit_value_binop (enum tree_code code, signop sgn, int width, - /* Accumulate the result. */ - res_mask |= tmp_mask | (res_val ^ tmp_val); - } -- *val = wi::bit_and_not (res_val, res_mask); -- *mask = res_mask; -+ *val = wi::ext (wi::bit_and_not (res_val, res_mask), width, sgn); -+ *mask = wi::ext (res_mask, width, sgn); - } - break; - -diff --git a/gcc/tree-ssa-loop-im.cc b/gcc/tree-ssa-loop-im.cc -index 162186cc481..831ede23bcf 100644 ---- a/gcc/tree-ssa-loop-im.cc -+++ b/gcc/tree-ssa-loop-im.cc -@@ -1648,11 +1648,21 @@ gather_mem_refs_stmt (class loop *loop, gimple *stmt) - unshare_expr (mem_base)); - if (TYPE_ALIGN (ref_type) != ref_align) - ref_type = build_aligned_type (ref_type, ref_align); -- (*slot)->mem.ref -+ tree new_ref - = fold_build2 (MEM_REF, ref_type, tmp, - build_int_cst (ref_alias_type, mem_off)); - if ((*slot)->mem.volatile_p) -- TREE_THIS_VOLATILE ((*slot)->mem.ref) = 1; -+ TREE_THIS_VOLATILE (new_ref) = 1; -+ (*slot)->mem.ref = new_ref; -+ /* Make sure the recorded base and offset are consistent -+ with the newly built ref. */ -+ if (TREE_CODE (TREE_OPERAND (new_ref, 0)) == ADDR_EXPR) -+ ; -+ else -+ { -+ (*slot)->mem.base = new_ref; -+ (*slot)->mem.offset = 0; -+ } - gcc_checking_assert (TREE_CODE ((*slot)->mem.ref) == MEM_REF - && is_gimple_mem_ref_addr - (TREE_OPERAND ((*slot)->mem.ref, -diff --git a/gcc/tree-ssa-loop-ivcanon.cc b/gcc/tree-ssa-loop-ivcanon.cc -index e2ac2044741..408916c7de0 100644 ---- a/gcc/tree-ssa-loop-ivcanon.cc -+++ b/gcc/tree-ssa-loop-ivcanon.cc -@@ -1487,15 +1487,16 @@ tree_unroll_loops_completely (bool may_increase_size, bool unroll_outer) - } - BITMAP_FREE (fathers); - -+ /* Clean up the information about numbers of iterations, since -+ complete unrolling might have invalidated it. */ -+ scev_reset (); -+ - /* This will take care of removing completely unrolled loops - from the loop structures so we can continue unrolling now - innermost loops. */ - if (cleanup_tree_cfg ()) - update_ssa (TODO_update_ssa_only_virtuals); - -- /* Clean up the information about numbers of iterations, since -- complete unrolling might have invalidated it. */ -- scev_reset (); - if (flag_checking && loops_state_satisfies_p (LOOP_CLOSED_SSA)) - verify_loop_closed_ssa (true); - } -diff --git a/gcc/tree-ssa-loop-ivopts.cc b/gcc/tree-ssa-loop-ivopts.cc -index 59e8df1b5a9..eb4d8388906 100644 ---- a/gcc/tree-ssa-loop-ivopts.cc -+++ b/gcc/tree-ssa-loop-ivopts.cc -@@ -7616,7 +7616,22 @@ rewrite_use_address (struct ivopts_data *data, - true, GSI_SAME_STMT); - } - else -- copy_ref_info (ref, *use->op_p); -+ { -+ /* When we end up confused enough and have no suitable base but -+ stuffed everything to index2 use a LEA for the address and -+ create a plain MEM_REF to avoid basing a memory reference -+ on address zero which create_mem_ref_raw does as fallback. */ -+ if (TREE_CODE (ref) == TARGET_MEM_REF -+ && TMR_INDEX2 (ref) != NULL_TREE -+ && integer_zerop (TREE_OPERAND (ref, 0))) -+ { -+ ref = fold_build1 (ADDR_EXPR, TREE_TYPE (TREE_OPERAND (ref, 0)), ref); -+ ref = force_gimple_operand_gsi (&bsi, ref, true, NULL_TREE, -+ true, GSI_SAME_STMT); -+ ref = build2 (MEM_REF, type, ref, build_zero_cst (alias_ptr_type)); -+ } -+ copy_ref_info (ref, *use->op_p); -+ } - - *use->op_p = ref; - } -diff --git a/gcc/tree-ssa-loop-unswitch.cc b/gcc/tree-ssa-loop-unswitch.cc -index 2927f308234..a9be87c2330 100644 ---- a/gcc/tree-ssa-loop-unswitch.cc -+++ b/gcc/tree-ssa-loop-unswitch.cc -@@ -839,10 +839,7 @@ hoist_guard (class loop *loop, edge guard) - cond_stmt = as_a (stmt); - extract_true_false_edges_from_block (guard_bb, &te, &fe); - /* Insert guard to PRE_HEADER. */ -- if (!empty_block_p (pre_header)) -- gsi = gsi_last_bb (pre_header); -- else -- gsi = gsi_start_bb (pre_header); -+ gsi = gsi_last_bb (pre_header); - /* Create copy of COND_STMT. */ - new_cond_stmt = gimple_build_cond (gimple_cond_code (cond_stmt), - gimple_cond_lhs (cond_stmt), -diff --git a/gcc/tree-ssa-pre.cc b/gcc/tree-ssa-pre.cc -index 98134b5d3ad..e2ceba8819e 100644 ---- a/gcc/tree-ssa-pre.cc -+++ b/gcc/tree-ssa-pre.cc -@@ -4216,6 +4216,7 @@ compute_avail (function *fun) - else - { - ref->set = 0; -+ ref->base_set = 0; - if (ref1->opcode == MEM_REF) - ref1->op0 - = wide_int_to_tree (ptr_type_node, -diff --git a/gcc/tree-ssa-reassoc.cc b/gcc/tree-ssa-reassoc.cc -index e3d521e3267..1863d4e361a 100644 ---- a/gcc/tree-ssa-reassoc.cc -+++ b/gcc/tree-ssa-reassoc.cc -@@ -2101,12 +2101,24 @@ undistribute_bitref_for_vector (enum tree_code opcode, - { - sum = build_and_add_sum (vec_type, sum_vec, - valid_vecs[i + 1], opcode); -+ /* Update the operands only after build_and_add_sum, -+ so that we don't have to repeat the placement algorithm -+ of build_and_add_sum. */ -+ if (sum_vec == tvec -+ && !useless_type_conversion_p (vec_type, TREE_TYPE (sum_vec))) -+ { -+ gimple_stmt_iterator gsi = gsi_for_stmt (sum); -+ tree vce = build1 (VIEW_CONVERT_EXPR, vec_type, sum_vec); -+ tree lhs = make_ssa_name (vec_type); -+ gimple *g = gimple_build_assign (lhs, VIEW_CONVERT_EXPR, vce); -+ gimple_set_uid (g, gimple_uid (sum)); -+ gsi_insert_before (&gsi, g, GSI_NEW_STMT); -+ gimple_assign_set_rhs1 (sum, lhs); -+ update_stmt (sum); -+ } - if (!useless_type_conversion_p (vec_type, - TREE_TYPE (valid_vecs[i + 1]))) - { -- /* Update the operands only after build_and_add_sum, -- so that we don't have to repeat the placement algorithm -- of build_and_add_sum. */ - gimple_stmt_iterator gsi = gsi_for_stmt (sum); - tree vce = build1 (VIEW_CONVERT_EXPR, vec_type, - valid_vecs[i + 1]); -@@ -2115,15 +2127,6 @@ undistribute_bitref_for_vector (enum tree_code opcode, - gimple_set_uid (g, gimple_uid (sum)); - gsi_insert_before (&gsi, g, GSI_NEW_STMT); - gimple_assign_set_rhs2 (sum, lhs); -- if (sum_vec == tvec) -- { -- vce = build1 (VIEW_CONVERT_EXPR, vec_type, sum_vec); -- lhs = make_ssa_name (vec_type); -- g = gimple_build_assign (lhs, VIEW_CONVERT_EXPR, vce); -- gimple_set_uid (g, gimple_uid (sum)); -- gsi_insert_before (&gsi, g, GSI_NEW_STMT); -- gimple_assign_set_rhs1 (sum, lhs); -- } - update_stmt (sum); - } - sum_vec = gimple_get_lhs (sum); -diff --git a/gcc/tree-ssa-strlen.cc b/gcc/tree-ssa-strlen.cc -index cb7ccb41d73..c6415c52060 100644 ---- a/gcc/tree-ssa-strlen.cc -+++ b/gcc/tree-ssa-strlen.cc -@@ -3361,7 +3361,8 @@ strlen_pass::handle_builtin_memcpy (built_in_function bcode) - && !integer_zerop (len)) - { - maybe_warn_overflow (stmt, false, len, olddsi, false, true); -- adjust_last_stmt (olddsi, stmt, false); -+ if (tree_fits_uhwi_p (len)) -+ adjust_last_stmt (olddsi, stmt, false); - } - - int idx = get_stridx (src, stmt); -diff --git a/gcc/tree-ssa-structalias.cc b/gcc/tree-ssa-structalias.cc -index 581bdcf5652..d6e664c5727 100644 ---- a/gcc/tree-ssa-structalias.cc -+++ b/gcc/tree-ssa-structalias.cc -@@ -1581,64 +1581,6 @@ unify_nodes (constraint_graph_t graph, unsigned int to, unsigned int from, - bitmap_clear_bit (graph->succs[to], to); - } - --/* Information needed to compute the topological ordering of a graph. */ -- --struct topo_info --{ -- /* sbitmap of visited nodes. */ -- sbitmap visited; -- /* Array that stores the topological order of the graph, *in -- reverse*. */ -- vec topo_order; --}; -- -- --/* Initialize and return a topological info structure. */ -- --static struct topo_info * --init_topo_info (void) --{ -- size_t size = graph->size; -- struct topo_info *ti = XNEW (struct topo_info); -- ti->visited = sbitmap_alloc (size); -- bitmap_clear (ti->visited); -- ti->topo_order.create (1); -- return ti; --} -- -- --/* Free the topological sort info pointed to by TI. */ -- --static void --free_topo_info (struct topo_info *ti) --{ -- sbitmap_free (ti->visited); -- ti->topo_order.release (); -- free (ti); --} -- --/* Visit the graph in topological order, and store the order in the -- topo_info structure. */ -- --static void --topo_visit (constraint_graph_t graph, struct topo_info *ti, -- unsigned int n) --{ -- bitmap_iterator bi; -- unsigned int j; -- -- bitmap_set_bit (ti->visited, n); -- -- if (graph->succs[n]) -- EXECUTE_IF_SET_IN_BITMAP (graph->succs[n], 0, j, bi) -- { -- if (!bitmap_bit_p (ti->visited, j)) -- topo_visit (graph, ti, j); -- } -- -- ti->topo_order.safe_push (n); --} -- - /* Process a constraint C that represents x = *(y + off), using DELTA as the - starting solution for y. */ - -@@ -1913,19 +1855,56 @@ find_indirect_cycles (constraint_graph_t graph) - scc_visit (graph, &si, i); - } - --/* Compute a topological ordering for GRAPH, and store the result in the -- topo_info structure TI. */ -+/* Visit the graph in topological order starting at node N, and store the -+ order in TOPO_ORDER using VISITED to indicate visited nodes. */ - - static void --compute_topo_order (constraint_graph_t graph, -- struct topo_info *ti) -+topo_visit (constraint_graph_t graph, vec &topo_order, -+ sbitmap visited, unsigned int n) -+{ -+ bitmap_iterator bi; -+ unsigned int j; -+ -+ bitmap_set_bit (visited, n); -+ -+ if (graph->succs[n]) -+ EXECUTE_IF_SET_IN_BITMAP (graph->succs[n], 0, j, bi) -+ { -+ unsigned k = find (j); -+ if (!bitmap_bit_p (visited, k)) -+ topo_visit (graph, topo_order, visited, k); -+ } -+ -+ topo_order.quick_push (n); -+} -+ -+/* Compute a topological ordering for GRAPH, and return the result. */ -+ -+static auto_vec -+compute_topo_order (constraint_graph_t graph) - { - unsigned int i; - unsigned int size = graph->size; - -+ auto_sbitmap visited (size); -+ bitmap_clear (visited); -+ -+ /* For the heuristic in add_graph_edge to work optimally make sure to -+ first visit the connected component of the graph containing -+ ESCAPED. Do this by extracting the connected component -+ with ESCAPED and append that to all other components as solve_graph -+ pops from the order. */ -+ auto_vec tail (size); -+ topo_visit (graph, tail, visited, find (escaped_id)); -+ -+ auto_vec topo_order (size); -+ - for (i = 0; i != size; ++i) -- if (!bitmap_bit_p (ti->visited, i) && find (i) == i) -- topo_visit (graph, ti, i); -+ if (!bitmap_bit_p (visited, i) && find (i) == i) -+ topo_visit (graph, topo_order, visited, i); -+ -+ topo_order.splice (tail); -+ return topo_order; - } - - /* Structure used to for hash value numbering of pointer equivalence -@@ -2753,17 +2732,14 @@ solve_graph (constraint_graph_t graph) - while (!bitmap_empty_p (changed)) - { - unsigned int i; -- struct topo_info *ti = init_topo_info (); - stats.iterations++; - - bitmap_obstack_initialize (&iteration_obstack); - -- compute_topo_order (graph, ti); -- -- while (ti->topo_order.length () != 0) -+ auto_vec topo_order = compute_topo_order (graph); -+ while (topo_order.length () != 0) - { -- -- i = ti->topo_order.pop (); -+ i = topo_order.pop (); - - /* If this variable is not a representative, skip it. */ - if (find (i) != i) -@@ -2888,7 +2864,6 @@ solve_graph (constraint_graph_t graph) - } - } - } -- free_topo_info (ti); - bitmap_obstack_release (&iteration_obstack); - } - -diff --git a/gcc/tree-ssa-tail-merge.cc b/gcc/tree-ssa-tail-merge.cc -index 9721fdade61..72fe0e2d4ed 100644 ---- a/gcc/tree-ssa-tail-merge.cc -+++ b/gcc/tree-ssa-tail-merge.cc -@@ -1165,6 +1165,9 @@ gimple_equal_p (same_succ *same_succ, gimple *s1, gimple *s2) - return operand_equal_p (lhs1, lhs2, 0); - - case GIMPLE_ASSIGN: -+ if (gimple_assign_rhs_code (s1) != gimple_assign_rhs_code (s2)) -+ return false; -+ - lhs1 = gimple_get_lhs (s1); - lhs2 = gimple_get_lhs (s2); - if (TREE_CODE (lhs1) != SSA_NAME -@@ -1172,11 +1175,20 @@ gimple_equal_p (same_succ *same_succ, gimple *s1, gimple *s2) - return (operand_equal_p (lhs1, lhs2, 0) - && gimple_operand_equal_value_p (gimple_assign_rhs1 (s1), - gimple_assign_rhs1 (s2))); -- else if (TREE_CODE (lhs1) == SSA_NAME -- && TREE_CODE (lhs2) == SSA_NAME) -- return operand_equal_p (gimple_assign_rhs1 (s1), -- gimple_assign_rhs1 (s2), 0); -- return false; -+ -+ if (TREE_CODE (lhs1) != SSA_NAME -+ || TREE_CODE (lhs2) != SSA_NAME) -+ return false; -+ -+ gcc_checking_assert (gimple_num_args (s1) == gimple_num_args (s2)); -+ for (i = 0; i < gimple_num_args (s1); ++i) -+ { -+ t1 = gimple_arg (s1, i); -+ t2 = gimple_arg (s2, i); -+ if (!gimple_operand_equal_value_p (t1, t2)) -+ return false; -+ } -+ return true; - - case GIMPLE_COND: - t1 = gimple_cond_lhs (s1); -diff --git a/gcc/tree-ssa.cc b/gcc/tree-ssa.cc -index d36d2273f9d..491a5fa9565 100644 ---- a/gcc/tree-ssa.cc -+++ b/gcc/tree-ssa.cc -@@ -1790,15 +1790,20 @@ maybe_optimize_var (tree var, bitmap addresses_taken, bitmap not_reg_needs, - maybe_reg = true; - DECL_NOT_GIMPLE_REG_P (var) = 0; - } -- if (maybe_reg && is_gimple_reg (var)) -+ if (maybe_reg) - { -- if (dump_file) -+ if (is_gimple_reg (var)) - { -- fprintf (dump_file, "Now a gimple register: "); -- print_generic_expr (dump_file, var); -- fprintf (dump_file, "\n"); -+ if (dump_file) -+ { -+ fprintf (dump_file, "Now a gimple register: "); -+ print_generic_expr (dump_file, var); -+ fprintf (dump_file, "\n"); -+ } -+ bitmap_set_bit (suitable_for_renaming, DECL_UID (var)); - } -- bitmap_set_bit (suitable_for_renaming, DECL_UID (var)); -+ else -+ DECL_NOT_GIMPLE_REG_P (var) = 1; - } - } - } -diff --git a/gcc/tree-vect-data-refs.cc b/gcc/tree-vect-data-refs.cc -index 4e615b80b3a..b47d0122aec 100644 ---- a/gcc/tree-vect-data-refs.cc -+++ b/gcc/tree-vect-data-refs.cc -@@ -672,158 +672,166 @@ vect_slp_analyze_data_ref_dependence (vec_info *vinfo, - } - - --/* Analyze dependences involved in the transform of SLP NODE. STORES -- contain the vector of scalar stores of this instance if we are -- disambiguating the loads. */ -+/* Analyze dependences involved in the transform of a store SLP NODE. */ - - static bool --vect_slp_analyze_node_dependences (vec_info *vinfo, slp_tree node, -- vec stores, -- stmt_vec_info last_store_info) -+vect_slp_analyze_store_dependences (vec_info *vinfo, slp_tree node) - { -- /* This walks over all stmts involved in the SLP load/store done -+ /* This walks over all stmts involved in the SLP store done - in NODE verifying we can sink them up to the last stmt in the - group. */ -- if (DR_IS_WRITE (STMT_VINFO_DATA_REF (SLP_TREE_REPRESENTATIVE (node)))) -+ stmt_vec_info last_access_info = vect_find_last_scalar_stmt_in_slp (node); -+ gcc_assert (DR_IS_WRITE (STMT_VINFO_DATA_REF (last_access_info))); -+ -+ for (unsigned k = 0; k < SLP_TREE_SCALAR_STMTS (node).length (); ++k) - { -- stmt_vec_info last_access_info = vect_find_last_scalar_stmt_in_slp (node); -- for (unsigned k = 0; k < SLP_TREE_SCALAR_STMTS (node).length (); ++k) -+ stmt_vec_info access_info -+ = vect_orig_stmt (SLP_TREE_SCALAR_STMTS (node)[k]); -+ if (access_info == last_access_info) -+ continue; -+ data_reference *dr_a = STMT_VINFO_DATA_REF (access_info); -+ ao_ref ref; -+ bool ref_initialized_p = false; -+ for (gimple_stmt_iterator gsi = gsi_for_stmt (access_info->stmt); -+ gsi_stmt (gsi) != last_access_info->stmt; gsi_next (&gsi)) - { -- stmt_vec_info access_info -- = vect_orig_stmt (SLP_TREE_SCALAR_STMTS (node)[k]); -- if (access_info == last_access_info) -+ gimple *stmt = gsi_stmt (gsi); -+ if (! gimple_vuse (stmt)) - continue; -- data_reference *dr_a = STMT_VINFO_DATA_REF (access_info); -- ao_ref ref; -- bool ref_initialized_p = false; -- for (gimple_stmt_iterator gsi = gsi_for_stmt (access_info->stmt); -- gsi_stmt (gsi) != last_access_info->stmt; gsi_next (&gsi)) -- { -- gimple *stmt = gsi_stmt (gsi); -- if (! gimple_vuse (stmt)) -- continue; - -- /* If we couldn't record a (single) data reference for this -- stmt we have to resort to the alias oracle. */ -- stmt_vec_info stmt_info = vinfo->lookup_stmt (stmt); -- data_reference *dr_b = STMT_VINFO_DATA_REF (stmt_info); -- if (!dr_b) -- { -- /* We are moving a store - this means -- we cannot use TBAA for disambiguation. */ -- if (!ref_initialized_p) -- ao_ref_init (&ref, DR_REF (dr_a)); -- if (stmt_may_clobber_ref_p_1 (stmt, &ref, false) -- || ref_maybe_used_by_stmt_p (stmt, &ref, false)) -- return false; -- continue; -- } -- -- bool dependent = false; -- /* If we run into a store of this same instance (we've just -- marked those) then delay dependence checking until we run -- into the last store because this is where it will have -- been sunk to (and we verify if we can do that as well). */ -- if (gimple_visited_p (stmt)) -- { -- if (stmt_info != last_store_info) -- continue; -- -- for (stmt_vec_info &store_info : stores) -- { -- data_reference *store_dr -- = STMT_VINFO_DATA_REF (store_info); -- ddr_p ddr = initialize_data_dependence_relation -- (dr_a, store_dr, vNULL); -- dependent -- = vect_slp_analyze_data_ref_dependence (vinfo, ddr); -- free_dependence_relation (ddr); -- if (dependent) -- break; -- } -- } -- else -- { -- ddr_p ddr = initialize_data_dependence_relation (dr_a, -- dr_b, vNULL); -- dependent = vect_slp_analyze_data_ref_dependence (vinfo, ddr); -- free_dependence_relation (ddr); -- } -- if (dependent) -+ /* If we couldn't record a (single) data reference for this -+ stmt we have to resort to the alias oracle. */ -+ stmt_vec_info stmt_info = vinfo->lookup_stmt (stmt); -+ data_reference *dr_b = STMT_VINFO_DATA_REF (stmt_info); -+ if (!dr_b) -+ { -+ /* We are moving a store - this means -+ we cannot use TBAA for disambiguation. */ -+ if (!ref_initialized_p) -+ ao_ref_init (&ref, DR_REF (dr_a)); -+ if (stmt_may_clobber_ref_p_1 (stmt, &ref, false) -+ || ref_maybe_used_by_stmt_p (stmt, &ref, false)) - return false; -+ continue; - } -+ -+ gcc_assert (!gimple_visited_p (stmt)); -+ -+ ddr_p ddr = initialize_data_dependence_relation (dr_a, -+ dr_b, vNULL); -+ bool dependent = vect_slp_analyze_data_ref_dependence (vinfo, ddr); -+ free_dependence_relation (ddr); -+ if (dependent) -+ return false; - } - } -- else /* DR_IS_READ */ -+ return true; -+} -+ -+/* Analyze dependences involved in the transform of a load SLP NODE. STORES -+ contain the vector of scalar stores of this instance if we are -+ disambiguating the loads. */ -+ -+static bool -+vect_slp_analyze_load_dependences (vec_info *vinfo, slp_tree node, -+ vec stores, -+ stmt_vec_info last_store_info) -+{ -+ /* This walks over all stmts involved in the SLP load done -+ in NODE verifying we can hoist them up to the first stmt in the -+ group. */ -+ stmt_vec_info first_access_info = vect_find_first_scalar_stmt_in_slp (node); -+ gcc_assert (DR_IS_READ (STMT_VINFO_DATA_REF (first_access_info))); -+ -+ for (unsigned k = 0; k < SLP_TREE_SCALAR_STMTS (node).length (); ++k) - { -- stmt_vec_info first_access_info -- = vect_find_first_scalar_stmt_in_slp (node); -- for (unsigned k = 0; k < SLP_TREE_SCALAR_STMTS (node).length (); ++k) -+ stmt_vec_info access_info -+ = vect_orig_stmt (SLP_TREE_SCALAR_STMTS (node)[k]); -+ if (access_info == first_access_info) -+ continue; -+ data_reference *dr_a = STMT_VINFO_DATA_REF (access_info); -+ ao_ref ref; -+ bool ref_initialized_p = false; -+ hash_set grp_visited; -+ for (gimple_stmt_iterator gsi = gsi_for_stmt (access_info->stmt); -+ gsi_stmt (gsi) != first_access_info->stmt; gsi_prev (&gsi)) - { -- stmt_vec_info access_info -- = vect_orig_stmt (SLP_TREE_SCALAR_STMTS (node)[k]); -- if (access_info == first_access_info) -+ gimple *stmt = gsi_stmt (gsi); -+ if (! gimple_vdef (stmt)) - continue; -- data_reference *dr_a = STMT_VINFO_DATA_REF (access_info); -- ao_ref ref; -- bool ref_initialized_p = false; -- for (gimple_stmt_iterator gsi = gsi_for_stmt (access_info->stmt); -- gsi_stmt (gsi) != first_access_info->stmt; gsi_prev (&gsi)) -+ -+ stmt_vec_info stmt_info = vinfo->lookup_stmt (stmt); -+ -+ /* If we run into a store of this same instance (we've just -+ marked those) then delay dependence checking until we run -+ into the last store because this is where it will have -+ been sunk to (and we verified that we can do that already). */ -+ if (gimple_visited_p (stmt)) - { -- gimple *stmt = gsi_stmt (gsi); -- if (! gimple_vdef (stmt)) -+ if (stmt_info != last_store_info) - continue; - -- /* If we couldn't record a (single) data reference for this -- stmt we have to resort to the alias oracle. */ -- stmt_vec_info stmt_info = vinfo->lookup_stmt (stmt); -- data_reference *dr_b = STMT_VINFO_DATA_REF (stmt_info); -+ for (stmt_vec_info &store_info : stores) -+ { -+ data_reference *store_dr = STMT_VINFO_DATA_REF (store_info); -+ ddr_p ddr = initialize_data_dependence_relation -+ (dr_a, store_dr, vNULL); -+ bool dependent -+ = vect_slp_analyze_data_ref_dependence (vinfo, ddr); -+ free_dependence_relation (ddr); -+ if (dependent) -+ return false; -+ } -+ continue; -+ } - -- /* We are hoisting a load - this means we can use -- TBAA for disambiguation. */ -+ auto check_hoist = [&] (stmt_vec_info stmt_info) -> bool -+ { -+ /* We are hoisting a load - this means we can use TBAA for -+ disambiguation. */ - if (!ref_initialized_p) - ao_ref_init (&ref, DR_REF (dr_a)); -- if (stmt_may_clobber_ref_p_1 (stmt, &ref, true)) -+ if (stmt_may_clobber_ref_p_1 (stmt_info->stmt, &ref, true)) - { -+ /* If we couldn't record a (single) data reference for this -+ stmt we have to give up now. */ -+ data_reference *dr_b = STMT_VINFO_DATA_REF (stmt_info); - if (!dr_b) - return false; -- /* Resort to dependence checking below. */ -- } -- else -- /* No dependence. */ -- continue; -- -- bool dependent = false; -- /* If we run into a store of this same instance (we've just -- marked those) then delay dependence checking until we run -- into the last store because this is where it will have -- been sunk to (and we verify if we can do that as well). */ -- if (gimple_visited_p (stmt)) -- { -- if (stmt_info != last_store_info) -- continue; -- -- for (stmt_vec_info &store_info : stores) -- { -- data_reference *store_dr -- = STMT_VINFO_DATA_REF (store_info); -- ddr_p ddr = initialize_data_dependence_relation -- (dr_a, store_dr, vNULL); -- dependent -- = vect_slp_analyze_data_ref_dependence (vinfo, ddr); -- free_dependence_relation (ddr); -- if (dependent) -- break; -- } -- } -- else -- { - ddr_p ddr = initialize_data_dependence_relation (dr_a, - dr_b, vNULL); -- dependent = vect_slp_analyze_data_ref_dependence (vinfo, ddr); -+ bool dependent -+ = vect_slp_analyze_data_ref_dependence (vinfo, ddr); - free_dependence_relation (ddr); -+ if (dependent) -+ return false; - } -- if (dependent) -+ /* No dependence. */ -+ return true; -+ }; -+ if (STMT_VINFO_GROUPED_ACCESS (stmt_info)) -+ { -+ /* When we run into a store group we have to honor -+ that earlier stores might be moved here. We don't -+ know exactly which and where to since we lack a -+ back-mapping from DR to SLP node, so assume all -+ earlier stores are sunk here. It's enough to -+ consider the last stmt of a group for this. -+ ??? Both this and the fact that we disregard that -+ the conflicting instance might be removed later -+ is overly conservative. */ -+ if (!grp_visited.add (DR_GROUP_FIRST_ELEMENT (stmt_info))) -+ for (auto store_info = DR_GROUP_FIRST_ELEMENT (stmt_info); -+ store_info != NULL; -+ store_info = DR_GROUP_NEXT_ELEMENT (store_info)) -+ if ((store_info == stmt_info -+ || get_later_stmt (store_info, stmt_info) == stmt_info) -+ && !check_hoist (store_info)) -+ return false; -+ } -+ else -+ { -+ if (!check_hoist (stmt_info)) - return false; - } - } -@@ -852,7 +860,7 @@ vect_slp_analyze_instance_dependence (vec_info *vinfo, slp_instance instance) - stmt_vec_info last_store_info = NULL; - if (store) - { -- if (! vect_slp_analyze_node_dependences (vinfo, store, vNULL, NULL)) -+ if (! vect_slp_analyze_store_dependences (vinfo, store)) - return false; - - /* Mark stores in this instance and remember the last one. */ -@@ -866,7 +874,7 @@ vect_slp_analyze_instance_dependence (vec_info *vinfo, slp_instance instance) - /* Verify we can sink loads to the vectorized stmt insert location, - special-casing stores of this instance. */ - for (slp_tree &load : SLP_INSTANCE_LOADS (instance)) -- if (! vect_slp_analyze_node_dependences (vinfo, load, -+ if (! vect_slp_analyze_load_dependences (vinfo, load, - store - ? SLP_TREE_SCALAR_STMTS (store) - : vNULL, last_store_info)) -diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc -index 3435f9378da..e1681047d9d 100644 ---- a/gcc/tree-vect-loop.cc -+++ b/gcc/tree-vect-loop.cc -@@ -2874,7 +2874,7 @@ vect_analyze_loop_1 (class loop *loop, vec_info_shared *shared, - res ? "succeeded" : " failed", - GET_MODE_NAME (loop_vinfo->vector_mode)); - -- if (!main_loop_vinfo && suggested_unroll_factor > 1) -+ if (res && !main_loop_vinfo && suggested_unroll_factor > 1) - { - if (dump_enabled_p ()) - dump_printf_loc (MSG_NOTE, vect_location, -@@ -3513,24 +3513,15 @@ pop: - ??? We could relax this and handle arbitrary live stmts by - forcing a scalar epilogue for example. */ - imm_use_iterator imm_iter; -+ use_operand_p use_p; - gimple *op_use_stmt; - unsigned cnt = 0; - FOR_EACH_IMM_USE_STMT (op_use_stmt, imm_iter, op.ops[opi]) - if (!is_gimple_debug (op_use_stmt) - && (*code != ERROR_MARK - || flow_bb_inside_loop_p (loop, gimple_bb (op_use_stmt)))) -- { -- /* We want to allow x + x but not x < 1 ? x : 2. */ -- if (is_gimple_assign (op_use_stmt) -- && gimple_assign_rhs_code (op_use_stmt) == COND_EXPR) -- { -- use_operand_p use_p; -- FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter) -- cnt++; -- } -- else -- cnt++; -- } -+ FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter) -+ cnt++; - if (cnt != 1) - { - fail = true; -diff --git a/gcc/wide-int.cc b/gcc/wide-int.cc -index 1fee0788554..6fb66e4721b 100644 ---- a/gcc/wide-int.cc -+++ b/gcc/wide-int.cc -@@ -1888,9 +1888,9 @@ wi::divmod_internal (HOST_WIDE_INT *quotient, unsigned int *remainder_len, - } - - wi_unpack (b_dividend, dividend.get_val (), dividend.get_len (), -- dividend_blocks_needed, dividend_prec, sgn); -+ dividend_blocks_needed, dividend_prec, UNSIGNED); - wi_unpack (b_divisor, divisor.get_val (), divisor.get_len (), -- divisor_blocks_needed, divisor_prec, sgn); -+ divisor_blocks_needed, divisor_prec, UNSIGNED); - - m = dividend_blocks_needed; - b_dividend[m] = 0; -diff --git a/gcc/wide-int.h b/gcc/wide-int.h -index bd0d9a2d4d5..93f293ce841 100644 ---- a/gcc/wide-int.h -+++ b/gcc/wide-int.h -@@ -3169,9 +3169,11 @@ wi::lrotate (const T1 &x, const T2 &y, unsigned int width) - width = precision; - WI_UNARY_RESULT (T2) ymod = umod_trunc (y, width); - WI_UNARY_RESULT (T1) left = wi::lshift (x, ymod); -- WI_UNARY_RESULT (T1) right = wi::lrshift (x, wi::sub (width, ymod)); -+ WI_UNARY_RESULT (T1) right -+ = wi::lrshift (width != precision ? wi::zext (x, width) : x, -+ wi::sub (width, ymod)); - if (width != precision) -- return wi::zext (left, width) | wi::zext (right, width); -+ return wi::zext (left, width) | right; - return left | right; - } - -@@ -3186,10 +3188,11 @@ wi::rrotate (const T1 &x, const T2 &y, unsigned int width) - if (width == 0) - width = precision; - WI_UNARY_RESULT (T2) ymod = umod_trunc (y, width); -- WI_UNARY_RESULT (T1) right = wi::lrshift (x, ymod); -+ WI_UNARY_RESULT (T1) right -+ = wi::lrshift (width != precision ? wi::zext (x, width) : x, ymod); - WI_UNARY_RESULT (T1) left = wi::lshift (x, wi::sub (width, ymod)); - if (width != precision) -- return wi::zext (left, width) | wi::zext (right, width); -+ return wi::zext (left, width) | right; - return left | right; - } - -diff --git a/libffi/ChangeLog b/libffi/ChangeLog -index f9668c45954..3e2b500db22 100644 ---- a/libffi/ChangeLog -+++ b/libffi/ChangeLog -@@ -1,3 +1,11 @@ -+2023-05-09 Dan Horák -+ -+ Backported from master: -+ 2023-05-06 Dan Horák -+ -+ PR libffi/109447 -+ * src/powerpc/ffi_linux64.c (ffi_prep_args64): Update arg.f128 pointer. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/libffi/src/powerpc/ffi_linux64.c b/libffi/src/powerpc/ffi_linux64.c -index 4d50878e402..3454dacd3d6 100644 ---- a/libffi/src/powerpc/ffi_linux64.c -+++ b/libffi/src/powerpc/ffi_linux64.c -@@ -680,7 +680,7 @@ ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack) - { - if (vecarg_count < NUM_VEC_ARG_REGISTERS64 - && i < nfixedargs) -- memcpy (vec_base.f128++, arg.f128, sizeof (float128)); -+ memcpy (vec_base.f128++, arg.f128++, sizeof (float128)); - else - memcpy (next_arg.f128, arg.f128++, sizeof (float128)); - if (++next_arg.f128 == gpr_end.f128) -diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog -index 673c62f12dc..a45d5185770 100644 ---- a/libgcc/ChangeLog -+++ b/libgcc/ChangeLog -@@ -1,3 +1,19 @@ -+2023-05-21 Iain Sandoe -+ -+ Backported from master: -+ 2023-05-19 Iain Sandoe -+ -+ * config.host: Arrange to set min Darwin OS versions from -+ the configured host version. -+ * config/darwin10-unwind-find-enc-func.c: Do not use current -+ headers, but declare the nexessary structures locally to the -+ versions in use for Mac OSX 10.6. -+ * config/t-darwin: Amend to handle configured min OS -+ versions. -+ * config/t-darwin-min-1: New. -+ * config/t-darwin-min-5: New. -+ * config/t-darwin-min-8: New. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/libgcc/config.host b/libgcc/config.host -index 8c56fcae5d2..89e3dbc7c8a 100644 ---- a/libgcc/config.host -+++ b/libgcc/config.host -@@ -241,6 +241,24 @@ case ${host} in - ;; - esac - tmake_file="$tmake_file t-slibgcc-darwin" -+ # newer toolsets produce warnings when building for unsupported versions. -+ case ${host} in -+ *-*-darwin1[89]* | *-*-darwin2* ) -+ tmake_file="t-darwin-min-8 $tmake_file" -+ ;; -+ *-*-darwin9* | *-*-darwin1[0-7]*) -+ tmake_file="t-darwin-min-5 $tmake_file" -+ ;; -+ *-*-darwin[4-8]*) -+ tmake_file="t-darwin-min-1 $tmake_file" -+ ;; -+ *) -+ # Fall back to configuring for the oldest system known to work with -+ # all archs and the current sources. -+ tmake_file="t-darwin-min-5 $tmake_file" -+ echo "Warning: libgcc configured to support macOS 10.5" 1>&2 -+ ;; -+ esac - extra_parts="crt3.o libd10-uwfef.a crttms.o crttme.o libemutls_w.a" - ;; - *-*-dragonfly*) -diff --git a/libgcc/config/darwin10-unwind-find-enc-func.c b/libgcc/config/darwin10-unwind-find-enc-func.c -index 882ec3a2372..b08396c5f1b 100644 ---- a/libgcc/config/darwin10-unwind-find-enc-func.c -+++ b/libgcc/config/darwin10-unwind-find-enc-func.c -@@ -1,8 +1,34 @@ --#include "tconfig.h" --#include "tsystem.h" --#include "unwind-dw2-fde.h" - #include "libgcc_tm.h" - -+/* This shim is special, it needs to be built for Mac OSX 10.6 -+ regardless of the current system version. -+ We must also build it to use the unwinder layout that was -+ present for 10.6 (and not update that). -+ So we copy the referenced structures from unwind-dw2-fde.h -+ to avoid pulling in newer system headers and/or changed -+ layouts. */ -+struct dwarf_eh_bases -+{ -+ void *tbase; -+ void *dbase; -+ void *func; -+}; -+ -+typedef int sword __attribute__ ((mode (SI))); -+typedef unsigned int uword __attribute__ ((mode (SI))); -+ -+/* The first few fields of an FDE. */ -+struct dwarf_fde -+{ -+ uword length; -+ sword CIE_delta; -+ unsigned char pc_begin[]; -+} __attribute__ ((packed, aligned (__alignof__ (void *)))); -+ -+typedef struct dwarf_fde fde; -+ -+extern const fde * _Unwind_Find_FDE (void *, struct dwarf_eh_bases *); -+ - void * - _darwin10_Unwind_FindEnclosingFunction (void *pc) - { -@@ -10,5 +36,5 @@ _darwin10_Unwind_FindEnclosingFunction (void *pc) - const struct dwarf_fde *fde = _Unwind_Find_FDE (pc-1, &bases); - if (fde) - return bases.func; -- return NULL; -+ return (void *) 0; - } -diff --git a/libgcc/config/t-darwin b/libgcc/config/t-darwin -index 299d26c2c96..a3bb70c6a0a 100644 ---- a/libgcc/config/t-darwin -+++ b/libgcc/config/t-darwin -@@ -1,15 +1,15 @@ - # Set this as a minimum (unless overriden by arch t-files) since it's a - # reasonable lowest common denominator that works for all our archs. --HOST_LIBGCC2_CFLAGS += -mmacosx-version-min=10.4 -+HOST_LIBGCC2_CFLAGS += $(DARWIN_MIN_LIB_VERSION) - - crt3.o: $(srcdir)/config/darwin-crt3.c -- $(crt_compile) -mmacosx-version-min=10.4 -c $< -+ $(crt_compile) $(DARWIN_MIN_CRT_VERSION) -c $< - - crttms.o: $(srcdir)/config/darwin-crt-tm.c -- $(crt_compile) -mmacosx-version-min=10.4 -DSTART -c $< -+ $(crt_compile) $(DARWIN_MIN_CRT_VERSION) -DSTART -c $< - - crttme.o: $(srcdir)/config/darwin-crt-tm.c -- $(crt_compile) -mmacosx-version-min=10.4 -DEND -c $< -+ $(crt_compile) $(DARWIN_MIN_CRT_VERSION) -DEND -c $< - - # Make emutls weak so that we can deal with -static-libgcc, override the - # hidden visibility when this is present in libgcc_eh. -@@ -25,6 +25,8 @@ libemutls_w.a: emutls_s.o - $(RANLIB_FOR_TARGET) $@ - - # Patch to __Unwind_Find_Enclosing_Function for Darwin10. -+# This needs to be built for darwin10, regardless of the current platform -+# version. - d10-uwfef.o: $(srcdir)/config/darwin10-unwind-find-enc-func.c libgcc_tm.h - $(crt_compile) -mmacosx-version-min=10.6 -c $< - -diff --git a/libgcc/config/t-darwin-min-1 b/libgcc/config/t-darwin-min-1 -new file mode 100644 -index 00000000000..8c2cf8acd39 ---- /dev/null -+++ b/libgcc/config/t-darwin-min-1 -@@ -0,0 +1,3 @@ -+# Support building with -mmacosx-version-min back to 10.1. -+DARWIN_MIN_LIB_VERSION = -mmacosx-version-min=10.4 -+DARWIN_MIN_CRT_VERSION = -mmacosx-version-min=10.1 -diff --git a/libgcc/config/t-darwin-min-5 b/libgcc/config/t-darwin-min-5 -new file mode 100644 -index 00000000000..138193151e7 ---- /dev/null -+++ b/libgcc/config/t-darwin-min-5 -@@ -0,0 +1,3 @@ -+# Support building with -mmacosx-version-min back to 10.5. -+DARWIN_MIN_LIB_VERSION = -mmacosx-version-min=10.5 -+DARWIN_MIN_CRT_VERSION = -mmacosx-version-min=10.5 -diff --git a/libgcc/config/t-darwin-min-8 b/libgcc/config/t-darwin-min-8 -new file mode 100644 -index 00000000000..9efc9dc0257 ---- /dev/null -+++ b/libgcc/config/t-darwin-min-8 -@@ -0,0 +1,3 @@ -+# Support building with -mmacosx-version-min back to 10.8. -+DARWIN_MIN_LIB_VERSION = -mmacosx-version-min=10.8 -+DARWIN_MIN_CRT_VERSION = -mmacosx-version-min=10.8 -diff --git a/libgo/Makefile.am b/libgo/Makefile.am -index b03e6553e90..c273d94d111 100644 ---- a/libgo/Makefile.am -+++ b/libgo/Makefile.am -@@ -417,6 +417,7 @@ toolexeclibgounicode_DATA = \ - # Some internal packages are needed to bootstrap the gc toolchain. - toolexeclibgointernaldir = $(toolexeclibgodir)/internal - toolexeclibgointernal_DATA = \ -+ internal/lazyregexp.gox \ - internal/reflectlite.gox \ - internal/unsafeheader.gox - -diff --git a/libgo/Makefile.in b/libgo/Makefile.in -index 16ed62a82ed..04fdb60d497 100644 ---- a/libgo/Makefile.in -+++ b/libgo/Makefile.in -@@ -885,6 +885,7 @@ toolexeclibgounicode_DATA = \ - # Some internal packages are needed to bootstrap the gc toolchain. - toolexeclibgointernaldir = $(toolexeclibgodir)/internal - toolexeclibgointernal_DATA = \ -+ internal/lazyregexp.gox \ - internal/reflectlite.gox \ - internal/unsafeheader.gox - -diff --git a/libgo/go/internal/abi/abi.go b/libgo/go/internal/abi/abi.go -index c4a108847ca..66251274d97 100644 ---- a/libgo/go/internal/abi/abi.go -+++ b/libgo/go/internal/abi/abi.go -@@ -17,10 +17,7 @@ package abi - // compile-time error. - // - // Implemented as a compile intrinsic. --func FuncPCABI0(f any) uintptr { -- // The compiler should remove all calls. -- panic("FuncPCABI0") --} -+func FuncPCABI0(f any) uintptr - - // FuncPCABIInternal returns the entry PC of the function f. If f is a - // direct reference of a function, it must be defined as ABIInternal. -@@ -29,7 +26,4 @@ func FuncPCABI0(f any) uintptr { - // the behavior is undefined. - // - // Implemented as a compile intrinsic. --func FuncPCABIInternal(f any) uintptr { -- // The compiler should remove all calls. -- panic("FuncPCABIInternal") --} -+func FuncPCABIInternal(f any) uintptr -diff --git a/libgo/go/syscall/libcall_linux.go b/libgo/go/syscall/libcall_linux.go -index 96974bd3269..a39f408151a 100644 ---- a/libgo/go/syscall/libcall_linux.go -+++ b/libgo/go/syscall/libcall_linux.go -@@ -188,6 +188,14 @@ func Gettid() (tid int) { - //sys PivotRoot(newroot string, putold string) (err error) - //pivot_root(newroot *byte, putold *byte) _C_int - -+// Used by golang.org/x/sys/unix. -+//sys prlimit(pid int, resource int, newlimit *Rlimit, oldlimit *Rlimit) (err error) -+//prlimit(pid Pid_t, resource _C_int, newlimit *Rlimit, oldlimit *Rlimit) _C_int -+ -+func Prlimit(pid int, resource int, newlimit *Rlimit, oldlimit *Rlimit) error { -+ return prlimit(pid, resource, newlimit, oldlimit) -+} -+ - //sys Removexattr(path string, attr string) (err error) - //removexattr(path *byte, name *byte) _C_int - -diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog -index 8962addec63..0b2eb559829 100644 ---- a/libgomp/ChangeLog -+++ b/libgomp/ChangeLog -@@ -1,3 +1,69 @@ -+2023-09-01 Tobias Burnus -+ -+ Backported from master: -+ 2023-08-19 Tobias Burnus -+ -+ PR middle-end/111017 -+ * testsuite/libgomp.c-c++-common/non-rect-loop-1.c: New test. -+ -+2023-06-28 Thomas Schwinge -+ -+ Backported from master: -+ 2023-06-02 Thomas Schwinge -+ -+ PR testsuite/66005 -+ * testsuite/lib/libgomp.exp: 'flock' through stdout. -+ * testsuite/flock: New. -+ * configure.ac (FLOCK): Point to that if no 'flock' available, but -+ 'perl' is. -+ * configure: Regenerate. -+ -+2023-06-28 Thomas Schwinge -+ -+ Backported from master: -+ 2023-05-15 Thomas Schwinge -+ -+ PR testsuite/66005 -+ * configure.ac: Look for 'flock'. -+ * testsuite/Makefile.am (gcc_test_parallel_slots): Enable parallel testing. -+ * testsuite/config/default.exp: Don't 'load_lib "standard.exp"' here... -+ * testsuite/lib/libgomp.exp: ... but here, instead. -+ (libgomp_load): Override for parallel testing. -+ * testsuite/libgomp-site-extra.exp.in (FLOCK): Set. -+ * configure: Regenerate. -+ * Makefile.in: Regenerate. -+ * testsuite/Makefile.in: Regenerate. -+ -+2023-06-28 Rainer Orth -+ -+ Backported from master: -+ 2023-05-15 Rainer Orth -+ Thomas Schwinge -+ -+ PR testsuite/66005 -+ * testsuite/Makefile.am (PWD_COMMAND): New variable. -+ (%/site.exp): New target. -+ (check_p_numbers0, check_p_numbers1, check_p_numbers2) -+ (check_p_numbers3, check_p_numbers4, check_p_numbers5) -+ (check_p_numbers6, check_p_numbers, gcc_test_parallel_slots) -+ (check_p_subdirs) -+ (check_DEJAGNU_libgomp_targets): New variables. -+ ($(check_DEJAGNU_libgomp_targets)): New target. -+ ($(check_DEJAGNU_libgomp_targets)): New dependency. -+ (check-DEJAGNU $(check_DEJAGNU_libgomp_targets)): New targets. -+ * testsuite/Makefile.in: Regenerate. -+ * testsuite/lib/libgomp.exp: For parallel testing, -+ 'load_file ../libgomp-test-support.exp'. -+ -+2023-06-28 Thomas Schwinge -+ -+ Backported from master: -+ 2023-05-08 Thomas Schwinge -+ -+ * testsuite/libgomp.c++/c++.exp: Use 'lang_include_flags' instead -+ of 'libstdcxx_includes'. -+ * testsuite/libgomp.oacc-c++/c++.exp: Likewise. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/libgomp/Makefile.in b/libgomp/Makefile.in -index 6f0cb716135..31ad7aa4b48 100644 ---- a/libgomp/Makefile.in -+++ b/libgomp/Makefile.in -@@ -384,6 +384,7 @@ EXEEXT = @EXEEXT@ - FC = @FC@ - FCFLAGS = @FCFLAGS@ - FGREP = @FGREP@ -+FLOCK = @FLOCK@ - GREP = @GREP@ - HSA_RUNTIME_INCLUDE = @HSA_RUNTIME_INCLUDE@ - HSA_RUNTIME_LIB = @HSA_RUNTIME_LIB@ -diff --git a/libgomp/configure b/libgomp/configure -index 85fdb4d3f48..be2c5a63d69 100755 ---- a/libgomp/configure -+++ b/libgomp/configure -@@ -656,6 +656,7 @@ tmake_file - XLDFLAGS - XCFLAGS - config_path -+FLOCK - CPU_COUNT - LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_FALSE - LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE -@@ -11431,7 +11432,7 @@ else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 11434 "configure" -+#line 11435 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -11537,7 +11538,7 @@ else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 11540 "configure" -+#line 11541 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -16663,6 +16664,91 @@ $as_echo "unable to detect (assuming 1)" >&6; } - fi - - -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock implementation" >&5 -+$as_echo "$as_me: checking for flock implementation" >&6;} -+for ac_prog in flock -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_FLOCK+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$FLOCK"; then -+ ac_cv_prog_FLOCK="$FLOCK" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_FLOCK="$ac_prog" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+FLOCK=$ac_cv_prog_FLOCK -+if test -n "$FLOCK"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FLOCK" >&5 -+$as_echo "$FLOCK" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ test -n "$FLOCK" && break -+done -+ -+# Fallback if 'perl' is available. -+if test -z "$FLOCK"; then -+ # Extract the first word of "perl", so it can be a program name with args. -+set dummy perl; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_FLOCK+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$FLOCK"; then -+ ac_cv_prog_FLOCK="$FLOCK" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_FLOCK="$srcdir/testsuite/flock" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+FLOCK=$ac_cv_prog_FLOCK -+if test -n "$FLOCK"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FLOCK" >&5 -+$as_echo "$FLOCK" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+ - # Get target configury. - . ${srcdir}/configure.tgt - CFLAGS="$save_CFLAGS $XCFLAGS" -diff --git a/libgomp/configure.ac b/libgomp/configure.ac -index a9b1f3973f7..cc96e5b753b 100644 ---- a/libgomp/configure.ac -+++ b/libgomp/configure.ac -@@ -339,6 +339,13 @@ fi - AX_COUNT_CPUS - AC_SUBST(CPU_COUNT) - -+AC_MSG_NOTICE([checking for flock implementation]) -+AC_CHECK_PROGS(FLOCK, flock) -+# Fallback if 'perl' is available. -+if test -z "$FLOCK"; then -+ AC_CHECK_PROG(FLOCK, perl, $srcdir/testsuite/flock) -+fi -+ - # Get target configury. - . ${srcdir}/configure.tgt - CFLAGS="$save_CFLAGS $XCFLAGS" -diff --git a/libgomp/testsuite/Makefile.am b/libgomp/testsuite/Makefile.am -index 655a413c160..0cc91ccc4d1 100644 ---- a/libgomp/testsuite/Makefile.am -+++ b/libgomp/testsuite/Makefile.am -@@ -12,6 +12,8 @@ _RUNTEST = $(shell if test -f $(top_srcdir)/../dejagnu/runtest; then \ - echo $(top_srcdir)/../dejagnu/runtest; else echo runtest; fi) - RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir - -+PWD_COMMAND = $${PWDCMD-pwd} -+ - EXTRA_DEJAGNU_SITE_CONFIG = libgomp-site-extra.exp - - # Instead of directly in ../testsuite/libgomp-test-support.exp.in, the -@@ -25,17 +27,6 @@ libgomp-test-support.exp: libgomp-test-support.pt.exp Makefile - 'set offload_additional_lib_paths "$(offload_additional_lib_paths)"' - mv $@.tmp $@ - --check-DEJAGNU: site.exp -- srcdir='$(srcdir)'; export srcdir; \ -- EXPECT=$(EXPECT); export EXPECT; \ -- if $(SHELL) -c "$(_RUNTEST) --version" > /dev/null 2>&1; then \ -- exit_status=0; l='$(PACKAGE)'; for tool in $$l; do \ -- if $(_RUNTEST) $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \ -- then :; else exit_status=1; fi; \ -- done; \ -- else echo "WARNING: could not find '$(_RUNTEST)'" 1>&2; :;\ -- fi; \ -- exit $$exit_status - site.exp: Makefile $(EXTRA_DEJAGNU_SITE_CONFIG) - @echo 'Making a new site.exp file ...' - @echo '## these variables are automatically generated by make ##' >site.tmp -@@ -63,6 +54,72 @@ site.exp: Makefile $(EXTRA_DEJAGNU_SITE_CONFIG) - @test ! -f site.exp || mv site.exp site.bak - @mv site.tmp site.exp - -+%/site.exp: site.exp -+ -@test -d $* || mkdir $* -+ @srcdir=`cd $(srcdir); ${PWD_COMMAND}`; -+ @objdir=`${PWD_COMMAND}`/$*; \ -+ sed -e "s|^set srcdir .*$$|set srcdir $$srcdir|" \ -+ -e "s|^set objdir .*$$|set objdir $$objdir|" \ -+ site.exp > $*/site.exp.tmp -+ @-rm -f $*/site.bak -+ @test ! -f $*/site.exp || mv $*/site.exp $*/site.bak -+ @mv $*/site.exp.tmp $*/site.exp -+ -+check_p_numbers0:=1 2 3 4 5 6 7 8 9 -+check_p_numbers1:=0 $(check_p_numbers0) -+check_p_numbers2:=$(foreach i,$(check_p_numbers0),$(addprefix $(i),$(check_p_numbers1))) -+check_p_numbers3:=$(addprefix 0,$(check_p_numbers1)) $(check_p_numbers2) -+check_p_numbers4:=$(foreach i,$(check_p_numbers0),$(addprefix $(i),$(check_p_numbers3))) -+check_p_numbers5:=$(addprefix 0,$(check_p_numbers3)) $(check_p_numbers4) -+check_p_numbers6:=$(foreach i,$(check_p_numbers0),$(addprefix $(i),$(check_p_numbers5))) -+check_p_numbers:=$(check_p_numbers0) $(check_p_numbers2) $(check_p_numbers4) $(check_p_numbers6) -+# If unable to serialize execution testing, use just one parallel slot. -+gcc_test_parallel_slots:=$(if $(FLOCK),$(if $(GCC_TEST_PARALLEL_SLOTS),$(GCC_TEST_PARALLEL_SLOTS),19),1) -+check_p_subdirs=$(wordlist 1,$(gcc_test_parallel_slots),$(check_p_numbers)) -+check_DEJAGNU_libgomp_targets = $(addprefix check-DEJAGNUlibgomp,$(check_p_subdirs)) -+$(check_DEJAGNU_libgomp_targets): check-DEJAGNUlibgomp%: libgomp%/site.exp -+ -+check-DEJAGNU $(check_DEJAGNU_libgomp_targets): check-DEJAGNU%: site.exp -+ $(if $*,@)AR="$(AR)"; export AR; \ -+ RANLIB="$(RANLIB)"; export RANLIB; \ -+ if [ -z "$*" ] && [ -n "$(filter -j%, $(MFLAGS))" ]; then \ -+ rm -rf libgomp-parallel || true; \ -+ mkdir libgomp-parallel; \ -+ $(MAKE) $(AM_MAKEFLAGS) $(check_DEJAGNU_libgomp_targets); \ -+ rm -rf libgomp-parallel || true; \ -+ for idx in $(check_p_subdirs); do \ -+ if [ -d libgomp$$idx ]; then \ -+ mv -f libgomp$$idx/libgomp.sum libgomp$$idx/libgomp.sum.sep; \ -+ mv -f libgomp$$idx/libgomp.log libgomp$$idx/libgomp.log.sep; \ -+ fi; \ -+ done; \ -+ $(SHELL) $(srcdir)/../../contrib/dg-extract-results.sh \ -+ libgomp[0-9]*/libgomp.sum.sep > libgomp.sum; \ -+ $(SHELL) $(srcdir)/../../contrib/dg-extract-results.sh -L \ -+ libgomp[0-9]*/libgomp.log.sep > libgomp.log; \ -+ exit 0; \ -+ fi; \ -+ srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ -+ EXPECT=$(EXPECT); export EXPECT; \ -+ runtest=$(_RUNTEST); \ -+ if [ -z "$$runtest" ]; then runtest=runtest; fi; \ -+ tool=libgomp; \ -+ if [ -n "$*" ]; then \ -+ if [ -f libgomp-parallel/finished ]; then rm -rf "$*"; exit 0; fi; \ -+ GCC_RUNTEST_PARALLELIZE_DIR=`${PWD_COMMAND}`/libgomp-parallel; \ -+ export GCC_RUNTEST_PARALLELIZE_DIR; \ -+ cd "$*"; \ -+ fi; \ -+ if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ -+ $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ -+ $(RUNTESTFLAGS); \ -+ if [ -n "$*" ]; then \ -+ touch $$GCC_RUNTEST_PARALLELIZE_DIR/finished; \ -+ fi; \ -+ else \ -+ echo "WARNING: could not find \`runtest'" 1>&2; :;\ -+ fi -+ - distclean-DEJAGNU: - -rm -f site.exp site.bak - -l='$(PACKAGE)'; for tool in $$l; do \ -diff --git a/libgomp/testsuite/Makefile.in b/libgomp/testsuite/Makefile.in -index e48c3f2f9b0..cd318e3c392 100644 ---- a/libgomp/testsuite/Makefile.in -+++ b/libgomp/testsuite/Makefile.in -@@ -162,6 +162,7 @@ EXEEXT = @EXEEXT@ - FC = @FC@ - FCFLAGS = @FCFLAGS@ - FGREP = @FGREP@ -+FLOCK = @FLOCK@ - GREP = @GREP@ - HSA_RUNTIME_INCLUDE = @HSA_RUNTIME_INCLUDE@ - HSA_RUNTIME_LIB = @HSA_RUNTIME_LIB@ -@@ -310,7 +311,20 @@ _RUNTEST = $(shell if test -f $(top_srcdir)/../dejagnu/runtest; then \ - echo $(top_srcdir)/../dejagnu/runtest; else echo runtest; fi) - - RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir -+PWD_COMMAND = $${PWDCMD-pwd} - EXTRA_DEJAGNU_SITE_CONFIG = libgomp-site-extra.exp -+check_p_numbers0 := 1 2 3 4 5 6 7 8 9 -+check_p_numbers1 := 0 $(check_p_numbers0) -+check_p_numbers2 := $(foreach i,$(check_p_numbers0),$(addprefix $(i),$(check_p_numbers1))) -+check_p_numbers3 := $(addprefix 0,$(check_p_numbers1)) $(check_p_numbers2) -+check_p_numbers4 := $(foreach i,$(check_p_numbers0),$(addprefix $(i),$(check_p_numbers3))) -+check_p_numbers5 := $(addprefix 0,$(check_p_numbers3)) $(check_p_numbers4) -+check_p_numbers6 := $(foreach i,$(check_p_numbers0),$(addprefix $(i),$(check_p_numbers5))) -+check_p_numbers := $(check_p_numbers0) $(check_p_numbers2) $(check_p_numbers4) $(check_p_numbers6) -+# If unable to serialize execution testing, use just one parallel slot. -+gcc_test_parallel_slots := $(if $(FLOCK),$(if $(GCC_TEST_PARALLEL_SLOTS),$(GCC_TEST_PARALLEL_SLOTS),19),1) -+check_p_subdirs = $(wordlist 1,$(gcc_test_parallel_slots),$(check_p_numbers)) -+check_DEJAGNU_libgomp_targets = $(addprefix check-DEJAGNUlibgomp,$(check_p_subdirs)) - all: all-am - - .SUFFIXES: -@@ -485,17 +499,6 @@ libgomp-test-support.exp: libgomp-test-support.pt.exp Makefile - 'set offload_additional_lib_paths "$(offload_additional_lib_paths)"' - mv $@.tmp $@ - --check-DEJAGNU: site.exp -- srcdir='$(srcdir)'; export srcdir; \ -- EXPECT=$(EXPECT); export EXPECT; \ -- if $(SHELL) -c "$(_RUNTEST) --version" > /dev/null 2>&1; then \ -- exit_status=0; l='$(PACKAGE)'; for tool in $$l; do \ -- if $(_RUNTEST) $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \ -- then :; else exit_status=1; fi; \ -- done; \ -- else echo "WARNING: could not find '$(_RUNTEST)'" 1>&2; :;\ -- fi; \ -- exit $$exit_status - site.exp: Makefile $(EXTRA_DEJAGNU_SITE_CONFIG) - @echo 'Making a new site.exp file ...' - @echo '## these variables are automatically generated by make ##' >site.tmp -@@ -523,6 +526,59 @@ site.exp: Makefile $(EXTRA_DEJAGNU_SITE_CONFIG) - @test ! -f site.exp || mv site.exp site.bak - @mv site.tmp site.exp - -+%/site.exp: site.exp -+ -@test -d $* || mkdir $* -+ @srcdir=`cd $(srcdir); ${PWD_COMMAND}`; -+ @objdir=`${PWD_COMMAND}`/$*; \ -+ sed -e "s|^set srcdir .*$$|set srcdir $$srcdir|" \ -+ -e "s|^set objdir .*$$|set objdir $$objdir|" \ -+ site.exp > $*/site.exp.tmp -+ @-rm -f $*/site.bak -+ @test ! -f $*/site.exp || mv $*/site.exp $*/site.bak -+ @mv $*/site.exp.tmp $*/site.exp -+$(check_DEJAGNU_libgomp_targets): check-DEJAGNUlibgomp%: libgomp%/site.exp -+ -+check-DEJAGNU $(check_DEJAGNU_libgomp_targets): check-DEJAGNU%: site.exp -+ $(if $*,@)AR="$(AR)"; export AR; \ -+ RANLIB="$(RANLIB)"; export RANLIB; \ -+ if [ -z "$*" ] && [ -n "$(filter -j%, $(MFLAGS))" ]; then \ -+ rm -rf libgomp-parallel || true; \ -+ mkdir libgomp-parallel; \ -+ $(MAKE) $(AM_MAKEFLAGS) $(check_DEJAGNU_libgomp_targets); \ -+ rm -rf libgomp-parallel || true; \ -+ for idx in $(check_p_subdirs); do \ -+ if [ -d libgomp$$idx ]; then \ -+ mv -f libgomp$$idx/libgomp.sum libgomp$$idx/libgomp.sum.sep; \ -+ mv -f libgomp$$idx/libgomp.log libgomp$$idx/libgomp.log.sep; \ -+ fi; \ -+ done; \ -+ $(SHELL) $(srcdir)/../../contrib/dg-extract-results.sh \ -+ libgomp[0-9]*/libgomp.sum.sep > libgomp.sum; \ -+ $(SHELL) $(srcdir)/../../contrib/dg-extract-results.sh -L \ -+ libgomp[0-9]*/libgomp.log.sep > libgomp.log; \ -+ exit 0; \ -+ fi; \ -+ srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ -+ EXPECT=$(EXPECT); export EXPECT; \ -+ runtest=$(_RUNTEST); \ -+ if [ -z "$$runtest" ]; then runtest=runtest; fi; \ -+ tool=libgomp; \ -+ if [ -n "$*" ]; then \ -+ if [ -f libgomp-parallel/finished ]; then rm -rf "$*"; exit 0; fi; \ -+ GCC_RUNTEST_PARALLELIZE_DIR=`${PWD_COMMAND}`/libgomp-parallel; \ -+ export GCC_RUNTEST_PARALLELIZE_DIR; \ -+ cd "$*"; \ -+ fi; \ -+ if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ -+ $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ -+ $(RUNTESTFLAGS); \ -+ if [ -n "$*" ]; then \ -+ touch $$GCC_RUNTEST_PARALLELIZE_DIR/finished; \ -+ fi; \ -+ else \ -+ echo "WARNING: could not find \`runtest'" 1>&2; :;\ -+ fi -+ - distclean-DEJAGNU: - -rm -f site.exp site.bak - -l='$(PACKAGE)'; for tool in $$l; do \ -diff --git a/libgomp/testsuite/config/default.exp b/libgomp/testsuite/config/default.exp -index 7ac3f31d1a2..1c8c47bf13d 100644 ---- a/libgomp/testsuite/config/default.exp -+++ b/libgomp/testsuite/config/default.exp -@@ -13,5 +13,3 @@ - # You should have received a copy of the GNU General Public License - # along with this program; see the file COPYING3. If not see - # . -- --load_lib "standard.exp" -diff --git a/libgomp/testsuite/flock b/libgomp/testsuite/flock -new file mode 100755 -index 00000000000..71878b104f1 ---- /dev/null -+++ b/libgomp/testsuite/flock -@@ -0,0 +1,17 @@ -+#!/usr/bin/env perl -+ -+use strict; -+use warnings; -+ -+# Only arguments '--exclusive 1' exactly are supported. -+(@ARGV == 2) or die; -+my $mode = shift; -+($mode eq "--exclusive") or die; -+my $fd = shift; -+($fd eq "1") or die; -+ -+use Fcntl ':flock'; -+ -+open(my $fh, '>&=', 1) or die "open: $!"; -+ -+flock($fh, LOCK_EX) or die "flock: $!"; -diff --git a/libgomp/testsuite/lib/libgomp.exp b/libgomp/testsuite/lib/libgomp.exp -index 8c5ecfff0ac..17d173ac8d7 100644 ---- a/libgomp/testsuite/lib/libgomp.exp -+++ b/libgomp/testsuite/lib/libgomp.exp -@@ -9,6 +9,7 @@ proc load_gcc_lib { filename } { - } - - load_lib dg.exp -+load_lib standard.exp - - # Required to use gcc-dg.exp - however, the latter should NOT be - # loaded until ${tool}_target_compile is defined since it uses that -@@ -40,7 +41,12 @@ load_gcc_lib torture-options.exp - load_gcc_lib fortran-modules.exp - - # Try to load a test support file, built during libgomp configuration. --load_file libgomp-test-support.exp -+# Search in '..' vs. '.' to support parallel vs. sequential testing. -+if [info exists ::env(GCC_RUNTEST_PARALLELIZE_DIR)] { -+ load_file ../libgomp-test-support.exp -+} else { -+ load_file libgomp-test-support.exp -+} - - set dg-do-what-default run - -@@ -319,6 +325,36 @@ proc libgomp_option_proc { option } { - } - } - -+if ![info exists ::env(GCC_RUNTEST_PARALLELIZE_DIR)] { -+ # No parallel testing. -+} elseif { $FLOCK == "" } { -+ # Using just one parallel slot. -+} else { -+ # Using several parallel slots. Override DejaGnu -+ # 'standard.exp:${tool}_load'... -+ rename libgomp_load standard_libgomp_load -+ proc libgomp_load { program args } { -+ # ... in order to serialize execution testing via an exclusive lock. -+ # We use stdout, as per -+ # "[...] FILEHANDLE [...] be open with write intent to use LOCK_EX". -+ set lock_file ../lock -+ set lock_kind --exclusive -+ set lock_fd [open $lock_file a+] -+ set lock_clock_begin [clock seconds] -+ global FLOCK -+ exec $FLOCK $lock_kind 1 >@ $lock_fd -+ set lock_clock_end [clock seconds] -+ verbose -log "Got ${FLOCK}('$lock_file', '$lock_kind') at [clock format $lock_clock_end] after [expr $lock_clock_end - $lock_clock_begin] s" 2 -+ -+ set result [standard_libgomp_load $program $args] -+ -+ # Unlock (implicit with 'close'). -+ close $lock_fd -+ -+ return $result -+ } -+} -+ - # Translate offload target to OpenACC device type. Return the empty string if - # not supported, and 'host' for offload target 'disable'. - proc offload_target_to_openacc_device_type { offload_target } { -diff --git a/libgomp/testsuite/libgomp-site-extra.exp.in b/libgomp/testsuite/libgomp-site-extra.exp.in -index c0d26660bad..0a3ba059c21 100644 ---- a/libgomp/testsuite/libgomp-site-extra.exp.in -+++ b/libgomp/testsuite/libgomp-site-extra.exp.in -@@ -1 +1,2 @@ -+set FLOCK {@FLOCK@} - set GCC_UNDER_TEST {@CC@} -diff --git a/libgomp/testsuite/libgomp.c++/c++.exp b/libgomp/testsuite/libgomp.c++/c++.exp -index f4884e2ffa7..5b9a5924ff3 100644 ---- a/libgomp/testsuite/libgomp.c++/c++.exp -+++ b/libgomp/testsuite/libgomp.c++/c++.exp -@@ -66,13 +66,12 @@ if { $lang_test_file_found } { - - set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags" - if { [file exists $flags_file] } { -- set libstdcxx_includes [exec sh $flags_file --build-includes] -- } else { -- set libstdcxx_includes "" -+ set lang_source_re {^.*\.[cC]$} -+ set lang_include_flags [exec sh $flags_file --build-includes] - } - - # Main loop. -- dg-runtest $tests "" "$libstdcxx_includes $DEFAULT_CFLAGS" -+ dg-runtest $tests "" $DEFAULT_CFLAGS - } - - # See above. -diff --git a/libgomp/testsuite/libgomp.c-c++-common/non-rect-loop-1.c b/libgomp/testsuite/libgomp.c-c++-common/non-rect-loop-1.c -new file mode 100644 -index 00000000000..fbd462b3683 ---- /dev/null -+++ b/libgomp/testsuite/libgomp.c-c++-common/non-rect-loop-1.c -@@ -0,0 +1,72 @@ -+/* PR middle-end/111017 */ -+ -+#include -+ -+#define DIM 32 -+#define N (DIM*DIM) -+ -+int -+main () -+{ -+ int a[N], b[N], c[N]; -+ int dim = DIM; -+ -+ for (int i = 0; i < N; i++) -+ { -+ a[i] = 3*i; -+ b[i] = 7*i; -+ c[i] = 42; -+ } -+ -+ #pragma omp parallel for collapse(2) -+ for (int i = 0; i < DIM; i++) -+ for (int j = (i*DIM); j < (i*DIM + DIM); j++) -+ c[j] = a[j] + b[j]; -+ -+ for (int i = 0; i < DIM; i++) -+ for (int j = (i*DIM); j < (i*DIM + DIM); j++) -+ if (c[j] != a[j] + b[j] || c[j] != 3*j +7*j) -+ __builtin_abort (); -+ for (int i = 0; i < N; i++) -+ c[i] = 42; -+ -+ #pragma omp parallel for collapse(2) -+ for (int i = 0; i < dim; i++) -+ for (int j = (i*dim); j < (i*dim + dim); j++) -+ c[j] = a[j] + b[j]; -+ -+ for (int i = 0; i < DIM; i++) -+ for (int j = (i*DIM); j < (i*DIM + DIM); j++) -+ if (c[j] != a[j] + b[j] || c[j] != 3*j +7*j) -+ __builtin_abort (); -+ for (int i = 0; i < N; i++) -+ c[i] = 42; -+ -+ for (int dev = 0; dev <= omp_get_num_devices(); dev++) -+ { -+ #pragma omp target teams loop device(dev) map(to:a,b) map(from:c) -+ for (int i = 0; i < DIM; i++) -+ for (int j = (i*DIM); j < (i*DIM + DIM); j++) -+ c[j] = a[j] + b[j]; -+ -+ for (int i = 0; i < DIM; i++) -+ for (int j = (i*DIM); j < (i*DIM + DIM); j++) -+ if (c[j] != a[j] + b[j] || c[j] != 3*j +7*j) -+ __builtin_abort (); -+ for (int i = 0; i < N; i++) -+ c[i] = 42; -+ -+ #pragma omp target teams loop device(dev) map(to:a,b) map(from:c) -+ for (int i = 0; i < dim; i++) -+ for (int j = (i*dim); j < (i*dim + dim); j++) -+ c[j] = a[j] + b[j]; -+ -+ for (int i = 0; i < DIM; i++) -+ for (int j = (i*DIM); j < (i*DIM + DIM); j++) -+ if (c[j] != a[j] + b[j] || c[j] != 3*j +7*j) -+ __builtin_abort (); -+ for (int i = 0; i < N; i++) -+ c[i] = 42; -+ } -+ return 0; -+} -diff --git a/libgomp/testsuite/libgomp.oacc-c++/c++.exp b/libgomp/testsuite/libgomp.oacc-c++/c++.exp -index 42e0395f9a5..0b235ba47f3 100644 ---- a/libgomp/testsuite/libgomp.oacc-c++/c++.exp -+++ b/libgomp/testsuite/libgomp.oacc-c++/c++.exp -@@ -72,9 +72,8 @@ if { $lang_test_file_found } { - - set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags" - if { [file exists $flags_file] } { -- set libstdcxx_includes [exec sh $flags_file --build-includes] -- } else { -- set libstdcxx_includes "" -+ set lang_source_re {^.*\.[cC]$} -+ set lang_include_flags [exec sh $flags_file --build-includes] - } - - # Test with all available offload targets, and with offloading disabled. -@@ -147,7 +146,7 @@ if { $lang_test_file_found } { - } - } - -- gcc-dg-runtest $tests "$tagopt" "$libstdcxx_includes" -+ gcc-dg-runtest $tests "$tagopt" "" - } - unset offload_target - } else { -diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog -index 953e1dbfca4..e375c284e2c 100644 ---- a/libphobos/ChangeLog -+++ b/libphobos/ChangeLog -@@ -1,3 +1,15 @@ -+2023-11-07 Iain Buclaw -+ -+ Backported from master: -+ 2023-11-07 Iain Buclaw -+ -+ * libdruntime/core/cpuid.d (getCpuInfo0B): Limit number of times loop -+ runs. -+ -+2023-06-06 Iain Buclaw -+ -+ * src/MERGE: Merge upstream phobos 8e8aaae50. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/libphobos/libdruntime/core/cpuid.d b/libphobos/libdruntime/core/cpuid.d -index e31f776d7ee..b05db248b81 100644 ---- a/libphobos/libdruntime/core/cpuid.d -+++ b/libphobos/libdruntime/core/cpuid.d -@@ -651,10 +651,12 @@ void getAMDcacheinfo() - // to determine number of processors. - void getCpuInfo0B() - { -- int level=0; - int threadsPerCore; - uint a, b, c, d; -- do { -+ // I'm not sure about this. The docs state that there -+ // are 2 hyperthreads per core if HT is factory enabled. -+ for (int level = 0; level < 2; level++) -+ { - version (GNU_OR_LDC) asm pure nothrow @nogc { - "cpuid" : "=a" (a), "=b" (b), "=c" (c), "=d" (d) : "a" (0x0B), "c" (level); - } else asm pure nothrow @nogc { -@@ -666,19 +668,20 @@ void getCpuInfo0B() - mov c, ECX; - mov d, EDX; - } -- if (b!=0) { -- // I'm not sure about this. The docs state that there -- // are 2 hyperthreads per core if HT is factory enabled. -- if (level==0) -+ if (b != 0) -+ { -+ if (level == 0) - threadsPerCore = b & 0xFFFF; -- else if (level==1) { -+ else if (level == 1) -+ { - cpuFeatures.maxThreads = b & 0xFFFF; - cpuFeatures.maxCores = cpuFeatures.maxThreads / threadsPerCore; - } -- - } -- ++level; -- } while (a!=0 || b!=0); -+ // Got "invalid domain" returned from cpuid -+ if (a == 0 && b == 0) -+ break; -+ } - } - - void cpuidX86() -diff --git a/libphobos/src/MERGE b/libphobos/src/MERGE -index f2678185f39..8c570369602 100644 ---- a/libphobos/src/MERGE -+++ b/libphobos/src/MERGE -@@ -1,4 +1,4 @@ --5fef0d28fc873fb5a0dbfb9149759d76a7b9f1b7 -+8e8aaae5080ccc2e0a2202cbe9778dca96496a95 - - The first line of this file holds the git revision number of the last - merge done from the dlang/phobos repository. -diff --git a/libphobos/src/std/container/array.d b/libphobos/src/std/container/array.d -index 08f9ead196e..ecc45996925 100644 ---- a/libphobos/src/std/container/array.d -+++ b/libphobos/src/std/container/array.d -@@ -412,9 +412,9 @@ if (!is(immutable T == immutable bool)) - .destroy(e); - - static if (hasIndirections!T) -- GC.removeRange(_payload.ptr); -+ GC.removeRange(cast(void*) _payload.ptr); - -- free(_payload.ptr); -+ free(cast(void*) _payload.ptr); - } - - this(this) @disable; -@@ -489,14 +489,14 @@ if (!is(immutable T == immutable bool)) - auto newPayload = newPayloadPtr[0 .. oldLength]; - - // copy old data over to new array -- memcpy(newPayload.ptr, _payload.ptr, T.sizeof * oldLength); -+ memcpy(cast(void*) newPayload.ptr, cast(void*) _payload.ptr, T.sizeof * oldLength); - // Zero out unused capacity to prevent gc from seeing false pointers -- memset(newPayload.ptr + oldLength, -+ memset( cast(void*) (newPayload.ptr + oldLength), - 0, - (elements - oldLength) * T.sizeof); -- GC.addRange(newPayload.ptr, sz); -- GC.removeRange(_payload.ptr); -- free(_payload.ptr); -+ GC.addRange(cast(void*) newPayload.ptr, sz); -+ GC.removeRange(cast(void*) _payload.ptr); -+ free(cast(void*) _payload.ptr); - _payload = newPayload; - } - else -@@ -611,12 +611,17 @@ if (!is(immutable T == immutable bool)) - return opEquals(rhs); - } - -+ // fix https://issues.dlang.org/show_bug.cgi?23140 -+ private alias Unshared(T) = T; -+ private alias Unshared(T: shared U, U) = U; -+ - /// ditto - bool opEquals(ref const Array rhs) const - { - if (empty) return rhs.empty; - if (rhs.empty) return false; -- return _data._payload == rhs._data._payload; -+ -+ return cast(Unshared!(T)[]) _data._payload == cast(Unshared!(T)[]) rhs._data._payload; - } - - /** -@@ -1740,6 +1745,16 @@ if (!is(immutable T == immutable bool)) - assertThrown!AssertError(array.length = 5); - } - -+// https://issues.dlang.org/show_bug.cgi?id=23140 -+@system unittest -+{ -+ shared class C -+ { -+ } -+ -+ Array!C ac; -+ ac = Array!C([new C]); -+} - //////////////////////////////////////////////////////////////////////////////// - // Array!bool - //////////////////////////////////////////////////////////////////////////////// -diff --git a/libphobos/src/std/typecons.d b/libphobos/src/std/typecons.d -index fb15001233a..34e884cac8a 100644 ---- a/libphobos/src/std/typecons.d -+++ b/libphobos/src/std/typecons.d -@@ -3793,8 +3793,28 @@ Params: - sink.formatValue(_value, fmt); - } - } -+ -+ void toString()(scope void delegate(const(char)[]) sink, scope const ref FormatSpec!char fmt) const -+ { -+ if (isNull) -+ { -+ sink.formatValue("Nullable.null", fmt); -+ } -+ else -+ { -+ sink.formatValue(_value, fmt); -+ } -+ } - } - -+@system unittest -+{ -+ import std.conv : to; -+ -+ const Nullable!(ulong, 0) x = 1; -+ assert(x.to!string == "1"); -+} -+ - /** - Check if `this` is in the null state. - -@@ -4320,8 +4340,28 @@ Params: - sink.formatValue(*_value, fmt); - } - } -+ -+ void toString()(scope void delegate(const(char)[]) sink, scope const ref FormatSpec!char fmt) const -+ { -+ if (isNull) -+ { -+ sink.formatValue("Nullable.null", fmt); -+ } -+ else -+ { -+ sink.formatValue(*_value, fmt); -+ } -+ } - } - -+@system unittest -+{ -+ import std.conv : to; -+ -+ const NullableRef!(ulong) x = new ulong(1); -+ assert(x.to!string == "1"); -+} -+ - /** - Binds the internal state to `value`. - -diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog -index 2f85d1dbdfb..77752060f6f 100644 ---- a/libsanitizer/ChangeLog -+++ b/libsanitizer/ChangeLog -@@ -1,3 +1,11 @@ -+2023-05-21 Iain Sandoe -+ -+ Backported from master: -+ 2023-04-18 Iain Sandoe -+ -+ * configure.tgt: Unsupport Darwin22+ until a mechanism can be found -+ to locate dyld in the shared cache. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/libsanitizer/configure.tgt b/libsanitizer/configure.tgt -index fb89df4935c..bc169c365f2 100644 ---- a/libsanitizer/configure.tgt -+++ b/libsanitizer/configure.tgt -@@ -64,7 +64,7 @@ case "${target}" in - HWASAN_SUPPORTED=yes - fi - ;; -- x86_64-*-darwin2* | x86_64-*-darwin1[2-9]* | i?86-*-darwin1[2-9]*) -+ x86_64-*-darwin2[01]* | x86_64-*-darwin1[2-9]* | i?86-*-darwin1[2-9]*) - TSAN_SUPPORTED=no - EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS} -Wl,-undefined,dynamic_lookup" - ;; -diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog -index 3b6da1e57dd..afe7fa6b936 100644 ---- a/libstdc++-v3/ChangeLog -+++ b/libstdc++-v3/ChangeLog -@@ -1,3 +1,636 @@ -+2023-12-16 Jakub Jelinek -+ -+ Backported from master: -+ 2023-10-13 Jakub Jelinek -+ -+ * testsuite/tr1/8_c_compatibility/cstdio/functions.cc (test01): -+ Initialize stream to va_arg(ap, FILE*) rather than 0. -+ * testsuite/tr1/8_c_compatibility/cwchar/functions.cc (test01): -+ Likewise. -+ -+2023-12-06 Jonathan Wakely -+ -+ Backported from master: -+ 2023-11-02 Jonathan Wakely -+ -+ PR libstdc++/112314 -+ * include/std/string_view (string_view::remove_suffix): Add -+ debug assertion. -+ * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/debug.cc: -+ New test. -+ * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/debug.cc: -+ New test. -+ -+2023-12-06 Jonathan Wakely -+ -+ Backported from master: -+ 2023-11-17 Jonathan Wakely -+ -+ * include/std/utility (in_range): Rename _Up parameter to _Res. -+ -+2023-11-15 Jonathan Wakely -+ -+ Backported from master: -+ 2023-11-15 Jonathan Wakely -+ -+ PR libstdc++/112491 -+ * python/libstdcxx/v6/xmethods.py (DequeWorkerBase.index): -+ Correctly handle unused capacity at the start of the first node. -+ * testsuite/libstdc++-xmethods/deque.cc: Check index operator -+ when elements have been removed from the front. -+ -+2023-11-15 Jonathan Wakely -+ -+ Backported from master: -+ 2023-11-15 Jonathan Wakely -+ -+ * include/std/stacktrace (basic_stacktrace::at): Fix class name -+ in exception message. -+ * testsuite/19_diagnostics/stacktrace/hash.cc: Do not fail if -+ current() returns a non-empty stacktrace. -+ -+2023-11-14 Jonathan Wakely -+ -+ Backported from master: -+ 2023-11-14 Jonathan Wakely -+ -+ PR libstdc++/112348 -+ * include/std/stacktrace (hash>): Fix -+ type of hash function for entries. -+ * testsuite/19_diagnostics/stacktrace/hash.cc: New test. -+ -+2023-11-14 Jonathan Wakely -+ -+ Backported from master: -+ 2023-11-14 Jonathan Wakely -+ -+ PR libstdc++/112491 -+ * python/libstdcxx/v6/xmethods.py (DequeWorkerBase.size): Fix -+ calculation to use _M_start._M_cur. -+ * testsuite/libstdc++-xmethods/deque.cc: Check failing cases. -+ -+2023-11-13 Tom Tromey -+ -+ Backported from master: -+ 2023-10-04 Tom Tromey -+ -+ * python/libstdcxx/v6/printers.py -+ (StdExpAnyPrinter.__init__): Qualify call to -+ _string_types. -+ -+2023-11-13 Tom Tromey -+ -+ Backported from master: -+ 2023-10-04 Tom Tromey -+ -+ * python/libstdcxx/v6/printers.py: Assume that -+ _versioned_namespace is non-None. -+ * python/libstdcxx/v6/xmethods.py (is_specialization_of): -+ Assume that _versioned_namespace is non-None. -+ -+2023-11-13 Tom Tromey -+ -+ Backported from master: -+ 2023-09-28 Tom Tromey -+ -+ * python/libstdcxx/v6/printers.py (Printer.add_version) -+ (add_one_template_type_printer) -+ (FilteringTypePrinter.add_one_type_printer): Use Python -+ "not in" operator. -+ -+2023-11-13 Tom Tromey -+ -+ Backported from master: -+ 2023-10-04 Tom Tromey -+ -+ * python/libstdcxx/v6/xmethods.py (_versioned_namespace): -+ Define. -+ -+2023-11-13 Jonathan Wakely -+ -+ Backported from master: -+ 2023-09-28 Jonathan Wakely -+ -+ * python/libstdcxx/v6/xmethods.py (is_specialization_of): Define -+ new function. -+ (ArrayMethodsMatcher, DequeMethodsMatcher) -+ (ForwardListMethodsMatcher, ListMethodsMatcher) -+ (VectorMethodsMatcher, AssociativeContainerMethodsMatcher) -+ (UniquePtrGetWorker, UniquePtrMethodsMatcher) -+ (SharedPtrSubscriptWorker, SharedPtrMethodsMatcher): Use -+ is_specialization_of instead of re.match. -+ -+2023-11-13 Jonathan Wakely -+ -+ Backported from master: -+ 2023-09-28 Jonathan Wakely -+ -+ * python/libstdcxx/v6/printers.py: Break long lines. Use raw -+ strings for regular expressions. Add whitespace around -+ operators. -+ (is_member_of_namespace): Use isinstance to check type. -+ (is_specialization_of): Likewise. Adjust template_name -+ for versioned namespace instead of duplicating the re.match -+ call. -+ (StdExpAnyPrinter._string_types): New static method. -+ (StdExpAnyPrinter.to_string): Use _string_types. -+ -+2023-11-13 Jonathan Wakely -+ -+ Backported from master: -+ 2023-09-28 Jonathan Wakely -+ -+ * python/libstdcxx/v6/printers.py: Format docstrings according -+ to PEP 257. -+ * python/libstdcxx/v6/xmethods.py: Likewise. -+ -+2023-11-13 Jonathan Wakely -+ -+ Backported from master: -+ 2023-09-12 Jonathan Wakely -+ -+ * python/libstdcxx/v6/printers.py: Reformat. -+ * python/libstdcxx/v6/xmethods.py: Likewise. -+ -+2023-11-06 Ian Lance Taylor -+ -+ PR libbacktrace/111315 -+ PR libbacktrace/112263 -+ * acinclude.m4: Set -D_GNU_SOURCE in BACKTRACE_CPPFLAGS and when -+ grepping link.h for dl_iterate_phdr. -+ * configure: Regenerate. -+ -+2023-10-25 Jonathan Wakely -+ -+ Backported from master: -+ 2023-10-25 Jonathan Wakely -+ -+ PR libstdc++/111936 -+ * src/libbacktrace/Makefile.am: Add -prefer-pic to libtool -+ compile commands. -+ * src/libbacktrace/Makefile.in: Regenerate. -+ -+2023-10-23 François Dumont -+ -+ * include/bits/hashtable_policy.h -+ (_Hash_code_base::_M_hash_code(const _Hash&, const _Hash_node_value<>&)): Remove. -+ (_Hash_code_base::_M_hash_code<_H2>(const _H2&, const _Hash_node_value<>&)): Remove. -+ * include/bits/hashtable.h -+ (_M_src_hash_code<_H2>(const _H2&, const key_type&, const __node_value_type&)): New. -+ (_M_merge_unique<>, _M_merge_multi<>): Use latter. -+ * testsuite/23_containers/unordered_map/modifiers/merge.cc -+ (test04, test05, test06): New test cases. -+ -+2023-10-03 Jonathan Wakely -+ -+ * include/bits/fs_dir.h (directory_iterator::operator==): -+ Define without using a non-exported shared_ptr symbol. -+ (recursive_directory_iterator::operator==): Likewise. -+ -+2023-10-03 Jonathan Wakely -+ -+ Backported from master: -+ 2023-09-01 Jonathan Wakely -+ -+ * testsuite/27_io/filesystem/path/108636.cc: Add dg-require for -+ filesystem support. -+ -+2023-10-03 Jonathan Wakely -+ -+ Backported from master: -+ 2023-06-06 Jonathan Wakely -+ -+ PR libstdc++/108178 -+ * src/filesystem/ops-common.h (do_copy_file): Check for empty -+ files by trying to read a character. -+ * testsuite/27_io/filesystem/operations/copy_file_108178.cc: -+ New test. -+ -+2023-10-03 Jonathan Wakely -+ -+ Backported from master: -+ 2023-06-06 Jonathan Wakely -+ -+ * src/filesystem/ops-common.h (do_copy_file) [O_CLOEXEC]: Set -+ close-on-exec flag on file descriptors. -+ -+2023-10-03 Jonathan Wakely -+ -+ Backported from master: -+ 2023-03-20 Jonathan Wakely -+ -+ * src/filesystem/ops-common.h (get_temp_directory_from_env): Fix -+ formatting. -+ -+2023-10-03 Jonathan Wakely -+ -+ Backported from master: -+ 2023-02-02 Jonathan Wakely -+ -+ * src/filesystem/ops-common.h [AVR] (__unsupported): Always use -+ errc::function_not_supported instead of errc::not_supported. -+ -+2023-10-02 Tim Song -+ -+ Backported from master: -+ 2023-09-28 Tim Song -+ -+ PR libstdc++/111050 -+ * include/bits/hashtable_policy.h -+ (_Hash_node_value_base<>::_M_valptr(), _Hash_node_value_base<>::_M_v()) -+ Add [[__gnu__::__always_inline__]]. -+ -+2023-09-27 Jonathan Wakely -+ -+ Backported from master: -+ 2023-08-09 Jonathan Wakely -+ -+ * include/experimental/bits/fs_path.h (path::string): Use -+ _GLIBCXX17_CONSTEXPR not _GLIBCXX_CONSTEXPR for 'if constexpr'. -+ * include/std/charconv (__to_chars_8): Initialize variable for -+ C++17 constexpr rules. -+ -+2023-09-26 Jonathan Wakely -+ -+ Backported from master: -+ 2023-09-25 Jonathan Wakely -+ -+ PR libstdc++/111511 -+ PR c++/111512 -+ * include/std/array (to_array): Qualify calls to __to_array. -+ * testsuite/23_containers/array/creation/111512.cc: New test. -+ -+2023-09-18 Jonathan Wakely -+ -+ Backported from master: -+ 2023-09-18 Jonathan Wakely -+ -+ * doc/xml/manual/configure.xml: Use conventional option name. -+ * doc/xml/manual/status_cxx2020.xml: Update. -+ * doc/html/*: Regenerate. -+ -+2023-09-14 Jonathan Wakely -+ -+ Backported from master: -+ 2023-09-14 Jonathan Wakely -+ -+ PR c++/111357 -+ * include/bits/utility.h (make_integer_sequence): Add cast. -+ * testsuite/20_util/integer_sequence/pr111357.cc: New test. -+ -+2023-07-12 Jonathan Wakely -+ -+ Backported from master: -+ 2023-07-12 Jonathan Wakely -+ -+ PR libstdc++/95048 -+ * testsuite/27_io/filesystem/path/construct/95048.cc: Check -+ conversions to wide strings. -+ * testsuite/experimental/filesystem/path/construct/95048.cc: -+ Likewise. -+ -+2023-07-06 Jonathan Wakely -+ -+ Backported from master: -+ 2023-07-06 Jonathan Wakely -+ -+ PR libstdc++/104299 -+ * doc/xml/manual/configure.xml: Describe stdio_pure argument to -+ --enable-cstdio. -+ * doc/html/manual/configure.html: Regenerate. -+ -+2023-06-23 Jonathan Wakely -+ -+ Backported from master: -+ 2023-06-01 Jonathan Wakely -+ -+ * doc/xml/manual/evolution.xml: Document removal of implicit -+ allocator rebinding extensions in strict mode and for C++20. -+ * doc/html/*: Regenerate. -+ -+2023-06-21 Jason Merrill -+ -+ PR tree-optimization/105651 -+ * include/bits/basic_string.tcc (_M_replace): Add an assert -+ to avoid -Wrestrict false positive. -+ -+2023-05-30 Alexandre Oliva -+ -+ Backported from master: -+ 2023-05-30 Alexandre Oliva -+ -+ * testsuite/20_util/from_chars/4.cc: Skip long double test06 -+ on x86_64-vxworks. -+ * testsuite/20_util/to_chars/long_double.cc: Xfail run on -+ x86_64-vxworks. -+ -+2023-05-30 Alexandre Oliva -+ -+ Backported from master: -+ 2023-05-25 Alexandre Oliva -+ -+ * testsuite/20_util/to_chars/long_double.cc: Expect execution -+ fail on x86-vxworks. -+ -+2023-05-30 Alexandre Oliva -+ -+ Backported from master: -+ 2023-05-05 Alexandre Oliva -+ -+ * testsuite/20_util/from_chars/4.cc: Skip long double test06 -+ on aarch64-vxworks. -+ * testsuite/20_util/to_chars/long_double.cc: Xfail run on -+ aarch64-vxworks. -+ -+2023-05-30 Matthias Kretz -+ -+ Backported from master: -+ 2023-05-30 Matthias Kretz -+ -+ PR libstdc++/109822 -+ * include/experimental/bits/simd.h (to_native): Use int NTTP -+ as specified in PTS2. -+ (to_compatible): Likewise. Add missing tag to call mask -+ generator ctor. -+ * testsuite/experimental/simd/pr109822_cast_functions.cc: New -+ test. -+ -+2023-05-30 Matthias Kretz -+ -+ Backported from master: -+ 2023-05-30 Matthias Kretz -+ -+ * testsuite/experimental/simd/tests/integer_operators.cc: -+ Compute expected value differently to avoid getting turned into -+ a vector shift. -+ -+2023-05-30 Matthias Kretz -+ -+ Backported from master: -+ 2023-05-30 Matthias Kretz -+ -+ * testsuite/experimental/simd/tests/operator_cvt.cc: Make long -+ double <-> (u)long conversion tests conditional on sizeof(long -+ double) and sizeof(long). -+ -+2023-05-30 Matthias Kretz -+ -+ Backported from master: -+ 2023-05-26 Matthias Kretz -+ -+ * include/experimental/bits/simd_ppc.h (_S_bit_shift_left): -+ Negative __y is UB, so prefer signed compare. -+ -+2023-05-24 Matthias Kretz -+ -+ Backported from master: -+ 2023-05-24 Matthias Kretz -+ -+ PR libstdc++/109949 -+ * include/experimental/bits/simd.h (__intrinsic_type): If -+ __ALTIVEC__ is defined, map gnu::vector_size types to their -+ corresponding __vector T types without losing unsignedness of -+ integer types. Also prefer long long over long. -+ * include/experimental/bits/simd_ppc.h (_S_popcount): Cast mask -+ object to the expected unsigned vector type. -+ -+2023-05-24 Matthias Kretz -+ -+ Backported from master: -+ 2023-05-24 Matthias Kretz -+ -+ PR libstdc++/109261 -+ * include/experimental/bits/simd.h (__intrinsic_type): -+ Specialize __intrinsic_type and -+ __intrinsic_type in any case, but provide the member -+ type only with __aarch64__. -+ -+2023-05-24 Matthias Kretz -+ -+ Backported from master: -+ 2023-05-24 Matthias Kretz -+ -+ PR libstdc++/109261 -+ * include/experimental/bits/simd_neon.h (_S_reduce): Add -+ constexpr and make NEON implementation conditional on -+ not __builtin_is_constant_evaluated. -+ -+2023-05-23 Matthias Kretz -+ -+ Backported from master: -+ 2023-05-23 Matthias Kretz -+ -+ PR libstdc++/109261 -+ * include/experimental/bits/simd.h (_SimdWrapper::_M_set): -+ Avoid vector builtin subscripting in constant expressions. -+ (resizing_simd_cast): Avoid memcpy if constant_evaluated. -+ (const_where_expression, where_expression, where) -+ (__extract_part, simd_mask, _SimdIntOperators, simd): Add either -+ _GLIBCXX_SIMD_CONSTEXPR (on public APIs), or constexpr (on -+ internal APIs). -+ * include/experimental/bits/simd_builtin.h (__vector_permute) -+ (__vector_shuffle, __extract_part, _GnuTraits::_SimdCastType1) -+ (_GnuTraits::_SimdCastType2, _SimdImplBuiltin) -+ (_MaskImplBuiltin::_S_store): Add constexpr. -+ (_CommonImplBuiltin::_S_store_bool_array) -+ (_SimdImplBuiltin::_S_load, _SimdImplBuiltin::_S_store) -+ (_SimdImplBuiltin::_S_reduce, _MaskImplBuiltin::_S_load): Add -+ constant_evaluated case. -+ * include/experimental/bits/simd_fixed_size.h -+ (_S_masked_load): Reword comment. -+ (__tuple_element_meta, __make_meta, _SimdTuple::_M_apply_r) -+ (_SimdTuple::_M_subscript_read, _SimdTuple::_M_subscript_write) -+ (__make_simd_tuple, __optimize_simd_tuple, __extract_part) -+ (__autocvt_to_simd, _Fixed::__traits::_SimdBase) -+ (_Fixed::__traits::_SimdCastType, _SimdImplFixedSize): Add -+ constexpr. -+ (_SimdTuple::operator[], _M_set): Add constexpr and add -+ constant_evaluated case. -+ (_MaskImplFixedSize::_S_load): Add constant_evaluated case. -+ * include/experimental/bits/simd_scalar.h: Add constexpr. -+ * include/experimental/bits/simd_x86.h (_CommonImplX86): Add -+ constexpr and add constant_evaluated case. -+ (_SimdImplX86::_S_equal_to, _S_not_equal_to, _S_less) -+ (_S_less_equal): Value-initialize to satisfy constexpr -+ evaluation. -+ (_MaskImplX86::_S_load): Add constant_evaluated case. -+ (_MaskImplX86::_S_store): Add constexpr and constant_evaluated -+ case. Value-initialize local variables. -+ (_MaskImplX86::_S_logical_and, _S_logical_or, _S_bit_not) -+ (_S_bit_and, _S_bit_or, _S_bit_xor): Add constant_evaluated -+ case. -+ * testsuite/experimental/simd/pr109261_constexpr_simd.cc: New -+ test. -+ -+2023-05-23 Matthias Kretz -+ -+ Backported from master: -+ 2023-05-22 Matthias Kretz -+ -+ * include/experimental/bits/simd_builtin.h (_S_fpclassify): Move -+ __infn into #ifdef'ed block. -+ * testsuite/experimental/simd/tests/fpclassify.cc: Declare -+ constants only when used. -+ * testsuite/experimental/simd/tests/frexp.cc: Likewise. -+ * testsuite/experimental/simd/tests/logarithm.cc: Likewise. -+ * testsuite/experimental/simd/tests/trunc_ceil_floor.cc: -+ Likewise. -+ * testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc: -+ Move totest and expect1 into #ifdef'ed block. -+ -+2023-05-23 Matthias Kretz -+ -+ Backported from master: -+ 2023-03-28 Matthias Kretz -+ -+ * include/experimental/bits/simd.h (is_simd_flag_type): New. -+ (_IsSimdFlagType): New. -+ (copy_from, copy_to, load ctors): Constrain _Flags using -+ _IsSimdFlagType. -+ -+2023-05-23 Matthias Kretz -+ -+ Backported from master: -+ 2023-03-28 Matthias Kretz -+ -+ * include/experimental/bits/simd_x86.h (_SimdImplX86): Use -+ _Base::_S_divides if the optimized _S_divides function is hidden -+ via the preprocessor. -+ -+2023-05-23 Matthias Kretz -+ -+ Backported from master: -+ 2023-03-21 Matthias Kretz -+ -+ * include/experimental/bits/simd_detail.h: Don't declare the -+ simd API as constexpr with Clang. -+ * include/experimental/bits/simd_x86.h (__movm): New. -+ (_S_blend_avx512): Resolve FIXME. Implement blend using __movm -+ and ?:. -+ (_SimdImplX86::_S_masked_unary): Clang does not implement the -+ same builtins. Implement the function using __movm, ?:, and - -+ operators on vector_size types instead. -+ -+2023-05-23 Matthias Kretz -+ -+ Backported from master: -+ 2023-02-24 Matthias Kretz -+ -+ * include/experimental/bits/simd.h: Line breaks and indenting -+ fixed to follow the libstdc++ standard. -+ * include/experimental/bits/simd_builtin.h: Likewise. -+ * include/experimental/bits/simd_fixed_size.h: Likewise. -+ * include/experimental/bits/simd_neon.h: Likewise. -+ * include/experimental/bits/simd_ppc.h: Likewise. -+ * include/experimental/bits/simd_scalar.h: Likewise. -+ * include/experimental/bits/simd_x86.h: Likewise. -+ -+2023-05-23 Matthias Kretz -+ -+ Backported from master: -+ 2023-02-24 Matthias Kretz -+ -+ PR libstdc++/108030 -+ * include/experimental/bits/simd_fixed_size.h -+ (_SimdImplFixedSize::_S_broadcast): Replace inline with -+ _GLIBCXX_SIMD_INTRINSIC. -+ (_SimdImplFixedSize::_S_generate): Likewise. -+ (_SimdImplFixedSize::_S_load): Likewise. -+ (_SimdImplFixedSize::_S_masked_load): Likewise. -+ (_SimdImplFixedSize::_S_store): Likewise. -+ (_SimdImplFixedSize::_S_masked_store): Likewise. -+ (_SimdImplFixedSize::_S_min): Likewise. -+ (_SimdImplFixedSize::_S_max): Likewise. -+ (_SimdImplFixedSize::_S_complement): Likewise. -+ (_SimdImplFixedSize::_S_unary_minus): Likewise. -+ (_SimdImplFixedSize::_S_plus): Likewise. -+ (_SimdImplFixedSize::_S_minus): Likewise. -+ (_SimdImplFixedSize::_S_multiplies): Likewise. -+ (_SimdImplFixedSize::_S_divides): Likewise. -+ (_SimdImplFixedSize::_S_modulus): Likewise. -+ (_SimdImplFixedSize::_S_bit_and): Likewise. -+ (_SimdImplFixedSize::_S_bit_or): Likewise. -+ (_SimdImplFixedSize::_S_bit_xor): Likewise. -+ (_SimdImplFixedSize::_S_bit_shift_left): Likewise. -+ (_SimdImplFixedSize::_S_bit_shift_right): Likewise. -+ (_SimdImplFixedSize::_S_remquo): Add inline keyword (to be -+ explicit about not always-inline, yet). -+ (_SimdImplFixedSize::_S_isinf): Likewise. -+ (_SimdImplFixedSize::_S_isfinite): Likewise. -+ (_SimdImplFixedSize::_S_isnan): Likewise. -+ (_SimdImplFixedSize::_S_isnormal): Likewise. -+ (_SimdImplFixedSize::_S_signbit): Likewise. -+ -+2023-05-23 Matthias Kretz -+ -+ Backported from master: -+ 2023-02-24 Matthias Kretz -+ -+ PR libstdc++/108856 -+ * include/experimental/bits/simd_builtin.h -+ (_SimdImplBuiltin::_S_masked_unary): More efficient -+ implementation of masked inc-/decrement for integers and floats -+ without AVX2. -+ * include/experimental/bits/simd_x86.h -+ (_SimdImplX86::_S_masked_unary): New. Use AVX512 masked subtract -+ builtins for masked inc-/decrement. -+ -+2023-05-23 Matthias Kretz -+ -+ Backported from master: -+ 2023-02-23 Matthias Kretz -+ -+ * testsuite/experimental/simd/tests/reductions.cc: Introduce -+ max_distance as the type-dependent max error. -+ -+2023-05-23 Matthias Kretz -+ -+ Backported from master: -+ 2023-02-23 Matthias Kretz -+ -+ PR libstdc++/108030 -+ * include/experimental/bits/simd_detail.h -+ (_GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA): Define as empty for -+ __clang__. -+ -+2023-05-23 Matthias Kretz -+ -+ Backported from master: -+ 2023-02-16 Matthias Kretz -+ -+ PR libstdc++/108030 -+ * include/experimental/bits/simd_detail.h: Define -+ _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA. -+ * include/experimental/bits/simd.h: Annotate lambdas with -+ _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA. -+ * include/experimental/bits/simd_builtin.h: Ditto. -+ * include/experimental/bits/simd_converter.h: Ditto. -+ * include/experimental/bits/simd_fixed_size.h: Ditto. -+ * include/experimental/bits/simd_math.h: Ditto. -+ * include/experimental/bits/simd_neon.h: Ditto. -+ * include/experimental/bits/simd_x86.h: Ditto. -+ -+2023-05-16 Jonathan Wakely -+ -+ Backported from master: -+ 2022-11-28 Jonathan Wakely -+ -+ PR libstdc++/107801 -+ * src/c++17/memory_resource.cc (chunk::_M_bytes): Change type -+ from uint32_t to bitset::size_type. Adjust static assertion. -+ (__pool_resource::_Pool::replenish): Cast to size_t after -+ multiplication instead of before. -+ (__pool_resource::_M_alloc_pools): Ensure both arguments to -+ std::max have type size_t. -+ -+2023-05-11 Jonathan Wakely -+ -+ Backported from master: -+ 2022-11-16 Jonathan Wakely -+ -+ * python/libstdcxx/v6/printers.py (StdExpAnyPrinter): Make -+ expansion of std::string in manager name more robust. -+ - 2023-05-08 Release Manager - - * GCC 12.3.0 released. -diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 -index 04f2153fce3..321065aff72 100644 ---- a/libstdc++-v3/acinclude.m4 -+++ b/libstdc++-v3/acinclude.m4 -@@ -4924,7 +4924,7 @@ AC_DEFUN([GLIBCXX_ENABLE_BACKTRACE], [ - - # Most of this is adapted from libsanitizer/configure.ac - -- BACKTRACE_CPPFLAGS= -+ BACKTRACE_CPPFLAGS="-D_GNU_SOURCE" - - # libbacktrace only needs atomics for int, which we've already tested - if test "$glibcxx_cv_atomic_int" = "yes"; then -@@ -4952,8 +4952,11 @@ AC_DEFUN([GLIBCXX_ENABLE_BACKTRACE], [ - have_dl_iterate_phdr=no - else - # When built as a GCC target library, we can't do a link test. -+ ac_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - AC_EGREP_HEADER([dl_iterate_phdr], [link.h], [have_dl_iterate_phdr=yes], - [have_dl_iterate_phdr=no]) -+ CPPFLAGS="$ac_save_CPPFLAGS" - fi - if test "$have_dl_iterate_phdr" = "yes"; then - BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DHAVE_DL_ITERATE_PHDR=1" -diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure -index c07e2756974..b371f422ff3 100755 ---- a/libstdc++-v3/configure -+++ b/libstdc++-v3/configure -@@ -77316,7 +77316,7 @@ fi - - # Most of this is adapted from libsanitizer/configure.ac - -- BACKTRACE_CPPFLAGS= -+ BACKTRACE_CPPFLAGS="-D_GNU_SOURCE" - - # libbacktrace only needs atomics for int, which we've already tested - if test "$glibcxx_cv_atomic_int" = "yes"; then -@@ -77399,6 +77399,8 @@ done - have_dl_iterate_phdr=no - else - # When built as a GCC target library, we can't do a link test. -+ ac_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include -@@ -77412,6 +77414,7 @@ else - fi - rm -f conftest* - -+ CPPFLAGS="$ac_save_CPPFLAGS" - fi - if test "$have_dl_iterate_phdr" = "yes"; then - BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DHAVE_DL_ITERATE_PHDR=1" -diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html -index 604380e0136..fd6420a9e2c 100644 ---- a/libstdc++-v3/doc/html/manual/api.html -+++ b/libstdc++-v3/doc/html/manual/api.html -@@ -370,6 +370,11 @@ Calling a std::bind result as volatile was deprecated - For the non-default --enable-symvers=gnu-versioned-namespace - configuration, the shared library SONAME has been changed to - libstdc++.so.8. -+

-+ The extension allowing containers to be instantiated with an allocator -+ that doesn't match the container's value type is no longer allowed in -+ strict (-std=c++NN) modes, only in -+ -std=gnu++NN modes. -

9

- C++17 header - <memory_resource> -@@ -425,6 +430,10 @@ Calling a std::bind result as volatile was deprecated - and - <stop_token> - added. -+

-+ The extension allowing containers to be instantiated with an allocator -+ that doesn't match the container's value type is no longer allowed in -+ C++20 mode, even in non-strict -std=gnu++20 mode. -

11

- The --enable-cheaders=c_std configuration - was deprecated. -diff --git a/libstdc++-v3/doc/html/manual/configure.html b/libstdc++-v3/doc/html/manual/configure.html -index 31c4da8a5e3..dfd7ad63bca 100644 ---- a/libstdc++-v3/doc/html/manual/configure.html -+++ b/libstdc++-v3/doc/html/manual/configure.html -@@ -38,9 +38,14 @@ -

-    --with-gxx-include-dir=/foo/H-x86-gcc-3-c-gxx-inc/include/4.4-20090404
--enable-cstdio

This is an abbreviated form of '--enable-cstdio=stdio' - (described next). --

--enable-cstdio=OPTION

Select a target-specific I/O package. At the moment, the only -- choice is to use 'stdio', a generic "C" abstraction. -- The default is 'stdio'. This option can change the library ABI. -+

--enable-cstdio=OPTION

Select a target-specific I/O package. The choices are 'stdio' -+ which is a generic abstraction using POSIX file I/O APIs -+ (read, write, -+ lseek, etc.), and 'stdio_pure' which is similar -+ but only uses standard C file I/O APIs (fread, -+ fwrite, fseek, etc.). -+ The 'stdio_posix' choice is a synonym for 'stdio'. -+ The default is 'stdio'. This option can change the library ABI. -

--enable-clocale

This is an abbreviated form of '--enable-clocale=generic' - (described next). -

--enable-clocale=OPTION

Select a target-specific underlying locale package. The -@@ -203,8 +208,8 @@ - C++ includes. If enabled (as by default), and the compiler - seems capable of passing the simple sanity checks thrown at - it, try to build stdc++.h.gch as part of the make process. -- In addition, this generated file is used later on (by appending -- --include bits/stdc++.h to CXXFLAGS) when running the -+ In addition, this generated file is used later on (by appending -+ -include bits/stdc++.h to CXXFLAGS) when running the - testsuite. -

--enable-extern-template[default]

Use extern template to pre-instantiate all required - specializations for certain types defined in the standard libraries. -diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html -index e8da941038d..76d7d58a831 100644 ---- a/libstdc++-v3/doc/html/manual/status.html -+++ b/libstdc++-v3/doc/html/manual/status.html -@@ -1325,10 +1325,10 @@ or any notes about the implementation. - 9.1 __cpp_lib_type_identity >= 201806L (since 9.4, see Note 1) unwrap_ref_decay and unwrap_reference - - P0318R1 -- 9.1 __cpp_lib_unwrap_ref >= 201811L (since 9.4, see Note 1) Improving Completeness Requirements for Type Traits -+ 9.1 __cpp_lib_unwrap_ref >= 201811L (since 9.4, see Note 1) Improving Completeness Requirements for Type Traits - - P1285R0 -- Partial   Missing feature test macros -+ — Most misuses are diagnosed, but not all. Missing feature test macros - - P1353R0 - 9.1   Making std::underlying_type SFINAE-friendly -@@ -1411,18 +1411,18 @@ or any notes about the implementation. - 10.1   Ranges Design Cleanup - - P1252R2 -- 10.1   Avoid template bloat for safe_ranges in combination with ‘subrange-y’ view adaptors. -+ 10.1   Avoid template bloat for safe_ranges in combination with ‘subrange-y’ view adaptors. - - P1739R4 --   -+ 12.1   - Time, dates, calendars, time zones -- Extending chrono to Calendars and Time Zones -+ Extending chrono to Calendars and Time Zones - - P0355R7 --   __cpp_lib_chrono >= 201803L Miscellaneous minor fixes for chrono -+ (see Note 2) __cpp_lib_chrono >= 201803L Miscellaneous minor fixes for chrono - - P1466R3 --   __cpp_lib_chrono >= 201907L <chrono> zero(), min(), and max() should be noexcept -+ (see Note 2) __cpp_lib_chrono >= 201907L <chrono> zero(), min(), and max() should be noexcept - - P0972R0 - 9.1   -@@ -1467,10 +1467,10 @@ or any notes about the implementation. - String Prefix and Suffix Checking - - P0457R2 -- 9.1 __cpp_lib_starts_ends_with >= 201711L (since 9.4, see Note 1) Update The Reference To The Unicode Standard -+ 9.1 __cpp_lib_starts_ends_with >= 201711L (since 9.4, see Note 1) Update The Reference To The Unicode Standard - - P1025R1 --   -+ —  - Containers - span: bounds-safe views for sequences of objects - -@@ -1492,10 +1492,10 @@ or any notes about the implementation. - 10.1 __cpp_lib_to_array >= 201907L Checking for Existence of an Element in Associative Containers - - P0458R2 -- 9.1   Comparing Unordered Containers -+ 9.1   Comparing Unordered Containers - - P0809R0 --   Heterogeneous lookup for unordered containers -+ —   Heterogeneous lookup for unordered containers - - P0919R3 - 11.1 __cpp_lib_generic_unordered_lookup >= 201811 Refinement Proposal for P0919 -@@ -1567,7 +1567,7 @@ or any notes about the implementation. - 9.1   Thou Shalt Not Specialize std Function Templates! - - P0551R3 --   Bit-casting object representations -+ These changes will not be implemented. Bit-casting object representations - - P0476R2 - 11.1 __cpp_lib_bit_cast >= 201806L Integral power-of-2 operations -@@ -1588,10 +1588,10 @@ or any notes about the implementation. - —   Add shift to <algorithm> - - P0769R2 -- 10.1 __cpp_lib_shift >= 201806L Standard Library Specification in a Concepts and Contracts World -+ 10.1 __cpp_lib_shift >= 201806L Standard Library Specification in a Concepts and Contracts World - - P0788R3 --   explicit(bool) -+ —   explicit(bool) - - P0892R2 - —   Eradicating unnecessarily explicit default constructors from the standard library -@@ -1627,10 +1627,10 @@ or any notes about the implementation. - 7.1   Editorial Guidance for merging P0019r8 and P0528r3 - - P1123R0 -- —   Cleaning up Clause 20 -+ —   Cleaning up Clause 20 - - P1148R0 --   Completing the Rebase of Library Fundamentals, Version 3, Working Draft -+ —   Completing the Rebase of Library Fundamentals, Version 3, Working Draft - - P1210R0 -   Alternative Wording for P0907R4 Signed Integers are Two's Complement -@@ -1666,13 +1666,13 @@ or any notes about the implementation. - - - P1463R1 -- 10.1   -+ 10.1   - Mandating the Standard Library: - Clause 22 - Iterators library - - - P1464R1 --   Make create_directory() Intuitive -+ —   Make create_directory() Intuitive - - P1164R1 - -@@ -1708,6 +1708,9 @@ or any notes about the implementation. - Note 1: This feature is supported in older releases but the - __cpp_lib macro is not defined to the right value - (or not defined at all) until the version shown in parentheses. -+

-+Note 2: The C++20 calendar types are supported since 11.1, -+time zones, UTC, formatting and parsing are not supported. -

C++ 2023

- In this implementation the -std=gnu++23 or - -std=c++23 flag must be used to enable language -diff --git a/libstdc++-v3/doc/xml/manual/configure.xml b/libstdc++-v3/doc/xml/manual/configure.xml -index 8c26acc95a7..d2a866c4fc2 100644 ---- a/libstdc++-v3/doc/xml/manual/configure.xml -+++ b/libstdc++-v3/doc/xml/manual/configure.xml -@@ -74,9 +74,14 @@ - - - --enable-cstdio=OPTION -- Select a target-specific I/O package. At the moment, the only -- choice is to use 'stdio', a generic "C" abstraction. -- The default is 'stdio'. This option can change the library ABI. -+ Select a target-specific I/O package. The choices are 'stdio' -+ which is a generic abstraction using POSIX file I/O APIs -+ (read, write, -+ lseek, etc.), and 'stdio_pure' which is similar -+ but only uses standard C file I/O APIs (fread, -+ fwrite, fseek, etc.). -+ The 'stdio_posix' choice is a synonym for 'stdio'. -+ The default is 'stdio'. This option can change the library ABI. - - - -@@ -336,8 +341,8 @@ - C++ includes. If enabled (as by default), and the compiler - seems capable of passing the simple sanity checks thrown at - it, try to build stdc++.h.gch as part of the make process. -- In addition, this generated file is used later on (by appending -- --include bits/stdc++.h to CXXFLAGS) when running the -+ In addition, this generated file is used later on (by appending -+ -include bits/stdc++.h to CXXFLAGS) when running the - testsuite. - - -diff --git a/libstdc++-v3/doc/xml/manual/evolution.xml b/libstdc++-v3/doc/xml/manual/evolution.xml -index 82936189179..9259c43fb19 100644 ---- a/libstdc++-v3/doc/xml/manual/evolution.xml -+++ b/libstdc++-v3/doc/xml/manual/evolution.xml -@@ -915,6 +915,13 @@ Calling a std::bind result as volatile was deprecated for C++17. - libstdc++.so.8. - - -+ -+ The extension allowing containers to be instantiated with an allocator -+ that doesn't match the container's value type is no longer allowed in -+ strict () modes, only in -+ modes. -+ -+ - - -

<constant>9</constant> -@@ -998,6 +1005,12 @@ Calling a std::bind result as volatile was deprecated for C++17. - added. - - -+ -+ The extension allowing containers to be instantiated with an allocator -+ that doesn't match the container's value type is no longer allowed in -+ C++20 mode, even in non-strict mode. -+ -+ -
- -
<constant>11</constant> -diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml -index a13445f2246..d85fa59ae59 100644 ---- a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml -+++ b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml -@@ -251,14 +251,13 @@ or any notes about the implementation. - - - -- - Improving Completeness Requirements for Type Traits - - - P1285R0 - -- Partial -- -+ -+ Most misuses are diagnosed, but not all. - - - -@@ -542,13 +541,12 @@ or any notes about the implementation. - - - -- - Avoid template bloat for safe_ranges in combination with ‘subrange-y’ view adaptors. - - - P1739R4 - -- -+ 12.1 - - - -@@ -560,24 +558,23 @@ or any notes about the implementation. - - - -- -+ - Extending chrono to Calendars and Time Zones - - - P0355R7 - -- -+ (see Note 2) - __cpp_lib_chrono >= 201803L - - - -- - Miscellaneous minor fixes for chrono - - - P1466R3 - -- -+ (see Note 2) - __cpp_lib_chrono >= 201907L - - -@@ -717,13 +714,12 @@ or any notes about the implementation. - - - -- - Update The Reference To The Unicode Standard - - - P1025R1 - -- -+ - - - -@@ -797,13 +793,12 @@ or any notes about the implementation. - - - -- - Comparing Unordered Containers - - - P0809R0 - -- -+ - - - -@@ -1030,7 +1025,7 @@ or any notes about the implementation. - P0551R3 - - -- -+ These changes will not be implemented. - - - -@@ -1104,13 +1099,12 @@ or any notes about the implementation. - - - -- - Standard Library Specification in a Concepts and Contracts World - - - P0788R3 - -- -+ - - - -@@ -1235,13 +1229,12 @@ or any notes about the implementation. - - - -- - Cleaning up Clause 20 - - - P1148R0 - -- -+ - - - -@@ -1332,7 +1325,6 @@ or any notes about the implementation. - - - -- - - Mandating the Standard Library: - Clause 22 - Iterators library -@@ -1341,7 +1333,7 @@ or any notes about the implementation. - - P1464R1 - -- -+ - - - -@@ -1450,4 +1442,9 @@ Note 1: This feature is supported in older releases but the - (or not defined at all) until the version shown in parentheses. - - -+ -+Note 2: The C++20 calendar types are supported since 11.1, -+time zones, UTC, formatting and parsing are not supported. -+ -+ -
-diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc -index 0696b96604c..48fa28e6466 100644 ---- a/libstdc++-v3/include/bits/basic_string.tcc -+++ b/libstdc++-v3/include/bits/basic_string.tcc -@@ -529,6 +529,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION - { - const size_type __nleft = (__p + __len1) - __s; - this->_S_move(__p, __s, __nleft); -+ // Tell the middle-end that the copy can't overlap -+ // (PR105651). -+ if (__len2 < __nleft) -+ __builtin_unreachable(); - this->_S_copy(__p + __nleft, __p + __len2, - __len2 - __nleft); - } -diff --git a/libstdc++-v3/include/bits/fs_dir.h b/libstdc++-v3/include/bits/fs_dir.h -index bec2b7674ef..84e8e8984e8 100644 ---- a/libstdc++-v3/include/bits/fs_dir.h -+++ b/libstdc++-v3/include/bits/fs_dir.h -@@ -433,7 +433,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 3719. Directory iterators should be usable with default sentinel - bool operator==(default_sentinel_t) const noexcept -- { return !_M_dir; } -+ { return *this == directory_iterator(); } - #endif - - #if __cpp_impl_three_way_comparison < 201907L -@@ -541,7 +541,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 3719. Directory iterators should be usable with default sentinel - bool operator==(default_sentinel_t) const noexcept -- { return !_M_dirs; } -+ { return *this == recursive_directory_iterator(); } - #endif - - #if __cpp_impl_three_way_comparison < 201907L -diff --git a/libstdc++-v3/include/bits/hashtable.h b/libstdc++-v3/include/bits/hashtable.h -index edc151ef15b..1a505fff089 100644 ---- a/libstdc++-v3/include/bits/hashtable.h -+++ b/libstdc++-v3/include/bits/hashtable.h -@@ -1055,6 +1055,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION - return { __n, this->_M_node_allocator() }; - } - -+ // Only use the possibly cached node's hash code if its hash function -+ // _H2 matches _Hash and is stateless. Otherwise recompute it using _Hash. -+ template -+ __hash_code -+ _M_src_hash_code(const _H2&, const key_type& __k, -+ const __node_value_type& __src_n) const -+ { -+ if constexpr (std::is_same_v<_H2, _Hash>) -+ if constexpr (std::is_empty_v<_Hash>) -+ return this->_M_hash_code(__src_n); -+ -+ return this->_M_hash_code(__k); -+ } -+ - public: - // Extract a node. - node_type -@@ -1092,7 +1106,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION - auto __pos = __i++; - const key_type& __k = _ExtractKey{}(*__pos); - __hash_code __code -- = this->_M_hash_code(__src.hash_function(), *__pos._M_cur); -+ = _M_src_hash_code(__src.hash_function(), __k, *__pos._M_cur); - size_type __bkt = _M_bucket_index(__code); - if (_M_find_node(__bkt, __k, __code) == nullptr) - { -@@ -1120,8 +1134,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION - for (auto __i = __src.cbegin(), __end = __src.cend(); __i != __end;) - { - auto __pos = __i++; -+ const key_type& __k = _ExtractKey{}(*__pos); - __hash_code __code -- = this->_M_hash_code(__src.hash_function(), *__pos._M_cur); -+ = _M_src_hash_code(__src.hash_function(), __k, *__pos._M_cur); - auto __nh = __src.extract(__pos); - __hint = _M_insert_multi_node(__hint, __code, __nh._M_ptr)._M_cur; - __nh._M_ptr = nullptr; -diff --git a/libstdc++-v3/include/bits/hashtable_policy.h b/libstdc++-v3/include/bits/hashtable_policy.h -index 799c3e986b4..f692804782c 100644 ---- a/libstdc++-v3/include/bits/hashtable_policy.h -+++ b/libstdc++-v3/include/bits/hashtable_policy.h -@@ -291,18 +291,22 @@ namespace __detail - - __gnu_cxx::__aligned_buffer<_Value> _M_storage; - -+ [[__gnu__::__always_inline__]] - _Value* - _M_valptr() noexcept - { return _M_storage._M_ptr(); } - -+ [[__gnu__::__always_inline__]] - const _Value* - _M_valptr() const noexcept - { return _M_storage._M_ptr(); } - -+ [[__gnu__::__always_inline__]] - _Value& - _M_v() noexcept - { return *_M_valptr(); } - -+ [[__gnu__::__always_inline__]] - const _Value& - _M_v() const noexcept - { return *_M_valptr(); } -@@ -1279,19 +1283,6 @@ namespace __detail - return _M_hash()(__k); - } - -- __hash_code -- _M_hash_code(const _Hash&, -- const _Hash_node_value<_Value, true>& __n) const -- { return __n._M_hash_code; } -- -- // Compute hash code using _Hash as __n _M_hash_code, if present, was -- // computed using _H2. -- template -- __hash_code -- _M_hash_code(const _H2&, -- const _Hash_node_value<_Value, __cache_hash_code>& __n) const -- { return _M_hash_code(_ExtractKey{}(__n._M_v())); } -- - __hash_code - _M_hash_code(const _Hash_node_value<_Value, false>& __n) const - { return _M_hash_code(_ExtractKey{}(__n._M_v())); } -diff --git a/libstdc++-v3/include/bits/utility.h b/libstdc++-v3/include/bits/utility.h -index e0e40309a6d..180866e3581 100644 ---- a/libstdc++-v3/include/bits/utility.h -+++ b/libstdc++-v3/include/bits/utility.h -@@ -173,7 +173,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION - #if __has_builtin(__make_integer_seq) - = __make_integer_seq; - #else -- = integer_sequence<_Tp, __integer_pack(_Num)...>; -+ = integer_sequence<_Tp, __integer_pack(_Tp(_Num))...>; - #endif - - /// Alias template index_sequence -diff --git a/libstdc++-v3/include/experimental/bits/fs_path.h b/libstdc++-v3/include/experimental/bits/fs_path.h -index ba6acb2158d..c13195a6ba9 100644 ---- a/libstdc++-v3/include/experimental/bits/fs_path.h -+++ b/libstdc++-v3/include/experimental/bits/fs_path.h -@@ -1049,7 +1049,7 @@ namespace __detail - inline std::basic_string<_CharT, _Traits, _Allocator> - path::string(const _Allocator& __a) const - { -- if _GLIBCXX_CONSTEXPR (is_same<_CharT, value_type>::value) -+ if _GLIBCXX17_CONSTEXPR (is_same<_CharT, value_type>::value) - return { _M_pathname.begin(), _M_pathname.end(), __a }; - - using _WString = basic_string<_CharT, _Traits, _Allocator>; -diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h -index 7c5a32f6e95..b18ce9d34a2 100644 ---- a/libstdc++-v3/include/experimental/bits/simd.h -+++ b/libstdc++-v3/include/experimental/bits/simd.h -@@ -180,10 +180,7 @@ struct vector_aligned_tag - template - _GLIBCXX_SIMD_INTRINSIC static constexpr _Up* - _S_apply(_Up* __ptr) -- { -- return static_cast<_Up*>( -- __builtin_assume_aligned(__ptr, _S_alignment<_Tp, _Up>)); -- } -+ { return static_cast<_Up*>(__builtin_assume_aligned(__ptr, _S_alignment<_Tp, _Up>)); } - }; - - template struct overaligned_tag -@@ -288,13 +285,15 @@ namespace __detail - // expression. math_errhandling may expand to an extern symbol, in which case a constexpr value - // must be guessed. - template -- constexpr bool __handle_fpexcept_impl(int) -+ constexpr bool -+ __handle_fpexcept_impl(int) - { return math_errhandling & MATH_ERREXCEPT; } - #endif - - // Fallback if math_errhandling doesn't work: with fast-math assume floating-point exceptions are - // ignored, otherwise implement correct exception behavior. -- constexpr bool __handle_fpexcept_impl(float) -+ constexpr bool -+ __handle_fpexcept_impl(float) - { - #if defined __FAST_MATH__ - return false; -@@ -609,28 +608,34 @@ template - operator&(_Ip __rhs) const - { - return __generate_from_n_evaluations<_Np, _Ip>( -- [&](auto __i) { return __rhs._M_data[__i] & _M_data[__i]; }); -+ [&](auto __i) _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ return __rhs._M_data[__i] & _M_data[__i]; -+ }); - } - - _GLIBCXX_SIMD_INTRINSIC constexpr _Ip - operator|(_Ip __rhs) const - { - return __generate_from_n_evaluations<_Np, _Ip>( -- [&](auto __i) { return __rhs._M_data[__i] | _M_data[__i]; }); -+ [&](auto __i) _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ return __rhs._M_data[__i] | _M_data[__i]; -+ }); - } - - _GLIBCXX_SIMD_INTRINSIC constexpr _Ip - operator^(_Ip __rhs) const - { - return __generate_from_n_evaluations<_Np, _Ip>( -- [&](auto __i) { return __rhs._M_data[__i] ^ _M_data[__i]; }); -+ [&](auto __i) _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ return __rhs._M_data[__i] ^ _M_data[__i]; -+ }); - } - - _GLIBCXX_SIMD_INTRINSIC constexpr _Ip - operator~() const - { - return __generate_from_n_evaluations<_Np, _Ip>( -- [&](auto __i) { return ~_M_data[__i]; }); -+ [&](auto __i) _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { return ~_M_data[__i]; }); - } - }; - return _Ip{}; -@@ -743,8 +748,7 @@ template - // __invoke_ub{{{ - template - [[noreturn]] _GLIBCXX_SIMD_ALWAYS_INLINE void -- __invoke_ub([[maybe_unused]] const char* __msg, -- [[maybe_unused]] const _Args&... __args) -+ __invoke_ub([[maybe_unused]] const char* __msg, [[maybe_unused]] const _Args&... __args) - { - #ifdef _GLIBCXX_DEBUG_UB - __builtin_fprintf(stderr, __msg, __args...); -@@ -789,11 +793,14 @@ class _ExactBool - const bool _M_data; - - public: -- _GLIBCXX_SIMD_INTRINSIC constexpr _ExactBool(bool __b) : _M_data(__b) {} -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ _ExactBool(bool __b) : _M_data(__b) {} - - _ExactBool(int) = delete; - -- _GLIBCXX_SIMD_INTRINSIC constexpr operator bool() const { return _M_data; } -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ operator bool() const -+ { return _M_data; } - }; - - // }}} -@@ -1391,7 +1398,7 @@ template - operator^=(const _BitMask& __b) & noexcept - { - __execute_n_times<_S_array_size>( -- [&](auto __i) { _M_bits[__i] ^= __b._M_bits[__i]; }); -+ [&](auto __i) _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { _M_bits[__i] ^= __b._M_bits[__i]; }); - return *this; - } - -@@ -1399,7 +1406,7 @@ template - operator|=(const _BitMask& __b) & noexcept - { - __execute_n_times<_S_array_size>( -- [&](auto __i) { _M_bits[__i] |= __b._M_bits[__i]; }); -+ [&](auto __i) _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { _M_bits[__i] |= __b._M_bits[__i]; }); - return *this; - } - -@@ -1407,7 +1414,7 @@ template - operator&=(const _BitMask& __b) & noexcept - { - __execute_n_times<_S_array_size>( -- [&](auto __i) { _M_bits[__i] &= __b._M_bits[__i]; }); -+ [&](auto __i) _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { _M_bits[__i] &= __b._M_bits[__i]; }); - return *this; - } - -@@ -1482,8 +1489,7 @@ template - - // else, use GNU-style builtin vector types - template -- struct __vector_type_n<_Tp, _Np, -- enable_if_t<__is_vectorizable_v<_Tp> && _Np >= 2>> -+ struct __vector_type_n<_Tp, _Np, enable_if_t<__is_vectorizable_v<_Tp> && _Np >= 2>> - { - static constexpr size_t _S_Np2 = std::__bit_ceil(_Np * sizeof(_Tp)); - -@@ -1764,8 +1770,7 @@ template - // }}} - // __to_intrin {{{ - template , -- typename _R -- = __intrinsic_type_t> -+ typename _R = __intrinsic_type_t> - _GLIBCXX_SIMD_INTRINSIC constexpr _R - __to_intrin(_Tp __x) - { -@@ -1786,9 +1791,7 @@ template , - template - _GLIBCXX_SIMD_INTRINSIC constexpr __vector_type_t<_Tp, sizeof...(_Args)> - __make_vector(const _Args&... __args) -- { -- return __vector_type_t<_Tp, sizeof...(_Args)>{static_cast<_Tp>(__args)...}; -- } -+ { return __vector_type_t<_Tp, sizeof...(_Args)>{static_cast<_Tp>(__args)...}; } - - // }}} - // __vector_broadcast{{{ -@@ -1807,10 +1810,7 @@ template - template - _GLIBCXX_SIMD_INTRINSIC constexpr __vector_type_t<_Tp, _Np> - __generate_vector_impl(_Gp&& __gen, index_sequence<_I...>) -- { -- return __vector_type_t<_Tp, _Np>{ -- static_cast<_Tp>(__gen(_SizeConstant<_I>()))...}; -- } -+ { return __vector_type_t<_Tp, _Np>{ static_cast<_Tp>(__gen(_SizeConstant<_I>()))...}; } - - template , typename _Gp> - _GLIBCXX_SIMD_INTRINSIC constexpr _V -@@ -2023,8 +2023,7 @@ template > - // }}} - // __concat{{{ - template , -- typename _R = __vector_type_t> -+ typename _R = __vector_type_t> - constexpr _R - __concat(_Tp a_, _Tp b_) - { -@@ -2168,8 +2167,7 @@ template , -- typename _R = __vector_type_t> -+ typename _R = __vector_type_t> - _GLIBCXX_SIMD_INTRINSIC constexpr _R - __extract(_Tp __in) - { -@@ -2206,7 +2204,7 @@ template ( -- __x, [](auto... __entries) { -+ __x, [](auto... __entries) _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { - return reinterpret_cast<_R>(_Up{__entries...}); - }); - } -@@ -2215,8 +2213,7 @@ template ::value_type>> -+ typename _R = __vector_type8_t::value_type>> - _GLIBCXX_SIMD_INTRINSIC constexpr _R - __lo64(_Tp __x) - { -@@ -2226,8 +2223,7 @@ template ::value_type>> -+ typename _R = __vector_type8_t::value_type>> - _GLIBCXX_SIMD_INTRINSIC constexpr _R - __hi64(_Tp __x) - { -@@ -2238,8 +2234,7 @@ template ::value_type>> -+ typename _R = __vector_type8_t::value_type>> - _GLIBCXX_SIMD_INTRINSIC constexpr _R - __hi64z([[maybe_unused]] _Tp __x) - { -@@ -2350,18 +2345,15 @@ template <> - // the following excludes bool via __is_vectorizable - #if _GLIBCXX_SIMD_HAVE_SSE - template -- struct __intrinsic_type<_Tp, _Bytes, -- enable_if_t<__is_vectorizable_v<_Tp> && _Bytes <= 64>> -+ struct __intrinsic_type<_Tp, _Bytes, enable_if_t<__is_vectorizable_v<_Tp> && _Bytes <= 64>> - { - static_assert(!is_same_v<_Tp, long double>, - "no __intrinsic_type support for long double on x86"); - -- static constexpr size_t _S_VBytes = _Bytes <= 16 ? 16 -- : _Bytes <= 32 ? 32 -- : 64; -+ static constexpr size_t _S_VBytes = _Bytes <= 16 ? 16 : _Bytes <= 32 ? 32 : 64; - - using type [[__gnu__::__vector_size__(_S_VBytes)]] -- = conditional_t, long long int, _Tp>; -+ = conditional_t, long long int, _Tp>; - }; - #endif // _GLIBCXX_SIMD_HAVE_SSE - -@@ -2377,15 +2369,21 @@ template <> - struct __intrinsic_type - { using type = float32x4_t; }; - --#if _GLIBCXX_SIMD_HAVE_NEON_A64 - template <> - struct __intrinsic_type -- { using type = float64x1_t; }; -+ { -+#if _GLIBCXX_SIMD_HAVE_NEON_A64 -+ using type = float64x1_t; -+#endif -+ }; - - template <> - struct __intrinsic_type -- { using type = float64x2_t; }; -+ { -+#if _GLIBCXX_SIMD_HAVE_NEON_A64 -+ using type = float64x2_t; - #endif -+ }; - - #define _GLIBCXX_SIMD_ARM_INTRIN(_Bits, _Np) \ - template <> \ -@@ -2407,16 +2405,19 @@ _GLIBCXX_SIMD_ARM_INTRIN(64, 2); - #undef _GLIBCXX_SIMD_ARM_INTRIN - - template -- struct __intrinsic_type<_Tp, _Bytes, -- enable_if_t<__is_vectorizable_v<_Tp> && _Bytes <= 16>> -+ struct __intrinsic_type<_Tp, _Bytes, enable_if_t<__is_vectorizable_v<_Tp> && _Bytes <= 16>> - { - static constexpr int _SVecBytes = _Bytes <= 8 ? 8 : 16; -+ - using _Ip = __int_for_sizeof_t<_Tp>; -+ - using _Up = conditional_t< - is_floating_point_v<_Tp>, _Tp, - conditional_t, make_unsigned_t<_Ip>, _Ip>>; -+ - static_assert(!is_same_v<_Tp, _Up> || _SVecBytes != _Bytes, - "should use explicit specialization above"); -+ - using type = typename __intrinsic_type<_Up, _SVecBytes>::type; - }; - #endif // _GLIBCXX_SIMD_HAVE_NEON -@@ -2451,23 +2452,54 @@ _GLIBCXX_SIMD_PPC_INTRIN(unsigned long long); - #undef _GLIBCXX_SIMD_PPC_INTRIN - - template -- struct __intrinsic_type<_Tp, _Bytes, -- enable_if_t<__is_vectorizable_v<_Tp> && _Bytes <= 16>> -+ struct __intrinsic_type<_Tp, _Bytes, enable_if_t<__is_vectorizable_v<_Tp> && _Bytes <= 16>> - { - static constexpr bool _S_is_ldouble = is_same_v<_Tp, long double>; -+ - // allow _Tp == long double with -mlong-double-64 - static_assert(!(_S_is_ldouble && sizeof(long double) > sizeof(double)), - "no __intrinsic_type support for 128-bit floating point on PowerPC"); -+ - #ifndef __VSX__ - static_assert(!(is_same_v<_Tp, double> - || (_S_is_ldouble && sizeof(long double) == sizeof(double))), - "no __intrinsic_type support for 64-bit floating point on PowerPC w/o VSX"); - #endif -- using type = -- typename __intrinsic_type_impl< -- conditional_t, -- conditional_t<_S_is_ldouble, double, _Tp>, -- __int_for_sizeof_t<_Tp>>>::type; -+ -+ static constexpr auto __element_type() -+ { -+ if constexpr (is_floating_point_v<_Tp>) -+ { -+ if constexpr (_S_is_ldouble) -+ return double {}; -+ else -+ return _Tp {}; -+ } -+ else if constexpr (is_signed_v<_Tp>) -+ { -+ if constexpr (sizeof(_Tp) == sizeof(_SChar)) -+ return _SChar {}; -+ else if constexpr (sizeof(_Tp) == sizeof(short)) -+ return short {}; -+ else if constexpr (sizeof(_Tp) == sizeof(int)) -+ return int {}; -+ else if constexpr (sizeof(_Tp) == sizeof(_LLong)) -+ return _LLong {}; -+ } -+ else -+ { -+ if constexpr (sizeof(_Tp) == sizeof(_UChar)) -+ return _UChar {}; -+ else if constexpr (sizeof(_Tp) == sizeof(_UShort)) -+ return _UShort {}; -+ else if constexpr (sizeof(_Tp) == sizeof(_UInt)) -+ return _UInt {}; -+ else if constexpr (sizeof(_Tp) == sizeof(_ULLong)) -+ return _ULLong {}; -+ } -+ } -+ -+ using type = typename __intrinsic_type_impl::type; - }; - #endif // __ALTIVEC__ - -@@ -2483,22 +2515,29 @@ template - static constexpr size_t _S_full_size = sizeof(_BuiltinType) * __CHAR_BIT__; - - _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapper -- __as_full_vector() const { return _M_data; } -+ __as_full_vector() const -+ { return _M_data; } - -- _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapper() = default; -- _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapper(_BuiltinType __k) -- : _M_data(__k) {}; -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ _SimdWrapper() = default; -+ -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ _SimdWrapper(_BuiltinType __k) : _M_data(__k) {}; - -- _GLIBCXX_SIMD_INTRINSIC operator const _BuiltinType&() const -+ _GLIBCXX_SIMD_INTRINSIC -+ operator const _BuiltinType&() const - { return _M_data; } - -- _GLIBCXX_SIMD_INTRINSIC operator _BuiltinType&() -+ _GLIBCXX_SIMD_INTRINSIC -+ operator _BuiltinType&() - { return _M_data; } - -- _GLIBCXX_SIMD_INTRINSIC _BuiltinType __intrin() const -+ _GLIBCXX_SIMD_INTRINSIC _BuiltinType -+ __intrin() const - { return _M_data; } - -- _GLIBCXX_SIMD_INTRINSIC constexpr value_type operator[](size_t __i) const -+ _GLIBCXX_SIMD_INTRINSIC constexpr value_type -+ operator[](size_t __i) const - { return _M_data & (_BuiltinType(1) << __i); } - - template -@@ -2506,7 +2545,8 @@ template - operator[](_SizeConstant<__i>) const - { return _M_data & (_BuiltinType(1) << __i); } - -- _GLIBCXX_SIMD_INTRINSIC constexpr void _M_set(size_t __i, value_type __x) -+ _GLIBCXX_SIMD_INTRINSIC constexpr void -+ _M_set(size_t __i, value_type __x) - { - if (__x) - _M_data |= (_BuiltinType(1) << __i); -@@ -2514,11 +2554,12 @@ template - _M_data &= ~(_BuiltinType(1) << __i); - } - -- _GLIBCXX_SIMD_INTRINSIC -- constexpr bool _M_is_constprop() const -+ _GLIBCXX_SIMD_INTRINSIC constexpr bool -+ _M_is_constprop() const - { return __builtin_constant_p(_M_data); } - -- _GLIBCXX_SIMD_INTRINSIC constexpr bool _M_is_constprop_none_of() const -+ _GLIBCXX_SIMD_INTRINSIC constexpr bool -+ _M_is_constprop_none_of() const - { - if (__builtin_constant_p(_M_data)) - { -@@ -2530,7 +2571,8 @@ template - return false; - } - -- _GLIBCXX_SIMD_INTRINSIC constexpr bool _M_is_constprop_all_of() const -+ _GLIBCXX_SIMD_INTRINSIC constexpr bool -+ _M_is_constprop_all_of() const - { - if (__builtin_constant_p(_M_data)) - { -@@ -2552,10 +2594,11 @@ template - template - struct _SimdWrapperBase // no padding or no SNaNs - { -- _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapperBase() = default; -- _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapperBase(_BuiltinType __init) -- : _M_data(__init) -- {} -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ _SimdWrapperBase() = default; -+ -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ _SimdWrapperBase(_BuiltinType __init) : _M_data(__init) {} - - _BuiltinType _M_data; - }; -@@ -2564,10 +2607,11 @@ template - struct _SimdWrapperBase // with padding that needs to - // never become SNaN - { -- _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapperBase() : _M_data() {} -- _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapperBase(_BuiltinType __init) -- : _M_data(__init) -- {} -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ _SimdWrapperBase() : _M_data() {} -+ -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ _SimdWrapperBase(_BuiltinType __init) : _M_data(__init) {} - - _BuiltinType _M_data; - }; -@@ -2606,24 +2650,33 @@ template - __as_full_vector() const - { return _M_data; } - -- _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapper(initializer_list<_Tp> __init) -- : _Base(__generate_from_n_evaluations<_Width, _BuiltinType>( -- [&](auto __i) { return __init.begin()[__i.value]; })) {} -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ _SimdWrapper(initializer_list<_Tp> __init) -+ : _Base(__generate_from_n_evaluations<_Width, _BuiltinType>( -+ [&](auto __i) _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ return __init.begin()[__i.value]; -+ })) {} - -- _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapper() = default; -- _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapper(const _SimdWrapper&) -- = default; -- _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapper(_SimdWrapper&&) = default; -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ _SimdWrapper() = default; -+ -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ _SimdWrapper(const _SimdWrapper&) = default; -+ -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ _SimdWrapper(_SimdWrapper&&) = default; - - _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapper& - operator=(const _SimdWrapper&) = default; -+ - _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapper& - operator=(_SimdWrapper&&) = default; - - template >, - is_same<_V, __intrinsic_type_t<_Tp, _Width>>>>> -- _GLIBCXX_SIMD_INTRINSIC constexpr _SimdWrapper(_V __x) -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ _SimdWrapper(_V __x) - // __vector_bitcast can convert e.g. __m128 to __vector(2) float - : _Base(__vector_bitcast<_Tp, _Width>(__x)) {} - -@@ -2633,33 +2686,46 @@ template - _GLIBCXX_SIMD_INTRINSIC constexpr - operator _SimdTuple<_Tp, _As...>() const - { -- const auto& dd = _M_data; // workaround for GCC7 ICE -- return __generate_from_n_evaluations>([&]( -- auto __i) constexpr { return dd[int(__i)]; }); -+ return __generate_from_n_evaluations>( -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA -+ { return _M_data[int(__i)]; }); - } - -- _GLIBCXX_SIMD_INTRINSIC constexpr operator const _BuiltinType&() const -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ operator const _BuiltinType&() const - { return _M_data; } - -- _GLIBCXX_SIMD_INTRINSIC constexpr operator _BuiltinType&() -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ operator _BuiltinType&() - { return _M_data; } - -- _GLIBCXX_SIMD_INTRINSIC constexpr _Tp operator[](size_t __i) const -+ _GLIBCXX_SIMD_INTRINSIC constexpr _Tp -+ operator[](size_t __i) const - { return _M_data[__i]; } - - template -- _GLIBCXX_SIMD_INTRINSIC constexpr _Tp operator[](_SizeConstant<__i>) const -+ _GLIBCXX_SIMD_INTRINSIC constexpr _Tp -+ operator[](_SizeConstant<__i>) const - { return _M_data[__i]; } - -- _GLIBCXX_SIMD_INTRINSIC constexpr void _M_set(size_t __i, _Tp __x) -- { _M_data[__i] = __x; } -+ _GLIBCXX_SIMD_INTRINSIC constexpr void -+ _M_set(size_t __i, _Tp __x) -+ { -+ if (__builtin_is_constant_evaluated()) -+ _M_data = __generate_from_n_evaluations<_Width, _BuiltinType>([&](auto __j) { -+ return __j == __i ? __x : _M_data[__j()]; -+ }); -+ else -+ _M_data[__i] = __x; -+ } - - _GLIBCXX_SIMD_INTRINSIC -- constexpr bool _M_is_constprop() const -+ constexpr bool -+ _M_is_constprop() const - { return __builtin_constant_p(_M_data); } - -- _GLIBCXX_SIMD_INTRINSIC constexpr bool _M_is_constprop_none_of() const -+ _GLIBCXX_SIMD_INTRINSIC constexpr bool -+ _M_is_constprop_none_of() const - { - if (__builtin_constant_p(_M_data)) - { -@@ -2680,7 +2746,8 @@ template - return false; - } - -- _GLIBCXX_SIMD_INTRINSIC constexpr bool _M_is_constprop_all_of() const -+ _GLIBCXX_SIMD_INTRINSIC constexpr bool -+ _M_is_constprop_all_of() const - { - if (__builtin_constant_p(_M_data)) - { -@@ -2812,6 +2879,32 @@ template - } // namespace simd_abi - - // traits {{{1 -+template -+ struct is_simd_flag_type -+ : false_type -+ {}; -+ -+template <> -+ struct is_simd_flag_type -+ : true_type -+ {}; -+ -+template <> -+ struct is_simd_flag_type -+ : true_type -+ {}; -+ -+template -+ struct is_simd_flag_type> -+ : __bool_constant<(_Np > 0) and __has_single_bit(_Np)> -+ {}; -+ -+template -+ inline constexpr bool is_simd_flag_type_v = is_simd_flag_type<_Tp>::value; -+ -+template >> -+ using _IsSimdFlagType = _Tp; -+ - // is_abi_tag {{{2 - template > - struct is_abi_tag : false_type {}; -@@ -2878,22 +2971,14 @@ template - struct rebind_simd; - - template -- struct rebind_simd< -- _Tp, simd<_Up, _Abi>, -- void_t, _Abi>>> -- { -- using type -- = simd<_Tp, simd_abi::deduce_t<_Tp, simd_size_v<_Up, _Abi>, _Abi>>; -- }; -+ struct rebind_simd<_Tp, simd<_Up, _Abi>, -+ void_t, _Abi>>> -+ { using type = simd<_Tp, simd_abi::deduce_t<_Tp, simd_size_v<_Up, _Abi>, _Abi>>; }; - - template -- struct rebind_simd< -- _Tp, simd_mask<_Up, _Abi>, -- void_t, _Abi>>> -- { -- using type -- = simd_mask<_Tp, simd_abi::deduce_t<_Tp, simd_size_v<_Up, _Abi>, _Abi>>; -- }; -+ struct rebind_simd<_Tp, simd_mask<_Up, _Abi>, -+ void_t, _Abi>>> -+ { using type = simd_mask<_Tp, simd_abi::deduce_t<_Tp, simd_size_v<_Up, _Abi>, _Abi>>; }; - - template - using rebind_simd_t = typename rebind_simd<_Tp, _V>::type; -@@ -2903,13 +2988,11 @@ template - struct resize_simd; - - template -- struct resize_simd<_Np, simd<_Tp, _Abi>, -- void_t>> -+ struct resize_simd<_Np, simd<_Tp, _Abi>, void_t>> - { using type = simd<_Tp, simd_abi::deduce_t<_Tp, _Np, _Abi>>; }; - - template -- struct resize_simd<_Np, simd_mask<_Tp, _Abi>, -- void_t>> -+ struct resize_simd<_Np, simd_mask<_Tp, _Abi>, void_t>> - { using type = simd_mask<_Tp, simd_abi::deduce_t<_Tp, _Np, _Abi>>; }; - - template -@@ -2958,13 +3041,11 @@ template - - // casts [simd.casts] {{{1 - // static_simd_cast {{{2 --template , -- typename = void> -+template , typename = void> - struct __static_simd_cast_return_type; - - template -- struct __static_simd_cast_return_type, _Up, _Ap, false, -- void> -+ struct __static_simd_cast_return_type, _Up, _Ap, false, void> - : __static_simd_cast_return_type, _Up, _Ap> {}; - - template -@@ -3147,6 +3228,10 @@ template - { - if constexpr (is_same_v) - return __x; -+ else if (__builtin_is_constant_evaluated()) -+ return _Tp([&](auto __i) constexpr { -+ return __i < simd_size_v<_Up, _Ap> ? __x[__i] : _Up(); -+ }); - else if constexpr (simd_size_v<_Up, _Ap> == 1) - { - _Tp __r{}; -@@ -3193,21 +3278,19 @@ template - { return __x; } - - template -- _GLIBCXX_SIMD_INTRINSIC auto -+ _GLIBCXX_SIMD_INTRINSIC fixed_size_simd<_Tp, simd_size_v<_Tp, _Ap>> - to_fixed_size(const simd<_Tp, _Ap>& __x) - { -- return simd<_Tp, simd_abi::fixed_size>>([&__x]( -- auto __i) constexpr { return __x[__i]; }); -+ using _Rp = fixed_size_simd<_Tp, simd_size_v<_Tp, _Ap>>; -+ return _Rp([&__x](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { return __x[__i]; }); - } - - template -- _GLIBCXX_SIMD_INTRINSIC auto -+ _GLIBCXX_SIMD_INTRINSIC fixed_size_simd_mask<_Tp, simd_size_v<_Tp, _Ap>> - to_fixed_size(const simd_mask<_Tp, _Ap>& __x) - { -- constexpr int _Np = simd_mask<_Tp, _Ap>::size(); -- fixed_size_simd_mask<_Tp, _Np> __r; -- __execute_n_times<_Np>([&](auto __i) constexpr { __r[__i] = __x[__i]; }); -- return __r; -+ return {__private_init, -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { return __x[__i]; }}; - } - - // to_native {{{2 -@@ -3221,16 +3304,18 @@ template - return {__mem, vector_aligned}; - } - --template -+template - _GLIBCXX_SIMD_INTRINSIC - enable_if_t<(_Np == native_simd_mask<_Tp>::size()), native_simd_mask<_Tp>> - to_native(const fixed_size_simd_mask<_Tp, _Np>& __x) - { -- return native_simd_mask<_Tp>([&](auto __i) constexpr { return __x[__i]; }); -+ return native_simd_mask<_Tp>( -+ __private_init, -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { return __x[__i]; }); - } - - // to_compatible {{{2 --template -+template - _GLIBCXX_SIMD_INTRINSIC enable_if_t<(_Np == simd<_Tp>::size()), simd<_Tp>> - to_compatible(const simd<_Tp, simd_abi::fixed_size<_Np>>& __x) - { -@@ -3239,11 +3324,15 @@ template - return {__mem, vector_aligned}; - } - --template -+template - _GLIBCXX_SIMD_INTRINSIC - enable_if_t<(_Np == simd_mask<_Tp>::size()), simd_mask<_Tp>> - to_compatible(const simd_mask<_Tp, simd_abi::fixed_size<_Np>>& __x) -- { return simd_mask<_Tp>([&](auto __i) constexpr { return __x[__i]; }); } -+ { -+ return simd_mask<_Tp>( -+ __private_init, -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { return __x[__i]; }); -+ } - - // masked assignment [simd_mask.where] {{{1 - -@@ -3276,12 +3365,14 @@ template - - public: - const_where_expression(const const_where_expression&) = delete; -+ - const_where_expression& operator=(const const_where_expression&) = delete; - -- _GLIBCXX_SIMD_INTRINSIC const_where_expression(const _M& __kk, const _Tp& dd) -- : _M_k(__kk), _M_value(const_cast<_Tp&>(dd)) {} -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ const_where_expression(const _M& __kk, const _Tp& dd) -+ : _M_k(__kk), _M_value(const_cast<_Tp&>(dd)) {} - -- _GLIBCXX_SIMD_INTRINSIC _V -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR _V - operator-() const&& - { - return {__private_init, -@@ -3290,8 +3381,8 @@ template - } - - template -- [[nodiscard]] _GLIBCXX_SIMD_INTRINSIC _V -- copy_from(const _LoadStorePtr<_Up, value_type>* __mem, _Flags) const&& -+ [[nodiscard]] _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR _V -+ copy_from(const _LoadStorePtr<_Up, value_type>* __mem, _IsSimdFlagType<_Flags>) const&& - { - return {__private_init, - _Impl::_S_masked_load(__data(_M_value), __data(_M_k), -@@ -3299,8 +3390,8 @@ template - } - - template -- _GLIBCXX_SIMD_INTRINSIC void -- copy_to(_LoadStorePtr<_Up, value_type>* __mem, _Flags) const&& -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void -+ copy_to(_LoadStorePtr<_Up, value_type>* __mem, _IsSimdFlagType<_Flags>) const&& - { - _Impl::_S_masked_store(__data(_M_value), - _Flags::template _S_apply<_V>(__mem), -@@ -3320,8 +3411,8 @@ template - struct _Wrapper { using value_type = _V; }; - - protected: -- using value_type = -- typename conditional_t, _Wrapper, _V>::value_type; -+ using value_type -+ = typename conditional_t, _Wrapper, _V>::value_type; - - _GLIBCXX_SIMD_INTRINSIC friend const _M& - __get_mask(const const_where_expression& __x) -@@ -3338,20 +3429,22 @@ template - const_where_expression(const const_where_expression&) = delete; - const_where_expression& operator=(const const_where_expression&) = delete; - -- _GLIBCXX_SIMD_INTRINSIC const_where_expression(const bool __kk, const _Tp& dd) -- : _M_k(__kk), _M_value(const_cast<_Tp&>(dd)) {} -+ _GLIBCXX_SIMD_INTRINSIC constexpr -+ const_where_expression(const bool __kk, const _Tp& dd) -+ : _M_k(__kk), _M_value(const_cast<_Tp&>(dd)) {} - -- _GLIBCXX_SIMD_INTRINSIC _V operator-() const&& -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR _V -+ operator-() const&& - { return _M_k ? -_M_value : _M_value; } - - template -- [[nodiscard]] _GLIBCXX_SIMD_INTRINSIC _V -- copy_from(const _LoadStorePtr<_Up, value_type>* __mem, _Flags) const&& -+ [[nodiscard]] _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR _V -+ copy_from(const _LoadStorePtr<_Up, value_type>* __mem, _IsSimdFlagType<_Flags>) const&& - { return _M_k ? static_cast<_V>(__mem[0]) : _M_value; } - - template -- _GLIBCXX_SIMD_INTRINSIC void -- copy_to(_LoadStorePtr<_Up, value_type>* __mem, _Flags) const&& -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void -+ copy_to(_LoadStorePtr<_Up, value_type>* __mem, _IsSimdFlagType<_Flags>) const&& - { - if (_M_k) - __mem[0] = _M_value; -@@ -3376,18 +3469,21 @@ template - is_same::value, ""); - static_assert(_M::size() == _Tp::size(), ""); - -- _GLIBCXX_SIMD_INTRINSIC friend _Tp& __get_lvalue(where_expression& __x) -+ _GLIBCXX_SIMD_INTRINSIC friend constexpr _Tp& -+ __get_lvalue(where_expression& __x) - { return __x._M_value; } - - public: - where_expression(const where_expression&) = delete; - where_expression& operator=(const where_expression&) = delete; - -- _GLIBCXX_SIMD_INTRINSIC where_expression(const _M& __kk, _Tp& dd) -- : const_where_expression<_M, _Tp>(__kk, dd) {} -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR -+ where_expression(const _M& __kk, _Tp& dd) -+ : const_where_expression<_M, _Tp>(__kk, dd) {} - - template -- _GLIBCXX_SIMD_INTRINSIC void operator=(_Up&& __x) && -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void -+ operator=(_Up&& __x) && - { - _Impl::_S_masked_assign(__data(_M_k), __data(_M_value), - __to_value_type_or_member_type<_Tp>( -@@ -3396,14 +3492,15 @@ template - - #define _GLIBCXX_SIMD_OP_(__op, __name) \ - template \ -- _GLIBCXX_SIMD_INTRINSIC void operator __op##=(_Up&& __x)&& \ -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void \ -+ operator __op##=(_Up&& __x)&& \ - { \ - _Impl::template _S_masked_cassign( \ - __data(_M_k), __data(_M_value), \ - __to_value_type_or_member_type<_Tp>(static_cast<_Up&&>(__x)), \ -- [](auto __impl, auto __lhs, auto __rhs) constexpr { \ -- return __impl.__name(__lhs, __rhs); \ -- }); \ -+ [](auto __impl, auto __lhs, auto __rhs) \ -+ constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA \ -+ { return __impl.__name(__lhs, __rhs); }); \ - } \ - static_assert(true) - _GLIBCXX_SIMD_OP_(+, _S_plus); -@@ -3418,48 +3515,48 @@ template - _GLIBCXX_SIMD_OP_(>>, _S_shift_right); - #undef _GLIBCXX_SIMD_OP_ - -- _GLIBCXX_SIMD_INTRINSIC void operator++() && -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void -+ operator++() && - { - __data(_M_value) -- = _Impl::template _S_masked_unary<__increment>(__data(_M_k), -- __data(_M_value)); -+ = _Impl::template _S_masked_unary<__increment>(__data(_M_k), __data(_M_value)); - } - -- _GLIBCXX_SIMD_INTRINSIC void operator++(int) && -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void -+ operator++(int) && - { - __data(_M_value) -- = _Impl::template _S_masked_unary<__increment>(__data(_M_k), -- __data(_M_value)); -+ = _Impl::template _S_masked_unary<__increment>(__data(_M_k), __data(_M_value)); - } - -- _GLIBCXX_SIMD_INTRINSIC void operator--() && -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void -+ operator--() && - { - __data(_M_value) -- = _Impl::template _S_masked_unary<__decrement>(__data(_M_k), -- __data(_M_value)); -+ = _Impl::template _S_masked_unary<__decrement>(__data(_M_k), __data(_M_value)); - } - -- _GLIBCXX_SIMD_INTRINSIC void operator--(int) && -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void -+ operator--(int) && - { - __data(_M_value) -- = _Impl::template _S_masked_unary<__decrement>(__data(_M_k), -- __data(_M_value)); -+ = _Impl::template _S_masked_unary<__decrement>(__data(_M_k), __data(_M_value)); - } - - // intentionally hides const_where_expression::copy_from - template -- _GLIBCXX_SIMD_INTRINSIC void -- copy_from(const _LoadStorePtr<_Up, value_type>* __mem, _Flags) && -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void -+ copy_from(const _LoadStorePtr<_Up, value_type>* __mem, _IsSimdFlagType<_Flags>) && - { -- __data(_M_value) -- = _Impl::_S_masked_load(__data(_M_value), __data(_M_k), -- _Flags::template _S_apply<_Tp>(__mem)); -+ __data(_M_value) = _Impl::_S_masked_load(__data(_M_value), __data(_M_k), -+ _Flags::template _S_apply<_Tp>(__mem)); - } - }; - - // where_expression {{{2 - template -- class where_expression : public const_where_expression -+ class where_expression -+ : public const_where_expression - { - using _M = bool; - using typename const_where_expression<_M, _Tp>::value_type; -@@ -3470,12 +3567,14 @@ template - where_expression(const where_expression&) = delete; - where_expression& operator=(const where_expression&) = delete; - -- _GLIBCXX_SIMD_INTRINSIC where_expression(const _M& __kk, _Tp& dd) -- : const_where_expression<_M, _Tp>(__kk, dd) {} -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR -+ where_expression(const _M& __kk, _Tp& dd) -+ : const_where_expression<_M, _Tp>(__kk, dd) {} - - #define _GLIBCXX_SIMD_OP_(__op) \ - template \ -- _GLIBCXX_SIMD_INTRINSIC void operator __op(_Up&& __x)&& \ -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void \ -+ operator __op(_Up&& __x)&& \ - { if (_M_k) _M_value __op static_cast<_Up&&>(__x); } - - _GLIBCXX_SIMD_OP_(=) -@@ -3491,67 +3590,71 @@ template - _GLIBCXX_SIMD_OP_(>>=) - #undef _GLIBCXX_SIMD_OP_ - -- _GLIBCXX_SIMD_INTRINSIC void operator++() && -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void -+ operator++() && - { if (_M_k) ++_M_value; } - -- _GLIBCXX_SIMD_INTRINSIC void operator++(int) && -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void -+ operator++(int) && - { if (_M_k) ++_M_value; } - -- _GLIBCXX_SIMD_INTRINSIC void operator--() && -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void -+ operator--() && - { if (_M_k) --_M_value; } - -- _GLIBCXX_SIMD_INTRINSIC void operator--(int) && -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void -+ operator--(int) && - { if (_M_k) --_M_value; } - - // intentionally hides const_where_expression::copy_from - template -- _GLIBCXX_SIMD_INTRINSIC void -- copy_from(const _LoadStorePtr<_Up, value_type>* __mem, _Flags) && -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR void -+ copy_from(const _LoadStorePtr<_Up, value_type>* __mem, _IsSimdFlagType<_Flags>) && - { if (_M_k) _M_value = __mem[0]; } - }; - - // where {{{1 - template -- _GLIBCXX_SIMD_INTRINSIC where_expression, simd<_Tp, _Ap>> -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR -+ where_expression, simd<_Tp, _Ap>> - where(const typename simd<_Tp, _Ap>::mask_type& __k, simd<_Tp, _Ap>& __value) - { return {__k, __value}; } - - template -- _GLIBCXX_SIMD_INTRINSIC -- const_where_expression, simd<_Tp, _Ap>> -- where(const typename simd<_Tp, _Ap>::mask_type& __k, -- const simd<_Tp, _Ap>& __value) -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR -+ const_where_expression, simd<_Tp, _Ap>> -+ where(const typename simd<_Tp, _Ap>::mask_type& __k, const simd<_Tp, _Ap>& __value) - { return {__k, __value}; } - - template -- _GLIBCXX_SIMD_INTRINSIC -- where_expression, simd_mask<_Tp, _Ap>> -- where(const remove_const_t>& __k, -- simd_mask<_Tp, _Ap>& __value) -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR -+ where_expression, simd_mask<_Tp, _Ap>> -+ where(const remove_const_t>& __k, simd_mask<_Tp, _Ap>& __value) - { return {__k, __value}; } - - template -- _GLIBCXX_SIMD_INTRINSIC -- const_where_expression, simd_mask<_Tp, _Ap>> -- where(const remove_const_t>& __k, -- const simd_mask<_Tp, _Ap>& __value) -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR -+ const_where_expression, simd_mask<_Tp, _Ap>> -+ where(const remove_const_t>& __k, const simd_mask<_Tp, _Ap>& __value) - { return {__k, __value}; } - - template -- _GLIBCXX_SIMD_INTRINSIC where_expression -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR where_expression - where(_ExactBool __k, _Tp& __value) - { return {__k, __value}; } - - template -- _GLIBCXX_SIMD_INTRINSIC const_where_expression -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR const_where_expression - where(_ExactBool __k, const _Tp& __value) - { return {__k, __value}; } - -- template -- void where(bool __k, simd<_Tp, _Ap>& __value) = delete; -+template -+ _GLIBCXX_SIMD_CONSTEXPR void -+ where(bool __k, simd<_Tp, _Ap>& __value) = delete; - -- template -- void where(bool __k, const simd<_Tp, _Ap>& __value) = delete; -+template -+ _GLIBCXX_SIMD_CONSTEXPR void -+ where(bool __k, const simd<_Tp, _Ap>& __value) = delete; - - // proposed mask iterations {{{1 - namespace __proposed { -@@ -3568,10 +3671,12 @@ template - size_t __mask; - size_t __bit; - -- _GLIBCXX_SIMD_INTRINSIC void __next_bit() -+ _GLIBCXX_SIMD_INTRINSIC void -+ __next_bit() - { __bit = __builtin_ctzl(__mask); } - -- _GLIBCXX_SIMD_INTRINSIC void __reset_lsb() -+ _GLIBCXX_SIMD_INTRINSIC void -+ __reset_lsb() - { - // 01100100 - 1 = 01100011 - __mask &= (__mask - 1); -@@ -3583,20 +3688,24 @@ template - iterator(const iterator&) = default; - iterator(iterator&&) = default; - -- _GLIBCXX_SIMD_ALWAYS_INLINE size_t operator->() const -+ _GLIBCXX_SIMD_ALWAYS_INLINE size_t -+ operator->() const - { return __bit; } - -- _GLIBCXX_SIMD_ALWAYS_INLINE size_t operator*() const -+ _GLIBCXX_SIMD_ALWAYS_INLINE size_t -+ operator*() const - { return __bit; } - -- _GLIBCXX_SIMD_ALWAYS_INLINE iterator& operator++() -+ _GLIBCXX_SIMD_ALWAYS_INLINE iterator& -+ operator++() - { - __reset_lsb(); - __next_bit(); - return *this; - } - -- _GLIBCXX_SIMD_ALWAYS_INLINE iterator operator++(int) -+ _GLIBCXX_SIMD_ALWAYS_INLINE iterator -+ operator++(int) - { - iterator __tmp = *this; - __reset_lsb(); -@@ -3604,17 +3713,21 @@ template - return __tmp; - } - -- _GLIBCXX_SIMD_ALWAYS_INLINE bool operator==(const iterator& __rhs) const -+ _GLIBCXX_SIMD_ALWAYS_INLINE bool -+ operator==(const iterator& __rhs) const - { return __mask == __rhs.__mask; } - -- _GLIBCXX_SIMD_ALWAYS_INLINE bool operator!=(const iterator& __rhs) const -+ _GLIBCXX_SIMD_ALWAYS_INLINE bool -+ operator!=(const iterator& __rhs) const - { return __mask != __rhs.__mask; } - }; - -- iterator begin() const -+ iterator -+ begin() const - { return __bits.to_ullong(); } - -- iterator end() const -+ iterator -+ end() const - { return 0; } - }; - -@@ -3629,15 +3742,13 @@ template - // reductions [simd.reductions] {{{1 - template > - _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR _Tp -- reduce(const simd<_Tp, _Abi>& __v, -- _BinaryOperation __binary_op = _BinaryOperation()) -+ reduce(const simd<_Tp, _Abi>& __v, _BinaryOperation __binary_op = _BinaryOperation()) - { return _Abi::_SimdImpl::_S_reduce(__v, __binary_op); } - - template > - _GLIBCXX_SIMD_INTRINSIC typename _V::value_type - reduce(const const_where_expression<_M, _V>& __x, -- typename _V::value_type __identity_element, -- _BinaryOperation __binary_op) -+ typename _V::value_type __identity_element, _BinaryOperation __binary_op) - { - if (__builtin_expect(none_of(__get_mask(__x)), false)) - return __identity_element; -@@ -3676,16 +3787,12 @@ template - template - _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR _Tp - hmin(const simd<_Tp, _Abi>& __v) noexcept -- { -- return _Abi::_SimdImpl::_S_reduce(__v, __detail::_Minimum()); -- } -+ { return _Abi::_SimdImpl::_S_reduce(__v, __detail::_Minimum()); } - - template - _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR _Tp - hmax(const simd<_Tp, _Abi>& __v) noexcept -- { -- return _Abi::_SimdImpl::_S_reduce(__v, __detail::_Maximum()); -- } -+ { return _Abi::_SimdImpl::_S_reduce(__v, __detail::_Maximum()); } - - template - _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR -@@ -3753,8 +3860,7 @@ template - - template - _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR simd<_Tp, _Ap> -- clamp(const simd<_Tp, _Ap>& __v, const simd<_Tp, _Ap>& __lo, -- const simd<_Tp, _Ap>& __hi) -+ clamp(const simd<_Tp, _Ap>& __v, const simd<_Tp, _Ap>& __lo, const simd<_Tp, _Ap>& __hi) - { - using _Impl = typename _Ap::_SimdImpl; - return {__private_init, -@@ -3771,13 +3877,12 @@ template -- _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_CONST -+ _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_CONST constexpr - _SimdWrapper<_Tp, _Np / _Total * _Combine> - __extract_part(const _SimdWrapper<_Tp, _Np> __x); - --template -- _GLIBCXX_SIMD_INTRINSIC auto -+template -+ _GLIBCXX_SIMD_INTRINSIC constexpr auto - __extract_part(const _SimdTuple<_Tp, _A0, _As...>& __x); - - // }}} -@@ -3786,7 +3891,8 @@ template - struct _SizeList - { - template -- static constexpr size_t _S_at(_SizeConstant<_I> = {}) -+ static constexpr size_t -+ _S_at(_SizeConstant<_I> = {}) - { - if constexpr (_I == 0) - return _V0; -@@ -3795,7 +3901,8 @@ template - } - - template -- static constexpr auto _S_before(_SizeConstant<_I> = {}) -+ static constexpr auto -+ _S_before(_SizeConstant<_I> = {}) - { - if constexpr (_I == 0) - return _SizeConstant<0>(); -@@ -3805,7 +3912,8 @@ template - } - - template -- static constexpr auto _S_pop_front(_SizeConstant<_Np> = {}) -+ static constexpr auto -+ _S_pop_front(_SizeConstant<_Np> = {}) - { - if constexpr (_Np == 0) - return _SizeList(); -@@ -3900,12 +4008,11 @@ template >([&]( -- auto __i) constexpr { -- return _V([&](auto __j) constexpr { -- return __x[__i * _V::size() + __j]; -- }); -- }); -+ return __generate_from_n_evaluations<_Parts, array<_V, _Parts>>( -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ return _V([&](auto __j) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA -+ { return __x[__i * _V::size() + __j]; }); -+ }); - } - else if constexpr ( - __is_fixed_size_abi_v<_Ap> -@@ -3918,49 +4025,47 @@ template * const __element_ptr - = reinterpret_cast*>(&__data(__x)); -- return __generate_from_n_evaluations<_Parts, array<_V, _Parts>>([&]( -- auto __i) constexpr { -- return _V(__element_ptr + __i * _V::size(), vector_aligned); -- }); -+ return __generate_from_n_evaluations<_Parts, array<_V, _Parts>>( -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA -+ { return _V(__element_ptr + __i * _V::size(), vector_aligned); }); - #else - const auto& __xx = __data(__x); -- return __generate_from_n_evaluations<_Parts, array<_V, _Parts>>([&]( -- auto __i) constexpr { -- [[maybe_unused]] constexpr size_t __offset -- = decltype(__i)::value * _V::size(); -- return _V([&](auto __j) constexpr { -- constexpr _SizeConstant<__j + __offset> __k; -- return __xx[__k]; -- }); -- }); -+ return __generate_from_n_evaluations<_Parts, array<_V, _Parts>>( -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ [[maybe_unused]] constexpr size_t __offset -+ = decltype(__i)::value * _V::size(); -+ return _V([&](auto __j) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ constexpr _SizeConstant<__j + __offset> __k; -+ return __xx[__k]; -+ }); -+ }); - #endif - } - else if constexpr (is_same_v) - { - // normally memcpy should work here as well -- return __generate_from_n_evaluations<_Parts, array<_V, _Parts>>([&]( -- auto __i) constexpr { return __x[__i]; }); -+ return __generate_from_n_evaluations<_Parts, array<_V, _Parts>>( -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { return __x[__i]; }); - } - else - { -- return __generate_from_n_evaluations<_Parts, array<_V, _Parts>>([&]( -- auto __i) constexpr { -- if constexpr (__is_fixed_size_abi_v) -- return _V([&](auto __j) constexpr { -- return __x[__i * _V::size() + __j]; -- }); -- else -- return _V(__private_init, -- __extract_part(__data(__x))); -- }); -+ return __generate_from_n_evaluations<_Parts, array<_V, _Parts>>( -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ if constexpr (__is_fixed_size_abi_v) -+ return _V([&](auto __j) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ return __x[__i * _V::size() + __j]; -+ }); -+ else -+ return _V(__private_init, -+ __extract_part(__data(__x))); -+ }); - } - } - - // }}} - // split(simd_mask) {{{ - template / _V::size()> -+ size_t _Parts = simd_size_v / _V::size()> - enable_if_t && simd_size_v == _Parts * _V::size(), array<_V, _Parts>> - split(const simd_mask& __x) -@@ -3976,22 +4081,22 @@ template >([&]( -- auto __i) constexpr { -- constexpr size_t __offset = __i * _V::size(); -- return _V(__bitset_init, (__bits >> __offset).to_ullong()); -- }); -+ return __generate_from_n_evaluations<_Parts, array<_V, _Parts>>( -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ constexpr size_t __offset = __i * _V::size(); -+ return _V(__bitset_init, (__bits >> __offset).to_ullong()); -+ }); - } - else - { -- return __generate_from_n_evaluations<_Parts, array<_V, _Parts>>([&]( -- auto __i) constexpr { -- constexpr size_t __offset = __i * _V::size(); -- return _V( -- __private_init, [&](auto __j) constexpr { -- return __x[__j + __offset]; -- }); -- }); -+ return __generate_from_n_evaluations<_Parts, array<_V, _Parts>>( -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ constexpr size_t __offset = __i * _V::size(); -+ return _V(__private_init, -+ [&](auto __j) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ return __x[__j + __offset]; -+ }); -+ }); - } - } - -@@ -4009,12 +4114,14 @@ template - using _V = __deduced_simd<_Tp, _N0>; - - if (__x._M_is_constprop()) -- return __generate_from_n_evaluations([&]( -- auto __i) constexpr { -- using _Vi = __deduced_simd<_Tp, _SL::_S_at(__i)>; -- constexpr size_t __offset = _SL::_S_before(__i); -- return _Vi([&](auto __j) constexpr { return __x[__offset + __j]; }); -- }); -+ return __generate_from_n_evaluations( -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ using _Vi = __deduced_simd<_Tp, _SL::_S_at(__i)>; -+ constexpr size_t __offset = _SL::_S_before(__i); -+ return _Vi([&](auto __j) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ return __x[__offset + __j]; -+ }); -+ }); - else if constexpr (_Np == _N0) - { - static_assert(sizeof...(_Sizes) == 1); -@@ -4081,28 +4188,28 @@ template - #ifdef _GLIBCXX_SIMD_USE_ALIASING_LOADS - const __may_alias<_Tp>* const __element_ptr - = reinterpret_cast*>(&__x); -- return __generate_from_n_evaluations([&]( -- auto __i) constexpr { -- using _Vi = __deduced_simd<_Tp, _SL::_S_at(__i)>; -- constexpr size_t __offset = _SL::_S_before(__i); -- constexpr size_t __base_align = alignof(simd<_Tp, _Ap>); -- constexpr size_t __a -- = __base_align - ((__offset * sizeof(_Tp)) % __base_align); -- constexpr size_t __b = ((__a - 1) & __a) ^ __a; -- constexpr size_t __alignment = __b == 0 ? __a : __b; -- return _Vi(__element_ptr + __offset, overaligned<__alignment>); -- }); -+ return __generate_from_n_evaluations( -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ using _Vi = __deduced_simd<_Tp, _SL::_S_at(__i)>; -+ constexpr size_t __offset = _SL::_S_before(__i); -+ constexpr size_t __base_align = alignof(simd<_Tp, _Ap>); -+ constexpr size_t __a -+ = __base_align - ((__offset * sizeof(_Tp)) % __base_align); -+ constexpr size_t __b = ((__a - 1) & __a) ^ __a; -+ constexpr size_t __alignment = __b == 0 ? __a : __b; -+ return _Vi(__element_ptr + __offset, overaligned<__alignment>); -+ }); - #else -- return __generate_from_n_evaluations([&]( -- auto __i) constexpr { -- using _Vi = __deduced_simd<_Tp, _SL::_S_at(__i)>; -- const auto& __xx = __data(__x); -- using _Offset = decltype(_SL::_S_before(__i)); -- return _Vi([&](auto __j) constexpr { -- constexpr _SizeConstant<_Offset::value + __j> __k; -- return __xx[__k]; -- }); -- }); -+ return __generate_from_n_evaluations( -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ using _Vi = __deduced_simd<_Tp, _SL::_S_at(__i)>; -+ const auto& __xx = __data(__x); -+ using _Offset = decltype(_SL::_S_before(__i)); -+ return _Vi([&](auto __j) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ constexpr _SizeConstant<_Offset::value + __j> __k; -+ return __xx[__k]; -+ }); -+ }); - #endif - } - -@@ -4123,8 +4230,7 @@ template - // __store_pack_of_simd {{{ - template - _GLIBCXX_SIMD_INTRINSIC void -- __store_pack_of_simd(char* __mem, const simd<_Tp, _A0>& __x0, -- const simd<_Tp, _As>&... __xs) -+ __store_pack_of_simd(char* __mem, const simd<_Tp, _A0>& __x0, const simd<_Tp, _As>&... __xs) - { - constexpr size_t __n_bytes = sizeof(_Tp) * simd_size_v<_Tp, _A0>; - __builtin_memcpy(__mem, &__data(__x0), __n_bytes); -@@ -4144,8 +4250,9 @@ template - return simd_cast<_Rp>(__xs...); - else if ((... && __xs._M_is_constprop())) - return simd<_Tp, -- simd_abi::deduce_t<_Tp, (simd_size_v<_Tp, _As> + ...)>>([&]( -- auto __i) constexpr { return __subscript_in_pack<__i>(__xs...); }); -+ simd_abi::deduce_t<_Tp, (simd_size_v<_Tp, _As> + ...)>>( -+ [&](auto __i) constexpr _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA -+ { return __subscript_in_pack<__i>(__xs...); }); - else - { - _Rp __r{}; -@@ -4161,9 +4268,10 @@ template - _GLIBCXX_SIMD_CONSTEXPR __deduced_simd<_Tp, simd_size_v<_Tp, _Abi> * _Np> - concat(const array, _Np>& __x) - { -- return __call_with_subscripts<_Np>(__x, [](const auto&... __xs) { -- return concat(__xs...); -- }); -+ return __call_with_subscripts<_Np>( -+ __x, [](const auto&... __xs) _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA { -+ return concat(__xs...); -+ }); - } - - // }}} -@@ -4178,7 +4286,8 @@ template ) - return _M_obj; -@@ -4187,7 +4296,8 @@ template -- _GLIBCXX_SIMD_INTRINSIC constexpr void _M_write(_Tp&& __x) const -+ _GLIBCXX_SIMD_INTRINSIC constexpr void -+ _M_write(_Tp&& __x) const - { _Accessor::_S_set(_M_obj, _M_index, static_cast<_Tp&&>(__x)); } - - public: -@@ -4197,32 +4307,32 @@ template , value_type>> -- _GLIBCXX_SIMD_INTRINSIC constexpr _SmartReference operator=(_Tp&& __x) && -+ template , value_type>> -+ _GLIBCXX_SIMD_INTRINSIC constexpr _SmartReference -+ operator=(_Tp&& __x) && - { - _M_write(static_cast<_Tp&&>(__x)); - return {_M_obj, _M_index}; - } - --#define _GLIBCXX_SIMD_OP_(__op) \ -- template () __op declval<_Tp>()), \ -- typename = _ValuePreservingOrInt<__remove_cvref_t<_Tp>, _TT>, \ -- typename = _ValuePreservingOrInt<_TT, value_type>> \ -- _GLIBCXX_SIMD_INTRINSIC constexpr _SmartReference \ -- operator __op##=(_Tp&& __x) && \ -- { \ -- const value_type& __lhs = _M_read(); \ -- _M_write(__lhs __op __x); \ -- return {_M_obj, _M_index}; \ -+#define _GLIBCXX_SIMD_OP_(__op) \ -+ template () __op declval<_Tp>()), \ -+ typename = _ValuePreservingOrInt<__remove_cvref_t<_Tp>, _TT>, \ -+ typename = _ValuePreservingOrInt<_TT, value_type>> \ -+ _GLIBCXX_SIMD_INTRINSIC constexpr _SmartReference \ -+ operator __op##=(_Tp&& __x) && \ -+ { \ -+ const value_type& __lhs = _M_read(); \ -+ _M_write(__lhs __op __x); \ -+ return {_M_obj, _M_index}; \ - } - _GLIBCXX_SIMD_ALL_ARITHMETICS(_GLIBCXX_SIMD_OP_); - _GLIBCXX_SIMD_ALL_SHIFTS(_GLIBCXX_SIMD_OP_); -@@ -4230,9 +4340,9 @@ template &>())> -- _GLIBCXX_SIMD_INTRINSIC constexpr _SmartReference operator++() && -+ typename = decltype(++declval&>())> -+ _GLIBCXX_SIMD_INTRINSIC constexpr _SmartReference -+ operator++() && - { - value_type __x = _M_read(); - _M_write(++__x); -@@ -4240,9 +4350,9 @@ template &>()++)> -- _GLIBCXX_SIMD_INTRINSIC constexpr value_type operator++(int) && -+ typename = decltype(declval&>()++)> -+ _GLIBCXX_SIMD_INTRINSIC constexpr value_type -+ operator++(int) && - { - const value_type __r = _M_read(); - value_type __x = __r; -@@ -4251,9 +4361,9 @@ template &>())> -- _GLIBCXX_SIMD_INTRINSIC constexpr _SmartReference operator--() && -+ typename = decltype(--declval&>())> -+ _GLIBCXX_SIMD_INTRINSIC constexpr _SmartReference -+ operator--() && - { - value_type __x = _M_read(); - _M_write(--__x); -@@ -4261,9 +4371,9 @@ template &>()--)> -- _GLIBCXX_SIMD_INTRINSIC constexpr value_type operator--(int) && -+ typename = decltype(declval&>()--)> -+ _GLIBCXX_SIMD_INTRINSIC constexpr value_type -+ operator--(int) && - { - const value_type __r = _M_read(); - value_type __x = __r; -@@ -4339,7 +4449,8 @@ template - template